פורסם לראשונה בבלוג הישן ב – נובמבר 2009
בעולם התוכנה יש מילה שמקבלת הרבה משמעויות וצבעים. זו מילה מפוצצת שקשורה ולא קשורה. המילה הזו בשבילי תמיד תתקשר ל סלוגן…… מ.י.ק.י ברקוביץ— ארכיטקט הניצחון.
אני מתכוון ל "ארכיטקטורה" או למושג ארכיטקט.ת תוכנה.
יצא לי להכיר הרבה א.נשים שקראו לעצמם או נקראו ארכיטקטים וגם כאלו שלא קראו לעצמן כך אבל היו בכל רמ"ח איברים, בקיצור יש הרבה אבל יש מעט. גם עבדכם הנאמן הוא ארכיטקט (פשוט) , מקווה שמוביל לניצחון………
כמובן שאם נקרא ב WIKI http://en.wikipedia.org/wiki/Software_architect נגלה שהמושג הזה מאוד מאוד צעיר בעולם התוכנה.
בפוסט זה אני מתכוון לנסות להגדיר טיפה:
- מה הוא ארכיטקט
- מה הקשר לארכיטקט ולטכנולוגיה
- האם ארכיטקט הוא בן אדם???
- האם צריך להיות תואר שני בנושא ארכיטקטורת תוכנה
- וכמובן איך הופכים להיות ארכיטקט.
נא לקרוא לפני השימוש – כל הנאמר בפוסט זה זו דעתי האישית בלבד
ראשית תפקידו הארכיטקט לבנות מערכת תוכנה העומדת בכל כללי הנדסת תוכנה, אמינות בהירות יעילות וגמישות לשינויים. בסופו של דבר עבודה נכונה של הארכיטקט תוביל לחיסכון, פיתוח מהיר ואושר ועושר לכלל השחקנים בפרויקט כולל הלקוח.
ישנם סוגים רבים, ארכיטקטים מרמת Application Architect (ברוב המקרים ר"צ המפתח) דרך Solution Architect ועד ל Enterprise Architect.
בעולם התוכנה במרבית המקרים ניתן לראות שמקור הארכיטקט.ת הוא ממפתח.ת.
אולם לא כל תוכניתן טוב הוא גם ארכיטקט טוב, ואני אדבר על זה בהמשך (ונא לזכור את החוק הפיטרי).
הארכיטקט בניגוד למפתח נכנס כבר בשלבים הראשונים של הפרויקט החל מתמחור דרך יזום וניתוח וכמובן שעד לעיצוב המערכת. הארכיטקט.ת גם נמצא הרבה אחרי המפתח.ת בשלבי ההטמעה, המסירה ללקוח ואנליזה מתקדמת של שימושית המערכת בייצור.
אף פעם לא תוכלו למצוא שני ארכיטקטים דומים או זהים, השונות היא לא מעטה ויחד אם זאת כולם.ן ארכיטקטיות וארכיטקטים.
קיים קו ישר ועבה בין טכנולוגיה וארכיטקטורה. אני מתקשה להאמין שללא ארכיטקטים יתקיים שימוש נכון בטכנולוגיית תוכנה. ובטוח ללא טכנולוגיה מתקדמת מתרעננת ומגוונת לא היה צורך בארכיטקטים.
שלא תבינו לא נכון, לא תמיד יש קשר ישיר בין להיות טכנולוג.ת מצוין לארכיטקט.ת המייצרת ערך. אבל ארכיטקט רציני חייב להיות מודע לטכנולוגיות שבדור הקודם, בדור הנוכחי וכמובן שבדור הבא.
יצא לי לראות ארכיטקטים שנותנים פתרונות של הדור הקודם למערכת שיש לה צפי חיים ארוך וגם יצא לי לראות ארכיטקטים שנותנים פתרונות של דור שקיים רק בתור בלון ניסוי למערכת בייצור. כמובן לעיתיים המתואר עשה את העבודה בצורה חלקית… אבל כמו שאומרים יותר מזל משכל.
קשה לי להתמודד עם ארכיטקטים שנדרשים לתת פתרונות O.O אבל חיים בעידן ה mainframe. אבל הרבה יותר קשה לי לראות ארכיטקטים המוכרים אשליות של פתרונות שבמצגות נראים מדהים אבל אין שום ביסוס אמיתי בקוד.
תמיד נשאלת השאלה כמה זמן צריך מפתח.ת להשקיע בפיתוח היוכולת המקצועית שלו.ה, כמובן שיש לי דעה ברורה בנושא (לא תקבלו אותה בפוסט זה). וכמובן שניתן לשאול כמה זמן ארכיקט צריך להשקיע בטכנולוגיה. ושאלה יותר קשה, כמה צריך הארכיטקט "ללכלך את הידיים בקוד"? האם לתת פתרונות ברמת DAL צריך להתלכלך ב- ORM האם כדי לתת פתרונות Smart Client צריך להתלכלך ב front end או טכנולוגיות ענן?
כמובן שיש לי תשובה ברורה, הרי זה נושא הפוסט .
ארכיטקט צריך להשקיע הרבה בטכנולוגיה ולא רק באזורים שהוא נדרש לתת להם פתרון בפרויקטים שהוא נמצא בהם ביום יום.
אני משקיע בערך שעתיים ביום מעבר לזמן העבודה בטכנולוגיות.
וכן ארכיטקט חייב ללכלך את הידיים. היא או הוא לא חייבים להיות מומחה הטכנולוגיות מקצה לקצה. אבל חייב להכיר על בוריו מה זה אומר פיתוח תוכנה מה זה clean code וכמובן את השיטות התקשורת בין רכיבים או אפילו סוגים שונים של Data Stores וללא ספק אפילו מה זה GitFlow. כן הארכיטקט.ית נדרש להכיר עולם מושגים רכב ולא רק ברמת המצגות. חייבת להיות לארכיטקט הבנה מה הולך להתרחש לאור כל המלצה. כמה קשה יעבדו האחרים, כמה הפתרון באמת יעבוד, כמה הפתרון לא יפיל ביצועים ועוד הרבה אספקטים שהוא חייב להיות מודע לכולם.
נושא שיש לי דעה ברורה ברורה ומוצקה. כל איש מקצוע צריך להיות בן אדם. אולם ארכיטקט.ית חייב.ית להיות בן או בת אדם.
ראיתי בימי חיי מספיק ״מה שנקרא ארכיטקטים״ וברור שהם היו מאוד מוכשרים מאוד חריפים ושיודעים לדבר יפה. אבל לא הייתי נותן להם פרס נובל בחביבות ויחס אדיב ואנושי לאנשים שהם עובדים /עבדו איתם.
אני יוכל לדבר על המה זה להיות בן אדם וגם מקצועי הרבה אולם חברי ואני אספנו את עשרת הדברות לאריכטקט.ית שמשמשים אותנו :
- להשקיע בקשר הבין אישי
- אל תציע משהו ותגיד , לא ניסיתי
- קח את הדברים לאט , שינויים גדולים לוקחים זמן.
- אל תחטא בחטא היוהרה
- תראה את התמונה הגדולה אבל אל תדחוף אותה לשותפים לדרך בבת אחת
- קדם שימוש בידע ארגוני
- הצוות הוא המעגל הראשון אבל יש עוד מעגלים
- אמור אנחנו – ולא אתם או הם
לפני שאני עונה על השאלה כיצד הופכים להיות ארכיטקט.ית חשוב לציין שהכוונה בשאלה זו לא על תואר שני במדעי המחשב.
המקבילה בעולמות תוכן דומים לעולם התוכנה ומוצא את זה די בקלות. זה הנדסת מערכת – מעולם החומרה. במקור אני מגיע מעולם החומרה. בתפקיד הראשון שביצעתי בעצם הייתי 80 אחוז מהנדס חומרה ו 20 אחוז מהנדס תוכנה. באותו תפקיד רק בחלקו האחרון עשיתי בדיוק ההפך 20 אחוז מהנדס חומרה ו 80 אחוז מהנדס תוכנה. אבל תמיד היה מישהו שהוא היה מהנדס המערכת, מאוד דומה לארכיטקט. וגם באנלוגיה זו היו סוגים ורמות שונות של מהנדס מערכת.
בעולם החומרה בשנים האחרונות התפקיד הזה הפך גם למקצוע נלמד באונברסיטאות עם רשימת המתנה לא קצרה ותוכנית לימודים מעוד מעניינת.
אני מאמין שגם בעולם התוכנה צריך להיות תואר שני בנושא שלא יתמקד רק במדעי המחשב אלה ישלב את מדעי המחשב מנהל עסקים וקורסים יעודים לארכיטקטים. אני בטוח ארשם לכזה מסלול.
לדעתי צעד כזה אם יקרה יכול להקפיץ את עולם התוכנה מספר צעדים קדימה, ואין מתאימה מזה היא ישראל.
כמובן שאיך לחשוב מחוץ לקופסא אבל בצורה מערכתית יהיה קשה עד בלתי אפשרי ללמד.
לא פחות חשוב זה כמובן תזמון, לפעמים להיות במקום הנכון ובזמן הנכון שווה את כל הכישרון בעולם.
נקודה לא פחות חשובה זה הכישרון, למי שקרא את הפיסקה הקודמת הבין שאני בעד תואר שני בארכיטקטורת אולם יחד עם זאת למי שיש כישרון, כישרון ועוד טיפה כישרון לא צריך אפילו תואר ראשון במדעי המחשב.
אולם בבסיס של כל הנושא יש נקודה חשובה ולדעתי גם הכרחית והיא להיות מפתח.ת.
כמובן שלא כל מפתח מקצוען יכול להיות ארכיטקט.ת טוב ולפעמים אפילו זה לא מסתדר הרי להיות מפתח זה מקסימום לעבוד בצוות. אין יותר מידי מה להסביר לאחרים או לנסות לשכנע מנהלים ואפילו לקבל החלטות רוחביות.
ולכן חברים יקרים תזהרו מהחוק הפיטרי שבו כל אדם מקודם כל עוד הוא טוב ומפסיק להיות מקודם מתי שהוא מפסיק להיות טוב. זאת אומרת שבלי בעיה נוכל למצוא ארכיטקטים לא בשיא כושרם…. ותחשבו על זה
חוץ מכל הנקודות שאמרתי ישנם עוד מספר יכולת ששווה לפתח. יכולת הדרכה, לימוד עצמי, טכנולוגיות שונות ואפילו משונות. ועוד נקודה יכולת שלי באופן אישי חסרה ואני מנסה לעבוד עליה כל הזמן, יכולת כתיבה וקריאה באנגלית.
אסיים בנימה אישית.
בתחילת דרכי בתור ארכיטקט במשרה מלא מאוד חששתי מהמעבר ממפתח במשרה מלאה.
היום לאחר מסע מרתק כאשר אני מביט לאחור ורואה את הדרך המעניינת שעברתי דרך שבה עשרת הדברות של הארכיטקט מהווים לי בסיס. אני מנסה כל הזמן להישאר מעודכן. אבל הכי חשוב משתדל להיות להיות בן אדם (צנוע וגאה) .
אני תמיד מתחיל יום או שיחה בידיעה שאני יכול ללמוד מהצד השני כמו שאני יכול ללמד. וכמובן שאני לא האדם הכי חכם בחדר.
והדעה האישית שלי, אם שואלים מה אתם.ן רוצים.ות להיות ראשי צוותים או ארכיטקטים תענו ללא היסוס, ארכיטקטים.ות. כמובן שתמיד תוכלו אחר כך להיות מנהלים.ות (זוכרים.ות את החוק הפיטרי ).