ما الذي نبحث عنه للمطورين لتطوير منصة 1C: Enterprise

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

باختصار ، نحن نبحث عن من:

  • يحب (أو مستعد للحب) إنشاء أطر عمل متكررة
  • يريد صنع منتج يستخدمه ملايين الأشخاص

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

  • أي نوع من المطورين تحتاج؟
  • ماذا تسأل عن مقابلة؟
  • ما هي الأسئلة التي تفضلها في المقابلة - نظرية أو عملية؟
  • يجب أن يكتب مبرمج الاختبارات؟
  • هل تطرح أسئلة ليس من مجال النشاط المهني؟
  • هل تقوم بتعيين مهام منطقية للتفكير السريع التي لا ترتبط مباشرة بالبرمجة؟ نوع المهمة حول الكرة مع الهيليوم في السيارة :


في أي المجالات يمكن للمبرمجين العمل في تطوير منصتنا؟ حسنًا ، على سبيل المثال:


الصورة

مجموعة تطوير الإنترنت


الصورة

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

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

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

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

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

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

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

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

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

فريق تطوير عميل الويب


الصورة

على الرغم من أننا نعمل على تطوير عميل ويب في JavaScript ، إلا أننا نفضل أن يتمتع المرشح ، بالإضافة إلى الخبرة في تطوير الويب في JavaScript ، بخبرة في تطوير لغات OOP "الكلاسيكية" - C ++ أو Java أو C #. هذا بسبب تفاصيل المشروع ؛ عميل الويب 1C ، المكتوب بلغة جافا سكريبت ، ولكنه يشبه إلى حد بعيد تطبيقًا مكتوبًا بلغة OOP. نحن نغطي شفرة جافا سكريبت JavaScript مع التعليقات التوضيحية JSDoc ، لذلك يحدث التحقق من النوع الثابت أثناء التجميع. تم اختيار هذه الطريقة لأننا نستخدم برنامج Google Closure Compiler ، مما يساعدنا ، على وجه الخصوص ، على زيادة سرعة الشفرة الخاصة بنا وتقليل مقدار الذاكرة التي تستهلكها. وبالتالي ، فإن تجربة OOP ستكون عونا كبيرا للمرشح.

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

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

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

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

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

فريق قابلية التطبيق


الصورة

من نحن


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

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

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

من نحن نبحث عنه


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

  • لم تنجح بعد في إنهاء التطوير في مواجهة المتطلبات المتغيرة باستمرار من أعمال العميل ؛
  • في حين أن تطوير الآليات الرئيسية للتنفيذ على قدم وساق ، فإن المهندسين لم يصلوا بعد إلى آلية الاختبار مع الآلاف من المستخدمين ؛
  • حتى الآن ، لا أحد لديه أي فكرة لماذا ، مع زيادة عدد المستخدمين في هذا التنفيذ ، بالضبط في هذه الآلية ، تنخفض الإنتاجية بشكل حاد ؛
  • تم تنفيذ التطوير في Windows باستخدام MS SQL Server DBMS ، وفي المرحلة النهائية ، تم اتخاذ قرار سياسي لتنفيذ PostgreSQL في CentOS و DBMS ليكون في قلب اتجاه استبدال الاستيراد ؛
  • وتكتشف بطريق الخطأ أن هناك مهلات عندما يعمل حتى 10 مستخدمين ؛
  • تحتاج إلى حساب المعدات لهذه الآلية ، لأن العميل اضطر لشرائها الشهر الماضي ؛
  • أنت تدرك أنك بحاجة إلى وضع تطبيق موازٍ للخوارزميات في هذه الآلية ، وتنسيقها مع زملائك ، وتقرر معًا كيف ستكون في الوقت المحدد دون تقديم أخطاء جديدة.

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

كيف ننظر


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

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

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

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

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

ما يستخدم في العمل


الأداة الأولى والأكثر استخدامًا هي منصة تكنولوجيا 1C: Enterprise. مطلوب معرفة النظام الأساسي على مستوى المسؤول والمطور. أي تحتاج إلى فهم كيفية تنفيذ حل معين وتشغيله في النظام لآلاف المستخدمين.

غالبًا ما يكون من الضروري تحليل تشغيل MS SQL Server و PostgreSQL DBMSs ، بحيث يتم تضمين استخدام أدوات التنميط ووجهات النظر الديناميكية والمجلات في حقائب المهارات النشطة. وهنا القدرة على العمل بأحجام كبيرة مهمة. ليس المفكرة القياسية لـ Windows مريحة للغاية عند العمل مع سجلات نصية تبلغ 1 تيرابايت مع استعلامات تم إنشاؤها بواسطة الجهاز وخططها. هناك حاجة على الفور إلى معرفة التعبيرات العادية ، فضلاً عن مجموعة كاملة من الأدوات واللغات التي تدعمها. لتحليل خطط الاستعلام ، يلزمك فهم ماهية الفهارس وكيف يختلف دمج الدمج عن ارتباط التجزئة.

غالبًا ما تعمل الأنظمة في سوق المؤسسات على نظام Linux. لا توجد بيئة رسومية على الخوادم. مهارات وحدة التحكم مهمة للغاية.

تخيل ما تحتاجه للعثور على سبب زيادة تحميل وحدة المعالجة المركزية على خوادم PostgreSQL في CentOS by Postgre بنسبة 5٪. حاول أن تكتب على قطعة من الورق خوارزمية تحقيقك. وعلى الفور هناك فهم لما هو مطلوب

  • تكون قادرة على تطبيق ليس فقط الجهوزية ، vmstat ، سار ، فوق ، perf ،
  • معرفة كيفية استخدام pgbadger ، psql وتكوين تسجيل الدخول في postgresql.conf ،
  • تكون قادرة على العثور على استعلام واحد المطلوب ،
  • استخدام تحليل ، تحليل خطته ،
  • أعد كتابة الطلب وتحقق من تراجع التحميل.

ما هو مهم بالنسبة لنا


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

1C: مجموعة تطوير النظام الأساسي للمؤسسات


الصورة

الشيء الرئيسي المطلوب من فريقنا من المرشحين هو القدرة على التفكير التحليلي ، وتحليل المشكلة بدقة والقدرة على تقييم الحلول. تحتوي منصة 1C: Enterprise على دورة تطوير طويلة (أشهر) ، وبالتالي فإنه من المستحيل ، كما هو الحال في تطوير الويب ، تنفيذ الوظائف في الأجزاء خطوة بخطوة. هذا يتطلب القدرة على التفكير بعمق عند النظر في تفاصيل التنفيذ ، تحتاج إلى محاولة القيام بذلك "دفعة واحدة". أي عدم استخدام الطريقة الأولى المتاحة التي قرأت عنها يوم أمس في Habr لحل المشكلة ، ولكن عليك أن تزن بعناية جميع مزايا وعيوب الحلول المختلفة.

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

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

ما الذي تود رؤيته مع المرشح هو المهارات الهندسية ، أي ، من الناحية المجازية ، القدرة على تجميع حل أنيق من المكعبات.

تعتمد المعرفة المطلوبة بلغات البرمجة على مجال تطوير النظام الأساسي الذي يتم البحث عن المرشح. جوهر النظام الأساسي هو C ++ و Java ، عميل الويب هو JavaScript ومن المرغوب فيه معرفة أساسيات C ++ ، تتطلب بعض المشروعات معرفة 1C ، لكن معرفة اللغات والتقنيات الأخرى أمر مرغوب فيه للغاية. يجب أن نخلق الكثير من الأشياء الجديدة لعالم 1C ، ونريد من مطوري التوقعات واستيعابهم أن يسمحوا لهم بالعمل مع الأفكار والمفاهيم التي تم اختراعها باللغات والتقنيات الأخرى ، وفهم كيفية تطبيقها جيدًا وبشكل صحيح في الأماكن المناسبة عند تطوير حلول 1C. على سبيل المثال ، لتطوير منتجنا السحابي 1cFreshنكتب أدوات متنوعة ، خاصة للإدارة ، في 1C (في 1C تكون أسرع في تطويرها من اللغات التقليدية). إذا فهم مطور أنماط التقنيات واللغات التي يستخدمها مسؤولو النظام (bash و Python و Perl) ، فسيساعده ذلك في إنشاء أداة سهلة الاستخدام.

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

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

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

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

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

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

1: –


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

ثم يتساءل عما إذا كان على الشخص تحسين أداء البرامج ، كما فعل.

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

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

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

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

تأكد من التحدث عما نفعله ، أي أننا نصنع منصة 1C: Enterprise. نتحدث عن كيف يمكننا العمل على أشياء ذات تقنية عالية ، على سبيل المثال ، على مجموعة خوادم أو على منصة متنقلة .

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

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

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

مجموعة تطوير آليات التقارير


الصورة

نحن بحاجة إلى المطورين C ++ المتشددين. يشارك فريقنا في آليات إعداد التقارير ، مما يعني أن الشفرة الخاصة بنا تعمل كثيرًا مع كميات كبيرة من البيانات ، ونحن بحاجة إلى معرفة جيدة بالحاويات والخوارزميات.

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

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

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

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

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

يجب اختبار مبرمج؟ بالطبع! يشبه المبرمج الذي لا يقوم بإجراء الاختبارات طباخًا لا يجرب ما أعده. بالطبع ، لا يمكنك مطالبة المبرمج بإكمال الاختبارات على جميع البيئات المدعومة (Windows ، Linux ، macOS ، الويب والعميل المحمول) ، ولكن يجب عليه التحقق من الوظيفة الأساسية على نظام التشغيل الحالي. حسنًا ، حتى لو كنت تكتب اختبارًا تلقائيًا. سيكون هذا اختبار انحدار جاهز ، والذي يقع في مكتبة الاختبار وسيتم تشغيله بانتظام عند التغيير في المنطقة المقابلة من الكود.

1C Development Group : أدوات تطوير المؤسسات


الصورة

1C: أدوات تطوير المؤسسات مكتوبة بلغة جافا ، ونحن نبحث عن مطورين واختبار لديهم معرفة بلغة جافا. نحن نبحث عن أشخاص ذوي عيون ملتهبة ، سواء المحترفين المحترفين والمبتدئين ذوي الإمكانات. معرفة جافا ضرورية بالنسبة لنا ، وكذلك معرفة الخوارزميات وهياكل البيانات والبرمجة متعددة الخيوط. لسوء الحظ ، في فريقنا ، لا يمكننا الانتظار حتى يتعلم المطور الجديد هذه الأشياء. لكن معرفة الأطر المحددة التي نستخدمها ( EMF ، Xtext ، GEF ، Lucene ، Handly ، ...) هي صفقة. إذا استطعت أن ترى أن الشخص مدرك جيدًا ومريحًا للتحدث معه ، فهذا يعني أنه سوف يلائم الفريق وسيتلقى المعرفة اللازمة بسرعة.

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

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

حسنًا ، بالنسبة للاختبار ، تكون القدرة على التفكير على نطاق واسع أكثر قيمة! هناك نكتة معروفة كيف اختبر المختبر البار: طلب كوبًا واحدًا من البيرة ، 2 كوب من البيرة ، 0 كوب من البيرة ، 999 كوبًا من البيرة ، -8 كوب من البيرة ، كوبويرتويب من البيرة ، وبعد تقديم المشروع للإنتاج ، ذهب العميل إلى الشريط وسأل عن المكان المرحاض؟ المهارة الرئيسية للاختبار هي التوصل إلى سيناريوهات غير قياسية (وفي نفس الوقت واقعية) ؛ يتم تطوير البرامج النصية القياسية ، كقاعدة عامة ، من قبل المطور نفسه.

الخاتمة


كيف لا توفر رابط لفتح الشواغر هنا :)

ويمكنك فقط إرسال السيرة الذاتية إلى job@1c.ru .

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


All Articles