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



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

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

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

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

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

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

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



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

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

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

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

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

مهمة أي أشعل النار هو أن أعطيك الجبهة. حتى تعطي قراراتك غير الناجحة القرف عنك شخصيًا ، فلن تعتبرها ناجحة.

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

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

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



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

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

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

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

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

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

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

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

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



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

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

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

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



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

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

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

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



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

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

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



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

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

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

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

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



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

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

سألت ماذا سيحدث للمشروع القديم.

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

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

أعتقد أنني فهمت كل شيء تمامًا منذ البداية. أنا فقط لا أريد أن أكون رجلاً واقعياً.

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

Source: https://habr.com/ru/post/ar471628/


All Articles