2020-05-23

על מובילי-דעה (gurus) בעולם התוכנה

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

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

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

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

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



הרשימה שלי, ביום שישי כלשהו בחודש מאי


הרשימה הראשית:
  • מרטין פאוולר (Martin Fowler)
  • הדוד בוב (Uncle Bob aka Robert C. Martin) -- גם מגדיר ה SOLID וה Clean Code
  • קנט בק (Kent Beck) -- גם מיוצרי ה Wiki, גם מכותבי JUnit, גם TDD, ומה לא...
  • David Heinemeier Hansson - DHH -- גם מיוצרי ה Ruby On Rails
  • יואל ספולסקי (Joel Spolsky) -- גם אחד היוצרים של StackOverflow
  • אנדי האנט (Andy Hunt) -- גם ה "Pragmatic Programmer״
  • לינוס טורבאלדס (Linus Torvalds) -- גם יוצר הליבה של לינוקס
לא כללתי ברשימה, בכוונה, מובילי-דעה בטכנולוגיות ספציפיות (ג׳אווה, nodeJS, ראקט, גו, וכו׳) - יש כמה וכמה כאלו לכל טכנולוגיה, אך הם כמעט חסרי-משמעות למי שלא חלק מקהילת המשתמשים של הטכנולוגיה. DHH מעניין לכולם, לדעתי.

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

לא כללתי ברשימה, בכוונה, ״כינורות שניים״: לכמה מהדמויות פה יש כמה שותפים קרובים. למשל Dave Thomas הוא לא פחות ה ״Pargmatic Programmer״ מאנדי - אולי אפילו יותר, אבל אנדי יותר מעניין לדעתי. Jeff Atwood הוא היוצר השני של StackOverflow וגם פעיל ומעניין - אבל פחות מיואל, לטעמי.

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


רשימת ה one-trick pony:
  • אריק ריס (Eric Ries) -- מקים תנועת ה "Lean Startup״
  • ג׳ז ״הצנוע״ (Jez Humble) -- מחבר ה Continuous Delivery
  • אריק אוונס (Eric Evans) -- מוביל תנועת ה DDD
  • מייקל ניגארד (Michael Nygard) -- פשוט פרסם כמה דברים טובים! מחבר הספר "!Relase it"
אני מקווה שהכותרת אינה בוטה מדי.
אלו אנשים סופר-מעניינים שכדאי להכיר, אבל כשרציתי להמשיך עם הכתבים / חומרים / הרצאות שלהם - ראיתי שאותם רעיונות חוזרים שוב ושוב בוריאציות שונות. זה לא מוריד מחשיבותם, רק אומר שאחרי שספגתם את עיקרי הדברים - אין הרבה טעם להמשיך ולעקוב אחריהם. לפחות זה הניסיון שלי.


הדור הקודם:
  • אריך גמא (Erich Gamma) -- מהרביעיה שהגדירה את ה Design Pattern. כתב עם קנט בק את JUnit.
  • קרייג לרמן (Craig Larman) -- היה מקביל לדוד בוב לתקופה, אך הדוד בוב קטף את כל התהילה
  • פרדריך ברוקס (Fred Brooks) -- מחבר ה Mythical Man-Month
  • דיוויד פרנס (David Lorge Parnas) -- חשוב כמו פרדריך ברוקס - אבל פחות מוכר כיום.
  • אליסטר קוברן (Alistair Cockburn) וסקוט אמבלר (Scott Ambler) -- לא היו באמת צמד, אבל רק באיחוד כוחות אני מרגיש נוח להכניס אותם לרשימה החשובה הזו.
לו היינו מחברים את הרשימה בשנת 1999 - החברים בקטגוריה הזו היו במרכז הרשימה הראשית.
בשנת 2020, הרעיונות שלהם עדיין משפיעים - אבל צריך להתאמץ יותר בכדי להגיע ולהתחבר לתכנים המקוריים שלהם. רק למי שמעוניין.

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

    אני מסתכל על הרשימות, ואין דמות נשית ברשימות. בכלל.
    צר לי על כך, אבל באמת יש פחות ״מובילות״ דעה בתחום. בכדי מעט לאזן, אציין את יוהנה רוטמן (Johanna Rothman) שהספר שלה ״Behind Closed Doors״ פתח לי כמה ״דלתות״ בחשיבה, ואת טרישה ג׳י (Trisha Gee) שמופיעה יותר ויותר בכנסים בשנים האחרונות, וגם עשתה כמה Keynotes בכנסים חשובים. היא מדברת לעניין, בלי הסחות דעת וססמאות. יש גם דוברת ישראלית בשם חן שפירא (Gwen Shapira) שהגיעה לכמה פורומים מכובדים.


    מוביל דעה: מרטין פאוולר (Martin Fowler)




    זה הבחור שהשפיע עלי אישית, במידה הרבה ביותר.

    איזו חותם הוא השאיר?

    מרטין טבע כמה מהמונחים המוכרים והנפוצים בעולם התוכנה: 
    • Refactoring
    • Dependency Injection
    • (Domain Specific Languages (DSL
    • ועוד...
    מרטין חיבר כמה מהספרים החשובים בעולם התוכנה שנכתבו בשני העשורים האחרונים:


    אציין כמה מהספרים החשובים ביותר:
    • Refactoring - ספר שרובו טכני עד שעמום, אבל הפך לפרקטיקה שגורה וחשובה של כל איש תוכנה. יש גם גרסאת רובי (שפה שמובילי דעה רבים עברו דרכה)
    • Patterns of Enterprise Application Patterns - דפוסי עיצוב של מערכות מידע / מערכות ווב. ספר חשוב ורלוונטי.
    • UML Distilled היה ספר פורץ דרך וחשוב בזמנו. מרטין טען שבמקום מדריכים ארוכים ומורכבים על UML שרובם היו 500-1000 עמודים ולא ממצים - הוא יכול לזקק את העניין לספר ממצא בן 100 וקצת עמודים. הוא עשה את זה - ו״הוריד את ה UML אל העם״. שפת ה UML כבר לא חשובה כל-כך - אבל זה היה תרגיל מרשים בפישוט והנגשת מורכבות.
    • Analysis Patterns הוא ספר חשוב מאוד (ולא קל לעיכול) על מידול של ביזנס לתוכנה. כעשור בערך מרטין עבר על רוויזיה של הספר שתהיה קלה, מודרנית ושלמה - אך מעולם לא סיים את העבודה. כלומר - יש רק ספר ישן וחצי אפוי - אבל ספר משמעותי מאוד.
    מרטין חתום על סדרה של ספרים של מחברים אחרים, שהוא נתן להם את החותם שלו ("Addison wesely martin fowler signature books״). 
    המצליח בספרים הללו הוא Enterprise Integration Patterns של בחור בשם גרגור הופ - שגם הוא מוביל דעה בעצמו.

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

    מרטין הוא אחד מהיוזמים והחותמים של ה Agile Manifesto. הוא הבחור עם הקרחת שמופיע ליד הלוח בתמונה המטושטשת.

    בטח יש עוד כל מיני עובדות ועשייה (צלם חובב?) - שלא אאריך לפרט.


    מה מייחד את מרטין פאוולר?

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

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

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

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

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

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


    מה מרטין עושה היום? איפה הוא עובד?

    מרטין הוא ה״מדען הראשי״ של חברת ייעוץ תוכנה בשם ThoughtWorks. החברה הזו נחשבת (לפחות בעבר, אולי גם כיום) לחברה מובילה בתחומה. הם יצרו את CruiseControl (לפני שהגיע Hudson/Jenkins והחליף אותו) וכאשר מייקרוסופט רצו review לפרוייקט השאפתני שלהם, בשם NET. - חברת ThoughtWorks היו ה reviwer.
    לא שמעתי דעות על ThoughtWorks כבר שנים, אני יודע שהם גדלו מאוד - ומקווה בשבילם שהצליחו לשמור חלק מהאיכויות שפרסמו אותם בתחילת הדרך.


    היכן אפשר למצוא תכנים ורעיונות חדשים של מרטין?

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

    אפשר לחפש הרצאות שלו ביוטויב. אין לו ערוץ משלו, והרצאות שלו מתפרסמות ע״י חברות שונות וכנסים שונים - שנותנים את החסות, אבל בד״כ הוא מפרסם 2-3 הרצאות משמעותיות בכל שנה.

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



    סיכום


    אני מקווה שהצלחתי לייצר ״bootstrap״, נקודת אחיזה ראשונית - למי שרוצה להתמצא ולעקוב אחרי מובילי-דעה חשובים בעולם התוכנה.

    ניסיתי להרחיב מעט על אחד ממובילי-הדעה הללו, החביב עלי - מרטין פאוולר.

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

    יודעים מה, אם אני מקבל 100 לייקים באינסטגרם - אני מבטיח פוסט נוסף! 😉

    שיהיה בהצלחה!



    3 תגובות:

    1. תודה ליאור! מעניין, כרגיל.

      המונח Refactoring היה בשימוש טרם Martin Fowler, אבל לטעמי, הובא לקידמת הבמה באופן הבולט ביותר על-ידו.

      https://martinfowler.com/bliki/EtymologyOfRefactoring.html

      השבמחק
    2. הבעיה בDHH בעיני היא שלפחות ברמת הפרסונה האינטרנטית הוא מאוד עסוק בכל המסביב (Remote Work, תרבות אירגונית) והרבה פחות בטכנולוגיה.

      בעיני, למרות שהוא מתעסק רק בעולם הדוט.נט, Jimmy Bogard ראוי להכנס לרשימה בגלל הדרך שבה הוא מנגיש רעיונות מעולם הDDD והגישה הפרגמטית להפליא שלו.

      השבמחק