المهارات الواسعة مقابل المهارات الضيقة: إزالة الغموض عن مهارات هندسة البرمجيات
نشرت: 2022-03-11كل مهندس برمجيات لديه مجموعة مهارات تتكون من المهارات المختلفة التي يكتسبونها. تكون مجموعة المهارات "عميقة وضيقة" إذا كنت تتقن مهارة أو مهارتين وقليل من المهارات الأخرى ؛ إنه "واسع وسطح" إذا كان بإمكانك فعل القليل من كل شيء دون أن تكون خبيرًا في أي مجال.
معظمنا في مكان ما في الوسط مع القليل من المهارات القوية ، وبعض المهارات المتوسطة ، والكثير من الفجوات. في هذا المقال ، أود أن أناقش الطيف الواسع وأن أجادل بأن الاقتراب من النهاية العريضة سيفيد معظم المبرمجين.
الاتساع والعمق نسبيان بالطبع. على سبيل المثال ، يمكن أن تكون خبيرًا في تطوير الويب ، أو فقط في تطوير الويب من جانب العميل ، أو في JavaScript فقط. كل هذه المهارات "عميقة وضيقة" إلى حد ما ، ولكن الأخيرة أضيق بكثير من الأولى.
بالإضافة إلى ذلك ، فإن مجموعات المهارات "العميقة والواسعة" و "الضحلة والضيقة" كلاهما ممكنان: الأول يعني أن كل شخص يريد توظيفك ، والثاني يعني أنك لم تتعلم أي شيء ذي معنى على الإطلاق. نظرًا لأنها ليست شائعة جدًا ، فهي أيضًا لا تستحق المناقشة بالتفصيل.
أنواع مهارات مهندس البرمجيات ومجموعات المهارات
عميق وضيق
إن امتلاك مجموعة مهارات عميقة يعني أنك خبير في مجال واحد على الأقل.
خذ SQL: لنفترض أنك تعرف كل شيء عن نظرية قاعدة البيانات العلائقية ؛ إيجابيات وسلبيات MySQL و PostgreSQL و Oracle و SQLite ؛ كيفية تحسين الاستعلامات ؛ متى وكيف يتم إلغاء تسوية قاعدة البيانات ، وما إلى ذلك. سيرغب العملاء الذين يبحثون عن هذه المهارة المحددة في تعيينك في أسرع وقت ممكن ، ولسبب وجيه. ستبدأ في العمل وتقدم قيمة مثل قلة من الآخرين.
ومع ذلك ، إذا توسع المشروع أو تغير بشكل كبير ، فسيتم استبدالك أو استكمالك بواسطة مبرمجين بالمهارات التي تفتقر إليها. حتى بدون تغييرات كبيرة ، هل ستكون قادرًا على اقتراح تغييرات معمارية؟ يمكن أن يكون العميل أفضل حالًا باستخدام قاعدة بيانات NoSQL أو عدم وجود قاعدة بيانات على الإطلاق ، ولكن خبرتك الضيقة قد تجعلك تحيزك ضد هذه الخيارات غير المألوفة.
واسع وضحل
من ناحية أخرى ، إذا كنت اختصاصيًا عامًا وليس خبيرًا في المجال ، فستحتاج إلى بعض الوقت لتكثيف المشروعات الجديدة قبل الوصول إلى ذروة الإنتاجية.
لإعطاء مثال ، ربما تحتاج إلى القيام بمشروع Python ولم تستخدم هذه اللغة من قبل. ومع ذلك ، ربما تكون قد سمعت بعض الأشياء عنها (ديناميكي ، ومفسر ، ومتعدد النماذج) وستجعل تجربتك مع اللغات الأخرى عملية الانتقال أسهل بكثير.
قد لا يكون الكود الذي تكتبه في البداية هو Pythonic (مع مجموعات ، أو فهم ، أو مولدات) ولكنك ستعرف من أين تبدأ. ستحرز تقدمًا ثابتًا وسيكون من السهل تحسين الوحدات النمطية التي تم تحليلها جيدًا لاحقًا. ستمنحك وجهة نظرك الواسعة حول التكنولوجيا أفكارًا قد يفوتها الآخرون.
عندما يتغير المشروع ، ستكون أحد الأصول لفريقك وليس مسؤولية.
مهارات في العالم الحقيقي
من الناحية الجغرافية ، تبدو مجموعات المهارات الضيقة مثل الجبال الشاهقة ، وتشبه مجموعات المهارات الواسعة الهضاب. باستخدام هذا القياس ، من المرجح أن تتميز مجموعات المهارات النموذجية بجبلين ، وتلة هنا وهناك ، والكثير من السهول.
قد يكون المبرمج العشوائي رائعًا في SQL و Python ، ولا بأس في برمجة الويب والخوارزميات ، وهو قلق حقًا بشأن معظم الأشياء الأخرى ، مثل عمليات التفريغ الأساسية أو خوادم OAuth أو التطبيقات الأصلية. يجب أن يستمر مثل هذا المبرمج في استغلال مجالات خبرته ، مع إيجاد وسد الثغرات المعرفية.
هذه الاستراتيجية من المرجح أن تخدمهم بشكل أفضل على مر السنين.
لماذا يحتاج المبرمجون إلى تنويع مهاراتهم
تتطلب العديد من المشاريع مهارات غير مرتبطة مجتمعة بطرق لا يمكن التنبؤ بها. في حين يمكن للمهندسين ذوي المهارات الواسعة أن يساهموا بشكل مفيد في معظمهم ، فإن مجموعة مهارات الخبير ستلائم عددًا قليلاً من المتطلبات الدقيقة لأصحاب العمل. هذه ليست بالضرورة مشكلة على المدى القصير ، لأنك تحتاج فقط إلى وظيفة واحدة لدفع الفواتير.
ومع ذلك…
الإفراط في التخصص محفوف بالمخاطر. قد يكون وضع بيضك في سلة واحدة أمرًا جيدًا إذا كان بإمكانك التنبؤ بالمستقبل بشكل أفضل من أي شخص آخر ، لكن هذه القدرة نادرة ولا علاقة لها بالمهارات التقنية. ضع في اعتبارك الطلب على مهارات برمجة Windows في الألفية. أو اسأل نفسك: هل كان بإمكان الكثير منا تخمين المسارات الخاصة بكل من Android أو Flash أو Nokia أو Blackberry قبل عقد من الزمان؟

أخيرًا ، يقدّر كبار أصحاب العمل المهارات المتنوعة بشكل كبير. لا يقوم Facebook بتعيين موظفين جدد للفرق إلا بعد ستة أسابيع من بدئهم. تشجع Google عمليات النقل الداخلية وتدير العديد من برامج التناوب. حتى لو كنت تستمتع بالعمل الحر ، فإن إبقاء خياراتك مفتوحة لن يضر. إذا كنت تفكر في العمل في تلك الشركات ، فسيتعين عليك على الأقل أن تكون اختصاصيًا عامًا إلى حد ما.
بافتراض أنك مقتنع وتريد تنويع مهاراتك ، كيف ستفعل ذلك؟
كيفية تنويع وتحسين المهارات الفنية
يمكنك تداول الأموال مقابل المهارات:
- اقبل معدلًا أقل أثناء الانتقال إلى حقل غير مألوف. إذا كانت إنتاجيتك تصل إلى 75٪ كالعادة ، فإن خفض راتبك بنسبة 25٪ يكون عادلاً. سوف تعيدها مرة أخرى في وقت قريب بما فيه الكفاية.
- قم بعمل تجريبي غير مدفوع الأجر بالمهارات التي تريدها أثناء التقدم للوظائف التي تتطلبها. إذا اتضح أنك غير مستعد للتغيير ، فلا يزال هذا درسًا مفيدًا يجب تعلمه.
يمكنك أيضًا مقايضة الوقت بالمهارات:
- المساهمة في مشروع مفتوح المصدر. ستحصل على المشورة والتحقق من الصحة ، ورد الجميل للمجتمع ، وربما يلاحظك أصحاب العمل أو زملاء العمل المحتملين.
- قم بمشروع شخصي من أجل الفرح والإلهام والتغيير من العمل اليومي. على سبيل المثال ، قمت باستنساخ لعبة Snake التي كانت موجودة قبل استخدام الهاتف الذكي أثناء تعلم React.
عليك أن تبحث عن فرص التعلم ، لكن لا يمكنك فعل ذلك باستمرار. بالنسبة لمشروع مقابلة Toptal ، استخدمت Node.js و Backbone ، ولم أكن لدي خبرة كبيرة في أي منهما. كان الأمر ممتعًا ، لكن وتيرة التعلم المطلوبة لا يمكن أن تستمر لأشهر.
من الناحية المثالية ، يمكنك التبديل بين فترات طويلة من الاستقرار (مع إنتاج ودخل ثابت) وفترات قصيرة عندما تتحدى نفسك لتعلم شيء جديد. يعتمد عدد المرات التي تفعل فيها هذا الأخير على عدة عوامل ، مثل مجموعة المهارات الحالية ، والطلب في السوق ، وأهدافك الشخصية.
لماذا الاتساع مفيد لأصحاب العمل
بقدر ما يتعلق الأمر بأصحاب العمل ، ستكون المهارات العميقة مطلوبة دائمًا في بعض السيناريوهات:
- عندما يكون هناك القليل من الثقة أو الالتزام بالوقت بين صاحب العمل والموظف.
- عندما يحتمل حدوث نتائج كارثية (مثل حوادث الخصوصية أو الأمان).
- عندما تكون المهارات الباطنية مطلوبة.
- عندما تكون المواعيد النهائية عاجلة وغير قابلة للتفاوض.
ومع ذلك ، فإن العديد من المشاريع لا تحدد أيًا من هذه المربعات ويجب على مديري التوظيف النظر في المهندسين المتمرسين. العديد من المهارات التقنية ، مثل الاختبار وتوثيق الكود ، ونقل جميع المهارات الشخصية (مثل الاتصال). المرونة مهمة حتى عندما لا تتغير المنتجات بالكامل ؛ إذا كان الجزء الذي وظفته للأكشاك ، فيمكن للطبيب العام العمل على الأولوية القصوى التالية.
نظرًا لأهمية مجموعات المهارات الواسعة ، يجب أن نشجع المطورين على التنويع ، ويجب أن ننقل أهمية المعرفة الواسعة لأصحاب العمل الذين قد يركزون بشكل كبير على "سنوات الخبرة" في مختلف المجالات والمهارات.
الهدف النهائي هو سجل حافل من العملاء الراضين ؛ بالإضافة إلى المهارات المادية واللينة التي تثبت قدرة المهندس على الانتقال إلى مجالات غير مألوفة. إنه أيضًا حافز قوي لأصحاب الأعمال الحرة الذين لا يغامرون في مجالات جديدة قبل أن يكونوا مستعدين للقيام بذلك.
تحقيق التوازن الصحيح
عندما يتم التقليل من قيمة المهارات العامة ، يكون بعض المطورين الجيدين خاملين وبعض المشاريع الجيدة تعاني من نقص الموظفين أو زيادة الميزانية. إن المطالبة بمطابقة مثالية لمجموعة المهارات يشبه طلب العمل في الموقع ، حيث يجعل من الصعب التوفيق بين العرض (العمالة المؤهلة) والطلب (العمل المجزي).
لا يعتبر أي من هذا حجة ضد خبرة المجال ؛ سيكون الأمر مهمًا دائمًا ويكافأ بسخاء. يجب أن نضع في اعتبارنا فقط أن المهارات العريضة مهمة أيضًا أكثر مما هو واضح.
