איך להתחיל ללמוד תכנות מאפס מהבית

16/02/2020

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

1. האם זה בכלל אפשרי?

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

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

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

2. מה כדאי ללמוד?

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

האמת היא שבחירת שפת התכנות הראשונה שלכם היא אחת הבחירות הכי פחות חשובות שתעשו. אני התחלתי עם שפה שנקראת Pascal שכבר כמעט לא קיימת היום, חברים אחרים התחילו עם Basic, באוניברסיטה בשנה ראשונה של תכנות למדנו שפה בשם Scheme, הרבה בתי ספר לימדו שפת C, ובשנים האחרונות עוברים ללמד Java כשפה ראשונה ואפילו Python.

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

3. איפה מתחילים?

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

חיפוש בגוגל של מילים כמו ״מדריך פייתון למתחילים״ או ״קורס פייתון למתחילים״ יביאו לכם עשרות תוצאות טובות מגוגל, ואפילו הממשלה הקליטה קורס פייתון בחינם מטעם המשרד לשיוויון חברתי וגם אותו אפשר למצוא תחת השם self.py. אם האנגלית שלכם טובה אני ממליץ על הספר Learn Python The Hard Way של Zed Shaw. הוא עולה 30$ ומתאים מאוד למי שמגיע בלי שום רקע קודם.

4. שיגרת למידה

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

השיגרה כאן היא ברורה ודורשת התמדה. בהנחה שבחרתם קורס וידאו או ספר:

  1. פותחים את הפרק הבא בקורס או בספר שמצאנו.

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

  3. רואים שהקוד עובד אצלנו על המחשב כמו שעבד בוידאו.

  4. משנים את התוכנית קצת כדי שהתוצאה תתנהג קצת אחרת מהוידאו.

לדוגמא בפרק הראשון של Learn Python The Hard Way זד שו מציע לכתוב תוכנית שמדפיסה על המסך 7 משפטים. הוא נותן את קוד התוכנית המלא בספר והמשימה שלכם היא להעתיק מילה במילה ולהריץ (הוא מסביר בדיוק איך). אחרי שעשיתם את זה הוא ממליץ על שינויים לדוגמא: לגרום לתוכנית להדפיס 8 משפטים במקום 7, לגרום לתוכנית להדפיס רק את אחד מהמשפטים, לגרום לתוכנית להדפיס מילים אחרות בחלק מהמשפטים וכו'.

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

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

5. האם אי פעם אצליח למצוא עבודה?

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

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

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

6. מה קורה אחרי העבודה הראשונה?

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

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

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

בהצלחה!