#71 מדריך הטרמפיסט להייטק – כללי התכנות ההישרדותי

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

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

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

כלל 1: תמצאי את מי להאשים

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

כלל 2: עובד? אל תיגע!  

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

כלל 3: ספגטיפיקציה – הקוד תמיד הולך ומסתבך

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

כלל 4: KISS (Keep It Simple Stupid)

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

כלל 5: לשאול – לא הביישן מקודד

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

כלל 6: עיקרון אי הוודאות של התוכנה

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

כלל 7: הקלות הבלתי נסבלת של התכנות

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

כלל 8: אי שוויון הקרדיטים, או עיקרון הפעולה המינימלית

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

כלל 9: עמימות קונסטרוקטיבית

לא להתחייב. לא לאיכות, לא לכמות, ובעיקר לא להתחייב ללוחות זמנים. יש לשמור על עמימות קונסטרוקטיבית לגבי מתי הפיצ'ר יהיה מוכן, תוך שימוש במילות מפתח כגון: WIP, On-Track, Business-As-Usual וכו'. אם המנהלת הלחוצה לוחצת לקבל צפי, אזי יש לעבור לשלב הניפוח: צריך לעדכן את הדוקומנטציה, ולכתוב מסמך בדיקות, ולשמור זמן לאינטגרציה. והמון, אבל המון באפרים. בקיצור זה ייקח בין שבוע לשלושה חודשים. במידת הצורך ניתן להשתמש בחוק הופשטטר: לעולם יידרש לך יותר זמן משציפית, גם אחרי שהבאת בחשבון את חוק הופשטטר.

כלל 10: אפקט "ראש לשועלים"

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

והמהנדס החכם אומר: והכלל הכי חשוב: לא בלחץ!


מתחת לקו:

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

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

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

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

6 תגובות בנושא “#71 מדריך הטרמפיסט להייטק – כללי התכנות ההישרדותי

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

    Liked by 1 person

להגיב על סטודנט אנונימי לבטל

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת /  לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת /  לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת /  לשנות )

מתחבר ל-%s