ما هي المقاييس التي يمكن استخدامها لتحديد مستوى الخبرة في لغة برمجة معينة

StackOverflow https://stackoverflow.com/questions/539694

  •  22-08-2019
  •  | 
  •  

سؤال

أنا مهتم بالمقاييس الأولية (أو المركبة) المستخدمة للتعرف على مدى قدرة الشخص على البرمجة بلغة معينة.

سيناريو:يعرف جورج بعض لغات البرمجة ويريد أن يتعلم "foobar"، لكنه يرغب في معرفة متى يكون لديه قدر معقول من الخبرة في "foobar".

أنا مهتم حقًا بشيء أوسع من مجرد مقياس LOC (أسطر التعليمات البرمجية).

أملي في هذا السؤال هو فهم كيفية قياس المهندسين لتجارب لغة البرمجة للآخرين وما إذا كان من الممكن قياس ذلك ميكانيكيًا.

شكرا لك مقدما!

هل كانت مفيدة؟

المحلول

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

ردا على المرجع السابق، أعتقد أن الاختبارات يجب أن تقيم:

  • كيف جيدا يمكنك البرنامج
  • كيف يمكنك استخدام لغة البرمجة

لذلك قد تكون المقاييس:

  1. ما هو خير برمجة الشخص (وهناك أبعاد مختلفة من الخير مثل خالية من الأخطاء، والصراف، سريعة / رخيصة للكتابة، يعمل بسرعة، يلبي متطلبات المستخدم، إلخ)؟

  2. هل يستخدم الشخص من الملامح المناسبة / الاصطلاحية لغوية البرمجة المعنية من أجل القيام بتلك البرمجة الجيدة؟

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

نصائح أخرى

أفضل مؤشر لخبرتك بلغة معينة، في رأيي، هو مدى إنتاجية في ذلك.

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

على سبيل المثال، إذا أخذت لغتان، فسيكون لديك مستوى مماثل من الخبرة معه، وكان (في الأكوان المتوازية) لبناء نفس النظام مع كليهما، أود أن أقول اللغة التي تقوم ببناء النظام مع أسرع ومع عيوب / تصميم عيوب أقل، هي اللغة التي لديك خبرة أكبر فيها.

آسف إنه ليس متريا "صعبا" بالنسبة لك، إنه نهج أكثر عملية.

لا أعتقد أن هذا يمكن أن يكون "قياس ميكانيكيا". لقد قمت فكرت حول هذا كثيرا رغم ذلك.

تشبث...

حتى "LOC" للبرنامج هو موضوع متنازع عليه بشدة! (هل نتحدث عن إخراج القط *. {h، c} | WC -L أو بعض الميكشرط الأخرى، على سبيل المثال؟ ماذا عن خطوط فارغة؟ تعليقات مهمة؟ هل كود جيد موثق؟)

حتى تكون قد أدركت مدى حدوث مقارنة Loc، ليس أمل في تحقيق مدى قيام المقاييس الأخرى غير المجدية.

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

ما الذي تحاول في النهاية تحقيقه؟ يمكن أن يكون الكفاءة العامة للبرمجة أكثر أهمية من الخبرة اللغوية في بعض المواقف.

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

ما مدى كفاءة الأخطاء في تصحيح المشاكل المعقدة في هذه اللغة.

اطلب منهم عن المشاريع التي عملوا عليها في الماضي، والمشاكل الصعبة التي واجهتها وكيف يحلها. اطلب منهم عن تقنيات تصحيح الأخطاء التي استخدموها - سوف تفاجأ بما سأسمعه، وقد تعلم شيئا جديدا ؛-)

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

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

  • C ++ على Winapi على Windows 32Bit
  • C ++ على KDE على لينكس
  • C ++ على سيمبيان على هاتف نوكيا S60
  • C # على MS .NET على ويندوز
  • C # على أحادي على لينكس

في مثل هذا السياق، فإن تدابير الكفاءة باستخدام اللغة المستهدفة في النظام الأساسي المستهدف هي كما يلي:

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

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

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

يوحنا

هناك عدة طرق للتعامل مع سؤالك:

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

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

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

تعتمد عبارة "كمية معقولة من الخبرة" على اللغة التي يتم النظر فيها وما يمكن استخدام هذه اللغة.

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

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

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

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

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

هذه قد تكون ذات صلة.

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

حسنا، يحاولون ذلك في مقابلات الوظائف. لا يوجد متري، ولكن يمكنك تقييم قدرات الشخص من خلال الاستجواب والاستحواذ.

WTF / S * LOC، أصغر هو الأفضل.

لا يوجد؛ الخبرة لا يمكن الحكم فقط على نفسي بالنسبة للآخرين، أو اختبارها على تفاصيل (التي لديها مستوى عدم دقةها)

يرى ما هو سحر مع مقاييس التعليمات البرمجية للمزيد من المعلومات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top