نعم، نعلم شعورك تماماً، فأنت كسائر المبرمجين الآخرين الذين يتصفحون مواقع برمجية او فيسبوك او اي موقع كان، ثم تحدث تلك الشعلة في ذهنك عن مشروع برمجي قد يكون المشروع المثالي الذي سيأخذ بيدك نحو الشهرة تارةََ او نحو الغنى تارة أخرى، تفكر في المشروع جيدا و تبدأ بتحليله و تحليل معطياته، تفكر أخيراً في التقنيات البرمجية الأمثل لصناعة هذا المشروع ثم تبدأ بتهيئة ملفات المشروع سواء عن طريق Package Manager او بطريقة يدوية، تكتب " Hello World " في المشروع ثم ينتابك السرور و الفرحة و التحفيز من أجل إنهائه بعجالة و إطلاقه، لأنه مشروع ليس كباقي المشاريع !
لكن سرعان ما تتحطم أحلامك بعد وهلة، لربما تجد صعوبة او Bug او إشكالة انت غير قادر على حله، او ترى ان المشروع أضخم مما بنيته في عقلك، تجبر نفسك شيئاً فشيئا من أجل إنهائه، و في خضم كل ذلك، تنبثق شعلة أخرى في عقلك لمشروع اخر تعتقد انه سيكون اسهل، اكثر إحترافية و أفضل من مشروعك الحالي، فتقفل الـ IDE و تبدأ بتهيئة مشروع آخر و تلج حالة الـ Infinite Loop بعدد مشاريع كثيرة و لا واحد منها مكتمل !
الأمر أشبه بفلم Edge of Tomorrow إن شاهدته من قبل، بحيث يتكرر دائما نفس السيناريو، و ربما و أنت تقرأ هذا المقال إن توجهتَ الى ملفك الخاص الذي يتضمن مشاريع برمجية خاصة بك ستجد انه و لا مشروع قد إكتمل عن آخره، عشرات المشاريع الجيدة بأفكار ممتازة، لكن لا نتيجة تذكر إطلاقا !
في هذا المقال سنحاول مساعدتك على تجاوز هذه المعضلة، سنطرح عليك مجموعة من النصائح العملية و مجموعة من الطرق التي يمكن إتباعها من أجل المثابرة لإنهاء مشروع برمجي و إطلاقه من البداية للنهاية.
- إستخدم الـ Mind Mapping ( الخرائط الذهنية ) :
قد سمعت بالمصطلح من قبل او قد تكون أول مرة تسمع بهذا الأمر، في كل الاحوال هي مهمة جدا حين يتعلق الأمر بإتخاذ القرار الملائم و الكامل دون تشتت، سنأخذ مثال فكرة بسيطة لنشرح من خلالها معنى الـ Mind Mapping، لنفترض انك و على حين غرة سطع في خلدك فكرة " تناول الطعام خارج المنزل " (الفكرة 1 ) ، فقررت تنفيذها، لكن إن اردت الخروج من المنزل تحتاج الى ارتداء ملابسك ( و هذه الفكرة 2 المرتبطة بالفكرة 1 ) ثم تذكرت ان ملابسك متسخة و تحتاج الى غسيلها ( الفكرة 3 المرتبطة بالفكرة 2 من أجل تحقيق الفكرة 1 ) ثم تذكرت ان مسحوق الغسيل قد نفذ و تحتاج الى شراء واحد ( الفكرة 4 ) ...الفكرة هنا انه من أجل تحقيق الفكرة 1 عليك المرور بمجموعة من الأفكار المتسرسلة، و عليك إنجازها بترتيب محدد من أجل بلوغ ذلك الهدف، برمجياً الأمر لا يختلف إطلاقا، تفكر في تطوير تطبيق أندرويد، ثم تتذكر ان التطبيق سيحتاج الى الربط مع قاعدة بيانات ربما من نوع Firebase، لذلك عليك تعلم Firebase أولا، ثم تتذكر انك ستحتاج الى مكتبة للربط بين التطبيق و قاعدة البيانات، و تأتيك الأفكار واحدة تلو الأخرى.
من أجل تنظيم تلك الأفكار، و إبقائها تحت السيطرة لأننا سنحتاجها لاحقا، نقترح عليك إستخدام إحدى برمجيات / تطبيقات الـ Mind Mapping ( نقترح عليك تطبيق Mindly الذي أستخدمه شخصيا ) قم بتدوين اي فكرة متعلقة بذلك المشروع و أفكارها الثانوية و إربط بينها كلها من أجل ترتيبها لاحقا.
- قبل التنفيذ : لا تكتب إطلاقاً اي كود حتى تحلل كل شيئ :
بالإستعانة بالـ Mind Map التي صنعتها سابقا، ستحصل على مجموعة من الأفكار الرئيسية و الثانوية، إجمع تلك الأفكار و حاول تنظيمها، ثم قم بتحليل كل فكرة منها، قم بترتيبها لاحقا بالأفكار التي يمكنك صناعتها، الأفكار التي تحتاج الى تعلم تقنيات مخصصة من أجل صناعتها، ثم الأفكار التي ليست لديك أي فكرة إطلاقاً عن كيفية صناعتها، قم بتوسيع دائرة البحث و إجلب أكبر قدر من المعلومات المتعلقة بتلك الأفكار الصعبة او المستحيلة، إستعن بمنصات مثل Stackoverflow او Github لإيجاد أجوبة لأسئلتك في حالة كان البحث مستعصيا عليك، إياك ثم إياك ان تفتح الـ IDE او تقوم بالبرمجة او تهيئة المشروع حتى تتأكد كليا ان كل فكرة من الأفكار واضحة و لديك المسار النهائي لإبتكارها.نقترح عليك أيضا في هذه المرحلة ان تستعين بتقنيات مثل UML او Merise إن اردت تحليل قواعد البيانات و هيكلتها لضمان فهم أعمق و منظم لسيرورة برمجيتك، يمكنك إستخدام برمجية LucidChart من أجل بناء قواعد البيانات الخاصة بمشروعك و معرفة مكوناتها و روابطها .
- قبل التنفيذ : قسم المهام الصغيرة لمهام أصغر :
يوجد بعض المهام التي تم تحليلها من خلال المراحل السابقة التي بدورها تنقسم لمهام أصغر، لنعد لمثال ربط تطبيق اندرويد بقواعد بيانات Firebase لندرك ان هذه المهمة هي مهمة واحدة و وحيدة، لكن إن تعمقنا قليلا فيها، فسنجد انها تتكون من 4 مهمات رئيسية أخرى و هي عمليات الـ CRUD، أي إضافة بيانات من التطبيق الى قواعد البيانات، ثم جلب البيانات، ثم تعديلها و أخيرا حذفها، هذه المهام توجب تقسيمها أيضا و دراسة كل طريقة و عملية على حدة و معرفة كيفية إنجازها.ببساط في كل المهام قبل التنفيذ نسعى الى توضيح كل شيئ، و إنارة الظلام عن كل مهمة حتى نعرف ما الذي نحن بصدد فعله، و ما الذي يجب علينا فعله من أجل إنجاز هذا المشروع دون تشتت او إنهيار يفضي الى عدم رغبتك في إنهائه.
في هذه المرحلة أيضا، يفضل اللجوء لتقنيات مزامنة الوقت مع المهام مثل PERT او GANTT، هذه التقنيات تسمح لك بتقسيم كل مهمة على حدة و ذكر المدة اللازمة من أجل إنجازها، فمثلا، لإنجاز تقنيات الـ CRUD سنقوم بتوفير مدة 4 أيام لتعلمها، بحيث في كل يوم سنتعلم تقنية من التقنيات الـ 4، بهذه الطريقة سيكون العمل مزدهر و أخف على عاتقك و لك مدة و مساحة كافية لمزاولة باقي الأنشطة و التي سنعود لهذه الفقرة بالتأكيد في بقية مقالنا.
- أثناء التنفيذ : 10 دقائق مقابل 25 دقيقة :
بعد ان ادركنا المدة اللازمة لإنجاز مشروعنا و قمنا بتحديد المدة الزمنية لكل مهمة (Task) من المهمات، فقد حان الوقت لتطوير مشروعنا الآن و البدئ في العمل عليه و تجهيزه، بالطبع سنلتزم بجدول المواعيد الذي قمنا بإنجازه، تذكر ان اي اختلال في الجدول الزمني قد يؤدي الى إختلال رغبتك كذلك في إنهاء المشروع، فمثلا إن انجزت مهمة باكراً قبل موعدها، لا تتسرع في إنجاز المهمة التالية، بل مارس نشاطات اخرى و إنتظر الى حين بلوغ الوقت المحدد للبدئ في المهمة الثانية.إستخدم تطبيقات التنبيه مثل تطبيق Blip Blip في هاتفك من أجل تذكيرك بمواعيد الراحة و العمل.
- أثناء التنفيذ : تفاخر بإنجازتك :
يخبرونك ان تقضي حوائجك في الكتمان، و يخبرونك ان الإشهار بما انت بصدد فعله لا يتعبه خير إطلاقاً، قد يكون الأمر حقا صحيح في مجالات أخرى، لكن برمجياً و أثناء العمل على مشروع فنحن نرى العكس تماما، من أجل إبقاء معدل التحفيز لديك في أعلى مستوياته، تحتاج الى بعض الثناء، الأمر أشبه بالـ " دوبامين " في الجسم، في كل مرة تقوم بشيئ صحيح او شيئ عظيم يفرز دماغك هرمون الـ " دوبامين " الذي يجعلك تشعر بالسعادة و التحفيز لفعل المزيد و المزيد.إن الـ " دوبامين " الخاص بك اثناء إنجاز مشاريعك البرمجية هو التفاخر بما وصلت إليه، أنهيت صفحة معينة ؟ انهيت جزء من البرنامج ؟ او التطبيق ؟ قم بتصويره و إنشره على حساباتك على مواقع التواصل، إن كنت تكره تلقي الكثير من التعليقات عن ذلك فقد خلقت لنا مواقع التواصل الـ Stories او القصص لنشر إنجازاتنا لفترة قصيرة، او شاركها على حسابك على LinkedIn إن كنت من الأشخاص اللذين يودون مشاركة ما وصولو إليه من إنجازات لشركات للإطلاع عليها بغية توظيفك، إفرح بما تفعل، و شاركه مع الآخرين، إحظى ببعض الـ " دوبامين " في برمجياتك !