السلام عليكم،
هناك قسم للمشاريع الجماعية تحت قسم جافا وأعتقد أن هذه المشاريع ذات فائدة كبيرة خصوصاً للمبتدئين. لقد آثرت أن أفتح موضوعاً مستقلاً بدل الرد في ذلك القسم لأن الاقتراح أدناه عام وليس خاصاً بمشروع معين.
اضافة للمعرفة والخبرة في لغة برمجة معينة يجب على المبرمج اليوم أن يعرف طريقة عمل شركات البرمجة والأدوات التي تستخدمها حتى يستطيع العمل يوماً في هذه الشركات كما يعمل المبرمجون في الهند وروسيا وغيرها. وكذلك الأمر بالنسبة للمساهمة في برامج المصدر المفتوح. هذه المعارف لا تدرسها الجامعات عادة ويمكن لهذا المنتدى أن يعوض هذا النقص ان حاول القائمون بالمشاريع العمل كما لو أنهم في شركة تماماً.
دون الدخول في التفاصيل هناك طرق عمل وأدوات تستخدمها شركات البرمجة:
- معظم شركات البرمجة تدير مشاريعها وفق أحد الطرق الادارية التي تسمى طرقاً رشيقة Agile. أكثرها شيوعاً هي سكرم Scrum وهناك طريقة أخرى تسمى Kanban. في الشركات التي تعمل وفق السكرم يكون لكل مشروع مدير للمنتج Product Manager وله العديد من المهام ولكن يمكن القول أنه أساساً "ممثل العميل" الذي يشتري المنتج (وليس شرطاً أن يكون مبرمجاً). ولذلك هو الذي يحدد المزايا التي يجب أن تضاف للمنتج Features وتكون على شكل قصص قصيرة User Stories يحدد فيها بالضبط وبدقة ما هو الذي يجب أن يتحقق في البرنامج لكي يلبي رغبات العميل. وهذه القصص يضعها مدير المنتج في لائحة تسمى Product Backlog ويتابع الاضافة إليها وترتيبها وفق الأهمية بالنسبة إليه. فريق البرمجة يقسم عمله الى فترات عمل مدتها أسبوع أو اثنان تسمى Sprint يبدؤها باختيار مجموعة من المهام من أعلى لائحة المنتج التي وضعها مدير المنتج (ونقلها للائحة مؤقتة( ومن ثم تقدير الزمن الذي قد تحتاجه كل مهمة وكذلك يقدم كل فرد الوقت المتاح له للعمل في ذلك الأسبوع. وهناك اجتماع "وقوفاً" لبضع دقائق يومياً يحدد فيه كل فرد من الفريق ثلاث أشياء عمل عليها في اليوم السابق، وثلاث أشياء سيعمل عليها في هذا اليوم والأشياء التي عوقت عمله ويحتاج فيها للمساعدة.
هذه وصف مبسط لطريقة عمل الشركات اليوم. قد لا تستطيع المشاريع الجماعية في المنتدى أن تلتزم بكل تفاصيل سكرم ولكن الأفضل ترك الحكم للتجربة نظراً لأن المشاركين في المشاريع ليسوا ملزمين كفريق برمجة في شركة.
- الفريق لا بد وأن يحفظ منتجه في أحد برامج ادارة النسخ؟ مثلاً المشروع في قسم جافا يستخدم Subversion. ولكن يمكن لمشاريع أخرى أن تستخدم github وهو الموقع الذي يستخدم git وهو الأكثر شيوعاً اليوم في عالم المصدر المفتوح وهو يتطور باستمرار. هذا الأمر يحدده الأخ طارح فكرة المشروع.
- أن يكون لكل فريق كذلك موقعاً لبناء المشروع واجراء الاختبارات يومياً وهو ما يعرف Continuous Integration أو Build Machine. لا أعرف الكثير من المواقع المجانية التي توفر هذه الخدمة سوى continuous.io.
اذا عملت المشاريع بهذه الطريقة فان المشاركين فيها سيعملون كما لو كانوا فعلاً في شركة وستكون فرصة لتعلم ما لا تعلمه الجامعات.
هذه المهارات يمكن ان يكتسبها أعضاء المنتدى عن طريق المشاركة في مشاريع لا علاقة لها بالبرمجة ويكون الهدف منها فقط هو تعلم طريقة عمل شركات البرمجة وتؤهلهم بالتالي للمشاركة بيسر في المشاريع التي تطرح في المنتدى للتطوير. مثلاً يمكن أن يكون هناك مشاريع أسبوعية لترجمة مقالات وكتيبات ومواقع وبذلك يمكن للمتدربين على هذه الأمور الادارية انتاج شيء مفيد اضافة للتعلم والتأهل للانضمام لمشاريع الموقع.
والسلام عليكم