כניסה לתחום

צעדיי הראשונים בעולם התכנות

ניר בן יאיר | 18 באפריל 2017

לפני מספר ימים ניהלתי שיחה עם אחד מחבריי הטובים וסיפרתי לו שהתקבלתי לעבודתי השנייה כמתכנת למרות שאין לי תואר בתחום. הוא שאל אותי שאלה מעניינת: ״אם אפשר לעבוד בתחום מעניין כזה ובתנאים מעולים ללא תואר – למה אנשים לא עושים את זה?״.

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

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

2015 – ההחלטה ללמוד באוניברסיטה

"אחרי הטיול הגדול הבנתי שאני צריך להתחיל ללמוד"

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

הגעתי לאוניברסיטה ללא  ידע בתכנות מלבד כתיבת שלוש שורות HTML בשיעור מחשבים בכיתה ו׳.

אחרי סמסטר אחד בלימודים, בו עשינו קורס תכנות אחד ב -JAVA ושלושה קורסים מתמטיים (שבשניים מהם נכשלתי), הבנתי את שלושת הדברים הבאים:
א. הסיכויים שלי לסיים את התואר הזה קלושים.
ב. אני די סובל בלימודים, בעיקר מהמתמטיקה הקשה והגישה הנוקשה של האקדמיה.
ג. לתכנת זה דווקא כיף!

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

2016 – מתחיל ללמוד פרונט אנד מחוץ לאוניברסיטה

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

התשובה הייתה חד-משמעית וחיובית, וכללה המלצה לבדוק את תחום הפרונטאנד (Front End)  – תחום שיש דרכים רבות ללמוד אותו עצמאית.
המשך השיחה נשמע בערך כך:

אני : ״אז מה זה פרונט אנד?״

גיל : ״זה כל הממשק שהמשתמש רואה. מכיר את כל הכפתורים האלה שיש ב ynet? מישהו היה צריך לתכנת אותם.״

אני : ״ואיך הם עושים את זה?״

גיל : ״הבסיס הוא HTML ו CSS. ה-HTML אחראי על הכנסת האלמנטים כמו הכפתור לדף, וה-CSS אחראי על העיצוב שלהם״

אני : ״עדיין משתמשים ב-HTML? אין היום כבר תכנות יותר מתוחכמות שעושות דברים אחרים ומתקדמים?״

גיל : ״ממש לא. HTML זה הבסיס.״

אני : ״ומה עם שפת תכנות של ממש?״

גיל : ״תלמד JavaScript. נכון כשאתה נכנס ל GMAIL שלך ולוחץ על הודעה חדשה, נפתח לך חלון מתאים? לזה JavaScript אחראית.״

אני : ״מגניב. אני אלמד את זה.״

המחשבות של גיל: (״כן בטח…״)

חזרנו לארץ והתחלתי ללמוד. דוד שלי, גיל המתכנת, שלח לי לינק לאתר FreeCodeCamp שמאפשר ללמוד לבד, ללא ידע קודם בתכנות, איך לתכנת פרונט אנד.
יש באתר מסלול לימודים מסודר, עם תרגולים, ובסוף כל פרק יש פרויקט שמסכם את מה שלמדת. לדוגמא: בפרק הראשון לומדים CSS ו – HTML ובסוף השיעורים יש פרויקט של בניית דף אחד מאתר אינטרנט שהם מגדירים. הקורס מכיל בתוכו 800 שעות סה״כ. (בסופו של דבר אני סיימתי רק 25% ממנו.)

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

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

 

״אני מבין את החומר אבל אני לא זוכר ממנו כלום ביום למחרת״

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

יוני 2016 – האתר הראשון שלי

בנקודה זו ארגז הכלים שלי מכיל את הכלים הבאים:
א. HTML ברמה התחלתית.
ב. CSS ברמה התחלתית.
ג. JavaScript – על קצה המזלג.
ד. קורס תכנות אחד שעשיתי עד כה באוניברסיטה.

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

נקודות חשובות שלמדתי מהפרויקט הקטנטן הזה :

TeamTreeHouse.com

סיימתי רק 25% מהקורס ב-FreeCodeCamp ממנו עשיתי הפסקה כדי להתרכז בבניית האתר הראשון שלי.

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

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

ספטמבר 2016 – פרוייקט נוסף

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

וכך בניתי את מחולל הממים העברי שלי – Memeking

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

ריאיון עבודה ראשון – כישלון חרוץ

תוך כדי העבודה על המחולל, שלחתי קורות חיים לכל מיני משרות שראיתי בפייסבוק. בהתחלה לא חזרו אלי מאף מקום, אז התחלתי לחפש על איך נכון לכתוב קורות חיים. קראתי המלצות בגוגל והכנתי קורות חיים חדשים ומעוצבים יפה בפוטושופ ושלחתי לעוד כמה מקומות. אחרי שבועיים הצלחתי להשיג ריאיון ראשון למשרת Junior Frontend Developer בחברת היי-טק. הגעתי לריאיון והושיבו אותי מול מחשב עם משימה: לבנות דף אינטרנט ב-html,css,js בשעה וחצי.
העיצוב היה טיפה מסובך והזמן הקצר שהוקצב למשימה השפיע עלי וגרם לי לאבד את הריכוז.

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

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

תסמונת המתחזה

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

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

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

ריאיון עבודה שני – הצלחה

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

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

הייתי מאושר עד הגג והתחלתי לעבוד יומיים אחרי הריאיון.

עבודה כמתכנת פרונט אנד מתחיל (ג׳וניור)

עדיין לא קראתי לעצמי מתכנת. בראש שלי תיאור המשרה היה יותר בכיוון של ״בן-אדם שמתעסק עם HTML וזה אחלה כי הולכים לשלם לי כסף כדי לשבת מול מחשב ולעשות מה שממילא הייתי עושה בבית״. בתחילת הדרך בחברה התעסקתי בעיקר בבניית אתרים רספונסיביים תוך שימוש בטכנולוגיות HTML,CSS, JavaScript ו-jQuery. הופתעתי לדעת שלמרות שבחברה יש כ-20 מתכנתים מעולים ובעלי ניסיון רב – נהפכתי למוקד ידע בתחום הפרונט אנד פשוט כי אף אחד מהמתכנתים הבכירים לא הכיר את התחום הזה לעומק.

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

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

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

הכנה לעבודה הבאה

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

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

  1. מוסיף לקורות חיים שלי את הנושא הזה ושולח אותו למודעות דרושים שראיתי.
  2. מעלה את הפרוייקט שבניתי ל – GitHub (אתר בו מתכנתים יכולים להציג את הקוד שלהם).

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

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

פרישה מהתואר

 

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

עבודה שנייה, כמפתח פול סטאק

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

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

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

הייתי מאושר! זה חיזק אותי בהחלטתי לעזוב את הלימודים – החלטה שהלכה והסתברה כנכונה וטובה.

סיכום

לסיכום, הייתי רוצה לתמצת מס׳ נקודות חשובות למי שמתעניין להיכנס לתחום:
1. רף הכניסה לעולם הפרונט אנד נמוך והביקוש לאנשים מהתחום רק עולה.
2. לא חייבים להיות גאוני אלגוריתמים שמתכנתים מגיל 9 ובעלי תואר מהטכניון בשביל לתכנת בחברה טובה, עם אנשים נחמדים, ותנאים מעולים.
3. ידע פרקטי הוא בעל ערך שלא יסולא בפז. לעתים יש פערים רבים בין הידע הנצבר באקדמיה לבין מה שנדרש בשטח וחברות רבות לא מתעניינות בתואר שלך אלא במה אתה יודע ואיזה ערך אתה יכול להביא לחברה.
4. לתכנת זה ממש כיף.

ניר בן-יאיר

12 תגובות על “צעדיי הראשונים בעולם התכנות”

  1. דניאל הגיב:

    כתבה מעולה!!

  2. רן ברקוביץ׳ הגיב:

    אחלה של כתבה בן אדם! ריספקט.

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

    בקיצור . תענוג לקרוא. בהצלחה!

  3. אייל הגיב:

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

  4. נאור הג'ינג'י הגיב:

    כתבה מעולה, כתובה בצורה כיפית ונותנת תקווה לעתיד.
    תודה על השיתוף(:
    נ.ב.
    אתה עדיין חייב לי וסט

  5. נטלי הגיב:

    מעורר השראה.. עכשיו נכנסת לאתרים ומתחילה ללמוד

  6. eran הגיב:

    מעורר השראה ! אני לומד כבר שנה וחצי באופן עצמאי,התחלתי בגיל מאוחרר יחסית כמעט 26 , תמיד יש הרגשה שאתה לא מספיק טוב טוב למרות כל המאמצים שאתה עושה..
    למדתי html ,css,bootstrap,javascript,jQuery,angular2/4 ,angular material,firebase ועדיין מרגיש כמו אפרוח ! למרות כל ההשקעה .. כל הכבוד אחי מעורר השראה !

  7. יוני הגיב:

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

    תצליח ותפציץ !!!

  8. זיו הגיב:

    תודה!

  9. יוליה הגיב:

    ממש נהנתי לקרוא! תודה!

  10. אופיר זבידה הגיב:

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

  11. אוהד הגיב:

    מדהים, תודה!

  12. מוטי הגיב:

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

כתיבת תגובה

האימייל לא יוצג באתר.

הוספת תגובה בפייסבוק