כשאני מדבר על מחשב של מפתח תכנה, אני מתכוון ל…

17 בנובמבר 2010

לפני כמה זמן ישבתי אצל אחד הלקוחות שלי כדי לנתח ביצועים של קטע קוד בעייתי. השתמשתי כמובן ב Profiler החדש של Visual Studio 2010 כי זה ממש כלי חזק. הדעה הטובה שלי על הכלי לא חדשה.

הסיבה שאני מספר לכם על זה, זה בגלל שחווית המשתמש שלי הפעם, היתה קצת טראומטית. קודם כל ה UI הגיב מאד לאט, וחוץ מזה הריצה לאיסוף המידע עבור ה profiler לקחה המוווווווון זמן. ושתבינו, לא ישבתי על סתם מחשב, ישבתי על המחשב של ראש צוות הפיתוח של המוצר (להלן הרשצ”פ), שהוא המחשב היוקרתי ביותר שהיה בארגון, וגם היחידי שבו היה מותקן Visual Studio 2010.

אז שאלתי את הרשצ”פ אם יש לו מושג למה הכל זז לאט, ואז הסתבר לי (לתדהמתי) שאני יושב על פנטיום 4 אמיתי, עם 3 גיגה זכרון ו 70 ג’יגה דיסק קשיח. ואני רוצה להדגיש, למי שלא יודע מה הערך ההיסטורי של המוצג המוזיאוני הנ”ל, שמדובר פה במכונה, שנחשבה לשיא הטכנולוגיה, אי שם בשנת 2002. מאחר ואנחנו כיום ב 2010 (כמעט 2011) עברנו מאז לפחות חמישה דורות של מעבדי אינטל. שלא לדבר על זה שאי אפשר להשיג כיום כמעט, דיסקים איטיים של 70 ג’יגה. בקיצור, ישבתי על מונומנט היסטורי. הרשצ”פ גם סיפר לי בגאווה, שלוקח לו לעשות Build למוצר, על המכונה הזו, רק 20 דקות, ולא קרוב לחצי שעה, כמו שזה קורה אצל שאר המפתחים בצוות.

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

קצת כלכלה. כמה עולה מפתח תכנה לארגון ? משהו כמו 80,000 דולר שנתי ? בואו נהיה ממש שמרנים ונניח שאחרי המיתון זה ירד ל 60,000 דולר שנתי (מתחלק טוב ב 12). ושאני מדבר על עלות איש תכנה בארגון, אני לא מתכוון לשכר נטו, אלא לעלות המעביד הכוללת גם את כל ההוצאות הנילוות, כולל משרדים, טלפונים, חשמל, מים, רישוי תכנה וכו’. כך שעל תנסו להיות חכמים, ותחלקו לי את הסכום הזה ב 12, תבדקו מה הנטו בתלוש שלכם, ותרוצו ישר למנהל לדרוש העלאה (לא ש 20,000 ש”ח לחודש זה סכום שאני מזלזל בו).

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

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

מתכנת על מכונת הרשצ”פ יכול ביום עבודה מלא (10 שעות), לעשות 30 איטרציות (שלוש בשעה בלי בדיקות), בעוד שאני על המחשב הנייד שלי (שאינו שיא הטכנולוגיה) יכול לעשות הרבה יותר מפי חמש מזה (ואני מאד שמרני במקדם הזה, כי 500 אחוז זה מספר שתמיד נראה רע על שקף אבל תחלקו לבד 20 דקות בשתי דקות ותגידו לי כמה זה יוצא).

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

אי אפשר לפתח תכנה באוירה כזו.

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

  • יע”מ I7 עם 4-6 ליבות, עם מהירות בסביבות 2-3G עם Cache גדול.
  • דיסק קשיח מהיר (7200 סלד) של חצי טרה לפחות (לא צריך להגזים עם SSD).
  • 8 גיגה או יותר זכרון Ram מהיר DDR3 מהירות 1333 (1066 אם אין ברירה).
  • GPU חזק מספיק להריץ WPF (בלי זה VS 2010 זוחל ונתקע).
  • כמובן Windows 7 64 bit.

אז רק לידיעתכם, אתם יכולים למצוא מכונות כאלה בטווח המחירים של 4000-6000 ש”ח. משהו כמו פחות מרבע מהוצאה החודשית למשכורת של מפתח ממוצע ?

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

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

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

7 תגובות

  1. eladkatz17 בנובמבר 2010 ב 23:15

    להדפיס ולמסגר על הקיר בכל משרד 🙂

    לצערי לעיתים מאוד קרובות יוצא לי לראות חברות בהן הBuild לוקח יותר מ2 דקות. הסיטואציה בה אני יושב עם אחד המתכנתים לכתוב משהו, ואז לוחץ על Ctrl+B קורה לעיתים די קרובות, וMore often than not זה מיד מלווה ב "לא!! מה עשית? עכשיו נצטרך לחכות 10 דקות!"

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

    הגב
  2. חיים18 בנובמבר 2010 ב 10:18

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

    הגב
  3. דניאל מטלון18 בנובמבר 2010 ב 16:53

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

    הגב
  4. GadiM18 בנובמבר 2010 ב 17:41

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

    הגב
  5. מיקי19 בנובמבר 2010 ב 9:22

    הייתי שמח אם היית מפרסם מדריך קצר לשימוש בסיסי בפרופיילר של ויזואל סטודיו ! 🙂

    שבת שלום !

    הגב
  6. ליאור27 בנובמבר 2010 ב 19:15

    אצה יודע מה הכי מפחיד, שראש הצוות הנ"ל לא טרח להשקיע 1500-2000 ש"ח בלקנות לעצמו מחשב חדש.

    הרי תוך יומיים הוא הופך להיות המפתח הכי יעיל ומקבל העלאה בהתאם.

    הגב
  7. GadiM27 בנובמבר 2010 ב 20:40

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

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

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

    הגב