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


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

Roni Shternbach's face

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

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

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

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

בתור בוגר עבדתי במספר תפקידי קצה בתחום ההיי טק, בעיקר בתחומי הנדסת שירות ותמיכת לקוחות (Professional Services / Customer Support Engineer). במסגרת העבודה נסעתי ברחבי העולם, צברתי חוויות מדהימות ועבדתי עם לקוחות עסקיים מהארץ ומחו"ל. עברו כמעט שנתיים מאז סיום התואר, אבל לא הרגשתי שלם עם הקריירה שלי. צברתי כבר מספיק ניסיון וידע בתחום שלי, מספיק כדי לעבור כל ראיון עבודה ולעבוד באיזו חברה שאני רוצה. ובכל זאת, משהו היה חסר. היום אני יודע, בדיעבד, שמה שהפריע לי הוא שלא יצרתי שום דבר שלי, מעצמי.

על ההחלטה לעבור לפיתוח תוכנה

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

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

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

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

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

איך למדתי לתכנת לבד?

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

מתוך עשרות אלפי האתרים שמוקדשים ללימוד שפת Java, בחרתי עבורכם ב-5 המומלצים ביותר, שבחלקם אני נעזר עד היום:

  1. Stack Overflow - אין מה להכביר במילים. מדובר בקהילת המפתחים הגדולה ביותר ברשת. תוכלו למצוא כאן שאלות ותשובות לתרגילים, בעיות, ופיתוחים רבים, שונים ומשונים לשפת JAVA.
  2. Java Code Geeks - אתר עם מספר רב של מאמרים ומדריכים לפרויקטים קטנים שמלמדים הרבה. מומלץ במיוחד ללימוד ספריות ה-Enterprise של JAVA.
  3. Coding BAT - אתר שנראה דל בתחילה, אבל מכיל עשרות תרגילים ופתרונות. מאוד שימושי להכנה לראיונות עבודה.
  4. Code Academy - האתר מציע קורס חינמי מאוד בסיסי בשפת Java, אבל מהווה תרגול מצוין למתחילים.
  5. Thinking in Java - לא אתר אלא ספר, אבל בגלל שמדובר במדריך המפורט והמקיף ביותר לשפת Java שנתקלתי בו עד כה, לא יכולתי להשמיט אותו מהרשימה. היתרון הגדול של הספר על פני ספרים אחרים הוא בשפה הפשוטה ובהסברים המפורטים שלו. גרסת ה-PDF זמינה להורדה חינמית בלא מעט אתרים.

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

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

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

איך מצאתי עבודה בפיתוח תוכנה?

בניגוד לתחום ה-Front-End, תחום ה-Backend נלמד בצורה נרחבת באקדמיה, ולכן הוא הרבה פחות "פרוץ". אם ה-Front-End כולל אחוז גבוה יחסית של מתכנתים שלמדו לבד וללא תואר אקדמי רלוונטי, תחום ה-Backend מאויש ברובו על ידי מתכנתים שלמדו מדעי המחשב / הנדסת תוכנה. זה אומר שדרישות הסף לקבלה למשרת הפיתוח הראשונה יהיו גבוהות יותר, ולרוב יכללו תואר רלוונטי בממוצע גבוה, ושבאופן יחסי יותר קשה להשיג ראיון למשרת הפיתוח הראשונה בשפות Backend כמו C / C++ / PYTHON / Java / וכו' מאשר למשרות פיתוח בשפות Front-End כמו JavaScript, HTML5 וכו'. מצד שני, עם התפשטות האינטרנט לכל תחומי החיים, הדרישה למתכנתים בשפות ה-Backend רק עולה. מאחר ורוב האנשים עדיין נרתעים מתכנות, היצע המתכנתים נשאר נמוך, וזה מבטיח שמעסיקים רבים ירצו להעסיק אתכם גם ללא תואר במדעי המחשב (שגם ככה הופך ללא רלוונטי לאחר מספר שנים עם התחדשות הטכנולוגיה) - כל זאת בתנאי שיש לכם את הניסיון הדרוש.

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

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

סיכום

אני מקווה שכל אחד לקח מהמאמר את המידע הדרוש לתהליך שלו.

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

בהצלחה.

אשמח לענות על כל שאלה בתגובות למאמר או במייל.