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

يقول مؤلف المقال ، الذي ننشر ترجمته اليوم ، إن الفريق الذي يعمل فيه كان مستوحىًا من
قصة TechLead حول 7 عادات للمبرمجين ذوي الفعالية العالية. قرر أعضاء الفريق التعبير عن أفكارهم بشأن هذه المسألة. هنا ، في شكل نصائح ، يقدم تحليلا ل 7 مهارات من المبرمجين فعالة.
1. تعلم قراءة رمز شخص آخر
الجميع باستثناءك يكتب رمز فظيعة. هذا هو السبب في أن قدرة مبرمج على العمل مع رمز شخص آخر هي مهارة قيمة. هذه المهارة تمنح الشخص الذي يمتلكها الكثير من الخير.
يجب أن يكون المبرمج قادراً على فهم رمز شخص آخر. بعد كل شيء ، هذا هو وظيفته. لا يهم مدى الخلط بين هذا الرمز أو مدى سوء كتابته. بالمناسبة ، قد يكون "رمز شخص آخر" هو ما كتبه المبرمج نفسه ، قبل عام مضى.
تؤثر هذه المهارة بشكل إيجابي على المبرمج بطريقتين. أولاً ، تتيح القدرة على قراءة رمز شخص آخر فهم كيفية عمل الكود السيئ الجودة. من خلال النظر إلى عمل الآخرين ، يمكنك معرفة التقنيات التي هي العمال وغيرهم. ثانياً ، والأهم من ذلك ، أنه يساعد على الكشف عن خصوصيات تصور رمز شخص آخر من قبل أشخاص آخرين ، لمعرفة أي رمز يتم إدراكه بسهولة وهو أمر صعب.
إذا قرأت رمز شخص آخر ووجدت شيئًا لا يعجبك فيه ، فحاول ألا تصمت بشأنه. هذا سوف يثير مصداقيتك في عيون الزملاء.
انتبه للأشخاص الذين تعمل معهم ، حول مدى أهمية كتابة التعليمات البرمجية التي يسهل الحفاظ عليها ، ومدى أهمية التعليقات الجيدة. هذا سوف يعزز وضعك في الفريق.
يجب تصميم الكود الخاص بك بجودة عالية بحيث يكون واضحًا وبدون مستندات. في الواقع ، لا يحتاج المبرمجون الجيدون إلى توثيق الكود. هذا هو مضيعة للوقت ، والوقت الذي سيتم إنفاقه بشكل أفضل على البرمجة والاجتماعات.
تساعد القدرة على فهم الكود المنخفض الجودة ، من بين أشياء أخرى ، في إجراء تغييرات على هذه الكود. هذا يعني في بعض الأحيان تعديل التعليمات البرمجية التي لا يكون فيها شخص ما جيدًا فيها. على سبيل المثال ، في يوم من الأيام ، صادفنا نصًا يتضمن تقنيات مثل PowerShell و Python و Perl. في بيرل ، لم نفهم جيدًا. ومع ذلك ، تمكنا من فهم المشروع بعمق ، وتمكنا من فهم جوهر ما كان يحدث وإجراء التغييرات اللازمة على الكود. أصبح هذا ممكنًا نظرًا لحقيقة أننا فهمنا الكود الذي نحتاج إلى تغييره ، بما في ذلك شفرة النصوص البرمجية لـ Perl.
تزيد القدرة على فهم رمز شخص آخر من قيمة المبرمج لأنه يمكن أن يفهم كيف يتم ترتيب أنظمة متطورة ، بحيث عندما تنظر إليها ، سيتخلى شخص آخر ببساطة.
2. تطوير ميل للمشروعات غير الناجحة
هناك العديد من المهارات التي تحتاج إلى وقت لإتقانها. أحدها ، الذي نحن متأكدون أنه يستحق الاتقان ، هو تطوير فهم للمشروعات التي يجب ألا تتعامل معها وأي المشاريع ذات درجة عالية من الاحتمال يمكن أن تؤدي إلى "سباق للبقاء على قيد الحياة".
في الشركات الكبيرة ، هناك دائمًا العديد من المشاريع التي يعمل عليها المبرمجون. لكن لن يتم الانتهاء من كل هذه المشروعات. ليس كل منهم سيكون مفيدا. قد يكون من بينها تلك التي ليس لها معنى تجاري (على الأقل للمبرمج). قد تعاني بعض المشاريع ، الواعدة بشكل عام ، من أوجه القصور الإدارية. هذا لا يعني أنه يجب عليك التخلي عن بعض الأفكار فور إدراكك أنك لا تتفق مع من يعرضونها. ومع ذلك ، إذا لم يستطع مؤلف الفكرة أن يوضح بوضوح الفائدة التي يمكن أن تجلبها الشركة للمشروع بعد اكتماله ، فربما لا يستحق هذا المشروع البدء.
بالإضافة إلى ذلك ، قد تكون بعض المشاريع موجهة أكثر من اللازم للتكنولوجيا بدلاً من حل مشكلة معينة. هذا في بعض الأحيان ، حتى في بداية العمل ، يتيح لنا أن نفهم أن إكمال مثل هذا المشروع لن يحقق فائدة كبيرة.
من أجل التعلم في لمحة للتعرف على المشاريع غير الواعدة ، تحتاج إلى المشاركة في العديد من هذه المشاريع. لذلك ، إذا كنت في المرحلة الأولية من مهنة المبرمج ، فلا تقضي وقتًا طويلاً في محاولة لتقييم احتمالات جميع المشاريع التي تصل إليك. بمرور الوقت ، ستقوم بتطوير غريزة داخلية ، تسترشد بها والتي يمكنك من خلالها التعرف بسرعة على المشروعات المحكوم عليها بالفشل.
3. تجنب الاجتماعات
مهما كنت تعمل ، لا يمكنك الاستغناء عن الاجتماعات. وهذا ينطبق على الجميع تماما. الحقيقة هي أنك تحتاج إلى إيجاد لغة مشتركة مع مديري المشاريع والمستخدمين والعملاء. ومع ذلك ، تحتوي الاجتماعات على ميزة واحدة غير سارة: في بعض الأحيان تأخذ فجأة يوم العمل بأكمله تقريبًا. هذا هو السبب في أنه من المهم للغاية أن نتعلم تجنب الاجتماعات غير الضرورية. ربما سيكون من الأفضل عدم "تجنب الاجتماعات" ، ولكن السعي إلى "التحكم في الوقت الذي تقضيه الاجتماعات". والغرض من ذلك هو قضاء بعض الوقت فقط في تلك الاجتماعات الضرورية حقًا ، على الاجتماعات التي تساهم في تطوير المشاريع.
تتمثل الطريقة الأكثر شيوعًا لإدارة الوقت التي تذهب إلى الاجتماعات في تخصيص كتلة لمدة ساعتين يوميًا ، والتي تتحول إلى اجتماع مستمر. قام العديد منهم بإعداد اجتماعات متكررة للوقت الذي يعتبرونه أكثر ملاءمة. تستخدم هذه الاجتماعات لمناقشة قضايا العمل.
هناك طريقة أخرى لإدارة الوقت تتمثل في القدوم إلى العمل في وقت مبكر أكثر من غيرها من أجل إدارة أعمالك. على سبيل المثال ، نحن نفضل القيام بذلك. وبالمناسبة ، إذا أتيت إلى المكتب مبكرًا ، فسيكون العمل هناك أكثر هدوءًا من المعتاد. معظم الناس تأتي في وقت مبكر على حد سواء. يفعلون هذا من أجل الحصول على الوقت للتعامل مع عملهم. لذلك ، فهي لا تتداخل مع عمل الآخرين.
في حالتنا ، هذا مهم لأعضاء الفريق الفردي. الحقيقة هي أن عملنا يستغرق بعض الوقت للتركيز بشكل كامل على مهمة معينة. في هذا الوقت ، نحن لا نتواصل مع أي شخص. بالطبع ، هناك مواقف عندما ، لحل مشكلة ، تحتاج إلى مناقشتها مع شخص ما والعمل معًا. ولكن بعد حل جميع الأسئلة ، يحتاج المطور فقط لكتابة التعليمات البرمجية. بشكل عام ، نتحدث عن الدخول في منطقة راحة معينة يستطيع فيها المبرمج أن يضع في اعتباره باستمرار كل ما يرتبط بالمهمة التي يحلها. إذا قاطعته باستمرار ، فقد يجد صعوبة في العودة بسرعة إلى ما كان يصرف انتباهه عنه.
4. ماجستير جيثب
عندما تنظر إلى بعض المبرمجين من الدرجة العالية ، تشعر بأنهم بدأوا في استخدام GitHub في اليوم الأول من حياتهم. إنهم يفهمون معنى كل أمر ومعلمة ، فهم يتعاملون بسهولة مع شؤونهم.
لكن البعض الآخر واجه GitHub في وظيفتهم الأولى. بالنسبة إليهم ، يعد GitHub بمثابة جحيم حقيقي ، تم بناؤه من فرق غامضة وعمليات غامضة. إنهم ليسوا متأكدين تمامًا مما يفعلونه. لهذا السبب تحظى جميع أنواع "أوراق الغش" على جيثب بشعبية كبيرة.
ما سبق صحيح في أي نظام للتحكم في الإصدار. إذا تم استخدامه بشكل صحيح ، فمن المفيد للغاية. إذا كنت تستخدمه بشكل غير صحيح ، فإنه يتداخل بشكل رهيب مع العمل. يمكن أن تتحول العلاقات العامة أو الالتزام البسيط بسهولة إلى كابوس يستغرق مبرمجًا لعدة ساعات. سيتم قضاء هذه المرة على كشف تعقيدات الفروع والشوك. بالإضافة إلى ذلك ، إذا نسيت بانتظام تنزيل أحدث إصدار من المستودع إلى جهازك ، فيمكنك دائمًا التعامل مع تعارضات الدمج. لا يوجد شيء جيد عن ذلك.
إذا كنت بحاجة إلى "ورقة الغش" على جيثب - افعل ذلك.
تعلم كيفية العمل بشكل منتج مع GitHub. في هذه الحالة ، لا يهم كيف تحقق هذا بالضبط.
5. اكتب رمزًا بسيطًا سهل الصيانة
يتمتع بعض المبرمجين المبتدئين بالسمة التالية: يحاولون ، في مشروع واحد ، إدراك كل ما يعرفونه. النقطة المهمة هنا هي أنها تسعى جاهدة لاستخدام معارفهم حول البرمجة الموجهة للكائنات ، وهياكل البيانات ، وأنماط التصميم ، والتقنيات الجديدة في كل جزء من الكود الذي يقومون بإنشائه. يؤدي هذا إلى تعقيد التعليمات البرمجية بشكل غير ضروري نظرًا لأنه من خلال هذا النهج ، يمكن بسهولة تأثر مهمة المبرمج ، على سبيل المثال ، بأنماط التصميم التي قام بتطبيقها بالفعل في الممارسة العملية.
هناك توازن بين هياكل المشروع معقدة للغاية ورمز بسيط. تم تصميم أنماط التصميم والبرمجة وجوه المنحى لتبسيط التعليمات البرمجية في المشاريع واسعة النطاق. ومع ذلك ، فكلما لجأنا إلى الاستخلاص والتعبئة ، وكلما زاد عدد "الصناديق السوداء" في حلولنا ، زاد صعوبة تصحيح الشفرة الخاصة بهذه الحلول.
6. تعلم أن تقول لا وتحديد الأولويات
في الواقع ، يمكن تقديم هذه التوصية لأي شخص - على الأقل محلل مالي ، أو مبرمج على الأقل. ولكن تجدر الإشارة إلى أن هناك شعور بأن الجميع يريد شيء خاص من الفنيين. على سبيل المثال ، إذا كنت مهندسًا لتحليل البيانات ، فقد تُعرض عليك مهام أكبر بكثير مما يفترض أن تقوم به. تحتاج بعض الفرق إلى نوع من نموذج البيانات ، بينما يحتاج البعض الآخر إلى بيانات موجزة ، بينما يحتاج البعض الآخر إلى خطوط أنابيب جديدة.
تجدر الإشارة إلى أن القدرة على تحديد الأولويات والقدرة على قول لا يمكن أن تكون في الواقع مهارات منفصلة اثنين. ومع ذلك ، ترتبط هذه المهارات ارتباطًا وثيقًا ببعضها البعض. عندما تكون هناك حاجة لأحدهم ، عادة ما تكون هناك حاجة إلى الثانية. تحديد الأولويات هو عندما يتم قضاء الوقت فقط على ما له تأثير خطير على الشركة. والقدرة على قول لا هي رفض القيام بالعمل الذي يجب على شخص آخر القيام به.
قد يكون تعلم ما نتحدث عنه أمرًا صعبًا ، حيث يحاول الأشخاص غالبًا حل كل مشكلة يتم حلها. هذا صحيح بشكل خاص بالنسبة لأولئك الذين تخلصوا للتو وحصلوا على أول وظيفة لهم. سابقا ، في دراساتهم ، تم تكليفهم بالمهام التي تعاملوا معها بشكل جيد. الآن ، في العمل ، يتوقعون نفس الشيء ويسعون لإحباط أي شخص.
هنا تحتاج إلى فهم أنه في الشركات الكبيرة هناك عدد لا حصر له من المهام. الشيء الأكثر أهمية هو أن تأخذ فقط تلك المهام التي يمكن حلها.
هناك العديد من المهارات التي لم يتم اختبارها في مقابلة. نادرا ما تكون متاحة في المدرسة. غالبًا ما ينشأ هذا الموقف فقط بسبب خصائص بيئة التعلم ، وليس لأن شخصًا ما لا يريد أن يُظهر للطلاب المهام الحقيقية التي قد يواجهونها في الواقع.
7. تعلم كيف تفكر في كيفية استخدام التنمية الخاصة بك.
هناك مهارة واحدة يصعب عليها تنظيم اختبار أثناء المقابلة. الحالات التي تكون هناك حاجة إليها من الصعب التكاثر أثناء الدراسة. يتعلق الأمر بالقدرة على رؤية الأخطاء التي يمكن أن يرتكبها المستخدم النهائي لنظام البرنامج. ندعو عادة هذا "التفكير من خلال حالات استخدام البرنامج."
في الواقع ، هذا "التفكير في السيناريو" هو مجرد اسم ضعيف إلى حد ما لما يسمى "الحماية من الخداع".
على سبيل المثال ، نظرًا لأن معظم مهمة المبرمج هي دعم الكود ، فغالبًا ما يتعين عليه تغيير الكود ، المرتبط ارتباطًا وثيقًا بشيء آخر. حتى التغيير البسيط لشيء ما يتطلب البحث عن كل تلك الأماكن التي يتم استخدامه فيها. على سبيل المثال ، يمكن تغيير كائن أو طريقة أو API لنظام معين. إذا قمت بإجراء تغيير غير معقول على النظام ، فيمكنه "كسر" عمل أجزاء غير متوقعة تمامًا من البرنامج. علاوة على ذلك ، نحن نتحدث عن التغييرات من أي نطاق - حتى شيء مثل تغيير النوع في قاعدة البيانات.
تتضمن هذه المهارة أيضًا القدرة على إيجاد وتحليل المواقف التي قد تنشأ عند العمل مع النظام. ويشمل ذلك أيضًا القدرة على فهم مخطط قرار رفيع المستوى في مرحلة التصميم.
ينطبق هذا أيضًا على تطوير أجزاء أكبر من الأنظمة ، مثل الوحدات النمطية أو الخدمات المجهرية. عند البدء في حل مثل هذه المشكلات ، تحتاج إلى التفكير في كيفية استخدام الكيانات التي تخطط لإنشاءها بالضبط. تحتاج إلى التفكير في سيناريوهات سوء استخدامها ، والخيارات المختلفة لاستخدامها ، وأن ما تصنعه يمكن استخدامه بطرق غير واضحة تمامًا للوهلة الأولى.
تعد عملية كتابة التعليمات البرمجية جزءًا فقط من مهمة حل مشكلة معينة. من السهل إنشاء برنامج يعمل بشكل جيد على جهاز الكمبيوتر الخاص بك. لكن الكود الذي يعمل معه شخص آخر يمكن أن يتصرف بسهولة بشكل مختلف تمامًا عما كان متوقعًا في الأصل. كيف سيتم استخدام الكود الذي تكتبه في الإنتاج؟ ما هي الأنظمة التي سيتعامل معها؟ ما هي العمليات يمكن أن تصبح جزءا من؟ ألا يبدو أنه بدائي للغاية ويقتصر على مبرمج سيتعين عليه دعمه بعد بضع سنوات؟ هذه أسئلة صعبة للغاية.
النتائج
في هذه المقالة ، قدمنا لك لمحة عامة عن 7 مهارات شائعة لدى المبرمجين ذوي الأداء العالي. نأمل أن تكون قد وجدت بينهم من ترغب في تطويره.
أعزائي القراء! ما الذي تنصح بإتقانه لشخص يسعى إلى الاحتراف في البرمجة؟