תאוריית החלון השבור – איך זה קשור לפיתוח תוכנה?

חלון שבור

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

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

הקדמה – תאוריית החלון השבור

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

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

החוקרים לקחו מכונית יפה לכל הדעות, טובה ואף יקרה – לצורך הדוגמא, מכונית של חברת יגואר. הם החנו אותה בשכונת Bronks ב-New York וצפו בה מהצד. במשך מספר ימים עברו ליד המכונית אלפי אנשים – אף אחד לא נגע בה, לא שריטה ולא שבר, המכונית נשארה כשם שהייתה, בדיוק כפי שהם השאירו אותה.

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

בעקבות הניסוי החוקרים פיתחו את תאוריית החלון השבור, בואו ונבהיר אותה או לפחות ננסה.

בניין מגורים – חלון שבור

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

תיאורית החלון השבור - בניין מגורים

תיאורית החלון השבור - בניין מגורים

אני יודע מה אתם חושבים עכשיו (אני גם קורא מחשבות בזמני הפנוי)…

מה זה קשור לפיתוח תוכנה ואיך זה נוגע לי כמפתח בחיי היומיום?

כן, הכותרת שברה שיאי אורך :-)

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

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

קוד מקור לדוגמא

קוד מקור לדוגמא

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

אילוצים או תירוצים?

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

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

מה אפשר לעשות?

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

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

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

לסיום, אני רוצה לצטט את Uncle Bob Martin (ברשותכם כמובן)

No matter who. No matter what. No matter when. Short term.Long term. Any term. Writing good code is ALWAYS faster than writing bad code.

Refactoring should never appear as a task on a schedule, Keeping code clean is just something you do all the time

כרגיל, אשמח לתגובות.

כתיבת תגובה

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

*

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>