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