פיתוח תוכנה אג'ילי (באנגלית: Agile software development) אני מגדיר כמגוון שיטות פיתוח תוכנה אשר מאפיין כללי שלהן הוא פיתוח תוכנה אמפירי-מהיר בעיקרו שמסתמך, ככלל, כמה שפחות על תכנון לטווח ארוך.
פיתוח בטווח ארוך (בצורה אג'ילית) לא ייעשה לפי ניתוח לטווח ארוך (בצורת אפיון) אלא לפי ניסיון (אמפירוס) ממקרים רבים של שימוש בתוכנה ← זאת להבדיל ממקרי פיתוח תוכנה נון אג'ילי שמסתמך כמה שיותר על תכנון לטווח ארוך ואפיון קפדני.
יתרונות אפשריים
- מניעת הטיות בתכנון לטווח ארוך בשל הטיות תרבותיות ואחרות בכלל ודרך קבלת משוב מגוון על מאפייני התוכנה בזמן אמת בפרט
- שיטת פיתוח סבירה לאפליקציות שמטרתן לפתור בעיה ספציפית או להתמודד עם ישות מוגדרת ולא לתוכנות מורכבות ורבות מצבים
הקבלה אפשרית
לפי דעתי ניתן להקביל את ההבחנה לעיל להבחנה בין פיתוח תוכנה בזארי לפיתוח תוכנה קתדרי.
בראשון, מפותח לרוב קוד מקור סגור עם אפיון קפדני ושקילה של כל הצעת שינוי בתוכנה על ידי צוות היררכי ומדיניות שחרור עדכונים נוקשה.
בשני מפתוח לרוב קוד מקור פתוח כאשר הפיתוח הוא מהיר יחסית לבשיטה הקתדרית, הפיתוח קהילתי, גמיש עם משוב רב ממפתחים ומשתמשים ושקילה מהירה הן של הוספה והן של ביטול של רכיבי תוכנה בהתאם לניסיון.
לפי דעתי ומניסיוני, עם שתי השיטות ניתן לייצר תוכנה יעילה ונוחה אם כי מוצר מוסרי או אתי יותר (כלומר שגורם לפחות פגיעה במשתמשים בעיקר בהקשר פרטיות ואי כפיית שימוש מסוים) אכן בדרך כלל יהיה נפוץ עם פיתוח תוכנה עם קוד פתוח בכלל ותוכנה חופשית בפרט שהוא בנרמז בעיקרו אג'ילי או בזארי ועדיין לקיחה ברצינות של משוב ממשתמש תהיה נפוצה יותר עם פיתוח נון אג'ילי \ קתדרי.