19 תגובות   יום חמישי, 12/7/07, 14:43

אני מניח שרוב אנשי התוכנה שבינינו מהרהרים בינם לבין עצמם מדי פעם לאן פניה של התעשייה התזזיתית ביותר בעולם המודרני מועדות..  אז תעצמו עיניים לרגע, תנו למחשבות לרוץ ודמיינו איך יראה ענף התוכנה בעוד 5 שנים? בעוד 10? בעוד 20?...  היי לא להירדם!

 

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

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

 

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

 

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

 

בטח כל מי שלמד תואר ראשון במדעי המחשב נתקל מתישהוא באחד הספרים המרכזיים בתחום – ספרו של דונלד קנות' הנקרא The Art of Programming.

אתם יכולים להקיש מהכותרת שהדרך הנכונה לדמיין אנשים במקצוע זה היא כך:

או רגע... אולי כך?

 

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

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

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

האם גישה כזו יכולה להמשיך היום ובעתיד? או – זו כבר שאלה טובה. תמשיכו לקרוא...

חזרה לעבר – מאיפה נדבקה ההילה למקצוע?

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

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

אבל רגע – היום ב-2007 מה כל כך מיוחד בדיגיטלי? אני שומע מוזיקה באי פוד, צופה בוידאו דיגיטלי, גולש באינטרנט, ובקרוב אולי אפילו מחזיק באיי פון :-)

בתור אבא לילד בן 10 אני די מתבייש להשוות אותי אליו בגילו – אלוהים אדירים, הילדים האלה מרימים אתרים ואפילו כותבים סקריפטים מינקות. זה מטורף!

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

 

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

 

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

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

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

 

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

 אז נכון – יש הבדלים אבל השאלה האמיתית היא מה המסקנה? האם "אנחנו אנשי התוכנה מיוחדים" היא המסקנה המתבקשת? או – "אל תשוו תוכנה להנדסה – אנחנו אומנים"? אני לא חושב ככה... 

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

 

 

בחלק הבא: אז איפה משנים ואיך?

(* בלוג מצויין בנושא שעליו פוסט זה מסתמך בצורה חופשית הוא: On the Future of Software Development - Ralf's Sudelbücher)

 

אשמח מאד לפתח דיון על נושא זה בקפה מו"פ. אני מחכה לתגובותיכם כאן

דרג את התוכן: