عندما تخرجت من الجامعة في عام 2004 ، لم تكن هناك فرق تطوير تقريبًا في مدينتنا. أين العمل ، ومن من تكتسب الخبرة العملية؟
كان الاختيار بسيطًا: "مشرف" أو "إلى موسكو". أو ترك المهنة.
الآن أقوم بتدريس تطوير الويب في الجامعات المحلية ، وأدير فريقًا كبيرًا ، ومن المهم بالنسبة لي أن يرغب الشباب الأذكياء في العيش في مدينتي ، حتى لا تعتبر مدينتنا "مكانًا فاسدًا".
جوهر المقال قصير
أنا وزملائي نعرف كيفية "تنمية" مبرمجي الويب من "الصفر تقريبًا" إلى مستوى محترف واثق (كبير / مهندس معماري).
نريد أن نخبرك كيف يعمل كل شيء ونشارك المواد والأساليب مع المجتمع.
هذه المقالة مكتوبة للطلاب والمبتدئين ومطوري الويب المتزايدين.
فيما يلي وصف "مسار تطوير مطور الويب" ، ومستويات الكفاءة "متدرب" ، و "مبتدئ" ، و "متوسط" ، و "كبير" ، و "مهندس معماري" ، كما أراها ، مع إعطاء أمثلة على مهام الاعتماد.
هرم قدرات المبرمج أو "ما يتم تنزيله في البداية"
كيف تصبح مبرمج ويب جيد؟ هل أحتاج إلى إنهاء "علوم الكمبيوتر" في جامعة جيدة؟ أم الدورات الشهرية كافية؟ أو "بكتاب وفأرة" هل يمكنك دراسة كل شيء؟
ثلاث "ركائز" تقوم عليها مهنة أي مطور في أي مجموعة تقنية هي الخوارزميات وقواعد البيانات والبرمجة نفسها (اللغة + أنماط OOP +).
ما هي الخوارزمية؟
التناظرية "اليومية" القريبة للمهارة التقنية لـ "الخوارزمية" هي إصلاح المروحة. ماذا لو لم تدور؟ افحص / غيّر المقبس ، ثم لف الشفرات يدويًا ، ثم "دق السلك".
المنطق واضح: "قسمته إلى أجزاء وفحصت كل جزء". من المدهش أن الكثير من الناس لا يعرفون كيف يفكرون بهذه الطريقة. هذا في دم مبرمج حقيقي.
قاعدة البيانات
دورة DB هي واحدة من الدورات الرئيسية ، مثل الفيزياء للمهندس. أما النبأ السيئ فهو أنه غالبًا ما يتم تعليمهم بنفس القدر من السوء: يتم اختزالهم في "إعادة سرد الفقرات".
كل من النظرية والتطبيق مهمان في DB. يجب أن يكون المبرمج قادرًا على كتابة الاستعلامات وفهم منطق ORM وتصميم الهيكل.
ما هي التقنيات التي يحتاج المبرمج إلى معرفتها؟
ماذا تتكون مهنية المطور؟ يشار إلى الوقت التقريبي للتطور للمسار الكلاسيكي للتطور (بدءًا من الجامعة).
يتم تدريس الخوارزمية "وفقًا للعقل" في المدرسة / الجامعة. يستغرق ذلك من عام إلى عامين ، وهذه الفترة تحدد ذروة الإقلاع الاحترافي في المستقبل. إذا كنت لا تتقن الخوارزميات ، فلن تكبر أبدًا.
يمكن تعلم ميزات لغة معينة بسرعة كبيرة. إذا كنت تتعلم لغة ثانية أو ثالثة ، فستحل مشكلتك الأولى ذات المغزى في غضون أسبوع. لكن "أنا أعلم تمامًا" سوف يستغرق عامًا على الأقل من الممارسة.
غالبًا ما تشتمل الأطر على مئات الوحدات / الفئات / الامتدادات وتتطور باستمرار. سيستغرق إتقان إطار العمل عدة أشهر على الأقل.
يتبع العديد من الأشخاص الذين علموا ذاتيًا المسار "السهل" ، ولكن الخطأ: بدلاً من الخوارزمية ، يبدأون في تعلم إطار العمل. وبعد شهرين ، أعلن الممارسون أنهم يستطيعون البرمجة. فشلوا في المقابلات الجادة في غضون 10 دقائق بعد البداية.
تقنيات محددة (مثل AJAX ، وعرض خادم JS ، والدفع والسحب ، وموازنة الحمل عبر المجموعة الجغرافية ، وتنميط الاستعلامات الطويلة في xhprof ، وقوائم انتظار الرسائل ، وقواعد بيانات NoSQL) لا حصر لها. يمكنك تعلمهم إلى الأبد.
يجب عبور هذا الهرم "من الأسفل إلى الأعلى". إذا بدأت بإطار عمل وكتبت سيرة ذاتية لطيفة ، ولكن لا تعرف كيف يختلف عمل "bare JS" أو "كيف يختلف طلب الحصول على المنشور" ، فلن تكون محترفًا.
ما هي المهام التي يجب حلها؟
المرحلة الأولى هي "البداية". أولاً ، أنت بحاجة إلى مهارة الحل الواثق والصحيح للمهام البسيطة نسبيًا. غالبًا ما تكون هذه مشاكل رياضية أو رياضية أو منطقية.
بالنسبة لمهارة "أكتب رمزًا بسيطًا بسرعة" ، فأنت بحاجة إلى حل أي من المجموعات الكلاسيكية لمشكلات البرمجة في أي لغة برمجة. على سبيل المثال ، Zlatopolsky .
قد يبدو الأمر غريبًا بالنسبة لك في حل 1000 مشكلة مملة ، لكن كل مبرمج جيد فعل ذلك في بداية رحلته. شخص ما - في المعهد ، شخص ما في المدرسة ، سيقوم أطفالنا بذلك في رياض الأطفال.
هذه الطريقة في التدريس من قبل الأطباء تسمى "طريقة الرصاص w * py." سامحني لكوني وقحًا ، لكن لا يمكنك التخلص من الكلمات من الفن الشعبي.
المرحلة الثانية هي "الممارسة".أنت بحاجة إلى كتابة رمز يمكنك اكتشافه في غضون عام. لذلك عندما تظهر متطلبات جديدة ، لن تضطر إلى إعادة كتابة كل شيء من البداية. لذلك عندما ينمو المشروع 100 مرة ، يظل "مدعومًا". لذلك عندما يضيفون المبرمجين إلى الفريق ، فإنهم لا يعضونك بأسلوب غريب.
هذا انتقال صعب للغاية. العديد من المبرمجين لا يفعلون ذلك أبدًا: فهم يصبحون مطوري "برنامج واحد" ، أو يكتبون دائمًا مشاريع لا تزيد عن 200 سطر. هذا ليس بالمستوى الاحترافي
للتعلم ، تحتاج إلى حل المشكلات الكبيرة في الفريق وقراءة الكتب المناسبة بشكل متوازٍ. على سبيل المثال ، "الكود النظيف" لروبرت مارتن .
"المهام الكبيرة" هي خدمات حقيقية يستخدمها الأشخاص بفريق مكون من شخصين على الأقل وآلاف الأسطر من التعليمات البرمجية. مثل هذه المشاريع تشكل متخصصا واثقا.
المرحلة الثالثة هي "الإتقان". إنه ينطوي على إتقان أطر محددة داخل مجموعة التكنولوجيا المختارة. يجب أن تتعلم كيفية حل المشكلات الحديثة الحقيقية على مستوى عالٍ.
الكتاب الأصعب والأكثر فائدة هو أنماط تطبيقات مؤسسة مارتن فاولر . كما يجب قراءته بعد حوالي عام ونصف من العمل في المهنة.
لاجل ماذا؟ هل يمكنني إنهاء دورة "مطور الويب" لمدة 3 أشهر؟
من المدهش أن يأتي "نوع من المبرمجين" إلى المقابلات. لديهم دورات ووظائف متعددة ومحافظ مع مواقع ويب جميلة تحت حزامهم (طريقة غريبة ، كما لو كنا نبحث عن مصمم ويب).
في الوقت نفسه ، غالبًا ما لا يعرف الأشخاص إجابة أبسط سؤال مثل "ما هي ملفات تعريف الارتباط" أو "كيف يعمل تحميل الرسائل في موجز فكونتاكتي" ، فليس لديهم حتى إصدارات.
يعرف المبرمج الجيد النظرية ويطبقها عمليًا ، ويفكر دائمًا في "كيفية القيام بها بشكل صحيح". لن يوصلك "الحبل الشوكي" و "نسخ أجزاء من التعليمات البرمجية من Google" بعيدًا. أنت بحاجة إلى قاعدة وممارسة.
كيف تحصل على هذه "القاعدة"؟ أين المكان المناسب للدراسة؟ هناك طريقتان. الأول هو 4-5 سنوات في جامعة جيدة. والثاني هو بضع سنوات من الدراسة الذاتية والممارسة المستمرة. يمكنك أن تصبح مبرمجًا قويًا بدون تعليم متخصص إذا كان لديك رأس ناصع وقلب مفتوح وأنت نفسك مستعد للعمل بجد.
الدورات القصيرة مفيدة لاكتساب المعرفة الأساسية وفهم "أين تحفر بنفسك". لن يصنعوا محترفًا.
مصفوفة الكفاءة. متدرب - مبتدئ - متوسط - كبير - مهندس معماري
نعتقد أن المصفوفة الخاصة بنا هي إجابة السؤال "كيف تنتقل من مبتدئ إلى خبير تطوير ويب".
في عالمنا ، يتعامل المطور بشكل أساسي مع مهام الواجهة الخلفية ، ولكن لا ينبغي أن يخاف من الواجهة الأمامية والإدارة (هناك متخصصون ضيقون في المهام الشريرة).
تتوفر هنا مصفوفة كاملة مع عينة من أسئلة الشهادات.
هذا جدول مقسم إلى درجات (متدرب ، مبتدئ ، متوسط ، كبير). تحتوي كل درجة على مجموعة من الكفاءات الفريدة. يتم تجميع الأسئلة حسب مجال الخبرة (PHP و SQL و Frontend وتقنيات الويب بشكل عام وإدارة الخادم)
المتدرب
في البداية يجب أن يكون المتدرب قادراً على:
- يميز بثقة ملفات تعريف الارتباط من الجلسات ؛
- فهم حدوث عملية معينة على الخادم أو في المتصفح ؛
- لكتابة مهمة إدارة بيانات بسيطة في PHP بدون أطر عمل الخادم. على سبيل المثال ، "الاحتفاظ بقاعدة بيانات للمجموعات والطلاب مع التحرير والحذف والإنشاء والعرض" ؛
- رتب بشكل لائق نتيجة عملك.
المتدرب يدرس. وتتمثل مهمته الرئيسية في اكتساب المعرفة وحل المشكلات تحت الإشراف و- الحصول على لقطات كبيرة.
يقوم كل متدرب تقريبًا بحذف قاعدة ، أو تفويت نافذة ، أو يعيد حل مشكلة طويلة. بالطبع ، لا ضرر من المشاريع القتالية.
الأخطاء جزء طبيعي من التعلم.
نجارة
جونيور قادر على حل المشاكل بشكل مستقل. غالبًا ما يستشير كبار السن ، لكن الأسئلة التي يطرحها ليست متدربًا على الإطلاق.
ما يجب أن يكون جونيور قادرًا عمليًا على فعله في البداية:
- إعادة كتابة (وهذا يعني الفهم التام) للترخيص على الموقع ؛
- قم بتحرير الإعدادات وكود إطار عمل الدلائل والأخبار والنماذج بثقة ؛
- جمع واجهات إدارة بيانات بسيطة ومواقع كاملة في الإطار ؛
- اكتب تكاملًا بسيطًا مع واجهة برمجة تطبيقات خارجية.
الأوسط
الأوسط متخصص قادر على حل أي مشكلة صناعية نموذجية بنفسه.
عمليا ما يجب أن يكون Middle قادرًا على فعله في البداية:
- العمل بتفويض خارجي (سجل الدخول من خلال مزود خارجي أو اجعل الكود الخاص بك مزودًا للترخيص) ؛
- برمج بثقة واجهات المتاجر العامة على الإنترنت أو الأسواق أو بوابات الإنترانت (حسب المواصفات) ؛
- جمع واجهات إدارة البيانات المعقدة والأقسام على الإطار ؛
- كتابة عمليات تكامل معقدة مع واجهات برمجة التطبيقات الخارجية وتنفيذ خدمات الويب.
أول
يعرف Senior "مجموعته" تمامًا ، ويتعلم بسهولة ويطبق التقنيات الجديدة ، ويعمل كموجه.
على سبيل المثال ، ما يجب أن يعرفه كبير السن نفسه ويكون قادرًا على فعله في مجموعة "العمل مع الخوادم و Linux".
- بناء نظام نشر غير نمطي
- العمل مع الخدمات المصغرة.
- تنظيم اختبار الحمل
- تكوين التكامل المستمر
- تزامن الملفات وتكرار البيانات
- قم ببناء مجموعة تتحمل الأخطاء وعالية التحميل باستخدام إطار عمل Bitrix وبدونه.
- ELK / أنظمة التسجيل والتحليل الأخرى
- خوادم طابور Gearman / RabbitMQ وبناء الأنظمة الموزعة
عادة ، يلعب Senior دور القائد الفني لفريق التطوير.
مهندس معماري
المهندس المعماري هو المستوى التالي من التطوير للمتخصص ، عندما يفكر في هندسة المشاريع الكبيرة ويقود تنفيذها. إنه ليس تقنيًا فحسب ، بل مدير مشروع أيضًا.
يلعب هؤلاء المتخصصون دورًا رئيسيًا في المشاريع المعقدة تقنيًا وتنظيميًا.
تحدد جودة المهندس المعماري قدرة المشروع على الإنجاز في الوقت المحدد وتطويره لسنوات عديدة متتالية.
إدارة تطوير المبرمجين
كل شهر ، مع كل مبرمج ، نعقد "اجتماع تخطيط التنمية" بشكل فردي ونتحدث عن مواضيع أخرى حول العمل. ويشارك رئيس القسم و / أو قائد التكنولوجيا و / أو المرشد.
خلال هذه الاجتماعات ، نحدد معًا أولويات التطوير - لاجتياز اختبار الكفاءة المخبري أو الشفوي.
كيف يتم ترتيب فحص المستوى (الشهادة)؟
ما هو التصديق؟ هذا إجراء لتأكيد مؤهلات المبرمج. يمر جميع المبرمجين به. تشمل الشهادة العمل المخبري والامتحانات الشفوية.
نتيجة للتصديق ، تظهر كلمة "نعم" مقابل الكفاءات المؤكدة في مصفوفة الكفاءة. يؤدي هذا إلى زيادة الدرجة ، على سبيل المثال ، "متدرب -54٪" → "مبتدئ -27٪".
كيف تسير الشهادة؟
تشمل الشهادة النظرية (الامتحان الشفوي) والممارسة (العمل المخبري). الهدف هو "إغلاق" العديد من الكفاءات في المصفوفة ، وتأكيد المستوى ، والحصول على مهام جديدة وزيادة الرواتب.
لا يمكن إجراء التمارين العملية بشكل صحيح إلا إذا درست وفهمت النظرية. الغش والغش غير مقبول ولن يفوت المرشد الاختراق.
يتم إغلاق العديد من مجموعات مصفوفة الكفاءة عن طريق الممارسة ولا توجد أسئلة نظرية بشأنها.
نظرية. امتحان شفوي
يجب تأكيد الكفاءات التي لا يغطيها العمل المخبري في امتحان شفهي.
لكل كفاءة ، نسأل حوالي 5 أسئلة. بطريقة ودية ، تحتاج إلى الإجابة على كل شيء أو كل شيء تقريبًا. مدة الامتحان الشفوي تعتمد على المستوى ، عادة من ساعة إلى ساعتين.
ممارسة. يعمل المختبر
يغطي العمل المخبري العديد من الكفاءات في وقت واحد. بعد الانتهاء من العمل المخبري ، يتم احتساب هذه الكفاءات على أنها مؤكدة ولا تدخل في الاختبار الشفوي.
ينتهي العمل المخبري بتقرير. يمكن أن يتضمن التقرير عرضًا توضيحيًا ومراجعة التعليمات البرمجية والأسئلة الشفوية. تعتمد مجموعة الفحوصات على المختبر نفسه.
الصياغة التقريبية للمهام
لقد قمنا بتطوير حوالي 20 مهمة (نسميها عادة "العمل المخبري" للطلاب). عدة - سننشر.
فيما يلي أمثلة على مهام بسيطة.
المهمة 2 أ. "الويب الأساسي". دعنا نطبق CRUD في PHP خالص.
الكفاءات:
- PHP: مصادقة الموقع والترخيص
- PHP: معالجة نموذج الملاحظات مع حفظ البيانات والتحقق من صحتها
- الواجهة الأمامية: إنشاء نماذج html
- الواجهة: بناء جملة CSS والمحددات ، وفهم أوزان المحددات
- SQL: أساسيات Mysql
- SQL: أنواع البيانات
- PHP: تركيب لغة PHP
الجوهر:
- إنشاء مستودع على bitbucket وتنفيذها ؛
- قم بعمل فرع على الفور وسحب الطلب ؛
- قم بتثبيت المكون الإضافي الإحصائي في PhpStorm ، الحد الأقصى لعدد الأسطر للمشروع بأكمله هو 1500:
- إنشاء الجداول اللازمة من خلال PhpStorm وتعبئتها بالبيانات ؛
- إنشاء صفحة المصادقة ؛
- قم بإنشاء صفحة باستخدام نموذج ملاحظات ، والذي يحتوي على: حقل نصي ، حقل نص متعدد الأسطر ، أزرار اختيار ، مربعات اختيار ، قائمة منسدلة ، زر إعادة تعيين النموذج ، زر إرسال النموذج ؛
- نموذج الملاحظات متاح فقط للمستخدمين المصرح لهم ، ومعيار القبول هو أنك قمت بتسجيل الدخول إلى النظام ؛
- تم وضع كل شيء بشكل جميل ، اعرض مثالاً على استخدام الأنواع الأساسية من المحددات: id ، class ، attribute ، pseudo class ، pseudo-element ؛
- يجب معالجة كلا النموذجين بدون JS ؛
- تحقق من خلال PhpStorm أن البيانات يتم إضافتها إلى الجدول.
التحقق من:
- يتم فحص جودة تحلل php و js و css ؛
- القدرة على توزيع المسؤولية وتحديد التبعيات الصحيحة بين مكونات MVC / ECB ؛
- وصول الأمن)؛
- الأمان (XSS ، حقن SQL) ؛
- صحة عمليات إعادة التوجيه ؛
- وحدة أسلوب الترميز.
تطوير مهمة
المهمة 2 ب. تطوير واجهة CRUD في PHP.
الكفاءات:
- 3 طرق لتوصيل برنامج نصي
- إنشاء نماذج HTML
- بناء جملة CSS والمحددات ، وفهم أوزان المحدد
- JS: المشغلين والوظائف
- تصحيح أخطاء JS باستخدام وحدة تحكم المتصفح
- أساسيات Mysql
- أنواع البيانات
الخلاصة - نواصل العمل على الموقع من المهمة 2 أ:
- قم بإنشاء لوحة إدارة مصغرة:
- قائمة نماذج الملاحظات المقدمة ؛
- يجب فرز القائمة حسب تاريخ الإرسال ، والقائمة الجديدة - أولاً ؛
- يمكن "تحديث" القائمة ، ويتم ذلك باستخدام AJAX ؛
- نصيحة: للاختبار التفاعلي لاستعلامات قاعدة البيانات ، استخدم وحدة تحكم قاعدة البيانات في PhpStorm ؛
- يمكن إزالة النموذج المقدم من لوحة الإدارة ، كل ذلك على AJAX ؛
- بهذه الطريقة لتوضيح جميع طرق توصيل JS ؛
- يمكن تحرير البيانات المقدمة (استخدم نموذجًا تم تطويره بالفعل ، بدون AJAX) ؛
- يمكن استخدام jQuery.
- أدوات مطور مفتوح (يفضل Firefox):
- العثور على مصدر الطلب من سجل الطلب ؛
- تعيين نقطة توقف ، وتحفيز تنفيذ التعليمات البرمجية ، وفحص تنفيذ التعليمات البرمجية خطوة بخطوة ؛
- أثناء التنفيذ خطوة بخطوة ، عرض قيم المتغيرات من خلال المفتش المقابل ؛
- أضف ساعة
- استخدم وحدة التحكم للوصول إلى المتغيرات في النطاق الحالي.
التحقق من:
- يتم فحص جودة تحلل php و js و css ؛
- القدرة على تمييز وتحديد التبعيات الصحيحة بين مكونات MVC / ECB ؛
- وصول الأمن)؛
- الأمان (XSS ، حقن SQL) ؛
- وحدة أسلوب الترميز ؛
- جميع النقاط المتعلقة باستخدام أدوات المطور للتوضيح.
فيما يلي مثال على " كفاءات متوسطة الصعوبة"
المهمة 10. كشط الويب
:
- التعبيرات العادية
- طلبات HTTP من الخادم ، cURL
- TODO: كتابة أدوات مساعدة لوحدة التحكم (ونصوص لمرة واحدة) استنادًا إلى قاعدة رمز Bitrix Framework
- TODO: أضف CRON
الجوهر:
- قم بتحليل الموقع ، وفكر في هياكل البيانات المناسبة للمعالجة الآلية
- تحليل الموقع إلى هذه الهياكل
- تصميم كبرنامج نصي CLI
- إعدادات لتنفيذ القدرة على التحليل ليس كل شيء ، ولكن فقط ما يحتاجه المستخدم
التحقق من:
- صحة بيئة CLI
- تحلل regex
- فعالية التكلفة عند الطلب
- معالجة الخطأ
- إمكانية التحليل المتوازي لعدة كائنات في وقت واحد
- العمل في وحدة التحكم والوضع التفاعلي
- * العمل في وضع خدمة خارجية يمكن الوصول إليها عبر HTTP ، مع دعم قوائم الانتظار
عرض وتنزيل مصفوفة الكفاءات - 2020
أنا متأكد من أن هذه هي الطريقة ، خطوة بخطوة ، مع موجه ومراجعة مستمرة للكود ، من خلال سلسلة من الشهادات ، يتطور المطور المناسب "من متدرب إلى مهندس معماري".
يتشكل الماس تحت الضغط.