מנהיגות בההיטק #13—קוהרנטיות ארגונית
התנין שבתמונה למעלה (אם אתם/ן קוראים/ות באתר ולא במייל) צולם ע״י בן ה9. התנין החביב הזה בא לבקר אותנו ליד האוהל כשאכלנו ארוחת צהרים. מסתבר שככה זה בלואיזיאנה.
הוספתי אפשרות שלכם/ן לשתף פידבק, לשיפור ולשימור. אשמח לשמוע מה עובד טוב, על איזה נושאים הייתם רוצים/ות לשמוע בעתיד, וכו׳.
קוהרנטיות ארגונית
כשבאים לתכנן את מבנה הצוות או הארגון, יש כמה קווים מנחים שחשוב לחשוב עליהם. אחד מהם הוא קוהרנטיות ארגונית. כדי להבהיר למה הכוונה, נחזור גם הפעם אל עולם הפיתוח המוכר. מפתחים/ות רבים/ות מכירים/ות את המשפט: ״high cohesion, low coupling״ כקו מנחה לתכנון אובייקטים. אבל מה זה בדיוק אומר שאובייקט הוא קוהרנטי? הנה כמה הגדרות שעוזרות לפרמל את המונח.
נניח שיש לנו אובייקט A המכיל משתנים פנימיים a_1, a_2, ..., a_n ומתודות m_1, m_2, ..., m_m. אז נגדיר את הקוהרנטיות של מתודה כלשהו כיחס בין כמות המשתנים הפנימיים שהמתודה משתמשת בהם לבין סה״כ המשתנים הפנימיים.
לדוגמא, מתודה שלא מתייחסת לאף משתנה פנימי של האובייקט היא בעלת קוהרנטיות של אפס. די ברור, לדוגמא, שניתן להוציא את המתודה מהאובייקט לספריית עזר או לפחות להגדיר אותה כסטאטית. מנגד, מתודה שמתייחסת לכל המשתנים הפנימיים קשורה מאוד לאובייקט ויהיה קשה מאוד לעשות refactoring שיפריד בינה ובין האובייקט.
ומה הקוהרנטיות של האובייקט? אפשר פשוט לבחור את הממוצע של המתודות. אובייקט קוהרנטי מספק פונקציונליות שקשורה האופן גבוהה למידע שמגדיר את הstate הפנימי. ומנגד, אובייקט בעל קוהרנטיות נמוכה יכול בדרך כלל להיות מפוצל למספר אובייקטים נפרדים, שכל אחד מהם בעל קוהרנטיות גבוהה יותר.
וכמו בכל מטריקה, צריך להיזהר עם התקבעות למספרים ולא למהות שמאחוריהם. אם אתם/ן רוצים/ות להבין קצת יותר מה זה קוהרנטיות במובן של הנדסת תוכנה, אתם/ן מוזמנים/ות לצפות באחת ההצגות הראשונות של React, ברוח המלצת הספר שבהמשך, שם מדברים עוד קצת על low coupling, high cohesion.
אבל מה בין זה לתכנון ארגוני?
כפי שאמרתי, יש כמה קווים מנחים לתכנון ארגוני. אחד החשובים ביותר הוא שכל ״צוות״ יהיה אחראי לפתור בעיה כלשהי.
ככל שהעובדים/ות בצוות עובדים במרחב בעיה אחיד, הצוות קוהרנטי יותר. ככל שעובדים על פתרון בעיות לא קשורות, הצוות קוהרנטי פחות.
חשוב להדגיש שהפוקוס הוא על מרחב הבעיה ולא על מרחב הפתרון. בהחלט יכול להיות מצב ששתי מפתחות עובדות על מודול אחד, אבל כל אחת מנסה לפתור חלק אחר של מרחב הבעיה.
לדוגמא, צוות תשתיות אולי עובד עם צוותי פרודקט רבים ושונים, אבל כל עוד הבעיה שצוות מנסה לפתור היא אחידה, הצוות יהיה קוהרנטי. לדוגמא, אם מרחב הבעיה שהצוות מנסה לפתור זה שקצת החידושים בחברה לא מספיק גבוה, אז הצוות יכול להיות בעל קוהרנטיות גבוהה אפילו עם מרחב הפיתרון שעליו עובדים נמצא בתחומים רחבים.
מכיוון שבתכנון ארגוני תמיד יהיו טרייד-אופים בין עקרונות שונים, לאורך זמן נמצא צוותים שהם בעלי קוהרנטיות נמוכה. מפתחים/ות שונים/ות בצוות עובדים על פתרון בעיות שונות. בהחלט יכול להיות שזה המבנה הנכון לאור הקריטריונים אחרים. ההבנה של הקוהרנטיות הארגונית תעזור לכם/ן לתכנן את מבנה התמיכה בארגון ולמזער את הנזק מארגון לא קוהרנטי.
מרחבי הרשת
- פוסט (אנגלית): כמעריכים עובדים/ות, אחד הנקודות הקריטיות להבנה עבור מי שרוצה להעריך עובדים/ות בצורה הגונה, זה ש״מה שרואים מכאן לא רואים משם״ (רק הפוך). בפוסט הזה רייצ׳ל משתפת, מנקודת המבט של מפתחת, כמה חשוב לקבל פידבקים מא.נשים רבים. כי אחרת אנחנו נפספס נקודות קריטיות להערכה הגונה.
- חדש! כתבת/ן פוסט חדש? הקלטתם/ן פודקאסט חדש הנושא ניהול? נתקלתם/ן בפוסט מעולה? המליצו על פוסטים חדשים באופן אנונימי (או לא) כאן.
המלצת ספר
הפעם המלצת ״ספר״ לא שגרתית, הלא היא המלצת סרט. אם תהיתם/ן פעם איך פרויקט פרוייקט שבאמת משנה את העולם, אז אני ממליץ לפנות שעה ורבע ולצפות בסרט ״React.js: The Documentary״. רוב הניסיון האישי שלי הוא בבק-אנד, אבל הסרט עדיין היה מרתק ומעניין, כי האתגרים רלוונטיים לכל אתגר פיתוחי. כמה נקודות למחשבה בזמן שאתם/ן צופים/ות בסרט:
- איזה סוגי מנהיגויות היו נחוצים כדי לאפשר לפרויקט להצליח?
- ערכים נקבעים כשקשה לעמוד בהם. שימו לב להחלטה של הCTO של פייסבוק.
- איך בונים תרבות ארגונית שתאפשר להחלטות הטובות ביותר לצוף, ברמה כזאת שאפשר ״לקבור את הבייבי האישי שלך״ כשזה הדבר הנכון?
- אם תהיתם/ן מה האימפקט של מפתחת סטאף+, חפשו את התרומות שלה לאורך הסרט.
- מה החשיבות של סטורי-טלינג, לחיוב ולשלילה?
כשאתם/ן מוכנים/ות לכך, הנה כמה דרכים שבהם אני יכול לעזור לכם/ן:
- ייעוץ אישי. אנחנו יכולים להיפגש ב״אחד על אחד״ ולעבוד על האתגר המרכזי שלכם/ן. זה יכול להיות הכנה לראיון קבלה לחברת גאמפ״א או חברה אחרת, עבודה על קידום, מעבר מפיתוח לניהול, או כל נושא אחר.
- הירשמו לקורס ״הובלת צוות פיתוח״ בגרסת האון-ליין. הקורס מאפשר לימוד בקצב אישי ונותן גישה לקבוצת פייסבוק סגורה. בנוסף, הקורס כולל גישה פתוחה הכוללת את כל העדכונים העתידיים לכל החיים.
- הירשמו לקורס ״הובלת צוות פיתוח״ בגרסת קבוצתית. הקורס בקבוצות קטנות ואינטימיות, שבהן נלמד ונדון על יסודות הניהול בהייטק. מעבר להקניית מיומנות וידע, הקורס יעזור לכם/ן להכיר מנהלים ומנהלות מרחבי התעשייה.