אם יורשה לי רגע של מרמור על המקצוע בו אני עוסקת.
מתכנתים הם אנשים תזזיתיים. אנשי סיסטם עשויים להיות רגועים כשאין אסון גדול, שלווה יכולה לשרור במחלקות QA. "מומחים טכנולוגיים" יכולים לשבת בשיכול רגליים על פוף עם קטורת מיטמרת. אבל תראו לי קוד ואראה לכם אנשים שמתרוצצים סביבו. והסיבה שהם מתרוצצים סביבו היא שכמעט לכל אחד יש את הסטיות שלו שמפריעות לו ולאחרים לעבוד בשקט. לאחרונה יצא לי לתהות הרבה על תהליך הכשרתם והתפתחותם של מפתחים. זאת אומרת, עסקתי בשלבים שונים של הכשרה בשלבים שונים של חיי – הדרכתי חיילים, לימדתי בחטיבה, חפפתי אנשים בעבודה, ואחרי כל אלה גם הייתי ערה מאוד למה קורה סביבי באוניברסיטה. אנשים לומדים לתכנת מאנשים אחרים, בעיקר, ופחות מספרים או קורסים. בדיוק כמו שלומדים להיות בן אדם. זאת אומרת, יש אולי כמה מוגלי-ים שהצליחו ללמוד לבד, אבל רוב הדור הנוכחי שכבר היה לו IRC לשאול בו שאלות כבר למד לתכנת ממישהו.
ואם ללמוד לתכנת זה קצת כמו התפתחות של בנאדם, אז אין לנו מישהו טוב יותר כדי לומר כמה מילים בנושא מאשר הדוקטור זיגמונד פרויד. זאת אומרת, למתכנת אמור להיות גם מודל התפתחות. אז באמצעות מ. וג. (וכמה בירות) מצאנו אותו. הוא דומה במפתיע למודל ההתפתחות הפסיכואנליטי, אבל זה בעצם הגיוני למדי, כי למרות מה שהטלויזיה ניסתה ללמד אותנו לאורך השנים, חנונים, וביניהם גיקים של מחשבים, הם עדיין בני אדם…
אז בקצרה בשביל מי שלא עבר דרך תיאוריות התנהגותיות בחוג לפסיכולוגיה או בערך כל דבר במדעי הרוח, המודל הפסיכוסקסואלי על רגל אחת אומר שיש שלבים בהתפתחות של ילד שעוברים דרך איזורים שונים בגוף שם מתרכזת המיניות של הילד (כן, הזקן האשמאי חושב שלילדים בני חצי שנה יש מיניות). אם לא עברת כמו שצריך שלב, הוא ישאר כקבעון שישפיע עליך בחייך הבוגרים. והאיזורים? שמחה ששאלתם. הפה (אוראלי), הטוסיק (אנאלי), הבולבול (פאלי), אח"כ תסביך אדיפוס (תמות, אבא, תמות), חביון (מין? מה?), ולבסוף תראו-אותי-איזה-גבר-מיני-אני (גניטלי). ובשלב הזה אתה, בתקווה, מבוגר מתפקד.
אז, כאמור, אחרי כמה בירות באמצע ינואר בחיפה הרחוקה, הצלחנו לנסח את הדבר הבא:
מתכנת נולד. נולד, משמע לומד שפת תכנות ראשונה. קורא ספר, עושה כמה קורסים ראשונים באוניברסיטה, אולי אפילו לומד קורס הסבה. אבל התבגרותו לא מתחילה עד שהוא מתחיל לעבוד על פרוייקט רציני ראשון עם אנשים, לא סתם תרגילים בעצמו. לתכנת לומדים מאנשים כבר אמרנו?
אצל פרויד: זהו השלב בו מקור העונג העיקרי הוא הפה – האוכל והעובדה שמכניסים לתוכו ציצי. יצירת פיקסציה בשלב האוראלי אצל אנשים רגילים מתבטאת בחיפוש אחר הגירוי האוראלי (מסטיקים, סוכריות, סיגריות).
בהתבגרות המתכנת, השלב האוראלי גם הוא בראשית הדרך, כשאף אחד לא יתן לפישר הזה לכתוב קוד. הוא מתבטא בסיפוק והתקדמות בעיקר על ידי תשובות לשאלה "איך אתה היית עושה את זה אם היינו מרשים לך?" יצירת קיבעון בשלב זה תגרום למתכנת להמשיך "לדבר על זה" לשארית הקריירה. צריך לכתוב פיצ'ר? איך נעשה את זה? יש דרישות? בואו נדבר עליהן ונראה שמבינים אותן כמו שצריך. מתכנתים בעלי קיבעון אוראלי יתקדמו בסבירות גבוהה להיות ראשי צוותים או מנהלי מוצר מהסוג שמזמן הרבה פגישות מיותרות ומבלה את רוב זמנן בלדבר בעצמו.
אצל פרויד: זהו השלב בו עיקר העונג מתבטא בשליטה בסוגרים, ובמחמאות מההורים על ההצלחה בכך. יש גם תת-שלב שבו הילד מחליט כי היציאות שלו הן דבר יקר ערך (הן, אחרי הכל, שלו) ורוצה לשמור אותן ולגונן אותן. ולשחק בהן. יצירת פיקסציה בשלב הזה… נו, מכאן הביטוי anal retentive.
בהתבגרות המתכנת, זה השלב שבו המתכנת מקבל את המשימות הגרועות והמשעממות, בדרך כלל משיקולי עלות-תועלת של הפרוייקט, אבל למרות שהוא מבין שהן משימות מחורבנות, הוא גם שואב את הסיפוק מסיומן. (בשלב זה של ההתפתחות המתכנת הצעיר בד"כ לא למד עדיין להבחין בין הנאה לסיפוק.) מתכנת בעל קיבעון אנאלי יהיה בדרך כלל "מומחה האופטימיזציות" או "זה שעובד על הברזלים" בפרוייקט, הוא יעשה אופטימיזציות זיכרון שיהפכו את זמן העליה של התהליך למהיר יותר ב-4%, אבל תכל'ס, רוב האנשים בצוות חושבים שהוא משחק בקקי.
אצל פרויד: זהו השלב שבו הילד מגלה שלגעת בעצמו זה נעים. ואז חוטף מכות כי אסור. קבעונות כאן נוטים להתבטא באגרסיביות ושאפתנות-יתר.
המתכנת, לעומת זאת, לומד בשלב זה כיצד בונים מגדלים של קוביות, so to speak, ומגיע לראשונה למצב של "וואו, קודם הייתה פה בעייה ממש קשה, ועכשיו יש פה הרבה קוביות קטנות, שאני מבין כל אחת מהן, וביחד הן פותרות את הבעייה!" זוהי מידת סיפוק שבדרך כלל נקטעת על ידי המבוגר האחראי – כלומר ראש הצוות – שיעביר את המתכנת לעבודה משותפת עם אחרים, שם הוא עדיין יבין את הקוביות הקטנות אבל לא ירגיש את הדגדוג הנעים של אני מבין איך כל החלקים עובדים, והמגדל הגדול שעובד הוא קסם!
יצירת פיקסציה בשלב זה תגרום למתכנת להתחמק מעבודת צוות בכל הנוגע לקוד שהוא מכיר, ולשאוף לעשות הכול בעצמו כמה שאפשר, כי הוא רוצה לראות את זה עובד בעצמו. ברגע שפיסת קוד לא מוכרת אחת תופיע, יזרוק המפתח את הכול ורמת העניין שלו תרד לאפס. תגובת המתכנת עם פיקסציה פאלית להצלחה היא קיצונית – הוא יוסיף עוד ועוד חלקים לתכנה בפרץ כמעט מאני, וימשיך להתלהב מכל אחד חדש שעובד כאילו הוא חלק מן הפתרון הבסיסי. אם תרצו: הוא בונה לעצמו מגדל גדול יותר כדי להמשיך ללטף.
אצל פרויד: הילד, שבדיוק גילה שהבולבול שלו טוב כדי לעשות לו נעים, מגלה שהוא נמשך לאמא, אז הוא שונא את אבא ורוצה להוציא אותו מהתמונה. בשלב כלשהו הפחד מאבא מנצח, והוא זונח את אהבתו לאמא ומאמץ את אבא כמודל חיקוי. (נשמע כמו משפחה אוהבת, לא?) בעיות בפתרון התסביך יכולות להיגרם על ידי דמות אב חלשה מדי או אב חסר, מה שיקשה עליו לפתח קשרים רומנטיים בריאים, או על ידי דמות אב מאיימת מדי, מה שיגרום לו לנוירוזות ולמוסריות לקויה.
המתכנת, בערך בשלב זה של התפתחותו, מתחיל לחשוב שאם הוא הצליח לפתור בעיות מורכבות, אז הוא כל יכול. ולא רק שהוא כל יכול, הוא יודע הכי טוב. יותר מאחרים בצוות, ובעיקר טוב יותר מראש הצוות שלו. ובכלל, האיש לא מנהל אותו כמו שצריך, הוא היה יכול לעשות גם את זה כל כך הרבה יותר טוב. וכאן נוצרת השאיפה להדיח את ראש הצוות הנוכחי ולהפוך לראש צוות בעצמו. במידה ובשלב זה המתכנת עובד אצל ראש צוות בעל כישורים, הלה יעמיד אותו במקומו במהרה.
ייתכן, כמובן, שראש הצוות שעומד מולו הוא חלש. במקרה זה, ייתקדם המתכנת למשרת ניהול מכוח האמונה שלו בעצמו והמתקפה שהוא מנהל על ראש הצוות. למעט יחידי סגולה שיצליחו לשרוד את המעבר הזה, רוב המתקדמים-מוקדם-מדי הללו יפלו על הפרצוף וימצאו חצי שנה או שנה אחר כך כשהם מחפשים עבודה חדשה כמתכנתים – אך כמובן שהם גם מסומנים חברתית ככאלה שניהלו וגם ייתקשו להיות מנוהלים על ידי אחרים גם בעתיד. לעומת זאת, יכול להיות שמול המתכנת עומד ראש צוות אגרסיבי מדי. במקרה זה יקבל הפרחח smackdown שלא נראה כמוהו מאז הפעם האחרונה שמישהו חשב שהוא הולך לעשות פוטש בצוות, ובעוד חצי שנה תמצאו אותו לומד קונדיטוריה או ריפוי בעיסוק.
כן, כמו בחיים, זהו השלב המכריע. ומי שעבר אותו בהצלחה יעבור אל
אצל פרויד: מכיוון שערכי האב הוטמעו עד כה בצורה סבירה, הילד מתייחס למין כדבר מלוכלך ומדחיק את האספקטים המיניים שלו עד שגיל ההתבגרות ישחרר אותו מכך.
המתכנת שעבר בהצלחה את השלב הקודם יגיע כעת למעיין שגרת עבודה סבירה. אולי הוא יחליף מקום עבודה או שניים בשנים הקרובות מסיבות של עניין או פרנסה, אבל בשלב זה הוא כבר הספיק להפנים שתכנות הוא רק כלי, והעולם לא יקום או יפול על בחירת שפת תכנות או טכנולוגיה לפרוייקט. הוא ייתמקצע מעט, אולי אפילו יסומן כבן-טיפוחין להנהלה זוטרה.
אלא, כמובן, אם הוא דפוק לגמרי מכל השלבים הקודמים. כי כמובן שבשלב זה, כל מני daddy issues, פיקסציות אוראליות, וכו' יצוצו אצל מי שעד לפני חצי שנה חשבתם שהוא דווקא סבבה לגמרי…
אצל פרויד: זהו שלב הבגרות המינית שמתחיל בגיל ההתבגרות, בו הדחפים המיניים (וסיפוקם ע"י איברי המין) נהיים מודעים אצל הנער. מי שהגיע לכאן בהצלחה יחווה, כך מספרים, בגרות נורמטיבית.
המתכנת שהגיע עד הלום בלי להתקע בשום מקום הצליח לצבור שתיים או שלוש שורות רזומה מכובדות שבאות עם המלצות טובות. כאן הוא מגיע לצומת בחייו המקצועיים, אך בניגוד לאלה שראינו קודם, צומת זו היא אישית וכל האפשרויות בה נכונות. האם ילך המתכנת לניהול, כעת כשהוא בשל לכך? האם יהפוך להיות מתכנת בכיר בצוות גדול? יקים סטרטאפ עם חברים? כל אלה, הרי, דורשים את הבשלות שהמסע נתן לו.
ומי שהגיע לנקודה הזו דפוק? טוב, הוא ישגע את עמיתיו לעבודה. אבל, אם זה מנחם באיזושהי צורה, שוק העבודה הישראלי מעודד אותנו להידפק בצעירותנו ואז זורק אותנו בבגרותנו. (למעשה, הוא בעיקר מעודד אותנו לא לעבור בהצלחה את התסביך האדיפלי. אבל זו כבר טרוניה אחרת לגמרי.) אז הנה לחיי המשחקים בקקי שממררים את חיי על בסיס יום-יומי. אני בטוחה שאתם יודעים מי אתם.
יש יוצא מן הכלל לסעיף 4: אדם בעל רקע בתכנות שעובד עם כותבי-סימולציות באקדמיה, סביר שהוא באמת יודע הכי טוב בצוות. הוא כנראה היחיד שיודע דברים בסיסיים כמו אינדנטציה, הערות, ומודולריזציה. תוכנה אקדמית נמצאת תמיד ברמה של מתכנת עם עד שנה נסיון, כי אחרי זה המתכנת גומר את התזה, והוא בשום אופן לא מקבל משוב מקצועי מאף אחד בזמן הזה, המנחה שלו מתעניין רק בצד המדעי.
תגובה של יוסף — 11/06/2011 @ 3:52 PM
המ. מה שאתה אומר נכון, למעט העובדה שזה יוצא מהכלל. למה? כי הוא עדיין לא יודע מספיק טוב בשביל להשתלט על הצוות. הוא לא ידע לנהל את העבודה של אחרים, הוא לאו דווקא מספיק מנוסה כדי באמת להצליח להיות מנהל עבודה ושוטר, שהן שתי הדרישות המינימליות לראש צוות (עבדתי בחיי עם ראשי צוותים לא-מקצועיים בהגדרה, שזה בדיוק המצב שאתה מתאר כאן.) וגם אם הוא יחליט לבצע פוטש ויצליח (לא תאמין כמה קורות חיים ראיתי שטוענות לניהול דה-פקטו של צוות או חלקו) זה לא יסחוב לעולם האמיתי ויוביל בדיוק לאותה הפיקסציה של מישהו שבטוח שהוא הצליח להתקדם לדרגת מנהל אבל אף אחד לא ייקח את ה"התקדמות" הזו ברצינות בחוץ וישכור אותו לתפקיד ניהולי.
חוץ מזה, אלא אם הוא עובד עם הסטודנטים האחרים של המנחה על אותו דבר, זה בכלל לא נחשב במסגרת עבודה בצוות…
תגובה של פילה הלג — 11/06/2011 @ 4:27 PM
יש לי שאלת תם.
אם אתה בטוח שהמנהל שלך נוראי, האם לא כדאי לעזוב את החברה שנתנה לאדם הזה תפקיד ניהולי? זה נשמע לי יותר הגיוני מלחשוב שזה רעיון טוב להיות בתפקיד ניהולי בחברה הזו.
תגובה של אירית — 11/06/2011 @ 4:40 PM
פוסט מצוין, אפילו שאני מזמן כבר לא כל-כך מתעניין במתכנתים ובעייותייהם (אולי אני מדחיק? 🙂
לצערי יש מחלקה שלמה של אנשים העוסקים בתכנה שחושבים שהעולם מתחיל ונגמר בתכנה. העובדה שהם מוצלחים, מקבלים שכר ותנאים מצוינים רק מגבירה בהם את תחושת האקסלוזיביות, והבידוד מהעולם שמעבר. אומנות, היסטוריה, פילוסופיה, צדק חברתי – מקומן במקרה הטוב בקומיקס השבועי.
"כלוב של זהב" זה לא עבודה באינטל. זה ה mindset של הרבה אנשים (לא רעים) אך כאלה המעדיפים ויכוחים על java vs. Net מאשר לפתוח את הראש.
ועכשיו, בחזרה לקוד 🙂
תגובה של Mike — 12/06/2011 @ 11:35 AM
צומת הוא זכר.
תגובה של Rani Hod — 13/06/2011 @ 7:53 PM