לדלג לתוכן

איך לתרגל אלגוריתמים בלי להשתגע

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

הבעיה עם איך שרוב האנשים מתרגלים

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

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

חוק ה-20 הדקות

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

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

איכות לפני כמות, תמיד

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

תתמקדו בדפוסים, לא בבעיות בודדות

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

איך לשמור על מוטיבציה לאורך זמן

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

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

מאיפה מתחילים בפועל

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

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

לסיכום

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

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

הצטרפו לקהילה בדיסקורד