DCSIMG
Code Admiration - Liran Chen's Blog

Liran Chen's Blog

.Net Internals, Debugging, Multithreading - and More!

Code Admiration

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

ועכשיו לעניין.
הערצת קוד יכולה להוות מכשול ונקודת חולשה בתהליך הפיתוח. כי בכל פעם שאנחנו מביטים בקוד שלנו בהערצה צרופה, אנחנו נוטים להיות סלחניים ואופטימים מדי. אוטומטית, אנחנו יוצאים מתוך נקודת ההנחה שהקוד הזה תמיד יעבוד, לא יהיו בו באגים, ולא נצטרך לשנות בו דבר לעולם. אחרת, הוא לא היה נפלא כמו שאנחנו חושבים שהוא. אנחנו מרשים לעצמנו לבדוק אותו פחות ברצינות מאשר קוד אחר שהיינו כותבים. אנחנו נוהגים לא להכנס לפרטים הקטנים, ולחשוב על כל מקרי הקצה הביזארים שעלולים לצוץ. זה לא צריך לקרות במודע, אבל זה קורה. ובצורה הזאת אנחנו חושפים את עצמנו לבאגים ותקלות רבות יותר מבדרך כלל.
לכן, המתודולוגיה שאני תמיד מעודד את עצמי ללכת לקראת כשמדובר בקידוד, היא סקפטיות. כשאני כותב תוכנית שאחר כך מתעופפת בגלל שגיאה, אני לא מתפלא איך היא קרסה, אלא אני מתפלא איך היא בכלל עבדה מלכתחילה. כשאני מסיים לכתוב קטע קוד, הדבר האחרון שאני מרשה לעצמי לעשות זה לסמוך על עצמי. אני יוצא מנקודת ההנחה שסביר להניח "שמשהו" כאן לא עובד. ומה אתם יודעים, בדרך כלל זה גם נכון. אחרי הכל, כמה פעמים באמת כתבתם קוד שהיה נקי ב-100% מבאגים מוזרים ומקרי קצה היסטרים? תמיד יש "משהו" שמסתתר בין השורות הקוד. אז בכל פעם שאני מסיים לקודד, אני אוטומטית יודע שמונח לפני עכשיו באג חדש. האלטרנטיבה היא להתחיל ולהריץ UnitTest'ים, ו-Sanity עד ש"המשהו" הזה יצוף מעל פני המים ויחשוף את עצמו דרך קריסה טוטאלית כזאת או אחרת של המערכת. אישית, אני מעדיף (וגם ממליץ), לחסוך את הזמן הזה. ופשוט לשנן היטב שהקוד שזה עתה סיימתם לכתוב, הוא באמת רחוק מלהיות שיא היצירה האנושית. הוא לא כל כך יפה, או חכם. יש בו עוד הרבה נקודות לשיפור, ויש כאן עוד כמה באגים שעדיין לא שמתם לב אליהם.
אני לא חושב שאפשר להיפטר לחלוטין מהערצת קוד, ולפי דעתי, זה גם נורמלי ובסדר לחלוטין. פשוט צריך לזכור ולנסות להוריד למינימום את הנזקים שהיא יכולה לגרום להם. סקפטיות היא דרך טובה. כי אם לומר את האמת, וכולנו הרי כבר יודעים את זה, רוב הסיכויים שמה שכתבתם אתמול בעבודה ... לא באמת עובד.

תוכן התגובה

Shlomo כתב/ה:

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

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

# July 3, 2009 1:24 PM

משה כתב/ה:

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

אהבתי !

זה קורס שאם לא לומדים אותו לבד, לומדים אותו על פרודקשן.

# July 8, 2009 10:10 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 4 and 7 and type the answer here:


Enter the numbers above: