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


סיפורו של מתכנת שלמד לבד - אביתר אלוש

Evyatar Alush

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

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

השבוע, בסוף אחת הישיבות שערכנו כל המתכנתים, החלטתי לשאול מי מבין המתכנתים למד לתכנת בעצמו, והאמת שאפילו אני הופתעתי. ל-Fiverr יש 11 מתכנתי Front-End בישראל (יש עוד בחו"ל):

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

מתוך 11 מתכנתי Front-End, שבעה למדו לבד. זה כמעט שני שליש!

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


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

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

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

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

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

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

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

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

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

לא הבנתי הכל, אבל יש משהו אחד שבהחלט הבנתי - יש פה כח עצום, גם אם אני לא ממש יודע מה לעשות איתו. אני זוכר את הלילה שבו סיימתי את הקורס בשפת Javascript שבאתר. ידעתי שאני דורך על "מכרה זהב", אבל לא ידעתי כל כך איך לגלות אותו, ולכן, פניתי לחברי הטוב, גוגל. שאלתי אותו: "I just learned Javascript, now what?". שאלה קצת מצחיקה, אבל לדעתי היא מייצגת משהו שהרבה מתכנתים מתחילים מרגישים. איך בכלל משתמשים בכל הכח שיש לנו בידיים?

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

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

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

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