מה זה פיתוח backend ואיך מוצאים עבודה בזה?
פיתוח backend נקרא גם פיתוח צד שרת. מקובל להתייחס לפיתוח backend כפיתוח ״מאחורי הקלעים״. שם מתבצעים גם החישובים המורכבים, מאחורי הקלעים, בתוכנה.
בתוך כך:
אחריות מפתח backend – מה איש בקאנד עושה?
- עדכון של ה-DB
- הוצאת מידע
- מניפולציות על מידע בתוכנה
- בניית מבנים נוחים לשימוש
דוד רכטמן, מפתח backend. התראיין אלינו לפודקאסט וסיפר – מהזווית שלו – מה זה פיתוח backend.

דוד רכטמן מפתח backend
״אהלן, היי אייל, אני דוד רכטמן. אני היום עובד כמתכנת backend בחברת אלגוטק. היא שנרכשה על ידי Phillips Medical העולמית. אני עובד שם כבר שנתיים, לפני זה עבדתי בחברת פילוסופט. חברה שמפתחת כלים לנגישות – תוכנה כמובן. ולמדתי מדעי המחשב באוניברסיטה הפתוחה״
איך משלבים עבודה בפיתוח backend עם לימודים?
״אני למדתי בפתוחה. אני חושב שלימוד באוניברסיטה הפתוחה – זה משהו שבעיקר דורש יכולת עבודה עצמית גבוהה. כלומר, נדרש לדעת לשים לך דד ליינים ומשימות ולעמוד בהן. כשהתחלתי באוניברסיטה הפתוחה היו לי לאורך כל התואר יעדים מאוד ברורים ברמה השבועית. זאת אומרת שאני יודע כל שבוע כמה הרצאות אני מתכנן לשמוע. האזנתי להקלטות בזמן שמתאים לי. כמה חומרי קריאה אני מתכנן לקרוא וכמה משימות אני מתכנן לכתוב ולהגיש.
זה כלל דד ליין של מוצאי שבת לעמוד בכל היעדים. ובעקבות זה הרבה פעמים סופ”שים שנגמרו בארבע-חמש לפנות בוקר. כי אין מה לעשות חייבים לעמוד ביעדים האלה. זה משהו שחייבים לדעת לעשות באוניברסיטה הפתוחה גם ברמת המיקרו ואני חושב שגם ברמת המאקרו. משום שבניגוד לאוניברסיטה הרגילה גם את תכנית הלימודים אתה קובע. אז זה אומר שגם את הקורסים ואת החלוקה שלהם על פני הסמסטרים צריך לתכנן לטווח הרחוק. איזה סוג קורסים לקחת, במקביל למה ובמקביל לתקופה שבחיים שלך״
מומלץ לקרוא: האם תואר עוזר למצוא עבודה בהייטק?
״אני את התואר הזה עשיתי במקביל לעבודה בחברת פילוסופט. בשנתיים הראשונות עבדתי בסוג של משרת סטודנט. בהמשך עליתי בשנה האחרונה ממש למשרה מלאה במקביל לתואר באוניברסיטה. כשזה כולל גם את ההתאמות האלה שדורשות הרבה תכנון של איזה קורסים לקחת ומתי. כשידעתי שהיה בעבודה לחוץ אז צמצמתי את רמת הקורסים. כשידעתי שצריך להספיק איזשהו קורס אז הודעתי בעבודה שצריך לעשות את ההתאמות האלה.״
איך מחליטים ללמוד פיתוח תוכנה backend?
אני בגדול בתור נער הייתי טכנולוג. אבל לא ידעתי תכנות: לא למדתי איזה משהו כזה ביסודי או בתיכון. לא הייתי במגמת מחשבים, מצד שני הטכנולוגיה תמיד קרצה לי. כשהתלבטתי מה ללמוד אני חשבתי שהאופציה הראשונה תהיה מדעי המחשב. אבל לא הייתה סגור על זה. האוניברסיטה הפתוחה גם פה נתנה לי איזשהו צוהר. איזושהי אפשרות שלא יכולתי לקבל במקום אחר. בעצם לקחת סמסטר אחד, קורס אחד, והקורס שלקחתי זה תכנות מונחה עצמים. זה באמת הקורס בסיס לתואר הזה. זה גם הבסיס בעצם לתכנות. כשידעתי את העקרונות של הקורס של Object Oriented כבר ידעתי לתכנת. אחרי זה – זה רק סינטקס וללמוד טכנולוגיות ופלטפורמות.
כשהבנתי את העקרונות האלהזה היה הבסיס. ובאמת לקחתי את הקורס הזה סמסטר אחד, קורס אחד. אחריו קיבלתי הצעה שזה עוד איזושהי המלצה בנושא הזה של המסלול להייטק. סיימתם את הקורס? תדברו עם כל מי שאתם מכירים ותספרו שלמדתם פיתוח תוכנה.
קשרים למציאת עבודה בהייטק
״סיפרתי לכולם איך התחלתי ללמוד. ומה אני חושב הלאה. ומה ההצעות שלהם ומה המחשבות שלהם. ומפה לאוזן פשוט דיברתי עם מישהו שהוא קרוב משפחה מאשתי, שבעצם אמר לי “אה, וואלה? אתה יודע לפתח לאייפון? אתה יודע לפתח ב-swift?”. אמרתי לו שלא, אבל אני יכול ללמוד. אז הוא אמר לי “בבקשה, אם תלמד יש לי עבודה לסדר לך”. פשוט התנפלתי על זה בכל הכוח. למדתי איזה קורס ביוטיוב של איזה מאה ארבעים שעות. אחר כך אני קראתי את הדוקומנטציה ואמרתי לו “תקשיב, אני יודע לפתח באייפון”. כמובן הידע שלי הוא מאוד ג’וניורי ובוסרי. אבל באיזשהו שלב צריך לדעת “זהו אני יודע את זה”.
קיבלתי את המשימה הראשונה. וזה היה לפתח אפליקציה שיודעת לזהות אייטמים. באמצעות API-ים של זיהוי תמונה ואחרי זה להשתמש בעוד API-ים.״
לקריאה על המסלול ל-computer vision ו-data science

עבודה כמפתח בסטארטאפ – פילוסופט
״כדי לעשות לזה תרגום ולחבר בעצם כמה API-ים ביחד עם איזה UI נגיש. זו הייתה אפליקציה ייעודית לעיוורים ולקויי ראייה. כדי לקבל איזשהו תיאור של מה שהם רואים מסביבם בעזרת המצלמה. האפליקציה הזאת היום בחנות באפ-סטור. זה היה באמת צלילה מדהימה לתוך התחום של תכנות ולתוך התחום של שוק ההייטק.
משם באמת המשכתי לקבל ממנו בלי סוף משימות שנתנו לי המון המון המון. הגעתי לזה במקרה מזה שדיברתי עם אנשי. הוא הציע את הכיוון הזה ש”בוא תלמד אייפון”, “בוא תלמד פיתוח”, ומשם קיבלתי את העבודה הראשונה בפיתוח backend. וככה בעצם הייתי לי עבודה ראשונה שפתחה לי את הדלתות אחרי זה להמשך כשהגעתי לאלגוטק.״
אייל סגל: מה ההבדלים בעצם בין המקום עבודה הראשון לשני?
לעבוד בפיתוח backend בחברה גדולה או בסטארטאפ?
״אז אני אספר באמת על החברה הראשונה ואיך זה הוביל אותי לחברה השנייה. החברה הראשונה שעבדתי בה – היא חברת פילוסופט. מנהל אותה מהנדס תוכנה עם עיוורון מלא. עיוור לגמרי, אפשר לעשות לגמרי פודאקסט רק עליו. ועל הנושא הזה של איך הוא מפתח בעזרת שמיעה ושומע את הקוד וקורא מסך. באמת עולם ומלואו. אבל היינו חברה מאוד קטנה הוא ועוד שני מתכנתים, שגם הם בסוג של אאוטסורסינג אז זה היה בעיקר אני מולו, וחברה קטנה זה כולל הרבה יתרונות והרבה חסרונות. למדתי ממנו אישית המון אבל גם עשיתי הרבה דברים שהם במסביב.״

פיתוח בסטארטאפ מלחיץ יותר
ברמת הלמידה זה אומר שהוא נתן לי את היכולת ללמוד הרבה לבד כי זה דורש את זה. אבל נותן משימות ופשוט תתחיל לעבוד עליהן, חוזר אליו עם איזשהו רעיון. איזשהו כיוון הוא מתקן אותו, משפץ אותו, מציע הצעות לשיפור וככה בעצם מתגלגלים. כשאני חושב שה-tradeoff הכי גדול בחברה קטנה זה לחץ מטורף מטורף על זמנים. כי המוצרים שלנו היו מוצרים שהלקוח המרכזי היה משרד החינוך, ואם הגענו לספטמבר ולתחילת שנה והמורים צריכים לקבל את התוכנה שהתלמידים שלהם יעבדו איתה אז אין זמן לעשות design review. ואין זמן לעשות את ה-code review. ופשוט לכתוב אלה בבאלה והעיקר לכתוב ותוציא את זה כמה שיותר מהר.
השיקולים בין עבודה בסטארטאפ לעומת בתאגיד – איך לבחור איפה לעבוד?
אז זה היה איזשהו טרייד אוף שהוביל אותי אחרי שלוש שנים שעבדתי שם לחפש בתפקיד החדש בחברה אחרת חיפשתי לעבוד ב-corporate. חיפשתי לעבוד במקום שבו אתפתח יותר מקצועית בתהליכים מסודרים. בלהתמקד מאוד בתוכנה, כי גם שוב, עוד משהו שהרווחתי אבל גם הפסדתי בחברה הראשונה שעבדתי בה זה שעשיתי שמונים אחוז פיתוח אבל עשרים אחוז דברים מסביב. זה להיפגש עם הנציגים של הלקוחות שלנו. להדריך אותם, להעלות לאתר של החברה את התוכן והמוצרים שלנו. לחתום חוזים מול הלקוחות, ברמה הזאת נפגשתי בעוד המון דברים שלא פוגשים בחברה גדולה. בטח לא בתפקיד של מפתח.
יש בזה חיסרון. כי אני חושב שבשלב ראשוני בקריירה היה לי חסר להתמקצע עוד בקוד. ממש על איך עושים דיזיין למוצר מורכב. זה היה המעבר שלי לאלגוטק ואני מאוד שלם איתו. ואני כל יום לומד. גם ברמת כמו שתיארתי ה-flow של corporate. לבוא עם פיצ’ר, עם Requirement, לחשוב עליהם טוב. לעשות מסמך דיזיין מסודר. לעשות תהליך של פיתוח עם QA. ובסוף לדלבר את זה ללקוח כשרואים את זה עם אנשי הסגל.
וכמובן שגם אז יש באגים. יש גם תהליך של לאט לאט זה מגיע אליך ואתה פותר את זה. אני הרווחתי את שני תהליכי הלמידה. יש לי עוד הרבה מה ללמוד. קיימים יתרונות כאן ושם. יש החסרונות לארגון גדול ויש היתרונות של ארגון קטן ולהיפך. היה פה איזשהו תהליך תכנוני באמת שהרגשתי את הצורך הזה ואני הרווחתי אותו מהמעבר הזה של לחוות את שניהם, מי שיכול אני נהניתי מזה.

מה זה אומר להיות מפתח backend?
״להיות מפתח backend, ולהיות מפתח באופן כללי: המרכז של זה זה לדעת להתמודד עם בעיות. זאת אומרת בסוף זה לא משנה באיזו שפה או טכנולוגיה. בסוף אתה מקבל בעיה שהיא יכולה להיות דרישה לפיתוח של משהו חדש. או בעיה של באג במוצר ישן. בסוף זה לקבל בעיה ולהתמודד איתה ברמת הלהבין מול מה אתה מתמודד. להבין מה יכול להיות כיווני פתרון. ולכתוב את הפתרון ולוודא שהוא עובד. בסוף זה בגדול מה שמתכנת עושה.
מפתח כל הזמן מתאכזב. כל הזמן באיזושהי תחושה של באסה של מתכנית למול רגשי האושר הקטנים. אלה שבהן אתה פותר את הבעיות. אבל בעיקר אתה מתמודד מול בעיות. אתה מתמודד מול בעיה שאתה בהתחלה מאוד מאבד את עצמך שם. כדי לחפש את הכיוון לפתרון. אבל אחרי שאתה מתחיל לצלול לתוך זה ומבין מה אתה צריך לקרוא או באיזה מחלקות אתה צריך עכשיו לכתוב או באיזה מחלקות אתה צריך להבין כדי לפתור את הבעיה שלך בסוף מתכנת צריך להיכנס לבעיות גם כשהוא לא מכיר מה שהולך שם בדיוק, להבין, להתחיל להתמצא שם ולפתור את הבעיה.
איך נראה יום של מפתח backend? מה מפתח backend עושה?
מתכנת באק אנד זה בעצם ממשיך את אותו דבר: הוא מתעסק ב API-ים, לא רואה את ה- UI. הוא מתעסק בלוגיקות. אבל בעצם זו הנקודה, זה לפתור בעיות. אם כן לצאת רגע מהפרספקטיבה הזאת. מתכנת backend זה אחד שחושב על לוגיקות מורכבות. הוא חייב לדעת להתעסק עם נתונים. עם דאטא בייסים. למרות שהוא בעיקר בתוכנה הוא חייב לדעת לעבוד עם כל מיני סוגים של מבני נתונים. לדעת לממש אלגוריתמים בצורה שיעבדו הכי יעילה והכי טובה.״
איך מוצאים עבודה ראשונה בהייטק בפיתוח בק אנד?
אני הגעתי דרך קשרים. הקשרים הם לאו דווקא מהמשפחה. זה יכול להיות קשרים דרך הרשתות החברתיות. פייסבוק ,לינקדאין וכאלה. קשרים זה לדבר עם החברים מהתואר. לנסות להבין מי יכול להפנות אותך למקום הנכון. מי מהתעשייה יכול לחבר אותך למקום הנכון. לראות עם מי אתה יכול לתקשר. בסוף זה הרבה מזל בשילוב עם היכולות שלך. היה לי המזל שלי. אחרי זה להשתמש ביכולות שלך.
אתה צריך בסוף להגיע לראיון של שעתיים-שלוש ולנסות להוכיח את עצמך. זה לא משהו שהוא קל. אבל אם יש לך מראיין שמבין עניין, שבסוף בא לבחון את היכולות שלך. ושוב פה אני חושב שאם ניגע בנקודה של ראיונות, אז הם צריכים לדעתי, וזה מה שהיה לי בניסיון שלי הם צריכים לבדוק את היכולת שלך לפתור בעיות. להבין את הבעיה טוב, להבין מה יכול להיות הכיוונים לפתרון ולהתחיל לנסות לפתור את הפתרון עד רמה של להוציא איזשהו פתרון עובד.
זה מה שאני חושב שקריטי באמת במתכנתים ג’וניורים. במיוחד קשה לבחון אותם על טכנולוגיות. שהם הרבה פעמים לא יודעים אותם ואמורים ללמוד אותם במהלך התפקיד שאליו הם מתמיינים.

אייל סגל: איך מתכוננים לראיונות?
איך מתכוננים לריאיון עבודה בפיתוח בק-אנד?
״אני חושב שבגלל המהות של בסוף זה לפתור בעיות. צריך לחזור לקורסים של אלגוריתמים, מבני נתונים. הקורסים האלה באוניברסיטה מחדדים את העקרונות הכי בסיסיים של תכנות. של מה אתה צריך להבין ברקע כשאתה מגיע למול בעיה. גם שוב תכנות מונחה עצמים – Object Oriented זה בסיס מאוד קריטי לוודא שהמתכנת הג’וניור יודע אותו. כדי שיהיו לו הכלים להתמודד עם פיתוחים מורכבים. וכמובן צריך לוודא את הסינטקס עם השפה שאיתה תתמודד. אני הגעתי מעולם של c# לראיון ב-CPP. כשאני לא יודע לכתוב בכלל CPP. לא היה לנו קורס כזה גם בתואר.

המראיין שהיה מראיין מאוד טוב – הראש צוות שלי היום, ידע לכוון את הרעיון של “בסדר, סבבה, אתה לא בקיא בסינטקס של השפה בוא תתמודד עם הבעיה. תעזוב, תן לעצמך לטעות, תן לעצמך לעשות את הטעויות של השפה, תגיע לי לפתרון של הבעיה”. והצלחתי להעביר את זה אליו והוא הצליח להבין וכמובן שהיו לי טעויות. היום אני כותב בעיקר ב-CPP. אבל הוא הצליח לראות את זה ואני הצלחתי להעביר את הבעיה ושוב. זה משהו שמתכנת צריך להבין – שסינטקס וטכנולוגיות זה דברים שכל הזמן לומדים ומתקדמים ומשנים אותם. העקרונות בסיס הם אלה שמעידים האם אתה תעשה את העבודה כמו שצריך. לכן, צריך לחזור לעקרונות ולהתאמן על הדברים האלה לפני ראיונות.״
Databases ונתונים בפיתוח backend
״לדעת להתעסק עם נתונים זה משהו שמתכנת צריך לעשות. אנחנו לא Data Analysts ואנחנו לא DBA. עדיין מתכנתים עובדים עם נתונים. והם צריכים לעשות אם זה ב- SQL או מבני נתונים של Hash Table ו- Lists. בסוף התוכנות הן תמיד סביב data וצריך לדעת לעבוד עם זה. SQL צריך להכיר בראיונות והן שאלות קלאסיות ולגיטימיות ולגמרי מראות על היכולת של המתכנת לדעתי.״
מציאת משרות ג׳וניור מפתח backend
״כל מפתח ג’וניור שרוצה להגיע לעבודה, תראה זה קצת קשה כי זה הביצה והתרנגולת אבל הוא צריך לעשות לווא דווקא ידע ספציפי כמו להתנסות בפרויקט שלם, זאת אומרת במקרה שלי זה היה האפליקציה הזאת, אבל לקחת פרויקט שאיך אתה מתכנן אותו מההתחלה עד הסוף, כולל במקרה אם אתה רוצה את זה עם UI אז עם UI אבל אם טסטים אז עד טסטים.
אבל ממש – מהדרישות עד התוצר הסופי כדי להתנסות, והכי טוב יהיה אם אתה מכיר מישהו שיכול לבוא לעזור לך ובעצם לעשות לך איזשהו קוד ריוויו כדי שתוכל להתנסות בדבר הזה של לעשות מוצר שלם. אז זה כנראה יהיה מוצר מאוד קטן. עם לא המון המון שורות קוד. אבל עדיין החוויה הזאת של להוציא מוצר מוגמר מהידיים שלך זה משהו שהוא נותן המון. אני חושב שכל מפתח ג’וניור צריך להתנסות בזה.
מבחינת הטכנולוגיות שוב, הוא יכול לעשות את זה בשפה שהוא למד או בשפה שהוא רוצה ללמוד, או במשרה שהוא רוצה להתקבל אליה, אבל לעשות פרויקט שלם, שלם בשפה הזאת.”