39

دروس برمجية تعلمتها من مشاريعي

أهلا وسهلا

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

١) زاد حجم المشروع.

٢) التعامل مع تقنية جديدة.

٣) العمل بفريق صغير أو وحيدا بالنسبة لحجم المشروع.

٤) عدم توافر الادوات اللازمة وبيئات التطوير او ضعف جودتها.

٥) عدم توافر المرجع Reference للحصول على اجوبة معينة.

٦) عميل سئ لا يجيد شرك فكرته وتقديم مدخلات البرنامج ومخرجاته بصوره واضحة.

وبغض النظر عن تلكم الأسباب التي تزيد من تعقيد العملية وصعوبتها. الا انه بالمقابل يوجد ما يسهلها ويجعلها تسير بطريقة أفضل :

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

٢) تقسيم البرنامج إلى طبقات. طبقة تعنى بواجهة المستخدم وطبقة اخرى تعنى بالبيانات وتتعامل بصفة مباشرة مع قاعدة البيانات. وطبقة أخيرة لما يسمى (البزنس لوجك) أو منطق العمل وهو عبارة عن اساليب ادارة تدفق المخرجات والمدخلات وهي الطبقة التي تتخاطب مع الطبقتين السابقتين وتقوم باصدار الاوامر لهمها.

٣) استخدم البرمجة الكائنية التوجه وبدونها لن تستطيع بشكل مؤكد تقسيم البرنامج الى طبقات كما وضحت في النقطة (٢). اعطي نفسك الوقت لدراسة مفاهيم البرمجة الكائنية التوجه في اللغة التي تتعامل معها.

٤) اعطي نفسك الوقت لتعلم ما يسمى بالـ (ديزاين باترنس) وهي عبارة عن دروس في كيفية تصميم (كلاسات) لحالات معينة. ان تعلم هذه الاساليب يجعلك واعيا بالتصميم الانسب للكلاس بما ويتوافق مع المشكلة التي تحاول حلها بدون جهد يذكر منك.

٥) اقضي وقتا جيدا في اختيار اطارات العمل والمكتبات التي يجب ان تستخدمها بشكل دائم في مشاريعك واستقر عليها. فاطارات العمل مثل صندوق العدة تحوي مفكات لكل شئ وعادة ما تكون خلاصة تطوير واختبارات.

٦) استخدم أساليب (الاختبار الذاتي) اوتوماتيد تستز او كما يسمى بالواحدات الاختبارية التي تقوم بفحص الجزئيات الحساسة في طبقة البيانات والبزنس لوجك بشكل اوتوماتيكي وتعطيك تقريرا عن حالة كل جزئية. تخيل ان تقوم باختبار كل جزئية حتى بدون ان تقوم بتشغيل البرنامج. لا شك ان ذلك يوفر الوقت واسلوب محترف جدا.

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

٨) ضم قائمة بالاهداف التي تريد ان تنجزها قبل ان تبدأ التكويد ولا تقوم بالعمل بشكل عشوائي.

٩) مارس تدقيق الجودة على برنامجك ولا تنتظر الاخرين او العميل كي يمارس هذا الدور واهتم بالتفاصيل الصغيرة ووثقها ثم حدد جلسة كاملة لاصلاحها.

١٠) هنالك جزئيات تتكرر مع كل مشروع مثل نظام الدخول والصلاحيات واللوجنج. حاول ان تكون ثابته قدر الامكان وتستخدمها مع كل مشروع. فالمبرمج الذكي يعيد استخدام اكواده.

١١) اهتم بتوثيق التغييرات في مشروعك والاصدارات في نظام لمراجعات الكود مثل Mercurial و SVN وحتى ولو كنت تعمل وحيدا فهذا يجعلك تتابع تغيراتك على البرنامج بدقة وبالتالي سهولة اكتشاف الاخطاء او الرجوع للخلف.

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

تحياتي :)

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

"هنالك جزئيات تتكرر مع كل مشروع مثل نظام الدخول والصلاحيات واللوجنج. حاول ان تكون ثابته قدر الامكان وتستخدمها مع كل مشروع. فالمبرمج الذكي يعيد استخدام اكواده"

أنا مع هذا من مبدأ عدم اعادة اختراع العجلة

ما شاء الله توصيات هامة جداً و تقي من الكثير من المشاكل

وفيما يخص النقطة 10 أحيل الإخوة إلى هذا الموضوع لأنه متعلق به بشكل كبير

وكذلك الموضوع

الذي يمكن المبرمج من أتمتة عمله الروتيني

ودمت بخير

مرحبا بك. شكرا لوجودك حبيبي . لفت نظري الموضوع الثاني , جميل ويضاعف انتاجيتك في التكويد سأعود لأعلق عليه لاحقا.

أولاً : تحياتى لك لكل سطر قمت بكتابته

ثانياً : نسيت نقطه هامه ألا وهى الاتفاق مع العميل أن المده ستطول نظراً لكبر المشروع و كثرة ما يحتاجه من عمل ووقت و تنظيم و تفكير و ترتيب و كتابة + إطلاعه كل فتره على screenshots تخص المشروع و ما وصلت إليه ليطمأن أنك تعمل ولم تنسى مشروعه

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

اهلا بك

اعتقد انه لا يكفي ارسال سكرين شوت. يجب ان تجتمع بالعميل اسبوعيا لتريه العمل الحقيقي وهذا ما افعله شخصيا. وحتى ان كانت بينكما مسافة يمكن الاستعاضة ببرامج النقل مثل TeamVeiwer :)

كلها نقاط مهمة، وأؤيد بشدة النقاط رقم ٢، ٣، ٥، ٩، ١٠، ١١ أو على اﻷقل هذه هي المتطلبات اﻷدنى - حسب رأيي- لتحقيق برامج ذات قيمة مستقبلية.

شكراً لك لمشاركتنا هذه المعلومات القيمة

كلامك سليم أخي