للمبرمجين: كيف تكافح لإنهاء مشروعك قبل الإنتقال لمشروع آخر؟

للمبرمجين: كيف تكافح لإنهاء مشروعك قبل الإنتقال لمشروع آخر؟

نعم، نعلم شعورك تماماً، فأنت كسائر المبرمجين الآخرين الذين يتصفحون مواقع  برمجية او فيسبوك او اي موقع كان، ثم تحدث تلك الشعلة في ذهنك عن مشروع برمجي قد يكون المشروع المثالي الذي سيأخذ بيدك نحو الشهرة تارةََ او نحو الغنى تارة أخرى، تفكر في المشروع جيدا و تبدأ بتحليله و تحليل معطياته، تفكر أخيراً في التقنيات  البرمجية الأمثل لصناعة هذا المشروع ثم تبدأ بتهيئة ملفات المشروع سواء عن طريق 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) من المهمات، فقد حان الوقت لتطوير مشروعنا الآن و البدئ في العمل عليه و تجهيزه، بالطبع سنلتزم بجدول المواعيد الذي قمنا بإنجازه، تذكر ان اي اختلال في الجدول الزمني قد يؤدي الى إختلال رغبتك كذلك في إنهاء المشروع، فمثلا إن انجزت مهمة باكراً قبل موعدها، لا تتسرع في إنجاز المهمة التالية، بل مارس نشاطات اخرى و إنتظر الى حين بلوغ الوقت المحدد للبدئ في المهمة الثانية.

لكن لا تعتقد ان انجاز مهمة قد يكون سريعا و قد تقوم بإنهائها في ساعة و نصف فقط، بل يجب على المهمة ان تكون كاملة من كل الجوانب ( إن كنت بصدد تطوير جزء من موقع فإضمن التجاوب، إضمن الحرفية، تنظيف الكود ... ) لذلك قد يأخذ منك الأمر ساعات في اليوم، ساعات قد تشعر فيها بالإرهاق و التعب و قد تكون سبب إنتكاستك و بدئ إنطفاء الشعلة الخاصة بالمشروع، لذلك نقترح عليك حل 10 دقائق إستراحة مقابل 25 دقيقة عمل، بكل بساطة، ستقوم ببدئ عملك على المهمة لمدة 25 دقيقة، بعدها لديك 10 دقائق إستراحة، إنهض من مكانك، تناول شيئا، لبي نداء الطبيعة 😗، أمسك هاتفك و شاهد فيديو على اليوتيوب او تصفح الفيسبوك و غيرها، بعد إنقضاء الـ 10 دقائق يمكنك العود للعمل لمدة 25 دقيقة، بعد تنفيذ 4 جولات اي 100 دقيقة خذ إستراحة 30 دقيقة، بهذه النمطية تبقي روح العمل و إنجاز المهمة في أوجها.
إستخدم  تطبيقات التنبيه مثل تطبيق Blip Blip في هاتفك من أجل تذكيرك بمواعيد الراحة و العمل.

- أثناء التنفيذ : تفاخر بإنجازتك :

يخبرونك ان تقضي حوائجك في الكتمان، و يخبرونك ان الإشهار بما انت بصدد فعله لا يتعبه خير إطلاقاً، قد يكون الأمر حقا صحيح في مجالات أخرى، لكن برمجياً و أثناء العمل على مشروع فنحن نرى العكس تماما، من أجل إبقاء معدل التحفيز لديك في أعلى مستوياته، تحتاج الى بعض الثناء، الأمر أشبه بالـ " دوبامين " في الجسم، في كل مرة تقوم بشيئ صحيح او شيئ عظيم يفرز دماغك هرمون الـ " دوبامين " الذي يجعلك تشعر بالسعادة و التحفيز لفعل المزيد و المزيد.
إن الـ " دوبامين " الخاص بك اثناء إنجاز مشاريعك  البرمجية هو التفاخر بما وصلت إليه، أنهيت صفحة معينة ؟ انهيت جزء من البرنامج ؟ او التطبيق ؟ قم بتصويره و إنشره على حساباتك على مواقع التواصل، إن كنت تكره تلقي الكثير من التعليقات عن ذلك فقد خلقت لنا مواقع التواصل الـ Stories او القصص لنشر إنجازاتنا لفترة قصيرة، او شاركها على حسابك على LinkedIn إن كنت من الأشخاص اللذين يودون مشاركة ما وصولو إليه من إنجازات لشركات للإطلاع عليها بغية توظيفك، إفرح بما تفعل، و شاركه مع الآخرين، إحظى ببعض الـ " دوبامين " في برمجياتك !

- أثناء التنفيذ : إتبع المسار و لا تلتوي عليه :

هذه النقطة حساسة جدا، و هي تقريبا ما تجعلك تنسى المشروع او تود تغييره و البدئ في مشروع آخر، و قد سقطت - شخصيا - في هذا الفخ أكثر من مرة، لذلك خذها نصيحة منا، إذ إسأل مجرباً و لا تسأل طبيبا، صديقي العزيز، حين تقرر البدئ في مشروع معين و تقرر بناء كل الاجزاء و تخطط للمسار الذي يجب عليك إتباعه لإنجازه فإتبع ذلك المسار، إن خططت لصناعة صفحة ويب مثلا على هيئة تطوير الـ  Navbar ثم الـ Content ثم Sidebar و بعدها الـ Footer، فلا تطور الـ Navbar ثم تنتقل الى الـ Footer، ذلك سيشتت تركيزك، قد تعتقد ان الأمر لا يفعل، لكن صدقني سيجعلك تتكاسل في صناعة ذلك الـ Sidebar مثلا، لأنك لا تملك أفكاراً لطريقة تطويره، و الأصح كان أخذ وقت و البحث عن أفكار لشكله بدل تجاوزه و البدئ في الـ Footer و تناسي و التكاسل على الـ Sidebar، الأمر الذي سيجعلك تفقد الرغبة تماما في تطويره، و منه فشل تطوير الصفحة مؤديا الى فشل تطوير المشروع بأكمله.

إستخدمنا الـ Mind Map أعلاه لتحديد كل صغيرة و كبيرة و بترتيب محدد، فإتبع الترتيب، لا تتكاسل على أي مهمة صعبة و تتجاوزها، بل خذ وقتك الكامل في تطويرها، و إن لم يلزمك خذ وقتا أطول، عدل على جدولك الزمني قليلا و قم بتطويرها رغما عن أنفك.

- بعد التنفيذ : الـ Version Control و الـ Documentation :

اعتقد انه و في هذه المرحلة قد تجاوزت حقا عملية الإنتقال من مشروع لآخر دون إكمال المشروع الأول، لكن بعد نهاية المشروع البرمجي نتكاسل عن شيئين رئيسيين و هما الـ Version Control اي عدم رفع مشروعك على احدى منصات إستضافة المشاريع لإبقائه بشكل دائم او مشاركته بشكل مفتوح المصدر إن اردت و هو أمر يبقى إختياري، لكن الـ Documentation شيئ ضروري لحث الناس او المستخدم الأخير على إستخدام و إستعمال برمجيتك بطريقة صحيحة، و بالطبع إن اصبح المشروع مشروعا ناجحاً قليلا، لا تنسى ان تعدل عليه أكثر مستقبلا، و تضيف بعض اللمسات و الإضافات لمشروعك كذلك.

- بعد التنفيذ : إعرف متى تبتعد :

" من اهم المهارات البرمجية التي يجب ان يمتلكها كل مبرمج، هو ان يعرف متى يبتعد قليلا "، هل تمتلك هذه المهارة؟ حسنا عليك ان تمتلكها، إنهيت مشروعك ؟ جيد لا تبدأ مباشرة في المشروع القادم، خذ فترة راحة، أسبوع او اسبوعين او شهر ربما، شاهد بعض الأفلام و المسلسلات على كيفك، إقرأ بعض المقالات في المجال البرمجية لتزكية معارفك، تابع مجالات أخرى غير  البرمجة لتنويع مصادر معلوماتك، إفعل اي شيئ تريد ما عدا البدئ في مشروع آخر، إعط بعض الوقت لنفسك و هيئ نفسك جسديا و نفسيا الى حين الإستعداد للبدئ في مشروع برمجي آخر، و اعد سيناريو فلم Edge of Tomorrow بإستخدامك لمعطيات هذا المقال .