MeCoder הכניסה לעולם התכנות


יום בחיי מתכנת בחברת היי-טק

code of this article

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

אז החלטתי לשתף אתכם קצת בחוויה האישית שלי, דרך מקום העבודה הנוכחי שלי - Fiverr. אמנם הוא לא מייצג את כל מקומות העבודה, אך הוא בהחלט יכול לחשוף אתכם קצת למתרחש בתחום ההיי-טק. בנוסף, בסוף המאמר אוסיף התייחסות למקומות עבודה אחרים, כגון חברות פרויקטים, סטארט-אפים ותאגידים כאלה ואחרים.

Fiverr

קודם כל הסבר קצר על מהי Fiverr, מה היא עושה וטיפה היסטוריה.
פייבר הוקמה על ידי שני יזמי הייטק מוכרים, מיכה קאופמן ושי ויליגר, לפני כשש שנים על מנת לחבר בין אנשים שצריכים שירותים דיגיטליים לבין כאלה שמספקים אותם. אתר שמרכז את כל השירותים האינטרנטיים שאדם פרטי או עסק צריכים. מעבר להיותו אתר סחר של שירותים, הם דגלו בפשטות ובקלות בהן ניתן לבצע עסקאות כאלו והחליטו להתמקד גם במחירים פשוטים, כאשר כל שירות כזה עלה 5$ בלבד!
המהפכה החלה…. מהר מאוד החברה צברה תאוצה מרשימה ביותר ומשנה לשנה צמחה בקצב מרשים. מאז ועד היום היא הספיקה לגייס 110,000,000$, להרחיב את המודל העסקי כך שניתן לתמחר שירותים במחירים הגבוהים מ-5$, הוסיפו לא מעט קטגוריות לאתר, גייסו עוד הרבה עובדים (כיום כ-260 עובדים!) וביניהם… אותי :-)

כיום, מתבצעות באתר למעלה ממיליון עסקאות בחודש על ידי עסקים בינוניים וקטנים, יזמים או אנשים כמוכם וכמוני. כן כן, גם אנשים כמונו הם לקוחות טובים של החברה. לדוגמה אם אתם צריכים לעשות מצגת לעבודה ורוצים שהיא תראה הכי טוב שאפשר אז כנסו לקטגוריית presentation. או לדוגמה אם בא לכם ללמוד אנגלית, או אולי איך לנגן על גיטרה, פשוט כנסו לonline lessons. או בהקשר ישיר לבלוג זה, אם למדתם לתכנת לבד ועכשיו אתם רוצים למצוא עבודה, אז בהרבה חברות מצפים לקבל את קורות החיים שלכם כתובים באנגלית, ועם כל הכבוד לנו הישראלים, עדיף שמישהו אחר יעשה את זה. אז פשוט הכנסו לקטגוריית translations. ואם יש לכם כבר קורות חיים באנגלית, אז Boomsa תערוך אותם ותשדרג אותם בצורה משמעותית.

לחברה יש עוד הרבה לאן לגדול, וכל יום משקיעים הרבה מאמצים כדי לממש את הפוטנציאל הזה, בין אם על ידי הרחבת הקיים ובין אם על ידי המצאת כיוונים חדשים.

השגרה

למישהו שלא עבד בתחום לפני כן, כפי שהייתי טרם עבודתי כמתכנת, התיאור של Fiverr לא באמת ממחיש מה מתכנת עושה. אישית, אני מעדיף תיאור של הפרטים הקטנים שמסביר הרבה יותר טוב על הצפוי למתכנת. כך אני מצייר לי תמונה קטנה בראש, בדמיון, של "איך זה באמת".
אז הנה יום עבודה שגרתי - לקחתי כדוגמא את יום שני האחרון:

6:50 בוקר טוב. מתארגן ובעיקר מארגן את הבנות שלי ומכין להן אוכל לגנים.
8:00 מוריד את הבנות בגנים ויוצא לכיוון העבודה.
9:00 מגיע לעבודה, מתאפס על המשימות שלי, שולח כמה מיילים קצרים, סוגר פינות, אם צריך, ועולה ל-Town Hall לאכול ארוחת בוקר בריאה. ה-Town Hall הוא אחד המקומות היותר שווים אצלנו במשרד שממוקם בקומה 7 - הגבוהה ביותר בבניין שלנו - בה ממוקם מטבח ומעין חדר אוכל (דומה יותר לבית קפה תל אביבי) וגם מרפסת עישון שווה ביותר, למרות שכבר שנים לא מעשן.

Fiverr's town hall
Fiverr's Town Hall
לאחר ארוחת הבוקר, חוזר לשולחן שלי ומתחיל לעבוד על המשימה הנוכחית שלי - שינוי מנגנון דיווח על הודעות בעייתיות. כדי שתבינו יותר טוב את שגרת העבודה שלי, אפרט קצת על המשימה הנוכחית שלי ואיך היא משתלבת בתוך הצוות:
באתר של Fiverr לקונים ולמוכרים יש אפשרות להתכתב ביניהם. הדבר מתבצע בדף שיחה סטנדרטי, שדומה לכל אפליקציית צ'אט כזאת או אחרת. על כל הודעה שמישהו שולח לי יש כפתור "Report" שאם לוחצים עליו אז הוא מדווח לנו שההודעה הזאת לא תקינה וכן הוא חוסם את ההתכתבות ביניכם. החלטנו שהמנגנון הקיים רחוק מלהיות אופטימלי והחלטנו לשנותו כך שכאשר המשתמש לוחץ על הכפתור, תיפתח לו תיבה בו יוכל לבחור בין מספר אפשרויות לסיבה בגינה הוא מדווח על ההודעה הזאת. כמו כן אפשרנו לו לבחור האם ברצונו לחסום את ההתכתבות בין הצדדים ויידענו אותו ששירות הלקוחות שלנו יבחנו את ההודעה המדווחת.
כדי לעשות את כל השינויים הללו נדרש כאן פיתוח צד-לקוח שלי באתר של פייבר אשר יאפשר את הופעת ההודעה הנפתחת, ינהל את הטופס עם הבחירות של המשתמש וישלח את המידע לשרת. אני כמובן מצמצם קצת את היקף המשימה על מנת לא לרדת לפרטים הקטנים ולא לגעת במקרי קצה שונים.
מעבר לכך יש מפתח צד-שרת אשר מטפל במידע ששלחתי לשרת ומאחסן את המידע בהתאם לצורך. אבל המשימה לא נגמרת כאן. צריך לעבוד גם על הקוד באתר הניהול בו אנשי התוכן ושירות הלקוחות שלנו משתמשים על מנת לנהל את כל האופרציה הזאת. לכן גם שם נדרשתי לפתח עמוד בו יוצגו כל ההודעות הללו, עם אפשרויות לסנן הודעות לפי קריטריונים שונים ולבצע פעולות שונות על כל דיווח הודעה.

חזרה ליום שני בשעה 9:00 בערך… עבדתי על אתר הניהול, על הוספת הדף המציג דיווחי ההודעות ועל בניית התצוגה שלו.
10:00 כמדי יום הצוות שלי נפגש למה שנקרא stand-up, שזו פגישה קצרה שמתנהלת בעמידה (כדי שבאמת תהיה קצרה) ובה כל אחד מאנשי הצוות מעדכן על מה הוא עובד. המטרה היא להיות מעודכנים לגבי מה שכל הצוות עושה, ולהיות מסונכרנים בנקודות המפגש בינינו. הפגישה הזאת אורכת כעשר דקות.
12:00 ארוחת צהריים,שבדרך כלל מתקיימת באחת המסעדות באזור.
13:00 חוזר למשרד וממשיך לכתוב קוד…
15:00 מעלה קוד לאתר. אמנם לא סיימתי לפתח את כל מה שמתוכנן, אך אנחנו עובדים ב-Continuous Deployment, כלומר אנחנו משתדלים להעלות קוד לאתר לעיתים תכופות יחסית, ולכן מפרקים כל משימה לחלקים יותר קטנים ומעלים לאתר כל חלק בנפרד.
החלק שהעליתי לאתר עדיין לא גלוי לכולם, ולאחר ביצוע מספר בדיקות, אני ממשיך לפתח את החלק הבא. 17:00 ישיבת מתכנתי פרונט-אנד. זוהי ישיבה שנערכת מול כל מתכנתי הפרונט-אנד בחברה, אשר ממוקמים בישראל (רובם), ניו-יורק ושיקגו. הישיבה מתנהלת באמצעות שיחת וידאו, כאשר כל מתכנתי צד-לקוח מישראל נמצאים יחד באחד מחדרי הישיבות המרשימים שבקומה העליונה בבניין.
מייקל, ארכיטקט הפרונט-אנד שלנו, מעביר לנו מצגת לגבי מה לדעתו צריך להשתפר ב-Pull Request שאנו מעבירים. Pull request הינו התהליך שקודם להעלאת קוד לאתר. כשאתה מסיים לפתח משהו, אתה פותח על כל השינויים שביצעת pull request אשר מציג את אותם השינויים, כאשר מתכנת אחר (לפחות אחד) עובר על הקוד שכתבת ומעיר לך הערות. נדיר שלא יהיו לו הערות - הערות בונות כמובן מתוך רצון של כולנו להשתפר ולכתוב קוד טוב יותר.
לאחריו, עומרי (אחד המתכנתים היותר מוכשרים עימם יצא לי לעבוד), מציג בקצרה את תוכנית העבודה שהוא רוצה לקדם בכל הנוגע לביצועים (performance) של האתר אשר אמורה לקחת חלק בחצי השני של 2017.

אחרי זה אני נשאר עוד כשעה וחצי וממשיך לעבוד על חלקים נוספים הקשורים למשימה עליה הצוות שלי עובד. בשש וחצי הלכתי הביתה.

פינוקים

לתחום ההייטק יש שם של ענף שמפנק את עובדיו בשלל תנאים והטבות מעבר למשכורת. אז קודם כל קצת פרופורציה… מרבית הפינוקים שהיו פעם התנדפו בכל אחד מהמשברים האחרונים שפקדו את התחום. כיום יש שונות גדולה מאוד בין חברות ההייטק מבחינת ההטבות שהן מעניקות לעובדיהן, אך לשמחתי Fiverr נמצאת בעשירון העליון של החברות המפנקות.
אז הנה כמה דוגמאות לדברים מהם אני נהנה בשגרת העבודה שלי:

מטבח עשיר, בו אפשר להנות מארוחת בוקר טובה, ארוחות ביניים או אם בא לכם קפה טוב ממכונת קפה אמיתית. מעבר למטבח שנמצא ב-Town-Hall יש מטבח קטן יותר בכל קומה.

חדר כושר - הוא לא משתווה ברמת המכשירים לשום חדר כושר בו תהיו מנויים, אבל הוא בהחלט מספק את העבודה עם הליכונים, מכשיר מולטי, מתח, משקולות, מזרונים ועוד. היתרון הגדול, מעבר לכך שלוקח לי שלושים שניות להגיע אליו, הוא שזה מרגיש כמו חדר כושר פרטי. יצא לי להתאמן שם בשמונה בערב לבד, חיברתי את המחשב שלי למערכת ההגברה ושמתי לי את המוזיקה שלי. להתאמן בחדר כושר מ"שלך" בקומה השביעית המשקיפה על אבן גבירול… יש לזה את הקסם שלו.

שולחן פוסבול, שולחן פינג-פונג, פינות ישיבה מכל הסוגים, Scotch5 שזה אומר שפותחים כמה בקבוקי סינגל מאלט בכל חמישי בחמש, טיול שנתי פעם בשנה… כל אלה הם הדברים הקבועים. אבל יש גם הרבה הפתעות לאורך הדרך. דוגמאות לא חסר:
באוקטוברפסט (מי שלא יודע מה זה מפוטר!) הביאו בר בירות בוטיק ופרעצלים שווים. בגשם הראשון של החורף חילקו מרקים וגרביים מחממות.
באחד מהימים, בשעת הצהריים, קראו לכל העובדים למטה כדי לאכול את הסביח של עובד (הסביח האגדי מרמת-גן) שהביאו בטייק אווי, וזה ממשיך...
מסיבת סוף שנה שווה עם הופעה של ירמי קפלן; סדנת בישול איטלקית עם צוותים מעורבבים (כלומר עם אנשים שאתה לא עובד איתם ביום-יום) וכן הלאה כמיטב היצירתיות של מחלקת משאבי האנוש שלנו….
בקיצור - שווה!

כל הדברים הללו, בשילוב עם החומר האנושי יוצא הדופן שיש ב-Fiverr מובילים לכך שפשוט כיף לעבוד בחברה הזאת.

ועכשיו להערה מאוד חשובה - אם משהו מכל זה גורם לכם לרצות להיות מתכנתים, אז תשכחו מזה. זה לא מה שיגרום לכם באמת להנות מעבודת התכנות, וזה לא מה שיגרום לכם להישאר במקצוע לאורך זמן. אני יכול להעיד שבחברה הקודמת בה עבדתי לא היו את כל ההטבות הללו ועדיין נהניתי מאוד מהעבודה.

טוב, דיברתי עד עכשיו בעיקר על Fiverr, אבל מרבית החברות בהן תעבדו יהיו שונות ממנה בתכלית, ונראה לי שכדאי לתאר בקצרה כמה סוגים של חברות ואת אופי העבודה בהן:

לעבוד בבית תוכנה / חברת פרויקטים

מי מכם שקרא כבר את המאמר איך למצוא עבודה כמתכנת יודע שאני ממליץ בחום רב לחפש עבודה בחברה שכזו, הן משיקולים של סיכוי למצוא עבודה והן בגלל שגרף הלימוד של שפת תכנות ספציפית (JS) יהיה גבוה ומהיר.
אז העבודה בחברה שכזו שונה בתכלית מעבודה ממה שתיארתי עד כה. אם ב-Fiverr הכל סובב סביב המוצר של החברה, השינויים שעושים בו והפיתוחים החדשים שמוסיפים לו, אז בחברת פרויקטים הכל סובב סביב לסיים את העבודה בזמן ולהמשיך הלאה.
כלומר, יש לקוח שרוצה שנפתח לו תוכנה כלשהי, אנחנו עובדים במסגרת זמנים מסוימת שבסופה אנחנו מספקים לו את התוכנה וממשיכים לפרויקט הבא. לחלק מהפרויקטים תהיה המשכיות של פיתוחים נוספים או תיקוני באגים, אבל החיבור שלך כמתכנת למוצר הוא מינימלי.
המשמעות היא שהעניין שלך במוצר עצמו נמוך מאוד, ומעבר לקוד עצמו והאם התוכנה עובדת כהלכה, אין לך הרבה עניין. למעשה, זאת אחת הסיבות בגללן אני חושב שזאת נקודת התחלה מצוינת בתחום. במקום להתעסק בדברים שמסביב, כגון ניהול המוצר, הגדלת הכנסות ורווח… אתה מתעסק בקוד עצמו. גם כמות הישיבות קטנה לאין שיעור עד ללא קיימת בחברת פרויקטים. אין זמן לדברים כאלה, כמו גם האפקט של ישיבות כאלה הוא מינימלי.
אני מנסה להשוות את כמות הקוד שכתבתי ביום נתון בחברת הפרויקטים לעומת כמות הקוד שאני כותב כיום, ואני לא מגזים כשאני חושב שמדובר בלפחותפי שלוש!

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

אני חושב שלעבודה בחברת פרויקטים היה ערך מאוד גבוה בתהליך הלימוד שלי.

לעבוד בסטארט-אפ

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

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

לעבוד בתאגיד הייטק

אמדוקס, סאפ, קומברס הם שמות של חברות גדולות שמעסיקות המון מתכנתים. אלו חברות מסודרות שהמוצר שלהן ברור מאוד כי הוא כבר עובד ומכניס כסף באופן קבוע מזה הרבה שנים.
בחברות כאלה בדרך כלל תהיו חלק ממשהו יותר גדול, הרבה יותר גדול, לכן ההשפעה שלכם על המוצר או על הצלחה/כישלון תהיה מינימלית. כשתכתבו קוד הוא יתמקד במרכיב קטן ומצומצם מתוך המוצר הגדול.
בנוסף, סביר שהטכנולוגיות עליהן תעבדו לא יהיו המתקדמות ביותר בשוק.
מנגד, התנאים בחברות כאלו מאוד טובים, בעיקר בכל הנוגע לתנאים שמעבר לשכר, וכן אפשרויות הקידום מרובות ולכיוונים שונים.

סיכום

התיאורים הללו של מקומות העבודה השונים מאוד כלליים, ואני בטוח שיש לא מעט חריגים, אבל אני מקווה שעשיתי לכם קצת סדר בראש לגבי איך זה לעבוד כמתכנת בהייטק.