3. Prioritization – Agileافكار لتطبيق ال
و بما ان هدفنا اننا نطلع حاجة شغالة و خلصانة working software بدري في iterations و نركز عليها ، صعب جدا ان انا اعمل ده من غير ما اعمل تحديد للاولويات Prioritization للشغل بتاعي عشان اعرف دايما اختار ايه اللي هعمله يوصلني لهدفي في الiteration دي و ايه اللي ممكن يتاجل و ايه اللي ممكن ميتعملش اصلا – راجع مبدا ال simplicity هنا .
الPrioritization كمان بيساعدنا نتقبل التغيير بسهولة لاننا بنشتغل علي اهم حاجة في الوقت ده و اركز عليها و اسيب الاقل اهمية ، و لو حصل تغيير ممكن ساعتها نحطه مكان الحاجة الاقل اهمية دي و منخسرش حاجة في الشغل و منبقاش مزنوقين اننا لسه فاضلنا حاجات اساسية في الsystem
و الPrioritization دي حاجة بنعملها طول الوقت ، من اول ترتيب الFeatures علي حسب اهميتها للعميل ، لحد ترتيب اهمية الbugs اللي بتطلع علي حسب خطورتها او احتمالية ظهورها للمستخدم ، و حتي ترتيب الtasks علي حسب اهميتها لسير الشغل في الiteration
لو جينا لترتيب الFeatures ، دي حاجة بيعملها الناس بتوع الBusiness و بيرجعوا فيها للعميل (اللي طبعا اول رد ليه بيكون كل حاجة مهمة ) ، فالموضوع ده محتاج صبر و اكتر من تجربة مع العميل لحد ما يفهم اننا محتاجين ترتيب و انه هيشوف اهم حاجة ليه قريب و ان ده بيسمحله انه يغير اسهل و هكذا .
تاني حاجة ترتيب الFeatures اللي هنشتغل عليها علي حسب اهميتها للعميل مش حسب الترتيب اللي يريحنا في الشغل ، يعني لو بنعمل e-commerce system يبقي اهم حاجة اني اعرض المنتجات و اعمل عملية الشراء مثلا ، مع ان اول حاجة منطقيا هي اني اعمل Login ،تخيلوا اني ابدا بالLogin و اعمل بقي Login with Facebook , twitter , Gmail و اكيد طالما عملت Login يبقي اعمل Logout كمان ،و اروح للعميل اول حاجة يشوفها عشان الfeedback هي الLogin بس ، هو مش عايز system بيعمل Login هو عايز حاجة فيها منتجات و بيع و شراء.
انا ممكن اعمل feature عرض المنتجات الاول، و كمان عملية الشراء و استخدم dummy user احطه بنفسي في الsystem و اخد عليهم feedback و بعد كده اعمل الLogin الاساسي و بعدين الLogout و بعدين ازود طرق الLogin . كده يبقي انا لو اتاخرت لاي سبب او العميل قرر يغير او يزود يبقي الجزء اللي هيتاخر او يتغير او حتي يتشال بسهولة هو Login with facebook مثلا مش جزء الدفع اللي هو في صميم الsystem.
مهم كمان الPrioritization اللي بيعمله الفريق للBugs و اننا ناخد في اعتبارنا Target الوقت بتاع الiteration و الFeatures التانية المتعطلة عشان احنا عمالين نحل الbugs في الاولي، اكيد مش هنطلع بحاجة low quality ، بس برده لازم نبدا بالاهم للعميل الاول ، و نقف هنا شوية ، ممكن خطأ مطبعي في الشاشة الرئيسية يكون اهم للعميل من logic bug في سيناريو نادر انه يحصل ، فالفريق مع الناس بتوع الbusiness بيتفقوا علي الاولويات دي ، و بيراجعوها اول باول و دايما بنسال هل الbug دي بتاثيرها مهمة و تستاهل فعلا اني اتاخر او ااجل bug تانية او feature تانية اصلا ولا فعلا كارثة ولا هي مش هتاخد وقت طويل و في الاخر القرار بيكون الاحسن للمشروع حسب الاولويات اللي الفريق كله فاهمها.
نيجي بقي لترتيب الtasks ، اهم حاجة عندنا نطلع working software ، يبقي اهم tasks عندنا هي اللي بتساهم في الworking software ده -راجع قيمة الworking software over documentation هنا– ، يعني الdeveloper اهم يحل الbugs من انه يعمل updating design document مثلا ، بس مش اهم انه يعمل commit لشغله عشان ميروحش ال working software بتاعنا في داهية 🙂 .
في الاخر الفريق دايما فاهم اولوياته و بيسال اول باول لو فيه تغيير اولويات و يبقوا كلهم مركزين انهم ميسرحوش و يشتغلوا بعيد عن الاولويات دي ولا انهم يشتغلوا في حاجات كتير و سايبين الاهم مش مركزين عليه