The Cost of Simplicity - למה פשטות אמיתית יקרה יותר ממורכבות
The Cost of Simplicity - למה פשטות אמיתית יקרה יותר ממורכבות
פשטות נראית זולה. שורה אחת במקום עשר, API קטן, זרימה ברורה, מעט אפשרויות.
אבל במערכות גדולות, פשטות אמיתית היא אחד הדברים היקרים ביותר לבנייה. הרבה יותר יקרה ממורכבות.
כי מורכבות - פשוט נוצרת. פשטות - מתוכננת, מתוחזקת, ונאבקת על קיומה.
מהי “פשטות” באמת?
פשטות איננה:
- מיעוט קוד
- מעט מחלקות
- או API קצר
פשטות היא מצב שבו:
- רוב המשתמשים עושים את הדבר הנכון בלי מאמץ
- מקרי הקצה לא זולגים לכל מקום
- והמערכת מתנהגת בצורה צפויה גם כשהיא גדלה
זו חוויה, לא מדד כמותי.
למה מורכבות זולה יותר?
כי מורכבות היא ברירת המחדל.
כל דרישה חדשה:
- מוסיפה עוד if
- עוד פרמטר
- עוד exception
- עוד “רק במקרה הזה”
אף אחד לא בחר במורכבות. היא פשוט קרתה.
המשל: שולחן עבודה מול מגירה אחת
דמיינו שולחן עבודה.
מורכבות: כל מסמך נשאר היכן שהניחו אותו באקראיות. עם הזמן - ערימות, פתקים, חפצים, שכבות.
פשטות: יש מגירה אחת. כדי שזה יעבוד - צריך:
- להחליט מה נכנס
- מה לא
- מה נזרק
הסדר דורש החלטות קשות ומתמשכות. הבלגן - לא.
למה פשטות יקרה כל כך?
כי כדי לשמור על פשטות צריך:
- להגיד לא לפיצ’רים לגיטימיים
- לאחד מקרים במקום לטפל בכל אחד בנפרד
- לספוג עלות פנימית כדי לחסוך אותה מהמשתמש
- לשכתב במקום להוסיף עוד שכבה
כל אלה הם החלטות יקרות:
- טכנולוגית
- ארגונית
- ולעיתים גם פוליטית
ולכן פשטות לא שורדת מעצמה.
פשטות חיצונית מול מורכבות פנימית
במערכות בוגרות, פשטות כמעט תמיד מושגת כך:
המורכבות לא נעלמת - היא פשוט נדחסת פנימה.
- יותר קוד פנימי
- יותר בדיקות
- יותר מחשבה ארכיטקטונית
כדי שהממשק החיצוני יישאר שקט, ברור ויציב.
זו עסקה: המערכת משלמת - כדי שהמשתמש לא יצטרך.
מחשבה אדריכלית
אם מערכת “פשוטה” להרחבה, להוספה, ולשינוי - סביר שהיא פשוט עוד לא גדולה מספיק.
פשטות אמיתית נבחנת כש:
- הדרישות מתרבות
- הקצוות מתרבים
- והלחץ גובר
ואז השאלה איננה “האם זה פשוט עכשיו?” אלא “מה המחיר שאנחנו משלמים כדי שזה יישאר פשוט?”
סיום
מורכבות היא תוצאה של תנועה. פשטות היא תוצאה של בחירה.
ולכן, במערכות גדולות, הדבר הכי יקר שאפשר לבנות - הוא מערכת שנראית פשוטה.