כיצד תהיו מקצוענים בפיתוח תוכנה?

שלום לכולם,

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

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

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

טוב, נתחיל?

משמעת

נתחיל בכך שבעצם המון מתחיל במשמעת, אנחנו יכולים לדבר ימים ושבועות על עקרונות הOOP על מה זה SOLID או האם כדאי לכתוב בWebForms או ששווה כבר לעבור לMVC אבל האמת היא שלא שם זה מתחיל.

הכול מתחיל במשמעת.

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

זמנים קצרים

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

אל תהיו שבויים

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

הממ, שקרנים :-)

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

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

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

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

סגור? נמשיך :-)

תמנעו מצימוד

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

זה רע!

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

ארכיטקטורה מסובכת… אוי ואבוי

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

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

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

שיפורים קטנים, קטנים אבל תמיד

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

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

שיפורים קטנים לאורך זמן יהוו שיפור גדול מאוד בסופו של דבר.

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

כתיבה מחדש – אוי ואבוי גדול מאוד

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

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

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

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

אל תכתבו קוד רע

החוק הזה יגרום לכם ללכת ולא לרוץ, תמיד.

אי אפשר למהר בטירוף ולא לכתוב קוד רע.

Uncle Bob נותן כאן בהרצאה שלו השוואה מדהימה שאני רוצה לקחת ממנו ולכתוב אותה כאן.

דמיינו שאתם חווים חוויה חוץ גופנית ועומדים מעל חדר ניתוח בו רופא עורך עליכם ניתוח לב פתוח.
איך הייתם מעדיפים שהרופא יעבוד?

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

כאן מסתיים החלק הראשון, המשך יבוא…

איך אומרים באנגלית Chew on it for a while…

כתיבת תגובה

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

*

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