لقد فقدت الثقة في الصناعة ، وأحترقت ، ولكن عبادة الأداة أنقذتني



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

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

أيا كان ، لم أفهم ذلك.

لطالما كنت أعتبر أن الثقافيين يعبدونهم. لكنني أحاول دائمًا أن أفهم لماذا أصبح هؤلاء الأبلاء ، ولماذا تجنبت هذا المصير. أبدأ التفكير وبام! - اتضح أنني أيضًا شاب. أنا عبادة الذي يعبد F #. وبالطبع ، هناك قصة وراء ذلك.



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

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

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

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

"حسناً فيل ، يبدو رائعًا" - أجاب شركائي عبر الأطلسي.

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

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

لم يكن الحصول على أي مكان.

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

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

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

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

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

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

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

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

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

في هذا ، أسوء أمسيات في حياتي ، ولا أزال باردًا من بيت المشي المتجمد ، قدمت لنفسي تجربة أخيرة.



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

ونعم ، في تلك الليلة من المحتمل أنني جننت قليلاً.

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

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

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

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

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

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

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

العمارة بأكملها هي 10 أسطر من الرموز ، مكتوبة في بضع دقائق. لا واجهات ، أقمشة مجردة ، locs ، كل هذه DefaultInterfaceNameClasses وغيرها من حماقة لا بد لي من القيام به في C # قبل أن أفهم حتى ما أريد لإنشاء. تكتب نواة غبية ببساطة تحل المشكلة ، وهي أكثر جمالا من معاناتك على مستوى المؤسسة في Java أو Sharp.

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



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

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

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

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


All Articles