הרגלים שכל מתכנת צריך שיהיו לו
הרגלים שכל מתכנת צריך שיהיו לו

יומנו של מתכנת: שלושה הרגלים שכל מתכנת צריך שיהיו לו

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

כתיבת הערות

code-comments
code-comments

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

לפתור בעיות חלק אחר חלק

פתירת בעיות חלק אחר חלק
פתירת בעיות חלק אחר חלק

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

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

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

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

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

לתכנת כל יום

למידה מעשית היא הלמידה הכי טובה
למידה מעשית היא הלמידה הכי טובה

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

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

ולסיכום

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

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

 

אודות יאיר משניות

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

4 תגובות

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

    תלמד קצת Server side, Design Patterns, Clean code
    ובוא נדבר עוד כמה שנים.

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

      בכל מקרה, מעריך את זה שהקדשת מזמנך להגיב. המשך ערב נעים 🙂

  2. גיא בנימין

    כתבה מעולה

השאר\י תגובה