ארבע טעויות שהורסות לנו את הלימוד
תהליך לימוד טכנולוגיה חדשה יכול להיות מהנה ומספק, אבל גם יכול להיות מלחיץ ולא יעיל. ברוב המקרים כשהתהליך נכשל זה בגלל שעשינו אחת או יותר מ-4 הטעויות הבאות:
1. ללמוד יותר מדי דברים ביחד
טעות מספר אחת והיא הנפוצה ביותר היא הרצון ללמוד יותר מדי דברים במכה אחת. זה בולט במיוחד בתחום של פיתוח Full Stack בגלל הכמות ההזויה של טכנולוגיות שנתקלים בהן. זה לא נדיר לראות מישהו שמנסה להיכנס לריאקט מנסה ללמוד גם Next.JS, גם JavaScript, גם React, גם Redux, גם MobX, גם CSS Modules, גם CSS In JS, גם Webpack, גם Material UI, וגם וגם וגם.
עכשיו מצד אחד יש פה הגיון כי במודעת דרושים או איפה שלא תסתכלו באמת יש רשימה ארוכה ומתישה של טכנולוגיות. אבל מהצד הפרקטי זה פשוט בלתי אפשרי להשתלט על כל כך הרבה חומר במכה אחת. כל פעם שאנחנו יורדים מהשביל כדי ללמוד עוד טכנולוגיה אנחנו רק מתרחקים מהיעד של היכרות טובה עם הטכנולוגיה אותה רצינו ללמוד מההתחלה.
במקום לרוץ לכל הכיוונים יותר משתלם להתמקד: לבחור רק טכנולוגיה אחת וללמוד אותה לעומק. אחרי זה להמשיך לשניה, ולשלישית ולרביעית. בזכות היכולת להתמקד כל פעם בטכנולוגיה אחת, הלימוד של כל טכנולוגיה יהיה מהיר יותר וזמן הלימוד הכולל יהיה קצר יותר - ובנוסף אתם תרגישו הרבה פחות מתוסכלים מהתהליך.
2. לחגוג הישגים אוביקטיביים
הישג אוביקטיבי הוא משהו שאפשר לראות ולהראות לאחרים. לדוגמה אם החלטתי ללמוד לכתוב אפליקציות לאייפון אז הישג אובייקטיבי יהיה אפליקציה שאנשים מורידים אותה ונהנים ממנה, ועדיף אחת בתשלום כך שגם נראה הכנסה מהעבודה.
או אם אתם לומדים פיתוח Full Stack אז הישג אוביקטי יהיה לבנות מערכת שתרשים מראיינים פוטנציאליים כדי שיזמינו אתכם לראיון עבודה או יותר טוב למצוא ממש עבודה בתחום.
אם המוח שלכם עובד קצת כמו שלי אז כל יום שעובר בלי הישג אוביקטיבי מוסיף לחץ בצורה של: "אולי אני לא בכיוון", "אולי לעולם לא אצליח לכתוב אפליקציה שאנשים ירצו", "אולי התחרות קשה מדי", "אולי בחרתי תחום שלא מתאים לי" ועוד אינספור מחשבות ופחדים מסוג זה.
הבעיה עם הישגים אוביקטים היא שהם באמת קשים להשגה. זה יכול לקחת שנה ללמוד Full Stack ברמה שתכניס אתכם לעבודה. זה יכול לקחת שלוש שנים להתאמן על פיתוח אפליקציות עד שתפתחו אחת שאנשים ירצו לשלם עליה ולספר עליה לחבריהם. המתנה להישגים אוביקטיביים אומרת שאתם מעבירים את רוב תהליך הלימוד בחששות ובלחץ שאולי אתם לא בכיוון הנכון ושאולי זה אף פעם לא יצליח. באקלים רגשי כזה מאוד קשה להנות מהלימוד ולהגיע לנקודת הסיום.
במקום לחכות להישג אוביקטיבי הרבה יותר מומלץ לחגוג הישגים סוביקטיביים. כשהתחלתי ללמוד פיתוח אפליקציות לאייפון כתבתי את האפליקציות הראשונות שלי רק על סימולטור והחלטתי שברגע שאני מסיים לכתוב משהו שעובד אני קונה לעצמי מכשיר אמיתי (אז היה דבר בשם ipod touch). הנקודה שלבנות משהו שעובד זה הישג שתלוי רק בי והוא הרבה יותר מהיר מלבנות משהו שאנשים ירצו לקנות. ואחרי שקניתי את ה ipod touch קיבלתי חיזוק למוטיבציה שעזר לי להמשיך עד ההישג הסוביקטיבי הבא.
כשאנחנו חוגגים הישגים סוביקטיביים אנחנו לא פוגעים בסיכוי שלנו להגיע להצלחה - בדיוק להיפך. אנחנו מעודדים השקעה מתוך הבנה שההצלחה היא תוצאה של תהליך והדבר החשוב הוא לבנות תהליכים נכונים.
3. ללמוד יותר מדי תיאוריה
טעות מספר שלוש היא להיתקע על תיאוריה ואצלנו בתכנות היא מאוד בולטת. זה מה שקורה כשאנשים לוקחים עוד קורס ועוד קורס ונתקעים על פרויקטים של קורסים ותרגילים קטנים במקום ליישם את הידע ולהתקדם לפרויקטים יותר ויותר גדולים.
חלוקת העבודה בין לימוד מקורס לבין עבודה אמיתית בקורס תכנותי צריכה לעמוד על חמש-אחד, כלומר כל שעה שהשקעתם בלימוד אתם צריכים להשקיע 5 שעות בכתיבת קוד אמיתי. זה אומר שמי שלוקח קורס וידאו שהאורך שלו הוא 8 שעות וידאו צריך להשקיע בנוסף ל-8 שעות צפיה בוידאו עוד 40 שעות בכתיבת קוד אמיתי על הנושאים שנלמדו בוידאו.
4. לנסות לשלוט בקצב
טעות רביעית שיוצרת תסכול בתהליך הלימוד היא הניסיון לשלוט בקצב הלימוד או יותר נכון בקצב הקליטה. לימוד הוא לא לינארי והרבה מאוד פעמים אני נתקע המון שעות על איזה נושא מסוים שנראה ממש קטן ולא חשוב, כשפעמים אחרות אני רץ ומבין מהר המון נושאים אחרים.
הניסיון לסדר את הלימוד בתוך סילבוס ולהחליט שייקח לי שלוש שעות ללמוד להשתמש ב React Hooks תורם רק תסכול.
אף אחד לא יודע כמה זמן ייקח לך ללמוד React Hooks או Redux Middlewares, וזה בסדר. בתהליך לימוד מומלץ להסתכל על כמה שעות לימוד יש לי בשבוע ואיך אני מנצל בצורה יעילה את השעות האלה. אין דרך לתכנן או לשלוט בכמה שבועות ייקח לי ללמוד נושא מסוים וזה גם בכלל לא משנה. אנחנו לא שולטים בקצב.
5. לסיכום: איך להימנע מכל הטעויות בתהליך הלימוד
נניח שהחלטתם ללמוד פיתוח Full Stack בלי ליפול לאף אחת מארבעת המלכודות שראינו. הנה מה שאפשר לעשות:
לומדים את הטכנולוגיות לפי הסדר, אחת אחרי השניה. כדאי לעבוד לפי סילבוס מסודר שיעזור להישאר ממוקדים.
להחליט על "הישגים" סוביקטיביים שתלויים בכל וקשורים לסילבוס ולנקודות מרכזיות בו. זה יכול להיות האתר הראשון שהעליתם לאוויר, הקוד האינטרקטיבי הראשון שכתבתם, הפעם הראשונה שכתבתם ברכה אינטרנטית לחבר או חברה, או אפילו סיום תרגילי הסיכום של פרק מסוים בסילבוס. כשיש לכם מול העיניים רשימה של הישגים סוביקטיביים ופרסים קטנים שמתאימים לכל הישג הרבה יותר קל להתקדם.
לחלק את הזמן לזמן לימוד וזמן תרגול ובזמן התרגול לעבוד על פרויקטים או רעיונות שלכם. אם יש לכם 10 שעות בשבוע של לימוד אז תחלקו אותן שעה לראות וידאו, עוד שעתיים-שלוש לפיתרון תרגילים קטנים על הנושא שהיה בוידאו ועוד שבע-שמונה שעות לבניה של רעיון שלכם באותם הכלים. בשביל לא לגלוש עם הטכנולוגיה אפשר להיעזר בפרילאנסרים שיבנו בשבילכם את החלקים שאתם עדיין לא שולטים בהם (לדוגמה לקחת פרילאנסר שיבנה לכם את ה CSS ואתם תכתבו את ה JavaScript, או לקחת פרילאנסר שיבנה את קוד צד השרת ואתם תתמקדו בקוד צד הלקוח).
להתחיל את הלימוד כמה שיותר מוקדם ולא כשיש לכם דד-ליין. אם יש לכם ראיון עבודה על ריאקט בעוד שבועיים אז יהיה מאוד קשה לבנות תהליך לימוד מהנה לשבועיים הקרובים עד הראיון; אבל אם התחלתם ללמוד Full Stack תוך כדי עבודה במשרה חלקית בתור מתכנתי Java אז הלימוד לא "תוקע" אתכם בחיים ואתם יכולים להשקיע את הזמן שצריך כדי להגיע לרמה אליה אתם שואפים.
נ.ב. תודה לקלות'ילד על ההשראה לפוסט זה ורבים נוספים.