45

أيها المبرمجون : إصرارك على الكمال يقتل مشاريعك في مهدها

لو سألت أي مبرمج سواء مبرمج ويب أو ديسك توب :

كم من المشاريع غير المكتملة التي عملت عليها لفترة معينة ثم أهملتها على جهازك الشخصي ؟!

وكأنني أعرف الاجوبة سلفا :)

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

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

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

الرغبة الملحة لدينا بصناعة برنامج متكامل ومنافس من أول إصدار أضاعت علينا الكثير من الوقت وأشغلت أجهزتنا بأحجام كبيرة من الملفات والمجلدات المهجورة .. فمالمانع أن يبدأ المشروع بوظائفه الأساسية ثم يتم ترقيته وتحديثه تدريجيا حتى يصل للمستوى المأمول !

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

وبالمقابل هناك مواقع تناقص مستواها بسبب كثرة الوظائف وازدحام الروابط وكثرة الخصائص مثل موقع مستعمل : mstaml.com

ختاما : نجاح المشروع واكتماله تكمن بالتدرج المدروس في ترقيته حسب الحاجة

والرأي للجميع .. تحياتي

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

التعليقات

20

أتذكر مقولة رائعة في هذا الصدد لـ ريد هوفمان مؤسس لينكد إن

" اذا لم تخجل من النسخة الاولى من منتجك ،فقد تاخرت في الاطلاق "

على الجرح تماما. دائما اقول لأصحابي انتج عملا بـ Minimum Footprint بأقل عدد من المتطلبات التي تجعل مشروعك يعمل ثم اضف عليه كل يوم.

صحيح أخي حاتم .. ومشوار الألف ميل خطوة

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

ومن واقع تجربة سأتحدث عن التصميم الذي قمت به لواجهة تطبيق أرابيا للهواتف (1)، عندما وصلت إلى مرحلة متقدة منه بدأت أنظر له مراراً وتكراراً أبحث عن أدق العيوب لأنني كمل تعلم أبحث عن "كمال التصميم" الواهي، وكل يوم أقول غداً سأعرضه على الجميع.

ثم بعد فترة من التأجيل قلت لنفسي يكفي هذا، أعلم بأن التصميم لم يصل بعد لما أريد لكن حان الوقت لعرضة على الجميع، وفي الحقيقة توقعت ردة الفعل السلبية تجاهه، فهو لم يصل بعد لمرحة "الكمال" التي أبحث عنها، والتي أيضاً لن أصل لها، لكن قلت من الخطأ أتعلم.

وبعد نشر الموضوع وجدته فاق كل توقعاتي :)

(1)

أسعدتني تجربتك أخي sasini

والتصميم رسمي وأنيق أهنيك على ذوقك

من واقع تجربة فإن هذا الكلام يصف واقعا موجود بدقة كبيرة

السعيد من اتعظ بغيره والشقي من اتعظ بنفسه

تعرفون لماذا يحصل هذا ؟

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

في عالم ريادة الأعمال هناك مصطلح MVP - Minimum viable product

وهذه يعني ان تبني منتج او فكرة بأقل تعقيد وتركز كل اهتمامك على القيمة الفعلية او الوظيفة الأساسية للفكرة بأقل وقت وجهد ممكن ومن ثم الدخول الى السوق.

بعد التأكد من فعالية الفكرة وتلبيتها لرغبات وحاجيات المستخدمين يتم تطوير الفكرة بناءا على الـ feedback من المستخدمين

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

هناك مقولة شهيرة بالإنجليزية تقول:

Premature re-factoring is source of all evil

ومعناها "في سياق البرمجة" أن محاولة جعل البرنامج مثالي للوهلة الأولى سبب كل الشرور.

لكن هذا لا يعني أن نهمل جانب المثالية بالكامل بل عليك أن تبني مشروعك على أسس مثالية مثل كتابة Unit Testing

هل تعلم أخي الكريم لقد جعلتني أفكر قليلاً في مشروعي الحالي ,,

والسبب هو أنني أعتقد أن قدراتي أكبر في جعل المشروع أجمل , لكنني نسيت أن هناك شيئ يسمى " نسخة تجريبية " او مبدئية ..

ولكن أعتقد السبب يكمن خلف أن هذا مشروعي الأول , ربما أخاف من الأنتقاضات او أن كنت قد نسيت شيئاً مهم =)

لكنني الأن بأذن الله أيام قليلاً وسيولد هذا المشروع ..

شكراً

أخي يوسف إطرح برنامجك في البداية ولا تهتم لأي مخاوف بالعكس ستفيدك تلك الانتقادات في كشف العيوب وتلافيها مستقبلا

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

أسس مشروعك منذ البداية على أن يكون قابلا للتطوير بسهولة دون خلط الوظائف والمهام وتداخل الأكواد والملفات .. سيتعبك التنظيم بداية لكن ستعرف قيمته عند التطوير والترقية بعدين

أشكرك جزيل الشكر أخي , على ردك

لديك الحق بأن المشروع لن يكون لدرجة أحتراف من المرة الأولى

بأذن الله سأتبع ماأرشدتني إليه

المستخدم إذا احتاج الي البرنامج في عمل مهمة ما فبالتأكيد سيستخدمه بغض النظر عن الجماليات.هذا يعني ان الجماليات ليس من الاساسيات ما لم تكون قيمة للبرنامج.

عليك بكتابه شفرة بأقل تعقيد ممكن لا تهتم للامور الفرعية مثل التي تخص خيارات المستخدم.

مجهول
  • حذف بواسطة المستخدم

من وجهه نظري ان عيبنا مختلف لحد ما

اري ان العمل الفردي هو فعلا الذي يقتل كل شئ

تخيل انت مبرمج اردت ان تصنع برنامج مثل مثلا ميكروسوفت اوفيس ( ذكرت هذا لصعوبه المنافسه وانه فعلا يحتاج لان يكون المنافس علي قدر كبير حتي يستطيع المنافسهوخاصه بعدما اتاحت مايكروسف نسخ رخيصه منه ومنها السحابي والان الكثير من البرامج السحابيه الموجوده والتي تقوم بالغرض وبالتالي تكرار نفس الامر بنفس المميزات ليس جيد )

تخيل انك اردت ان تقوم بهذا العمل كل ما عليك هو ان " لا " تبرمج . كل ما عليك هو اختيار فريق عمل جيد

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

-1

مقالة محقة بالفعل

-1

صحيح والله