مرحبًا البرمجة موضوع معقد ، وتطوير البرمجيات الصناعية معقد للغاية. في صناعة تكنولوجيا المعلومات لدينا ، ليس من النادر جدًا سماع أسئلة من زملائي الصغار في سلسلة "كيف أتطور؟" ، "ماذا يجب أن أفعل لأصبح محترفًا عالي المستوى وبأسرع ما يمكن؟" ، "ماذا يجب أن أفعل إذا لم أتمكن من التطوير ، لا توجد مشاريع مثيرة للاهتمام؟ "،" ماذا يجب أن يعرف الوسط؟ ". إذا كان لديك من 0 إلى 3 سنوات من الخبرة في مجال تكنولوجيا المعلومات ، فأنت متخصص في المبتدئين (أو على وشك أن تصبح واحدًا) وتضع أهدافًا مماثلة للنمو المهني والوظيفي ، وتبحث عن الطرق الصحيحة لتحقيق هذه الأهداف - هذا المنشور لك ، جيد يشكو تحت القط. ربما سيكون أيضًا مهتمًا لقادة الفرق والمديرين ، بشكل عام ، لجميع المشاركين في تدريب وتطوير المتخصصين.
في البداية ، اسمحوا لي أن أقدم نفسي. اسمي أناتولي ، وإذا حذفت المنشورات والرتب ، فأنا أولاً مطور ، لأنني بالمعنى الواسع للكلمة التي شاركت فيها في التطوير والبحث وإدارة المطورين طوال حياتي المهنية. خبرتي في الصناعة هي 10+ سنوات. إنها متنوعة تمامًا وتمتد من الأنظمة المالية ومواقع الويب إلى المنتجات والخوارزميات وأنظمة التعلم الآلي. الشيء الرئيسي ، على ما يبدو لي ، هو أنني كنت في مكان القراء المستهدفين لهذه المقالة وبدأت بعد ذلك في الانخراط في جوانب مختلفة من تطوير المبرمجين الشباب. في الوقت الحالي ، مرّ مني أكثر من 24 مطورًا ومتدربًا مبتدئًا. لذلك ، أعتقد أن لدي ما أتحدث عنه. هناك عدد كبير من المواد المتعلقة بالموضوع قيد المناقشة والتي يمكن العثور عليها مخصصة إما لمواضيع فنية بحتة ، أو ، على سبيل المثال ، لمتابعة سكروم بشكل شبه أعمى. (مثل - "إذا كنت لا تعرف ما يجب فعله ، فحاول العمل على سكروم وكل شيء سيؤذي" :)) كما لو كان ذلك من واقع وإحصائيات الفرق الفردية والمتخصصين ، فهو بعيد عن كل الأشياء التي تشكل ممارسة وثقافة تطوير البرمجيات. لذلك ، التفكير في ما أكتب عنه ، قررت أنني لن أكرر هذه المعلومات ، ولكن بدلاً من ذلك سأحاول التركيز على الموضوعات التي لم يتم الكتابة عنها أو التحدث عنها كثيرًا. دعنا نذهب!
نعم ، كإخلاء مسؤولية ، أود أن أقول إن الموصوف هو رأيي الشخصي ، الذي تؤكده الخبرة والمعرفة النظرية ، التي تم اختبارها على هذه التجربة. قد لا يتوافق مع الواقع الذي تجد نفسك فيه ، لذا دعني أقدم لك النصيحة الأولى من المقالة على الفور: أولاً وقبل كل شيء ، في أي مواقف صعبة ، من الجدير تحليل تصميمها قبل تطبيق أي ممارسات وأنماط معروفة لك مثل "إذا ، ثم ". التفاصيل مهمة للغاية. الآن دعنا نذهب! :)
1. تخصص واسع مقابل ضيق
غالبًا ما يسأل الأشخاص الذين يرغبون فقط في تعلم كيفية البرمجة أنفسهم ما هي التكنولوجيا التي يختارونها للدراسة ، وفي الواقع ، بأي لغة ، تقريبًا ، "من الأفضل كتابة التعليمات البرمجية". يفكر الأشخاص الذين يحصلون على وظيفتهم الأولى في ما إذا كانت التكنولوجيا الحالية ستكون واعدة ومتطلبة في غضون عامين وما بعدها. (البعض - لا يفكرون على الإطلاق ، ولكن هذا في الغالب ليس جيدًا) " أفضل " و "أكثر واعدة " هنا مفاهيم ذاتية للغاية ، محددة على مستوى المشاعر والفوائد المحتملة لمزيد من المهنة. بسرعة كافية ، قد يتضح للقادمين الجدد لتكنولوجيا المعلومات أن العديد من المشاريع تتم على عدد كبير بما فيه الكفاية من التقنيات ، ومن المستحيل معرفة كل شيء. فهل من الضروري مطاردة الأرانب؟
على سبيل المثال ، في السنة الأولى من عملي ، تلقيت تعليقًا قيِّمًا من قائد فريقي أنه من الضروري التركيز على مجال معين ، لأن المتخصص إما متخصص في شيء ما أو ، بشكل تقريبي ، ليس متخصصًا في أي شيء. لمعرفة شيء على مستوى عالٍ إلى حد ما ، تحتاج إلى القيام بذلك باستمرار وبعمق في التفاصيل - الحقيقة الخالصة ومن الصعب الجدال في ذلك. في الواقع ، تؤكد الممارسة ذلك: معظم المتخصصين الذين أعرفهم (الذين يمكن اعتبارهم كذلك) هم متخصصون ضيقون. والبعض منهم يعرف ببساطة موضوعهم ببراعة ، وبالتالي يحل مشاكل الانحدار غير المسبوق داخله. عند هذه النقطة يمكن للمرء أن يقول "حسنًا ، هذا يعني أن المبدأ صحيح - كل شيء يتناسب معًا" ، إن لم يكن لبضعة. والحقيقة هي أن نطاق المشاريع التي سيكون فيها مثل هؤلاء المتخصصين الضيقين مطلوبين أضيق بكثير من ، بالطبع ، بين المتخصصين من ملف شخصي أوسع. لقد التقيت أكثر من مرة بمشاريع تكون المشاركة فيها مستحيلة ببساطة دون توفر المعرفة الواسعة في العديد من التقنيات في وقت واحد. اكتشف الأشخاص الذين امتلكوا هذه المعرفة أبوابًا جديدة يتعذر الوصول إليها في بعض الأحيان. والمشاركة في مشروع ممتاز وفريد من نوعه اختبار مهني جاد ومفيد للغاية يمكن أن يجلب لك الكثير من الخبرة القيمة والفوائد الأخرى. والثاني هو أن عالم التكنولوجيا يتغير باستمرار ويقيد نفسه بشكل صارم بمعرفة تقنية أو اثنين أو PL ، يمكنك بطبيعة الحال أن تبدأ في فقدان ميزتك التنافسية وأن تصبح متخصصًا أقل طلبًا.
باختصار ، يمكننا أن نقول هذا باختصار: لا تخف من تجربة التقنيات التي تحبها! لا يمكنك أن تصبح خبيرًا في 3 لغات برمجة في وقت واحد ، أو في 5 أطر ، ولكن معرفة أساسياتهم وهيكلهم الداخلي ميزة تنافسية خطيرة ، إذا كنت تحصل على وظيفة تتطلب معرفة قوية بتكنولوجيا واحدة و عدة أساسيات أخرى. الشيء الرئيسي هنا هو القياس والقيود. من المهم تحديد أولويات التكنولوجيا التي تقضي معظم الوقت في دراستها ، وما تبقى لمعرفة التكنولوجيا.
2. المجال الوظيفي
من التخصص في لغات البرمجة وتقنيات التطوير ، ننتقل بسلاسة إلى الشيء المهم التالي - المجال الوظيفي . من السهل إعطاء مثال من الحياة: تمامًا مثل الأطباء لديهم أطباء أسنان ، وهناك أطباء قلب ، لذلك هناك تخصص بين المطورين ، وهذا لا يتعلق فقط بالتقنيات المذكورة سابقًا أو لغات البرمجة. يتخصص المطورون بطرق مختلفة: يتعامل شخص ما مع واجهات المستخدم ، ويعالج شخص ما البيانات على مجموعات ، ويتعرف شخص ما على الصور ، ويكتب شخص ما منطق روبوت اللعبة. الكثير من الأمثلة.
ربما في أول سنتين من العمل ، أو حتى أكثر من ذلك ، لن تزعجك مسألة التخصص ، حيث إن دخول المشاريع والتقنيات التي تدخل فيها سيستغرق وقتًا طويلاً ، وهذه المشكلة لن تكون ذات صلة بطريقة طبيعية. ومع ذلك ، بدءًا من لحظة معينة ، ستشعر بسهولة في حل المزيد من المشاكل المعقدة في منطقة معينة ، وسيتم تحديد النتيجة بطرق عديدة ليس حسب درجة التفاصيل ، على سبيل المثال ، أنت تعرف المكتبة القياسية لتلك اللغة التي أنت تعمل ، أو كيف تمتلك ببراعة البنية المتقدمة لهذا PL ، وتجربتك في مجال وظيفي معين. رسومات الحاسوب ولغويات الكمبيوتر والبرمجة المالية - كل هذه مجالات محددة للدراسة واكتساب الخبرة العملية التي تستغرق أشهر وسنوات. إذا حددت هدفًا لتصبح متخصصًا رفيع المستوى ، فابحث عن المنطقة التي تعجبك حقًا. وإذا كنت تحب ذلك حقًا - قم بتطويره والعمل به بكل سرور ، وسوف ينجح كل شيء!
3. الموجهون والدراسة الذاتية
لا يوجد مشروعان متطابقان تمامًا. لا توجد فرق متطابقة. في بعض الأحيان لا يوجد حل واحد صحيح ، سواء كان قرارًا عالميًا بشأن بنية جزء كبير من النظام أو قرارًا محليًا حول كيفية تخزين الملفات في المستودع. يواجه أخصائي مبتدئ العديد من الأسئلة والشكوك. الأسئلة التي ، بسبب قلة الخبرة ، قد لا يتم الرد عليها على الفور. لقد حصلت على رمز جاهز ولا يعمل على الإطلاق ، على الرغم من أن الزملاء الآخرين بخير ؛ ينتهي إجراء تثبيت الخدمة في حالة واحدة من أصل 6 بخطأ - ويقتل نفسك على الأقل ، ولكن ليس من الواضح السبب ؛ لا يمكنك تكوين جزء الشبكة من الخدمة ، على الرغم من قيامك بكل شيء وفقًا للتعليمات وإعادة قراءته 7 مرات بالفعل. تنشأ مثل هذه المواقف للمطورين والمختبرين والمشرفين باستمرار. يمكن أن تختلف درجة صعوبة المشاكل من مستوى "ربما تحتاج إلى الحفر في مكان ما هناك" إلى "مكان الحفر - ليس واضحًا على الإطلاق". النصيحة الأولى المعروفة جيدًا والمقدمة من قبل محترفين من ذوي الخبرة (وربما سمعت منهم بالفعل) هي أنك تحتاج إلى تعلم كيفية التعامل مع المشاكل بشكل مستقل قدر الإمكان عندما تعلق بها. كقاعدة عامة ، من الضروري التركيز على العلاقة السببية وتعلم صياغة الأسئلة الصحيحة حول المشكلة. بادئ ذي بدء ، لنفسه وثانيًا لجوجل. لا يقتصر الأمر على أن "كل شيء لا يعمل" ، حتى إذا كنت متأكدًا من ذلك ، فحاول العودة "إلى البداية" للعثور على السبب الحقيقي للمشكلة. وعلى الأرجح ، أنت لست الوحيد الذي يعاني من مشكلة مماثلة ، فقط ابحث عنه بنفسك. علاوة على ذلك ، النصيحة البسيطة التالية: فقط بعد قيامك بعدة محاولات فاشلة وتحليل المشكلة بنفسك ، بعد أن أمضيت وقتًا طويلاً (عادةً ما يتم قياسه بالساعات ، وأحيانًا بالأيام) ، اتصل بزملاء كبار. لذلك لن تقضي وقتهم الثمين في حل مشكلة هراء ، والتي يمكنك أنت بنفسك حلها بسهولة باستخدام الكثير من المثابرة. بهذه الطريقة ، سوف تثبت أنك طورت النهج الصحيح لحل المشاكل. يتم حل العديد من المشاكل التي تبدو معقدة وغير مفهومة للوهلة الأولى عن طريق جوجل في المعنى الحرفي لمدة 5 دقائق.
لكن التحدث سهل ، ولكن في الواقع ، فإن المعرفة غير الكافية بتكنولوجيات التطوير ونقص الخبرة العملية سيكون عاملاً مؤلمًا للغاية. لذلك ، فإن المهمة الصحيحة رقم 1 هي دراسة تقنيات التطوير وأمثلة على استخدامها في وضع مكثف إلى حد ما. ومرة أخرى: من السهل القول ، ولكن في الواقع هناك المزيد من مواد التدريب على dofig ، ليست جميعها مفهومة ، وليست كلها ذات صلة ، ولا تغطي جميعها المشكلات التي يجب حلها عمليًا في المشروع. وهنا يمكن أن تساعدك البيئة . أن تكون في فريق من "الخبراء" الذين لا يمتلكون مستوى عالٍ من المعرفة فحسب ، بل يرغبون أيضًا في مشاركة هذه المعرفة بمهارة - هذا هو أفضل ما يمكن أن يكون في بداية مهنة. نعم ، هذا صحيح ، يجب عليك أولاً التركيز على الدراسة الذاتية ، ولكن بطريقة أو بأخرى ، سيكون لديك سقف طبيعي للسرعة. المرشدين الأكفاء سيساعدون في التغلب عليها. ومع ذلك ، قبل أن تلجأ إليهم ، اسأل نفسك السؤال التالي: هل أنت عالق بالتأكيد ولا يمكنك التقدم بشكل مستقل في حل المشكلة خطوة على الأقل؟
الإجمالي: ابحث عن وظيفة حيث يوجد أشخاص يعرفون الموضوع ويهتمون بجعلك تعرفه بشكل أفضل! سيسمح لك ذلك بزيادة مستوى خبرتك بشكل ملحوظ في وقت قصير إلى حد ما. تجنب الأماكن التي لا تكون فيها على استعداد لتبادل المعرفة. 4 سنوات من العمل في مثل هذا المكان تساوي سنتين (أو أقل) في مكان آخر.
4. لا توجد رصاصة فضية
العمل في صناعة تكنولوجيا المعلومات هو حوار مستمر ، نقاش ، أحيانًا صراع آراء ، وأحيانًا حرب مبادئ. صدقوني ، ستقابل الكثير من الناس الذين سيقنعونك بأنهم هم فقط الذين لديهم القرار أو الرأي الأكثر صحة ، يدعمون أو لا يدعمونه بالحقائق. في بعض الأحيان سوف يفجرك هذا الشعور أيضًا!
هل من الممكن أو المستحيل إكمال المهمة في الوقت المحدد؟ أيهما أفضل: التكنولوجيا أ أم التقنية ب للمهمة ج؟ ما هي المنهجية التي تستحق تطوير المشروع وتنظيم عملية العمل؟ هل الشفرة المكتوبة جيدة بما يكفي وهل حان الوقت لإيقاف تلميعها ، أم أنها لا تزال بحاجة إلى إعادة هيكلة؟ هل تغتنم الفرصة لتوسيع النظام من البداية ، حتى لو لم يكن التوسع متوقعًا ، ولا ترى الصورة الكاملة من مستوى المطور الصغير الخاص بك؟ كيف تقيم جودة المنتج وما هو دور المطورين في هذه العملية؟ وعشرات أو سؤالين متشابهين مختلفين.
في كثير من الأحيان ، من المستحيل إعطاء حل لا لبس فيه لهذه الأسئلة والعديد من الأسئلة الأخرى في حالة معينة. أود الحصول عليه ، ولكن في بعض الأحيان لا يكون مرئيًا بشكل موضوعي ، لأن مستوى عدم اليقين في المشروع يمكن أن يكون مرتفعًا جدًا. إلى حد ما ، يتعارض هذا مع ثقافة غير معلنة مقبولة على نطاق واسع في البرمجة: البحث المستمر وتقديم حلول أفضل باستخدام تقنيات أكثر تقدمًا. نحن نجبر أنفسنا بشكل غريزي باستمرار على اتخاذ قرارات تستند إلى بيانات غير مكتملة.
وهنا ، البرمجة في عالمها المصغر وتطوير مشاريع تكنولوجيا المعلومات على نطاق واسع تتوقف عن كونها أنظمة دقيقة تعسفية وتبدأ في أن تصبح فنًا. الفن مبني على المبادئ والأساليب ، فهو يحددها.
عند الانتهاء من مشروع آخر أو مهمة أقل ضخامة ، انظر للخلف وقم بالتحليل: ما هي المبادئ التي ساعدت هذه المهمة أو هذا المشروع على النجاح (أو العكس - zafeylyat)؟ هل كان الأمر يتعلق باختيار لغة البرمجة وكيف كانت تعمل بشكل رائع ، أو ربما كان مستوى التفاعل مع عميلك أو شريكك جيدًا للغاية بحيث يمكنك التعامل مع المهمة معظم الوقت دون إضاعة الوقت تكاليف الاتصالات؟ قم بالتحليل باستمرار ، وابحث عن مبادئ جديدة واستشر الموجهين حول كيفية رؤية وتعريف هذه المبادئ.
5. عن الشركات الكبيرة والصغيرة ، عن تكنولوجيا المعلومات وليس عن تكنولوجيا المعلومات
يرغب العديد من المحترفين الشباب في العمل لدى الشركات التي سمعوا عنها والذين يستخدمون منتجاتهم أو منتجاتهم. في بعض شركات Apple أو Google أو Microsoft (ظهر مصطلح جيد مؤخراً - "Guyandbuk") أو نظرائهم الروس (قدر الإمكان). إن بدء حياة مهنية في شركة كبيرة تجربة قيمة للغاية. (أنت تفهم هذا بشكل خاص في السنة الحادية عشرة من هذه التجربة ذاتها :)) لترى كيف تعمل شركة كبيرة من الداخل وكيف يتم تنظيم العمليات فيها - صدقني ، الأمر يستحق ذلك. على الأرجح ، من الصعب بالنسبة لي أن أتخيل شيئًا أفضل من مجموعة شركة تكنولوجيا معلومات كبيرة وفريق ذكي في بداية مسيرتي. ومع ذلك ، هناك دائما ولكن.
أول BUT هو أن "شركة كبيرة لتكنولوجيا المعلومات" تختلف تمامًا عن مجرد "شركة كبيرة" (خاصة في الواقع الروسي). إذا كان لديك خيار ، فانتقل إلى شركة تكنولوجيا معلومات صغيرة أو متوسطة الحجم أو انتقل إلى شركة كبيرة غير متخصصة في تكنولوجيا المعلومات (على سبيل المثال ، بنك أو شركة مالية أو تجارية أخرى) ، يجب أن تفهم العواقب المحتملة. وستكون العواقب في أسوأ الأحوال ما يلي: إذا أغلقت شركة تكنولوجيا المعلومات أو أردت تركها ، فأنت تغادر مع المعرفة والمبادئ. إذا كنت ترغب في المغادرة ليس من شركة تكنولوجيا معلومات إلى شركة تكنولوجيا معلومات ، فإن ذلك سيجعل الأمر أكثر صعوبة لعدد من الأسباب. قد يكون هذا هو الافتقار إلى الخبرة اللازمة وذات الصلة ، وخصوصية المشاريع وانتقائية المجندين وزملاء العمل لأماكن عملك السابقة (تذكر شركة Pearson Hardman من المسلسل الشهير الذي تم توظيفه فقط من جامعة هارفارد. هذه القصص ليست غير شائعة وفي الواقع. نحن نوظف فقط من شركات المواد الغذائية "، وما إلى ذلك). في الشركات التي لا تكون فيها تقنية المعلومات هي النوع الرئيسي للأعمال التجارية ، يدور كل شيء حرفياً حول هذا العمل. والنتيجة مهمة جدا ، وعملية تحقيقها أقل أهمية بكثير. لكن العملية الصحيحة هي التي تحدد المبادئ الصحيحة ، والتي تساعدك بعد ذلك على اتخاذ القرارات وإنتاج شيء عالي الجودة ومعقد للغاية في إخراج المشاريع المعقدة إلى حد ما. إذا كنت تنتج شيئًا عالي الجودة ومفيدًا - فهذا هو هدفك ، فكر في ذلك.
6. شركات الأغذية والتعاقد الخارجي
أحد المواضيع المفضلة لدي ، منذ أن عملت في الأول والثاني. استمرارًا لموضوع الانتقائية ، هناك رأي معين في الصناعة بأن العمل في شركات تكنولوجيا المعلومات الغذائية ليس فقط أكثر شهرة ، ولكن أيضًا من الناحية المالية ، ويأتي هذا أيضًا مع مجموعة من أكثر المشاريع إثارة للاهتمام التي يمكنك العثور عليها. العمل الاستعانة بمصادر خارجية في المشاريع ، وفقا لبعض الخبراء ، هو الطبقة الدنيا. هل هذا صحيح أم لا؟
سأجيب: لا. ليس بهذه البساطة.
الميزة الرئيسية لشركات الأغذية هي أن الشخص الذي يأتي إلى هناك لديه بالفعل فرصة اختيار مشروع / منتج أو مجال نشاط ، مع جميع العواقب التي تترتب على ذلك (على سبيل المثال ، القدرة على العمل في مهام فريدة ومعقدة حقًا). إحدى النتائج الرئيسية: ستقوم بتطوير منتجك ، مما يجعله أفضل كل يوم. لن يذهب دائمًا ببساطة بالطريقة التي تريدها ، ولكن هذا هو منتجك. أنت تؤثر بشكل كبير على نجاحه ، على الأقل على مستواك.
في شركات الاستعانة بمصادر خارجية ، كقاعدة عامة ، لا يملك الموظف مثل هذا الخيار ، وعلاوة على ذلك ، يضطر بشكل دوري للجلوس على الإبر بسبب هذا. ينخرط المندمجون والمتعاقدون الخارجيون في تلك المشاريع التي يدفعون مقابلها هنا والآن. لن تكون كل هذه المشاريع مثيرة للاهتمام لفئة معينة من المبرمجين. بالنسبة لموظف شركة الاستعانة بمصادر خارجية ، هناك دائمًا خطر أن تكون في مشروع غير راكد وركود تمامًا ، وغالبًا ما تكون الطريقة الوحيدة لتغيير المشروع هي مغادرة الشركة.
— legacy ( ), . — . 5 . , , , .
7. vs
. : . , . , , . , – . , ( ) , . , , , . , . , , () () . . ? – . – . , , 2 : ) ) ( ). : , . , . , , , , , . – .
: - ( - ) , - . - , ( — , ) – .
8.
. , , - . - , . , , , . . . , . , . — . .
— , , , , . , , , , ( ), : , — , , .
? , ? .
, ? : , , , , , , , .
9.
(, ) , backend . (, Web , ). - . , ? , . , . , — . — . , . : , , . . , . , , . . , : , , UX/UI — , , , , .
10.
: . . - : , .
, , . : 1.5-2 . , , , , . . , 1-2 , - . — 4 , ? : , B. , . , , . , . , , — , , . , , , , .
: 1-3 , , . : skills 3 — 1. , — 2. — 3. , , , , 4 , , .
الخلاصة
— , , . , . , , — . . , , ! , : ) hard skills ) c ) . , !
PS: . , , , .