الغضب من الكود: المبرمجون والسلبية

الغضب من الكود: المبرمجون والسلبية

أنا أنظر إلى قطعة من التعليمات البرمجية. قد يكون هذا أسوأ رمز رأيته على الإطلاق. لتحديث سجل واحد فقط في قاعدة البيانات، فإنه يسترد كافة السجلات الموجودة في المجموعة ثم يرسل طلب تحديث إلى كل سجل في قاعدة البيانات، حتى تلك التي لا تحتاج إلى تحديث. هناك وظيفة خريطة تقوم ببساطة بإرجاع القيمة التي تم تمريرها إليها. توجد اختبارات شرطية للمتغيرات التي لها نفس القيمة على ما يبدو، ولكن تمت تسميتها فقط بأنماط مختلفة (firstName и first_name). لكل تحديث، يرسل الكود رسالة إلى قائمة انتظار مختلفة، والتي تتم معالجتها بواسطة وظيفة مختلفة بدون خادم، ولكنها تقوم بكل العمل لمجموعة مختلفة في نفس قاعدة البيانات. هل ذكرت أن هذه الوظيفة بدون خادم هي من "بنية موجهة نحو الخدمة" قائمة على السحابة وتحتوي على أكثر من 100 وظيفة في البيئة؟

كيف كان من الممكن حتى القيام بذلك؟ أغطي وجهي وأبكي بشكل واضح من خلال الضحك. يسأل زملائي عما حدث، وأعيد سرده بالألوان أسوأ الزيارات لـ BulkDataImporter.js 2018. يومئ الجميع إليّ بتعاطف ويوافقونني: كيف يمكنهم أن يفعلوا هذا بنا؟

السلبية: أداة عاطفية في ثقافة المبرمج

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

الغضب من الكود: المبرمجون والسلبية

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

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

الغضب من الكود: المبرمجون والسلبية

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

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

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

  • "هناك الكثير من التناقضات المنطقية في هذه الوحدة، وهي مرشحة جيدة لتحسين الأداء بشكل كبير."
  • "هذه الوحدة سيئة للغاية، ونحن بحاجة إلى إعادة هيكلتها."
  • "هذه الوحدة غير منطقية، ويجب إعادة كتابتها."
  • "هذه الوحدة سيئة، ويجب تصحيحها."
  • "هذه قطعة من ذاكرة الوصول العشوائي، وليست وحدة نمطية، ولم تكن بحاجة إلى كتابتها على الإطلاق، ما كان يفكر فيه مؤلفها بحق الجحيم."

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

المشكلة هي أن الناس مخلوقات غريبة ومضطربة وعاطفية، وإدراكنا لأي عاطفة والتعبير عنها يغيرنا: في البداية بمهارة، ولكن مع مرور الوقت، بشكل كبير.

منحدر زلق مضطرب من السلبية

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

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

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

الغضب من الكود: المبرمجون والسلبية

طرق سلبية

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

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

الغضب من الكود: المبرمجون والسلبية

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

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

وربما يكمن الواقع في مكان ما بين هذين النقيضين.

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

السلبية هي هندسة الثقافة الشعبية

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

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

لقد لاحظت أن العديد من المؤيدين المتحمسين لنهج "اقتل الأحمق" غالبًا ما يهتمون كثيرًا بجودة الكود وصحته، ويعرّفون أنفسهم بعملهم. لسوء الحظ، غالبا ما يخلطون بين الصلابة والصلابة. وينبع عيب هذا الموقف من الرغبة البشرية البسيطة، ولكن غير المنتجة، في الشعور بالتفوق على الآخرين. الأشخاص الذين ينغمسون في هذه الرغبة يصبحون عالقين في طريق الظلام.

الغضب من الكود: المبرمجون والسلبية

عالم البرمجة ينمو بسرعة ويدفع نحو حدود حاويته - عالم غير البرمجة (أم أن عالم البرمجة حاوية لعالم غير البرمجة؟ سؤال جيد).

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

ما تعلمته عن السلبية

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

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

وأخيراً السلبية يضر حرفيا صحتك.

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

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

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

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

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

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

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

في الأساس، أنا أتعلم وأعيد تعلم درس مهم باستمرار: الحياة أقصر من أن تكون غاضبًا ومتألمًا باستمرار.

الغضب من الكود: المبرمجون والسلبية

المصدر: www.habr.com

إضافة تعليق