בחירת טכנולוגיות לפרויקט עם מומחה פיתוח תוכנה
ארבעה שיקולים שבאמת משנים, שלושה שנשמעים חשובים אבל כמעט לא משפיעים, והחלטה אחת על מודל הנתונים שחשובה יותר מכל בחירת כלי או טכנולוגיה בודדת.
בקצרה
את בחירת הטכנולוגיות לפרויקט קובעים ארבעה גורמים עיקריים, ואף אחד מהם אינו היכולות הטכניות של הכלי עצמו: מי יתחזק את זה בעוד שלוש שנים, מה כבר יש אצלכם, איפה הדבר ייפגוש את הגבול שלו, והאם אפשר להחליף אותו אחר כך. מדדי מהירות ופופולריות כמעט לא משפיעים על התוצאה לאורך זמן, וההחלטה החשובה בפרויקט אינה בחירת כלי אלא בחירת מודל הנתונים: כלים וטכנולוגיות אפשר להחליף בעלות שניתן להעריך, מודל נתונים שגוי מחליפים רק דרך כתיבה מחדש.
ארבעה שיקולים, ושלושה מדומים
| השיקול |
משנה? |
למה |
| מי יתחזק בעוד שלוש שנים |
כן, הראשון |
רוב עלות המערכת מגיעה אחרי שהיא כבר עובדת בפרודקשן, ובחירה בטכנולוגיה שאין לה מספיק מפתחים ומתחזקים זמינים יוצרת תלות באדם יחיד או בצוות קטן מדי. |
| מה כבר יש אצלכם |
כן |
טכנולוגיה שנייה באותה מערכת עולה למעשה פעמיים: שתי סביבות תחזוקה, שתי שרשרות עדכון ושני סוגי ידע שצריך לשמר ולהכשיר עליהם אנשים. |
| איפה הגבול של הכלי |
כן |
לכל כלי, פלטפורמה או מסגרת יש נפח, עומס או סוג נתונים שבו הוא נשבר או מתחיל לקרטע; עדיף להכיר את הנקודה הזו מראש מאשר לפגוש אותה כשהמערכת כבר בייצור. |
| האם אפשר להחליף אחר כך |
כן |
זו המדידה האמיתית של בחירה טובה: אם הלוגיקה העסקית שלכם לא תלויה בכלי הספציפי שבחרתם, טעות בבחירה הופכת לעלות מוגבלת ולא לאירוע קיצון. |
| מדדי מהירות |
כמעט לא |
ההפרשי ביצועים בין כלים דומים קטנים בסדרי גודל ביחס לנזק שיכולה לגרום שאילתה אחת לא נכונה או עיצוב נתונים לא יעיל. |
| פופולריות |
רק בעקיפין |
המדד הזה הוא קירוב לא מדויק לזמינות של מפתחים ומתחזקים, וזה השיקול האמיתי שמתחבא מאחוריו. |
| אורך רשימת היכולות |
לא |
בפועל זה בעיקר מנבא כמה דרכים שונות יש לבצע את אותה פעולה, כלומר כמה חוסר עקביות יצטבר בקוד ובמערכת לאורך זמן. |
השורה הרביעית היא המבחן שכדאי להשתמש בו במקום ברוב האחרים: בחירה טובה היא כזו שאפשר לחזור ממנה. זה מזיז את הדיון מהשוואת כלים אל האופן שבו הם נוגעים בקוד ובמערכת שלכם, ושם מתקבלות ההחלטות המועילות באמת.
צד לקוח, שתי שאלות
את ההחלטות בצד הלקוח נוטים לנהל בצורה הסוערת ביותר ועם הכי הרבה רעש, אבל בפועל הן נחתכות בשתי שאלות פשוטות.
האם התוכן צריך להימצא בחיפוש? אם כן, הדף חייב להיטען מהשרת כתוכן מוכן, ולא להיבנות אצל המשתמש בדפדפן אחרי ההגעה; זה מצמצם את מרחב הבחירה כמעט מיד, וזה גם הדבר שמגלים מאוחר מדי, לעיתים רק אחרי שהאתר עלה ושום דבר לא מאונדקס.
מי יתחזק את זה? בחירה בפתרון פופולרי שאף אחד בצוות לא מכיר יקרה יותר מבחירה בטכנולוגיה ״משעממת״ שכולם עובדים בה; ההפרש האמיתי הוא לא בזמן הפיתוח הראשוני אלא בכל תיקון ושינוי שיגיע אחר כך, והעלות הזאת מצטברת בשקט.
אם התשובה לשאלה הראשונה היא לא, והתשובה לשנייה היא «הצוות הקיים», הדיון על טכנולוגיה בצד הלקוח יכול להסתיים ואפשר לחזור לכתיבת קוד; זה המצב בחלק גדול מהפרויקטים.
מבחן אחד לכל הצעה. בקשו לנסח במשפט אחד מה הכלי המוצע יודע לעשות שהכלי שאתם כבר עובדים איתו לא עושה; אם אי אפשר לנסח את זה ברור, מה שחסר אינו עוד כלי. זה מבחן שעובד היטב גם על עצמכם, וכדאי להפעיל אותו לפני שמעלים הצעה ללקוח.
הבחירה שחשובה יותר מכל הכלים
מודל הנתונים. אם יש זמן לדיון מעמיק אחד בפרויקט, הוא צריך להיות על הישויות במערכת ועל הקשרים ביניהן, ולא על שפה, ספרייה או מסגרת צד שרת או צד לקוח.
הסיבה אסימטרית: שפה, מסגרת, מסד נתונים וספק ענן ניתנים להחלפה בעלות שניתן לאמוד מראש ולתכנן אליה; מודל נתונים שגוי מתפשט: הוא נכנס לכל דוח, לכל ממשק משתמש, לכל הנחה עסקית בקוד ולכל אינטגרציה חיצונית, והחלפתו בפועל היא כתיבה מחדש של המערכת.
שלוש שאלות שמספיקות לדיון הזה: מה הישות המרכזית באמת, האם יש לה גרסאות או היסטוריה שחייבים לזכור, ומה המקרה שבו «אחד» הופך ל«כמה». השאלה השלישית היא זו שנוטה ליפול, והדף על CRM בהתאמה אישית מתאר את הצורה הנפוצה שבה זה קורה.
מה חייב להיכרע עכשיו ומה יכול לחכות
חלק גדול מהוויכוחים על טכנולוגיות נובע מהנחה שהכול חייב להיות מוכרע לפני שמתחילים לפתח; זה לא מדויק, והבנה מה באמת דורש החלטה עכשיו ומה אפשר לדחות חוסכת שבועות של דיון.
| ההחלטה |
מתי |
למה |
| מודל הנתונים |
עכשיו |
מודל הנתונים מתפשט לכל רכיב במערכת, והחלפתו בשלב מאוחר היא בפועל כתיבה מחדש. |
| האם התוכן צריך להימצא בחיפוש |
עכשיו |
התשובה לשאלה הזו קובעת את אופן מימוש צד הלקוח, וגילוי מאוחר שלה מחייב בנייה מחדש של החלקים הרלוונטיים. |
| שפה ומסגרת |
עכשיו, אבל בלי דרמה |
קשה להחליף בפועל באמצע פרויקט, אבל השיקול פשוט: באיזו טכנולוגיה הצוות כבר שולט ומי יתחזק את המערכת לאורך זמן. |
| ספק ענן |
אפשר לדחות |
אם לא נצמדים לשירותים ייחודיים של ספק מסוים, זו החלטה הפיכה בעלות שאפשר להעריך ולהכניס לתכנון. |
| כלי ניטור, תורים, מטמון |
לדחות |
את הכלים האלה בוחרים נכון רק כשיש עומס אמיתי למדוד ולהתמודד איתו; בחירה מוקדמת מדי היא בעיקר ניחוש. |
שתי השורות הראשונות הן מוקד הדחיפות האמיתי. השורה השלישית נראית כלפי חוץ כמו ההחלטה הגדולה, אבל היא בעיקר שאלה של אנשים ויכולות. השורות האחרונות הן אלה שעליהן מתווכחים הכי הרבה ושהכי קל לדחות, וזה בדרך כלל הפוך לגמרי מסדר הדיון בפועל.
מתי חדש כן מוצדק
חדש מוצדק כשהבעיה שלכם אינה סטנדרטית וקיים כלי שמטפל בדיוק במקרה הזה; אז הכלי החדש חוסך עבודה ממשית, וההחלטה היא תרגיל בחשבון עלות־תועלת ולא עניין של טעם.
מה שלא מוצדק הוא לבחור טכנולוגיה חדשה רק משום שהקיימת מרגישה משעממת; זה שיקול נפוץ, בדרך כלל לא נאמר בקול, והוא נראה מקצועי כי הוא עטוף בשפה מקצועית. הדרך להבחין היא המבחן מלמעלה: משפט אחד שמסביר מה החדש עושה שהקיים לא.
ויש גם שיקול הפוך שכדאי לומר אותו במפורש: לצוות יש זכות לגיטימית לרצות לעבוד בכלים שהוא לומד מהם ומתפתח בהם, וזה חלק משיקולי שימור עובדים. פשוט עדיף לומר את זה כך, ולא בתחפושת של שיקולי ביצועים, כי אז אפשר לשקול אותו מול העלות במקום במקומה.
איך אני עובד על זה
עיסוק בתחום מאז 2004, עבודה על מערכות AI מאז 2023, פרויקטים ללקוחות בארבע עשרה מדינות. אני ארכיטקט עצמאי ומומחה פיתוח תוכנה, ואין לי כלי או מוצר שאני מקדם, ולכן «תישארו במה שאתם מכירים» היא מסקנה שלא עולה לי דבר; זו גם המסקנה השכיחה.
מה שסקרת ארכיטקטורה וסקירת טכנולוגיות מייצרות בפועל: החלטה כתובה על מודל הנתונים, מיפוי הנקודות שבהן הקוד נוגע בכלי כדי לאפשר החלפה עתידית, תשובה סגורה לשאלת החיפוש בצד הלקוח, וזיהוי הגבול של כל כלי מועמד מול נפח העבודה האמיתי שלכם.
מאיפה להתחיל
נסחו במשפט אחד מה הישות המרכזית במערכת שלכם, והאם יש לה היסטוריה שחייבים לשמור; אם קשה לנסח את המשפט הזה, זה הדיון שצריך לקרות לפני כל בחירת כלי או טכנולוגיה.
דברו איתי | קשור: טכנולוגיות, סקירת ארכיטקטורה, למה ארכיטקט
SLAtech LTD