مرحبا يا هبر! اسمي أندري جومينيوك ، أنا قائد فريق من فرق تطوير خادم
Badoo .
في May
Mayoo Techleads Meetup ، المكرسة لإدارة التطوير ،
شاركت تجربة دمج الوافدين الجدد في الفريق. واليوم أشارك نصاً مكملاً ومحسناً لتقريري.
تخيل اليوم هو أول يوم عمل لك في Badoo. ما نوع المعرفة والمهارات التي تتوقعها الإدارة منك ، ولا سيما أنا القائد؟ على الأقل مثل:

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

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

أو هكذا:

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

كما كان من قبل
عندما جئت إلى Badoo قبل سبع سنوات ، كان شيء من هذا القبيل. يجلس الرصاص إلى الوافد الجديد ويبدأ في القول:
"انظر ، لدينا طوابير ، إطار برمجة نصية. إنهم يعملون على هذا النحو. انتبه لذلك. في هذه التذكرة ، ستحتاج إلى القيام بذلك .
"المشكلة هي أن الرصاص يقضي وقت عمله في هذه القصص. في كل مرة يشرح فيها الشيء نفسه للمبتدئين ، ينسى دائمًا شيء ما. كل دليل يؤدي طريقه.
بطبيعة الحال ، سيقدم العميل المحتمل ملاحظات تمهيدية محددة فقط على التذكرة التي تتعلق بهذه التذكرة ، ويفتقد إلى النقاط التي قد لا يحتاجها المبتدئ في الوقت الحالي. إذا كنت محظوظًا ، فسيتمكن الأخير من العثور على رابط لوصف أداة. ولكن عادة ما تتم كتابة جميع هذه الوثائق للاستخدام الداخلي ، أي أنه من المفهوم أن المستخدم على دراية بالفعل بالتفاصيل. تحتوي الوثائق على الكثير من التفاصيل التي لا يحتاجها المبتدئ بالتأكيد في المراحل الأولى. ونتيجة لذلك ، تطورت حالة متناقضة: عمل شخص لمدة عام أو عامين في الشركة ، ولكن ليس هناك ما يضمن أنه تعرف على كل شيء ويعرف كيف تعمل البنية التحتية بأكملها.
إطار من فيلم Groundhog Dayبالإضافة إلى الزملاء الذين أجابوا على أسئلة مختلفة ، ألقى أليكسي ريباك ، الذي كان يدير المنصة في ذلك الوقت ، محاضرة حول المبادئ الأساسية والبنية التحتية والخدمات الأساسية لجميع الموظفين الجدد. في وقت ما ، سئم من ذلك ، وسجله على الفيديو. ولكن في قصة مدتها ساعتان لن تحصل على كل شيء ، هناك الكثير من التفاصيل. ومن ثم يصعب تحديث هذه المحاضرة. بالطبع ، من الرائع أنه خلال سبع سنوات أصبح قديمًا قليلاً ، لكن بعض أجزاءه لم تعد ذات صلة.
في مرحلة ما ، قام شخص ما بإنشاء صفحة مطور ترحيب جديدة على ويكي. لقد ألقوا مجموعة من الروابط التي سيكون من الجيد قراءتها للمطور.
ربما لا أكون مخطئًا كثيرًا إذا قلت أنه في أي شركة هناك مصدران رئيسيان للحصول على معلومات جديدة: هذا نوع من التماثلي Wiki (أو مستندات Google) وغرفة تدخين. لسوء الحظ ، ستكون المعلومات حديثة فقط في واحد منهم ، وهذا ليس ويكي.
أن صفحتنا لم يكن لديها هيكل مشترك. تم تجديده مثل هذا. يأتي قائد فريق آخر إليّ ويقول:
"Andryukha ، أداء مطوريك ضعيف. لعمل جيد ، كتبت مقالاً على ويكي. أضفه إلى "مرحبًا بالمطور الجديد" بحيث يجب على جميع مطوريك قراءته .

بطبيعة الحال ، يعتبر مقالته هي الأكثر أهمية ، ويضعها في المكان الأكثر بروزًا ، ويسلط الضوء عليها بالخط العريض والأحمر. ونتيجة لذلك ، سيتم التخلص من صفحة واحدة كبيرة تحتوي على مجموعة من الروابط التي قد يحتاجها للمبتدئين. مع وفرة من
العبارات الجريئة ، يجب أن تقرأ و "اقرأ مطلوب!".
في مرحلة ما ، أدركنا أن المحاضرات ومقاطع الفيديو والويكي لم تعد تناسبنا. قررنا أن نأخذ أفضل هذه الأدوات ونفعل شيئًا جديدًا. وألقى علينا الفكرة الصحيحة ... إطار Laravel. لا تحسب للإعلان. كان الأمر في ذلك الوقت أننا كنا نلتقط إطار العمل لمشروع واحد ، في محرك البحث عن "أفضل إطار عمل PHP" برز Laravel في المقام الأول ، وحصلنا عليه. وفيه أحببنا حقًا قسم وثائق البدء السريع ، والذي يخبرنا عن المبادئ الأساسية والأدوات المتاحة في مثال حقيقي (وبعد فهم الأساسيات ، يمكنك البدء في قراءة الوصف التفصيلي).
بداية سريعة
لقد أحببنا هذا التنسيق حقًا ، وقررنا كتابة مقالة مماثلة للمبتدئين. ولكن كيف نفعل ذلك؟ هناك الكثير من المعلومات - كيف تحافظ على التوازن بين الإيجاز والمعلوماتية ، مع الحفاظ على إمكانية التحديث في الوقت المناسب حتى لا يضطر القادمون الجدد إلى استخلاص المعرفة في غرفة التدخين؟ وكيف يمكن تشجيع قراءة وثيقة لأولئك الذين كانوا يعملون في الشركة لبعض الوقت ، ولكن لديهم فجوات معرفية بالتأكيد؟
المصدربدأنا بتجميع قائمة بالأدوات والتقنيات والأساليب التي يجب أن يعرفها كل مطور في القسم. ثم قاموا ببناء المعلومات في شكل جدول محتويات ، من البسيط إلى المعقد: من قواعد البيانات والخدمات إلى الأداء والاختبار. ثم كتب شخص واحد الفصول القليلة الأولى حتى يتمكن الآخرون من فهم كيفية تقديم المادة. بعد ذلك ، قمنا بتوزيع المواضيع المتبقية طواعية بالقوة على موظفين آخرين ، وكتب كل منهم فصلاً. وكانت النتيجة وثيقة ضخمة ، أسابيع لقراءتين فقط.
لم نتمكن من التوصل إلى مهمة واحدة مشتركة لقسم البدء السريع بأكمله. نعم ، سيكون غير فعال. تخيل أنك تكلف شخصًا بمهمة - في الواقع ، ميزة ضخمة تغطي جميع الأقسام. سيعمل عليها لمدة شهر أو شهرين ، وطوال هذا الوقت لا يمكنك تشتيت انتباهه بالتذاكر ، وهذا يتعارض مع الغرض الأول من الإلحاق.
ثم وضعنا في كل قسم مهمة أو مهمتين متشابهتين قدر الإمكان مع المهام الحقيقية. يقرأ المبتدئ قسمًا ، ويعمل على المهام ، ويتعرف على أدوات محددة. نوصي بأن يقوم قادتنا ببعض المهام وفقًا للعملية القياسية: يتم إصدار التذكرة ، يدفع الشخص الرمز ، تتم مراجعة الرمز ، يتلقى الشخص الكثير من التعليقات. بعد ذلك يتم حذف الفرع ومعه تذكرة.
ثم ثار سؤال حول كيفية الحفاظ على أهمية هذه المجموعة الكاملة من المعلومات. وهنا ساعدتنا نفس المهام. على سبيل المثال ، لدينا نقاط (شظايا افتراضية) وخدمة مسؤولة عن مقارنة المستخدمين والبقع. في الحياة العادية ، لا يحتاج المطورون إلى معرفة ذلك ، لأنهم يستخدمون واجهة برمجة تطبيقات عالية المستوى. لكننا نطلب منهم أن يفهموا كيف يعمل هذا داخليًا.
نعطي المهمة: تسجيل المستخدم في المطور ، والحصول على معرف البقعة على عنوان بريده ، والحصول على معلومات قاعدة البيانات على الفور ، والذهاب إلى هناك ، وتحديد ومعرفة ما هو موجود. إذا تغير شيء ما في هذا الإجراء ، فلن يعرف مطورو البرامج العاديون ذلك. لن يعرفوا أنك بحاجة للدخول وتصحيح الوصف. لكن المطور الذي يشارك في هذا الأمر سيفهم: شيء خاطئ. سيصعد إلى الصدارة ويقول أن شيئًا ما لا يعمل. سوف يجلس العميل المحتمل معه ، وفرزها - وسنقوم بتحديث الوثيقة. نحن نحاول ألا نشجع المطورين على تغيير البداية السريعة بأنفسهم ، حتى لا ينتهك هيكل وأسلوب العرض. بدلاً من ذلك ، أنشأنا مستندًا في Google يمكنهم فيه كتابة رغباتهم. ثم تتم مراجعة هذه القائمة من قبل الشخص المسؤول الذي يقوم بإجراء تغييرات على مقالنا.
تتم إضافة معلومات جديدة إلى Quick Start بنفس الطريقة: يصادف شخص ما أداة جديدة غير موصوفة في المستند ، ويكتب عنها في Google Doc. ثم يقرر المسؤولون ما إذا كانت هذه حالة خاصة لا تهم معظم المطورين ، أم أنها تستحق الكتابة عنها في Quick Start.
يضيف المطورون أنفسهم أحيانًا "أشياء صغيرة" رائعة إلى المستند. على سبيل المثال ، تمت إضافة عداد لمدة القراءة وعدد الصفحات لكل فصل. أيضا في بعض الأقسام أضافت الروابط التي تفتح على الفور الفئة المطلوبة في PhpStorm.
ثم بدأنا نفكر ، كيف نجعل كبار السن يدرسون الوثيقة؟ بعد كل شيء ، تبين أن البداية السريعة كانت ضخمة ، ولم يرغب أحد في قضاء أسبوعين في قراءتها. ثم توصلنا إلى اختبار: على أساس الوثيقة أجرينا حوالي 100 سؤال حول مواضيع مختلفة وعرض على الجميع تمريره بشكل مجهول. تم منح كل مطور اختيارًا حول 40 سؤالًا. لم يكن الهدف اختبار المعرفة ، ولكن مساعدة الناس على فهم ما لا يعرفون. أي أن الاختبار كان أداة تعليمية ، وليس اختبارًا ، وإذا لم تتم الإجابة على السؤال بشكل صحيح ، فسيتم عرض المطالبات والارتباطات على الفور حيث يمكنك القراءة عنها في Quick Start.
مثال على سؤال من اختبارنحن لا نتحكم في مرور الاختبار من قبل المبتدئين. ويعتقد أن هذا سيكون الاستنتاج المنطقي لتعلم البدء السريع. في الوقت نفسه ، نحتفظ بإحصائيات حول جميع الإجابات. عندما اجتاز "الرجال المسنون" الاختبار ، اخترنا العديد من الأسئلة التي لم يجيبوا عنها بالطريقة التي نودها وطلبنا من الرجال ذوي الخبرة كتابة مقالات حول هذه المواضيع.
تعتبر البداية السريعة والاختبار الجزء الأكثر إثارة للإعجاب في عملية الإعداد.
المزيد من التذاكر
عادة ، إلى جانب البدء السريع ، يُمنح الشخص على الفور تذكرة أو تذكرتين بسيطتين. يزداد عددهم تدريجيًا ، ويضمن العميل المحتمل أن تتوافق التذاكر الجديدة مع ما تمكن المطور من التعرف عليه. وبالتالي ، فإن عملية القراءة مخففة بعمل حقيقي ، وتستغرق جميعها حوالي شهرين. من الناحية المثالية ، في نهاية الفترة التجريبية ، يجب أن يكون الشخص على دراية جيدة ببنيتنا التحتية وأدواتنا ونهجنا.
بعد قراءة Quick Start ، سيصبح معنى التذاكر أعلاه أكثر وضوحًا بالنسبة لك:

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

هنا الشيء نفسه: انتهت الصورة في الألبوم الخطأ ؛ على الأرجح ، أرسل العميل ببساطة الألبوم الخطأ ؛ تحتاج إلى فهم ما إذا كانت هناك مثل هذه الحالات ، وإصلاحها.
التذاكر ، في الواقع ، بسيطة ، لمدة ساعة من العمل.
4. تصميم ميزة جديدة
من خلال "التصميم" ، لا أقصد تنظيم الفئات والرمز ، ولكن كيف سيعمل المبتدئ مع البيانات ، حيث سيقوم بإنشاء الجداول ، والأحداث التي سيضيفها ، وأين سيتم نقلها ، والخدمات التي سيصل إليها الشخص. في هذه المرحلة ، يكون المبتدئ مستعدًا لاتخاذ قرارات فنية حول كيفية عمل الميزات. عادة ما يتم ذلك عن طريق الممارسة. لمزيد من المهام ، والمزيد من المعرفة والخبرة.
صحيح ، هذا ليس ممكنًا دائمًا ، لأنه ليس من الممكن العثور على عدد كاف من المهام المثيرة للاهتمام لكل مبتدئ. في الاختبار ، غالبًا ما يكون من الصعب تغطية مثل هذه الموضوعات ، لأن المواقف مختلفة. في حالات مختلفة ، تحتاج إلى الوصول إلى خدمات مختلفة ، وفي كل مكان خصائصك الخاصة.
ونتيجة لذلك ، قمنا ببساطة بجمع عشرات الميزات الكبيرة التي تضمنت خدمات وقوائم انتظار وبقع مختلفة ، وقام المطورون بإعداد أوصاف موجزة لهم (تناظرية للمهمة الفنية). عندما يكون الوافد الجديد جاهزًا ، يمنحه العميل الفرصة لمهمة واحدة. وهو يفكر في الأمر لبعض الوقت ويفيد أنه مستعد لمناقشة الحل. تمت جدولة اجتماع مع مؤلف الميزة ، حيث يشرح المطور مخططه: سيفعل ذلك ، وسيطلب مثل هذه الخدمة ، وسيخزن البيانات هنا ، وسيشترك في مثل هذه الأحداث. ورداً على ذلك ، يخبر المؤلف كيف فعل وما لفت الانتباه إليه. ونتيجة لذلك ، يتعلم المطور الكثير من الأشياء الجديدة ، ويبدأ في التقاط الصورة العامة. إنه يفهم كيف تعمل هذه العملية أو تلك ، وكيف نتخذ القرارات. لا بأس إذا دخل في الشفرة مقدمًا وتجسس على كيفية تنفيذ الميزة ، فهذا على الأرجح زائد.
في نهاية الاجتماع ، يجمع العميل المحتمل التعليقات ويمكنه أن يقدم للمطور دراسة قسمًا بعناية والتفكير في ما تعلمه.
5. العمل المستقل
في الواقع ، لا يتم التعبير عن المرحلة الخامسة بأي شكل من الأشكال. هذه هي الأشياء التي نقوم بها طوال عملنا في الشركة. نحن نقدر حقًا رغبة المطور في التواصل مع فرق أخرى ، لمعرفة كيفية العمل. إذا لم ينجح شيء ما ، فأنت بحاجة إلى معرفة من تلجأ إليه للمساعدة. مهمة القائد هي تقديم الوافد الجديد إلى الجميع ، وإظهار من يجلس أين ، وإخبار من وفي أي حالة يمكنك الاتصال.
المصدريجب أن يوجه الشخص في عملياتنا. على الرغم من أننا لا نمتلك Scrum و Agile ، إلا أن سير العمل مرن تمامًا. نحن نقدر حقًا عندما لا يتابع مطور البرامج عملياتنا بدون تفكير فحسب ، بل يفهم سبب وجودها وما هي المهام التي يحلها. هذا يسمح له في بعض المواقف بالعثور على حلول. على سبيل المثال ، لفهم أنه يمكن إرسال تذكرة معينة دون إجراء اختبار كامل ، والبعض الآخر يجب أن يتم بشكل أسرع. نخبر بمن نتصل وكيف نرتب الأولوية حتى تذهب التذكرة إلى العمل اليوم.
نتوقع من المطور الجديد أنه سيتعرف خلال الفترة التجريبية على الحد الأقصى لمجموعة ميزاتنا ومكوناتنا. من الناحية المثالية ، إذا كان الوقت الذي تنتهي فيه الفترة التجريبية ، سيعرف بعض المكونات أو السمات بعمق كافٍ ليتمكن من مرافقته.
نضيف أيضًا أيضًا على الفور شخصًا إلى
مراجعة الأداء ، حتى يتمكن من تلقي التعليقات ليس فقط من قيادته ، ولكن أيضًا من كل من يتفاعل معه: من المنتج ، وفريق ضمان الجودة وفرق العملاء.
الملخص
فيما يلي ربما المكونات الخمسة الرئيسية لعملية تكليف المبتدئين لدينا:
- الحد الأدنى من الاهتمام لغير المهم. نحن نفعل كل شيء حتى يركز الشخص على العمل ولا يشتت انتباهه بالأشياء الصغيرة (بما في ذلك) المنزلية.
- بداية سريعة.لم نتجرأ على المضي قدمًا فيها لفترة طويلة واعتقدنا أنه من المستحيل القيام بذلك. ولكن تبين أنها أسهل مما كنا نعتقد ، لكنها قد أثمرت بالفعل عدة مرات.
- اختبر. من حيث نسبة الفوائد المستلمة إلى الوقت الذي يقضيه ، يخسر إلى البداية السريعة إلى حد ما ، ولكنه أيضًا عنصر مهم في عملية التعلم.
- المهام العملية.
- ردود الفعل من الفريق والقيادة. كلما كان ذلك أفضل
النتائج
, . , , , «» .
.
. - . , , — .
المصدرما هي الخطوة التالية
— Quick Start , , . Quick Start.
, . Quick Start , , , , , , . , - . , . , .
, ? : « ?». , . Quick Start, , , .