الجمعة، 25 أبريل 2008

حول مشاريع التخرج, الجزء الأول

(تحديث: الجزء الثاني هنا)
الآن و قد قارب العام الدراسي عن الأنتهاء, بدأ بعض طلاب الفرقة الثالثة بالتفكير في مشاريع التخرج
سوف أتحدث إن شاء الله في عدة مقالات عن بعض النقاط في هذا الموضوع:

- ما هدف المشاريع
- كيف تنتقي المشروع
- كيف تنفذه بعد انتقائه
لاحظ ان معظم ما سأكتب هنا ليس مرجوعا إلى مصادر علمية أو جامعية و لكنه مجرد آرائي الخاصة.

ما فائدة المشروع؟

التطبيق العملي للعلم: معظم مشاريع السنين الدراسية السابقة كانت تركز على التمرين على استخدام اﻷدوات البرمجية, أى أن هدفها كان تعليميا قبل أن يكون تطبيقيا. أما مشروع التخرج فهو فرصة لتطبيق ما تعرف لكتابة برنامج حقيقي و ليس مجرد إثبات فهمك لتكنولوجيا معينة. ربما يكون مشروعك برنامجا تطبيقيا جديدا و سيكون عليك أن تفكر في ال Users و احتياجاتهم. أو ربما يكون ذو اتجاه بحثي مثل الكثير من المشاريع التي تمت قبل ذلك في الكلية كمشاريع ال Robotics أو ال Compilers أو ال Image Processing , و وقتها ستتعلم كيف تقرأ في المراجع و كيف تسير على أساس علمي.
في كل الحالات ستتعلم كيف تدير Software Development Lifecycle كاملة من Analysis و Design و Implementation.

العمل بأكثر من تكنولوجيا او أداة علمية: على عكس المشاريع في السنين السابقة التي كانت تركز على شيء واحد كقواعد البيانات أو الخوارزميات فإن مشروع التخرج سيحتاج إلى استخدام متكامل للعديد من المهارات و المباديء العلمية التي اكتسبتها و إلى تفكير في كيفية استخدام التكنولوجيا أو الأداة المناسبة في المكان المناسب.

التدريب على إدارة العمل: سيكون على الفريق أن يتعامل مع ما هو أكبر من كتابة برنامج. هناك تحديات و خبرات ستحتاج أن تكتسبها. كيف ستقنع الكلية بجدوى مشروعك؟ كيف سينظم أعضاء الفريق العمل؟ كيف سينظمون الوقت؟ كيف سيحلون المشاكل و يتعاملون مع الخلافات التي قد تظهر بينهم؟
مشروع التخرج يقدم فرصة للتمرين على التعامل مع "العالم الحقيقي" قبل دخول سوق العمل.

ما ليس بصفات المشروع

مشروعك ليس Assignment: على المشروع أن يقدم تحديا و أن يعلمك خبرات جديدة. إن وجدت المشروع أسهل مما يجب أو لا يحتاج أن تجيب على أسألة محيرة في ال Design أو أنك لن تحتاج لجمع معلومات من أجل تنفيذة, فراجع نفسك فربما لا يكون ما تفعل على مستوى مشروع تخرج.

مشروعك ليس رسالة دكتوراة: رغم ما سبق, فلا تحاول أن يكون مشروعك شديد الصعوبة لدرجة أن يكون غير قابل للتنفيذ أو يحتاج لوقت أكثر من المتاح أو يحرمك من اعطاء المواد الدراسية الأخرى حقها.

كيف تجمع بين هذا وذاك؟
1- اختر فكرة جيدة بها تحدي لتنفذها
2- ركز في هذه الفكرة و لا تركز في غيرها.

أعتبر المشروع تجربة علمية اكثر منه منتجا تجاريا, ببساطة أنت لديك فكرة أن طريقة ABC هي طريقة جيدة لتحقيق هدف XYZ. اجعل هدف المشروع هو التأكد من صحة هذه الفكرة و لا شيء غير هذا. بعد أن تكون أنهيت المشروع بنجاح و تأكدت من جودة فكرتك يمكنك بعدها أن تفكر ان تستخدم الخبرة التي اكتسبتها في عمل مشروعا أكبر و أكثر طموحا.

على سبيل المثال إذا كان مشروعك محرك بحث يقوم بتصنيف النتائح قبل عرضها, فلا تحاول تقليد كل أمكانية ما في Google بل اجعل أكبر أهدافك أن تنفذ طريقة جيدة للتصنيف.

و إذا كان مشروعك لغة برمجة تسهل عمل برامج للWeb, فركز على جزء الWeb و لا تحاول أن تضيف اليها ما لا علاقة له بالهدف, فإن كانت كتابة Interpreter اسهل لك فاجعلها Interpreted و ليس Compiled, و لا تسع لأن تضيف library كبيرة مثلا بل سيكون عليك أن تركز على الهدف الأساسي و هو "كيف تجعل حياة مبرمح ال Web أسهل" و ليس "كيف تصنع لغة البرمجة المثلى".

لا تركز فقط على المشاريع ذات التطبيق التجاري
هناك من يتمنى أن يقوم بمشروع مبني على مبادىء علمية لكنه يخشى أن يكون مثل هذا المشروع غير جذاب للشركات في سوق العمل. نصيحتي ألا تقلق كثيرا من هذه النقطة لأنه:
1- هناك شركات عديدة في مصر يهمها الخبرة العلمية. أنا مثلا في أول Interview لى وجدت الممتحن مهتما بأن مشروعي كان له علاقة بالImage Processing
2- كم شركة في رأيك سترفض خريجا قام مثلا بمشروع في ال Natural Language Processing لأن مشروعة لم يكن عن ال Database؟

هناك 4 تعليقات:

TeCNoYoTTa يقول...

شكرا يا دكتور .....كلام حضرتك مفيد جدا

Mohamed Samy يقول...

Thanks Tecnoyotta!

Unknown يقول...

شكرا يا دكتور.. فعلا كلام مفيد
هو انا لسه في سنه اولى ومشروعنا على أدنا بالسي بلس بلس .. بس الكلام ده هيساعد الواحد في انه يجيب فكرة مشروع كويسه بعد كده ان شاء الله

Mohamed Samy يقول...

Thanks MeGa
Glad you liked the posts