פרסומת

תכנות הוא קָשֶׁה. האנשים היחידים שאומרים אחרת הם אלה שיש להם שנים של ניסיון בקידוד. זה בסדר להיות המום! יש מִגרָשׁ ללמוד וכנראה שתשכח דברים באותה מהירות שתלמד אותם. תאמין לי: זה נורמלי.

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

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

אין יותר סשנים של Cram

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

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

instagram viewer

הבסיס לטענה זו בא ממחקר משנת 2008 מאת אוניברסיטת קליפורניה, סן דייגו:

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

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

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

במילים אחרות: בכל מפגש לימוד נתון, סביר יותר שתשמור את המידע שלמדת ליד ההתחלה והסוף של הפגישה וסביר יותר לשכוח את המידע מאמצע המפגש מוֹשָׁב.

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

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

סקירה, סקירה, סקירה

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

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

כאן נכנסת לתמונה הביקורת.

newbie-coder-tips-memory-review

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

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

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

השתמש במספר משאבים שונים

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

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

newbie-coder-tips-code-confusion

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

שיתפתי את האיור הזה בעבר, אבל הוא כל כך נקודתי עד שיש לחזור עליו:

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

ללמוד לתכנת יכול להיות שרירותי באופן מפתיע. כולם עשויים לשבח את משאב א' בתור הדרך הטובה ביותר ללמוד את שפה X, אבל אולי זה לא הגיוני עבורך. אולי כולם שונאים את משאב B אבל תעיף מבט אחד וזה הגיוני לחלוטין! לגבי מישהו אחר, אולי הם מתרחקים בזמן לימוד משאבים א' ו-ב' אבל מרוויחים מאוד ממשאב ג'.

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

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

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

למד מושגים כפי שאתה לומד אותם

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

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

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

"אם אתה לא יכול להסביר את זה בפשטות, אתה לא מבין את זה מספיק טוב."

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

newbie-coder-tips-rubber-duck

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

זה נקרא למידה לפי הוראה וזה בעצם טוויסט של ניפוי ברווז גומי.

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

תרגול מכוון עושה מושלם

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

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

מתחיל-קודן-טיפים-תרגול-מכוון

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

איך אתה מתאמן חשוב הרבה יותר מאשר כמה זמן אתה מבלה בתרגול.

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

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

התנסות בפרויקטים אישיים

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

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

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

חדש-קודן-טיפים-פרוייקטים אישיים

מה הפתרון? צור כמה פרויקטים צדדיים!

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

היופי בגישה זו הוא כפול.

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

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

הירגע והוסף הכל

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

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

newbie-coder-tips-reference-everything

אז מתי לשנן ומתי להתייחס?

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

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

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

מחשבות אחרונות

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

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

האם קשה לך לתכנת? אילו טריקים וטיפים אתה מכיר שעשויים להיות מועילים למקודדים מתחילים? שתף אותנו בחוכמתך בתגובות למטה!

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

לג'ואל לי יש תואר B.S. במדעי המחשב ומעל שש שנות ניסיון בכתיבה מקצועית. הוא העורך הראשי של MakeUseOf.