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

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

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

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

رائع الداخلية ، أليس كذلك؟ كل شيء مطابق تمامًا ومدروس ، لا شيء أكثر من ذلك. في كلمة واحدة - حلم. تمامًا مثل وصف الأنماط التي تعرض إصدارًا جميلًا من رمز ثابت ومتناسق تمامًا. جميلة جدا أن تفرح العين.
نعم ، الشقة في الصورة جميلة ، لكن لا يمكنك العيش فيها. الشقق من صفحات المجلات محرومة عمدا من الفوضى ، لأن الفوضى شيء فردي.
ما تتكون هذه الفوضى هو أشياء مختلفة للجميع. إذا كنت ترغب في القراءة ، فهذه كتب ، وإذا كنت تحب ألعاب الكمبيوتر ، فهذه عبارة عن وحدة تحكم وعصا التحكم ، وإذا كنت تحب الأنشطة في الهواء الطلق ، فهي دراجة أو كاياك. يجب أن تكون الأشياء التي تستخدمها في متناول اليد ، لذلك يجب عليك تحمل فوضى معينة. الشيء الرئيسي هو أنه لا ينبغي أن يكون هناك الكثير منه.
تُظهر المجلات المتعلقة بالديكورات الداخلية الجميلة في عالم تطوير البرمجيات رمزًا نظيفًا بشكل غير واقعي ، وبالتالي تحدد الإرشادات الخاطئة. هذه هي كتب عن تطوير البرمجيات ، وأنماط التصميم ، ونصائح من المدونات والمقالات. الشفرة التي تلبي جميع متطلباتها ، متسقة تماما ومجردة - ليست قابلة للحياة في العالم الحقيقي. حتى لو تمكنت من تحقيق ذلك ، لا يمكنك العيش فيه.
نحن بحاجة إلى فوضى صغيرة لنشعر بالراحة. هذا صحيح لكل من الشقة والرمز.
كلا النقيضين لا ينفصلان . إذا كان لديك رمز لا تفهمه ولا تعرف كيفية التعامل معه ، فهو موجود في أحد هذه الحالات المتطرفة. إما أنه من المتناثر للغاية أنه من المستحيل التمييز بين الأفكار المناسبة والأفكار غير المناسبة ، أو أنه نقي لدرجة أنه من المستحيل العثور على الأفكار المناسبة.
علاوة على ذلك ، يمكن أن يوجد هذان النقيضان في نفس الوقت في نفس المشروع. في بعض الأحيان حتى في حي بعضهم البعض. رمز Livable في مكان ما بين. بالإضافة إلى مساحة مريحة للمعيشة ، فهي تقع في مكان ما بين الصور من أغلفة المجلات والشقق المزدحمة.
لذلك ، يجب أن تكون قادرًا على أخذ كمية صغيرة من الفوضى لأنها تجعل المساحة صالحة للعيش .
بيان رسمي
يمكنك القول: "هذا كل شيء مثير بالطبع للغاية ، ولكن ماذا لو كان الكود في حالة فوضى كاملة بالفعل؟ أو ماذا لو لم يكن المشروع سيئًا للغاية ، لكنني أريد أن أتأكد من أنه لا يسير في الاتجاه الخطأ؟ "
لنفترض أن الكود الخاص بك يشبه غرفة المعيشة القديمة المزدحمة بمسارات ضيقة من فهم الماعز تمر بها. لا تقلق ، فأنت لست شخصًا سيئًا - وهذا يمكن أن يحدث للجميع.
إذا نظرت إلى المشكلة من وجهة نظر هندسية ، فإنها ببساطة تصرخ: "أعد كتابة! كيف يمكن تنظيم شيء ما في مكان كهذا بدون مساحة حرة؟ فقط خذ كل شيء من هنا وابدأ من جديد! "هذا التخطيط من أعلى إلى أسفل مناسب تمامًا لبعض المهام الهندسية ، ولكن ليس لمعظم البرامج. هذا ليس لأننا مهندسين سيئين أو نجربهم بشكل سيئ ، ولكن لأنه في منطقتنا لا يعمل النهج الهندسي. ويعمل الرمز كمكان يعيش فيه الناس. عليك أن تفهم أن الناس هم بالضبط ما تحتاج إلى العمل عليه.
إليك كيفية القيام بذلك. هناك أربع قواعد تنطبق على أي لغة وإطار.
لا تؤذي
تقريبا مثل في الطب. عند فتح ملف تشوش بالفعل ، وعد أنك لن تجعله أسوأ. حتى لو لم يكن لديك وقت لإصلاح تلك الأشياء الفظيعة بالفعل. إذا رأيت ، عند إجراء مراجعة للشفرة ، كيف ينتهك شخص ما هذه القاعدة ، فما عليك سوى تذكيره بما وافقت عليه.
نعتقد في تحسينات متسقة
كومة من خمسة كتب على الأرض وواحد مرتب في خزانة أفضل من كومة من ستة كتب. ربما يقوم الشخص الذي يلمس هذا الرمز في المرة القادمة بنقل كتاب آخر من الكومة إلى الرف. إذا كنت تنتظر الوقت المناسب لوضعها جميعًا مرة واحدة ، فلن يحدث هذا أبدًا.
باستخدام هذا النهج يمكن أن يكون مشكلة. تعتبر التحسينات المتتالية صعبة بالنسبة للكثيرين ، لذلك يستمرون في العيش برغبة ملحة لإعادة كتابة وحدة نمطية أو نظام فرعي أو تطبيق بالكامل. نتيجة لذلك ، لا تتناقص كومة الكتب وتبقى على الأرض من التكرار إلى التكرار.
اجعل التدبير المنزلي جزءًا من سير العمل
لا تبدأ قصص المستخدم لإعادة بيع المباني. لا تنتظر أسبوعين لإصلاح ملف واحد. تعرف على كيفية دمج القواعد البسيطة في عملك اليومي. تقول القاعدة الكشفية: اترك المخيم أكثر نظافة مما كان عليه قبل وصولك. إذا تابعت ذلك باستمرار ، فقم بالتخلص تدريجياً من "العادات السيئة".
ابقى على اتصال
كن مستعدًا دائمًا للتواصل مع كل عضو في الفريق حول ما تقوم به. لا تعني الفقرة السابقة أنك بحاجة إلى إخفاء ما تفعله. تحتاج فقط إلى التفكير في إعادة بيع الأشياء وترتيبها كجزء من كل ما تفعله.
عند refactor:
- لا تسأل إذن. هذا جزء من عملك. لكن كن منفتحًا لمناقشة قراراتك.
- لا تتهرب من مسؤولية أخطائك وتعلم من كل منها. الأخطاء هي أيضا جزء من العمل. من خلالهم نتوصل إلى فهم ما نعمل عليه. سوف تفعلها ، متواضع نفسك. في بعض الأحيان لا يمكنك إنهاء إعادة البناء ، وفي بعض الأحيان ، على العكس من ذلك ، يمكنك الابتعاد ، لكن الشيء الرئيسي هو أن تتعلم من أخطائك مرارًا وتكرارًا.
- اطلب النصائح ، لكن لا تتبعها دائمًا. مهمتك كمطور هي تحديد ما تحتاجه لإعادة تكوين الأشياء وما لا تريده. يجب أن تتمتع بحرية اتخاذ هذه القرارات وارتكاب الأخطاء.
- افعلها معًا لأنك تعيش هنا. هذا مهم جدا , , , .
استنتاج
— . — . , , , , .
. — . , , , , .
مراجع
- , ,
- المبادئ ذات الصلة من بوب مارتن