Joel on Software

Joel on Software   יואל על תוכנה

 

מאמרים שתורגמו לעברית

גרסה אנגלית

כתבו למחבר

 

אש בתנועה


מאת יואל ספולסקי
תרגום: אסף גרי
עריכה: שלומי פיש
6 בינואר, 2002

לפעמים אני פשוט לא מצליח לעשות כלום.

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

Tetris

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

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

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

 

נלך לקרוא שטויות באינטרנט לכמה דקות

 

מה שמשגע אותי זה שמאז תפקידי הראשון הבנתי שכמפתח, יש לי בממוצע שתיים שלוש שעות יצרניות ביום. כאשר הייתי בסמינר קיץ במיקרוסופט, עמית שלי לסמינר סיפר לי שלמעשה הוא עבד רק מ-12:00 עד 5:00 בכל יום. 5 שעות, פחות ארוחת צהריים, והצוות שלו אהב אותו מפני שהוא עדיין הצליח לעשות הרבה מעל לממוצע. מצאתי שאותו הדבר נכון גם לגבי. אני מרגיש קצת אשם כשאני רואה איך כולם עובדים קשה, בעוד לי יש בערך שתיים שלוש שעות איכות ביום, ולמרות זאת תמיד הייתי בין האנשים היצרניים ביותר בצוות. זאת כנראה הסיבה שהספר Peopleware ותנועת Extreme Programmingעומדים על כך שיש למגר שעות נוספות ולעבוד בדיוק 40 שעות בשבוע, הם טוענים זאת בביטחה מתוך ידיעה שזה לא יפחית את התוצר של הצוות.

אבל לא הימים בהם אני "רק" מצליח לעבוד שעתיים הם אלה שמטרידים אותי. הימים בהם איני מצליח לעשות כלום הם אלה שמטרידים אותי.

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

כאשר אתם נכנסים למסלול זה לא קשה להמשיך בו. רבים מהימים שלי הולכים כך: (1) נכנס לעבודה (2) בודק דואר אלקטרוני, קורא באינטרנט וכו' (3) מחליט שאולי אלך לאכול צהריים לפני שאני מתחיל לעבוד (4) חוזר מארוחת צהריים (5) בודק דואר אלקטרוני, קורא באינטרנט וכו' (6) לבסוף מחליט שאני חייב להתחיל (7) בודק דואר אלקטרוני, קורא באינטרנט וכו' (8) מחליט שוב שאני באמת חייב להתחיל (9) מפעיל את העורך המקולל ו (10) כותב קוד ללא הפסק עד שאני מגלה שכבר 7:30 בערב.

איפשהו בין שלב 8 שלב 9 נראה שיש איזשהו באג, מפני שאני לא תמיד מצליח לחצות את התהום הזאת.

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

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

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

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

חשבו רגע על ההיסטוריה של אסטרטגיות גישה לנתונים שיצאו מבית מיקרוסופט. ODBC, RDO, DAO, ADO, OLEDB, וכעת ADO.NET - הכל מחדש! האם הטכנולוגיות האלו נחוצות? התוצאה של קבוצת מתכננים חסרי כישרון שצריכים להמציא מחדש את הגישה הנתונים המחורבנת שלהם כל שנה? (זאת כנראה הסיבה האמיתית, למעשה.) אבל התוצאה הסופית היא אש חיפוי. למתחרים אין ברירה אלא לבזבז את כל הזמן שלהם על מנת להמיר את הקוד לטכנולוגיה החדשה ולהתעדכן, זמן שהם לא יכולים לנצל על מנת להוסיף תכונות חדשות למוצר. הסתכלו קרוב בנוף התוכנה. החברות שמצליחות הן אלה שמסתמכות פחות על חברות גדולות ולא צריכות להשקיע את כל זמנן בעידכון, יישום מחדש ותיקון באגים שצצים רק על Windows XP. החברות שכושלות הן אלה שמשקיעות יותר מדי זמן בקריאת עלי התה כדי להבין מהו הכיוון העתידי של מיקרוסופט. אנשים מודאגים מ NET. מפני שהם חושבים שהם צריכים להיות. מיקרוסופט יורה בכם, וזוהי רק אש חיפוי כדי שיוכלו לשפר קדימה בזמן שאתם לא יכולים, כי ככה הולך המשחק, מותק. האם אתם הולכים לתמוך ב- Hailstorm? SOAP? RDF? האם אתם תומכים בזה מפני שהלקוחות שלכם זקוקים לזה, או מפני שמישהו יורה בכם ואתם מרגישים שאתם צריכים להגיב? צוותי המכירות של החברות הגדולות מבינים מה זאת אש חיפוי. הם הולכים ללקוחותיהם ואומרים "בסדר, אתם לא חייבים לקנות מאיתנו. קנו מהספק הכי טוב. אבל וודאו שאתם מקבלים מוצר שתומך ב (XML / SOAP / CDE / J2EE) כי אחרת אתם תישארו מאחור." ואז כאשר חברות קטנות מנסות למכור ללקוחות האלה, כל מה שהן שומעות זה CTO צייתן שמדקלם כמו תוכי "יש לכם J2EE?" ואז הם צריכים לבזבז את כל זמנם כדי לתמוך ב- J2EE למרות שזה לא באמת מוכר את המוצר, ולא נותן להם שום היזדמנות להתבדל לעומת האחרים. זאת תכונה שצריך לסמן עליה "וי" -- אתם עושים את זה כי אתם צריכים את ה"וי" שאומר שיש לכם את זה, אבל אף אחד לא ישתמש בזה או זקוק לזה. וזוהי אש חיפוי.

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

It's getting better all the time... o/~



מאמר זה הופיע לראשונה באנגלית בשם Fire and Motion  

יואל ספולסקי ייסד את Fog Creek Software, בית תוכנה קטן בניו יורק. במשך שירותו הצבאי (בנח"ל מוצנח) היה בין מייסדי קיבוץ חנתון שבגליל. לאחר לימודים באוניברסיטת ייל, עבד בתור מתכנת ומנהל ב-Viacom, Microsoft, ו-Juno.


אלה דעות של בן אדם אחד ותו לא.
© 1999-2005 Joel Spolsky. כל הזכויות שמורות.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky