لماذا مجرد ترقية الترميز الخاص بك لن يجعلك مطورًا أفضل؟

لماذا مجرد ترقية الترميز الخاص بك لن يجعلك مطورًا أفضل؟

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

الأسطورة حول المطور الجيد هي أنه:

  1. يكتب رمزًا نظيفًا
  2. يعرف الكثير من التقنيات
  3. مهام الترميز بشكل أسرع
  4. يعرف مجموعة من الخوارزميات وأنماط التصميم
  5. يمكن إعادة بناء أي كود باستخدام Clean Code
  6. لا يضيع الوقت في المهام غير البرمجية
  7. أتقن التكنولوجيا المفضلة لديك بنسبة 100%

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

لكن تجربتي تقول أن هذا ليس صحيحا تماما.

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

مطور جيد: الواقع

1: كود أفضل من المتوسط

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

2: يحل المشكلات بدلا من خلقها

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

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

3: يحاول بذل الحد الأدنى من الجهد للحصول على أقصى النتائج، حتى لو كان ذلك يعني كتابة العكازات

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

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

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

4. لديه نظام إدارة أعمال خاص به وقادر على العمل على المشاريع مهما كانت درجة تعقيدها.

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

5. الأسئلة وتوضيح أية شروط ومقدمات

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

6. يحسن العمليات والأشخاص من حولك

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

7. يجيد إدارة الآخرين حتى لو لم يكن مديراً

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

8. لا يعتبر معرفته عقيدة، فهو عرضة للنقد باستمرار

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

دعونا نقارن فكرتي عن المطور المثالي بالفكرة المقبولة عمومًا:

لماذا مجرد ترقية الترميز الخاص بك لن يجعلك مطورًا أفضل؟

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

التخصص والعمومية وقاعدة 80-20

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

تخبرنا قاعدة 80-20 أن 80% من النتيجة تأتي من 20% من الجهد. 80% من الإيرادات تأتي من 20% من العملاء، و80% من الأرباح تأتي من 20% من الموظفين، وهكذا. في التدريس، هذا يعني أن 80% من المعرفة نكتسبها في أول 20% من الوقت الذي نقضيه.

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

الإجمالي: يمكنك قضاء 100% من وقتك في دراسة مهارة ما إلى الحد الأقصى، أو يمكنك قضاء نفس الوقت في خمس مجالات، مع تحقيق مستوى يصل إلى 80% في كل منها. باتباع هذه الرياضيات الساذجة، يمكننا اكتساب أربعة أضعاف المهارات في نفس الوقت. وهذه مبالغة، لكنها توضح الفكرة.

يمكن تدريب المهارات ذات الصلة ليس بنسبة 80٪، ولكن بنسبة 30-50٪. بعد قضاء 10-20 ساعة، ستتحسن بشكل ملحوظ في المجالات ذات الصلة، وستكتسب قدرًا كبيرًا من الفهم للعمليات التي تحدث فيها وستصبح أكثر استقلالية.

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

وأخيرًا، التدريب استثمار، والتنويع مهم في الاستثمارات.

ماذا تعلم

إذن ماذا يجب أن نعلم وكيف؟ يستخدم المطور النموذجي في شركة قوية بانتظام:

  • اتصالات
  • التنظيم الذاتي
  • تخطيط
  • التصميم (عادةً الكود)
  • وأحيانًا الإدارة والقيادة وتحليل البيانات والكتابة والتوظيف والتوجيه والعديد من المهارات الأخرى

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

ما هي المجالات التي تستحق التطوير فيها؟

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

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

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

  4. جميع المجالات ذات الصلة بالمستوى الأساسي. كل شخص لديه مجالاته الخاصة، ولكن من المهم أن نفهم أنه من خلال قضاء 10-20 ساعة من الوقت في رفع مستوى بعض المهارات "الأجنبية"، يمكنك اكتشاف العديد من الفرص ونقاط الاتصال الجديدة في عملك اليومي، وهذه الساعات قد يكون كافيا حتى نهاية المهنة.

ماذا تقرأ

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

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

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

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

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

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

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

إضافة تعليق