Extreme Programming, 20 years later הרצאתו של קנת בק

Extreme Programming – מסע בזמן

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

מבחינתו זה התחיל ב1980 כשהיה סטודנט באוני' של אורגון כשהיה בן 18, והמרצה אמר להם שהעתיד הוא תכנות מבני (Structured programing)

ולו זה היה כבר אז נשמע לא קביל ו"משעמם".

במהלך שנות השמונים קנת התחיל לעבוד למזלו בשפת small talk

שהייתה חוויה לימודית וחברתית

בשנות התשעים המוקדמות  פנה לייעוץ עצמאי ונכנס לבדיקות אוטומטיות

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

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

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

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

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

במרץ 96, קנת גויס לפרויקט C3 של חברת קרייזלר, שמטרתו החלפת מערכת תשלומים (Payroll) די מסובכת. היתה להם בעיית ביצועים, וניסו לפתור אותה באמצעות שפת smalltalk שלא היתה די בשלה באותם הימים.

קנת הציע למנהלת של קרייזר סו משהו לעשות משהו אחר והיא מינתה אותו כאחראי על התוכנית.

במהלך פגישות ההיכרות עם הנהלת הפרויקט למעשה הוא גיבש בצורה מאולתרת את העקרונות של Extreme programming:

  1. מימוש איטרטיבי של סיפורי משתמש לקבלת פידבק מהלקוחות
  2. הגדרת קריטריוני קבלה של כל סיפור וסיפור
  3. עבודה בזוגות – pair programming

קנת אומר שהשראה מגיעה מהכנות מוקדמות יחד עם פאניקה J.

זאת היתה הלידה של XP: פיתוח תוך כדי בדיקה מתמדת של תוצאות הפיתוח

נקודת ציון נוספת בהבנה של תהליכי פיתוח היתה הפיתוח של JUNIT

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

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

באותם ימים, התגורר קנת בשוייץ, ובמהלך נסיעות ברכבת על קו ציריך – מינכן כתב את הטיוטה לספרו Extreme programming explained

שהפך להיות מאוד פופולרי שנתיים לאחמ"כ בתחילת שנות ה2000 קראתי את הספר: Toyota Production System וחוויתי מעין הארה.

דברים שנכתבו בספר כמו משל הסלעים והגובה פני המים:

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

בהמשך קנת השתתף בניסוח המניפסט AGILE.

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

ב2011 קנת הצטרף לפייסבוק, בהם הוא אימן מתכנתים במשך 4.5 שנים.

כעבור שלושה שבועות בפייסבוק קנת הבין שעליו לשכוח כל מה שידע ולהתחיל מחדש.

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

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

מפת הלקחים של קנת מXP

דברים שהיה עושה שוב

  1. ניסיון – הספר נכתב מניסיון אמיתי של מפתחים. מפתחים יותר אפקטיבים היו משתמשים ברעיונות אלו.
  2. שילוב של ערכים, עקרונות ופרקטיקות – עיסוק רק בפרקטיקה מוביל לתופעת הכלב הנועץ מבט [אם מכוונים אצבע מול עיני הכלב הוא לא מצליח להסיר את המבט מהאצבע לא משנה אילו דברים מעניינים קורים סביבו] כך מי שקולט רק את הפרקטיקה לא מצליח להתרומם ולהבין את העקרונות והערכים שעומדים בבסיס הפרקטיקות.
  3. אידיאליזם – לקבוע את המטרה הרצויה ולחתור אליה ולא להתקע רק בצעדים הראשונים.

דברים שהיה עושה אחרת

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

דברים שהוא עוסק בהם היום

בעיקר לאור הניסיון בפייסבוק:

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

שאלות מהקהל

ש. אילו שינויים תרבותיים למדת בפייסבוק?

ת. הפוסטר במשרד שלי אומר הכל – "אין שום דבר בפייסבוק שהוא הבעיה של מישהו אחר". בתקופתו הארגון צמח מ2000 איש ל13 אלף איש. ובארגון שכל שינוי משליך על 1.5 מיליארד משתמשים אי אפשר להשליך את הבעיה על מישהו אחר.

להשאיר תגובה

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

הלוגו של WordPress.com

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

תמונת גוגל

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

תמונת Twitter

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

תמונת Facebook

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

מתחבר ל-%s

%d בלוגרים אהבו את זה: