نمط الكود كمعيار للتطوير

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

المهتمة؟ مرحبا بكم في القط.



تحية! اسمي أنتون ، وأنا أكتب الخلفية في ManyChat. في الآونة الأخيرة ، كان لدينا mitap مخصص لتطوير PHP ، حيث تحدثت عن أسلوب الكود كأحد معايير التطوير. في ردود الفعل ، سارت على ما يرام لضيوف الحدث ، وقررنا فك تشفير التقرير عن هبر. بالنسبة لأولئك الذين يقدرون بشكل خاص تأثير التواجد الشخصي ويشبهون مشاهدة مقطع فيديو أكثر من قراءة النصوص ، فإننا نبث ، والذي يتوفر الآن. يمكنك العثور عليه هنا. بالنسبة لأولئك الذين يحبون longrid ، نرحب أكثر.

دماغنا هو شبكة عصبية


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

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

صورة

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

صورة

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

كيف يقرأ مبرمج الكود


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

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



خبرة



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

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

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

هناك طريقتان لتسريع قراءة الكود:

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

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

عدد من المستقبلون البيانو


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

دماغنا كسول


التأثير الآخر المثير للاهتمام للمعالج المركزي في الجمجمة هو التصور السلبي للغاية للمعلومات الجديدة. دماغنا كسول جدا. مع كتلة حوالي 1.5-2 ٪ من إجمالي وزن الجسم ، يستهلك الدماغ 25 ٪ من إجمالي طاقة الجسم. واحدة من أكثر العمليات الجراحية كثافة للعقل كانت ولا تزال تركيز الانتباه. يمكنك الحفاظ على التركيز الأقصى لمدة تتراوح بين 20 و 25 دقيقة (تقنية hi Pomodoro) ، وخلال هذا الوقت سوف يلتهم الدماغ أكبر قدر من الجلوكوز كما سيتناوله ليوم كامل من الراحة الذاتية. معالجة البيانات الجديدة عملية كثيفة الاستخدام للموارد. وأحد الأهداف الرئيسية للدماغ هو إنقاذ هذه الموارد نفسها. هذا يرجع إلى عمل نموذجنا العقلي. وهناك نوع من مانع النفسية. يبدو شيء من هذا القبيل. تبدأ في تعلم شيء جديد. من الصعب تقديم شيء جديد وبسبب عدم وجود ديناميات ملموسة للتقدم ، يبدأ تقديرك لذاتك في الانخفاض بسبب فكرة "أنا غبي". يتم ترتيب نفسيتنا بطريقة تعتمد على الموقف برمته على احترام الذات ، وموقفنا ، بدوره ، يعتمد على نجاحنا في المجتمع. ومن أجل عدم كسر المصاعد الاجتماعية الأساسية على التبعيات التكيفية ، يبدأ عقلك في مقاومة الأنشطة التي تقلل من احترام الذات. نتيجة لذلك ، ترغب في مشاهدة مسلسل تلفزيوني ، وقراءة habr ، والذهاب لتناول القهوة ، والجلوس في اجتماعي. الشبكات ، الخ أي شيء ، فقط لعدم تعلم نظرية مجال Landau. أو إصلاح الخلل الذي يصعب إعادة إنتاجه. أو ... اقرأ رمزًا منخفض الجودة يصعب اكتشافه. مثال رائع على كيفية تصرف الدماغ وفقًا للقيود في هذا المجال هو أن الأشخاص الذين تتراوح أعمارهم بين 70 و 80 عامًا والذين يتنقلون فارغًا لا يريدون تعلم هاتف ذكي أو زرين على مكنسة كهربائية روبوت. الموارد تنفد. الدماغ يقطع بشكل يائس عملية التعلم ويعمل على الإبهام. هناك الكثير من هذه الموارد بينما كنت شابًا. مع مرور الوقت وكبر ، تصبح أقل وأقل. انها تعمل خطيا جدا. لحسن الحظ ، يقابل ذلك القوة المتزايدة لشبكاتنا العصبية. ما لم نتحدث عن التدهور المستهدف المباشر ، بالطبع.

بعض الصور النمطية


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

إن المبرمج الفائق الكفاءة الذي يكتب دون تنسيق وتوحيد هو في الواقع فائق الكفاءة في أمرين:

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

لماذا هناك حاجة إلى نمط الرمز


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

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

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

3. يزيل الاعتماد على التفاصيل. لن تحتاج إلى التعثر باستمرار على أصالة شخص آخر وتصميمه الخاص.

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

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

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

كود الكمال


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

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

  • الرمز مجهول
  • رمز يقرأ مثل كتاب

كود مجهول


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

كتاب مستوى القراءة


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



وهذا واحد؟



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

أنماط التصميم


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

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

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

SOLID


SOLID هو اختصار للمبادئ الخمسة للبرمجة الموجهة للكائنات. ملاحظة: 5 مبادئ. وجوه المنحى. البرمجة. هذه ليست ممارسة. هذه ليست توصية. ليست هذه هي رغبة بعض المبرمجين القدامى في تعليم الشباب. , SOLID — . SOLID, 6 , , SOLID — . , , . — . , , : , , . . , .

? ? . , . code style, , SOLID. . . . — -. أي , , , , , , . , .

, code style community . , , , , . , . , . , . , .

code style? ! . , . , . . - open-source based . , PSR , - . symfony2 code style, PSR . , , PHP. , , .

?


, , ? — , , CodeStyle , . , PHPStorm , phpcs codestyle — . , . , , , .

, (), . , ? . . , . 2 Google Sheets . 23% . , 7 , , 20 . . , 20 . 21% . , , .

, , , , 90% , . ? Middle PHP Developer . onboarding , 3-. … - . . onboarding -, , . , 1- Junior PHP Developer. « » . success story.

, , , 25%, onboarding' ⅔. « » , . , . , , , phpstorm Sonar Light.

— , Senior , , . , , . Senior QA Engineer .

, 21-27%. , , - . , 5%, 5 ( , ), 5 69 . , 14 840 – 40 /. phpcs phpstorm? , 50 .

PS: , , ManyChat, .

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


All Articles