ما هو هذا المقال حول
في الواقع ، فإن المقال يدور حول كيفية تغيير طريقة تفكيري مع تغيير المهنة ، وفهم السياق وما هي اللحظات التي يجب الانتباه إليها ، وإلى أي مدى يؤثر اختيار "ما يجب أن أعلمه" على السنوات اللاحقة في تطوري المهني الشخصي.
يجب أن أقول على الفور أنني لن أفكر ولا أجد أنه من المفيد البدء ، كما هو الحال في معظم المقالات ، حول لغة البرمجة التي يجب اختيارها. هذا لا معنى له. لا ، لا تختار لغة برمجة. في الواقع ، اخترت مستقبلك ، لا أكثر ولا أقل. يعتمد اختيارك المستقبلي على تطبيقك ونظامك الأساسي.
قليلا لنفسي
أصبحت مبرمجًا في أوائل عام 2016 عن عمر يناهز 35 عامًا ، هذا إذا نظرت إلى تاريخ النشاط في ملفي الشخصي في جيثب وقبلت أول وظيفة خطيرة. العمر لائق جدا لتغيير المهنة. نعم ، هذه ليست لحظة غير مهمة - لقد تركت التصميم. هذا في الواقع تغيير جذري للغاية ، ليس فقط لأنك تعاملت لأول مرة مع المهنة الإنسانية بدلاً من ذلك ، مع الصور والتصميم والتكوين ، وحتى قابليتها للاستخدام في حالتي ، ثم فجأة تقفز إلى الرمز والتكنولوجيا والتكنولوجيا والتجميع والقاعدة البيانات وهلم جرا. هذا هو مجرد غيض من فيض ، مرئية من الخارج. سأتحدث عن استنتاجات شخصية أعمق قليلاً في النص.
كيف حدث هذا ولماذا؟ هناك سببان - لم أتمكن من إدارة التصميم هذه المرة ، والاكتئاب سببان. لكي أكون مصممًا ناجحًا بقدر ما أريد ، كنت بحاجة إلى تأثير WOW ، وليس فقط UX منطقيًا ، وتركيبًا موجزًا ، وسيناريوهات تشغيل لاستخدام المنتج ، وبعض مهارات مدير المنتج مرة أخرى. نحن بحاجة إلى صور باردة ومثيرة. بالنسبة إليهم ، لم يكن لديّ ملكية كافية لتكوين اللون ، وإما بسبب الاكتئاب أو لسبب آخر لم أستطع إتقانه. وبعد ذلك ... أولاً ، أشاهد فيلم Ex Machina ، لقد حولني شيء ، وانضممت إلى دورة في التعلم الآلي من Andrew Ng. لقد أحببت ذلك حقًا ، على الرغم من ليالي بلا نوم وعينين حمراء في الصباح.
ثم اتخذت القرار الأكثر تافهة وأبسط في رأيي - لقد اتخذت الخيار الحتمي لحجم وجودة المعرفة في صناعة تكنولوجيا المعلومات الحديثة وقدراتي التي كانت لدي في ذلك الوقت. قررت التبديل تدريجياً من البرمجة الأمامية إلى الأمامية للتطبيقات المستندة إلى المستعرض في JavaScript. ومن هنا يمكننا أن نقول الطريق الحقيقي للتجربة والخطأ ، والمشي في أشعل النار وبدأت سلسلة لا حصر لها من الاكتشافات المدهشة.
لقد وصلت الآن إلى النقطة التي يمكنني من خلالها التعبير بشكل منظم عن أفكاري حول هذا الانتقال ، ما هي الحفر والحطام التي ينبغي توقعها على الطريق. آمل أن يكون الشخص الذي يواجه نفس الاختيار كما فعلت قبل بضع سنوات مفيدًا. لذلك المضي قدما!
عن أشعل النار وأخطاء المبتدئين
عندما غيّرت مهنتي ، لم أكن أعرف بعض الأشياء وأرتكبت بعض الأخطاء التي كان علي دفعها من خلال الأعصاب وليالي النوم والأموال.
أولاً ، كما أعتقد ، هناك نطاق معين يمكنك من خلاله تحديد مبرمج وربما شخص أيضًا. كل شيء مثير للاهتمام بالنسبة له في أحد نهايته ، فهو يريد مساعدة القضية المشتركة ، وفي الطرف الآخر ، سيركز تمامًا على شيء واحد ، وسيحفر خندقًا واحدًا لسنوات وعقود وهو على ما يرام (ربما). هناك وهناك مزايا وعيوب وعثرات تحتاج إلى معرفتها. أنا نفسي أنتمي إلى النوع الأول ، "النمر المجنون" ، لذلك يمكنني التحدث عنه. ولكن ما يهم هو فهم النوع الذي تنتمي إليه في أقرب وقت ممكن.
إذا كنت ترغب في البحث عن شيء واحد ، فمن غير المرجح أن تواجه مشكلات في العثور على وظيفة في سوق العمل المفتوح - حيث يتمتع المتخصصون الضيقون بخبرة متعمقة أسرع في مجال عملهم في نفس الوقت ، فمن السهل على صاحب العمل أن يأخذك لأنه يعرف ذلك أيضًا أكلت كلبًا على شيء واحد مهم جدًا له - على سبيل المثال ، تحسين الرسوم المتحركة للأزرار في متصفح على الموقع. لكن ليس بهذه البساطة. عند التعيين ، بطبيعة الحال ، سوف تكون سعيدًا للغاية ، ولكن قد تنشأ صعوبات أثناء العمل ، لأن الزملاء يتوقعون على الأرجح المشاركة في المنتج ككل وكدسته التكنولوجية بالكامل. الاستعداد للمساعدة ، بما في ذلك تجاوز نطاق واجباتهم المباشرة - للعمل دون مهمة تقنية محددة ، أو الاقتحام بمحل بقالة ، أو التحدث مع أحد مقدمي الدعم بلغته ، وما إلى ذلك. وهنا سيكون على الأرجح مكان واحد. على الأرجح لن تثار ، وأنت نفسك لن ترغب في ذلك. كما أفهمها ، فإن أولئك الذين يجلسون على حافة هذا المقياس يغيرون وظائفهم مرة واحدة في السنة أو سنتين من أجل فهرسة الأجور. لأن هذه هي الطريقة الوحيدة إذا كنت تعمل في المكتب. الطريقة الثانية هي العمل الحر مع الوصول إلى أسواق أكثر تطوراً ، ولكن في النهاية ، إذا كنت تحتاج حقًا إلى الكثير من المال ، فلا يزال يتعين عليك توسيع ترسانة المهارات الخاصة بك.
إذا كنت أكثر سعادة لمساعدة الزملاء ، فاستعد. بمجرد حصولك على ما يكفي (للتأجير الأول) لتتعلم شيئًا واحدًا ، فمع ما تقرره دخول السوق لأول مرة ، ستتعرض للكد من المكدس إلى التكدس من التكنولوجيا إلى التكنولوجيا. يمكنك أن تجد نفسك في دور المطورين ، مدير المشروع ، مصمم المنتج (وليس الشخص الذي يرسم) ، المهندس المعماري والشيطان يعرف من هو الآخر. سوف تحصل على تجربة متنوعة للغاية وسيكون لديك شيء لتخبره. وإذا انضمت إلى فريق جيد متعدد الاستخدامات مع منتج رائع وممتع - فاحفظي سبعة. المشكلة هي أن المشاريع تنتهي ، تفلس الشركات ، والرؤساء يخدعون لأنفسهم ، وهنا أنت بلا عمل ، لديك سوق عمل مفتوحة ولا تحتاج إليه ، إنه بحاجة إلى متخصصين ضيقين موثوق بهم. سيتم إغلاق جميع الأبواب. حسنًا ، لأنه حتى لو مررت بجميع المقابلات الفنية في تخصص واحد ، فسيقول لك إنك قمت بتلميع الأزرار ستة أشهر فقط في السنوات القليلة الماضية ، وأنها تحتاج إلى أداة تلميع الأزرار. ثم اتضح أنك بحاجة إلى الذهاب إلى المطور الرئيسي أو أعلى ، ولكن المشكله - عادة ما لا يأخذونها من الشارع. الطريقة الوحيدة التي أعرفها هي بناء علامة تجارية شخصية. لا يهم إذا كنت تعمل في مكتب أو عن بعد بموجب عقود - قم بعمل شيء ما. المراجع لن تساعدك بالمناسبة. أعرف حتى الآن خيارين: حضور مؤتمرات الصناعة وتقديم أنيقة بشكل عام وكتابة مدونة شخصية. أي شيء ، على الأقل أي هراء ، ولكن للبدء في القيام بذلك في السنة الأولى من لحظة تعيينك لأول مرة. هذا مهم.
هنا ، نعم ، هناك تناقض مع سوق العمل - فهم يرغبون في رؤية شيء واحد عند التوظيف ، لكنهم يريدون بعد ذلك العمل في فريق مع شخص آخر.
حول التكنولوجيا و "ما هي اللغة التي يجب أن أختارها؟"
هنا لدينا مقياس التدرج مرة أخرى. ولا حتى نطاق متعدد الأبعاد الفضاء. هناك تقنيات عصرية يتم الحديث عنها غالبًا في المؤتمرات ، يكتبون كثيرًا في المدونات والشبكات الاجتماعية. هناك تقنيات لا يوجد بها منافسون ، مثل JavaScript وأشكاله المختلفة في متصفحات الويب. هناك الديناصورات القديمة التي كتبت عليها أشياء كثيرة ويجب دعمها. وبين هذه النقاط هناك تقاطعات مختلفة في شكل حالات محددة.
عندما تختار ، سيتعين عليك أن تقرر ، وكلما كان ذلك أسرع - لكي تدرك أن مجموعتك المختارة تحد من أنك لست لطيفًا للغاية. حدد ما تريد - الموثوقية والمال وقاعدة معرفة جيدة ، أو حتى أنني لا أعرف شيئًا آخر. إذا كان الأول - يبدو لي أنه من الأفضل الاختيار من بين تلك الديناصورات التي لا تزال حية وتتطور بشكل جيد. نظرًا لأنني شخصياً على شبكة الإنترنت ، يمكنني القول أن هناك تقنيتان موثوقتان. C # و Java. قد يكون مطورو PHP غاضبين ، لكني أقترح ترك هذا السؤال للذوق واللون ، إذا جاز التعبير ... الخصوصية هي أن المشاريع يمكن أن تعيش وتتطور لفترة طويلة دون صعوبات إضافية فقط عند كتابتها بلغات ناضجة مع أدوات كافية لهيكلة الكود. هذه المرة. الخيار الثاني سيكون إطار محدد. .Net أو الربيع أو أي شيء آخر هو ممكن. المعيار هنا هو - يجب العثور عليه كثيرًا ، ويستخدم في الشركات الكبيرة والمشاريع طويلة العمر ، ومن الناحية المثالية ، يجب أن يكون مناسبًا للعمل عليه. على سبيل المثال ، يتيح لك Spring Boot الآن تقديم نماذج أولية للخدمات بسرعة ، فضلاً عن كتابة أشياء جادة مع بنية متطورة للغاية والكثير من الوظائف التي يحتاجها العمل ، ويقوم بنشرها خارج الصندوق.
على العكس من ذلك ، كل ما هو "عصري" - كقاعدة عامة ، صغير جدًا ، لديه بنية تحتية ضعيفة أو ساذجة ، لكن مجتمع المشجعين الذين لديهم عيون محترقة مستعدون لبيع أي شيء لك فقط بلطف. المشكلة في كل هذه التقنيات الجديدة أو غير المستخدمة على نطاق واسع هي أنها لا تملك ما يكفي من الأدوات الجاهزة - على الأرجح سيكون عليك كتابة الكثير من الوظائف التافهة بنفسك ، على سبيل المثال ، إذن عبر الشبكات الاجتماعية. هذا هو في الواقع وحشية. نادرا ما يريد العمل أن يدفع المال للدراجات. وبعد ذلك لا يزال عليك الحفاظ على هذا الرمز. أمثلة؟ بالنسبة لبيثون ، لا يوجد إطار عمل واحد كامل للويب (باستثناء جانغو ، مع بعض التحفظات) التي يمكنك العيش بها وعدم العمل المجنون في مشروع لأكثر من عام أو عامين. ستبدأ مشاكلك على الفور وتافهة تمامًا ، مثل الاستيراد الدوري للوحدات النمطية. أنا آسف لأنني تجاوزت PHP ، فهي تقوم بالكثير من الأشياء عليها ، لكن هناك نقطة - لم أسمع أن أيًا من الشركات الكبيرة تستخدمها ، وليس مفترق طرق أعيد بناؤه ، مثلما فعل Facebook.
خطوط منفصلة هي نوع من الاحتكار. سويفت لنظام أبل البيئي ، الذي يخلق في حد ذاته أطر تطوير التطبيقات الخاصة به. Google مع Android (بالمناسبة ، أيضًا Java / Kotlin). لغة R وبيئة التطوير لتحليل البيانات. جافا سكريبت باعتبارها لغة البرمجة الوحيدة التي تعمل في المتصفحات.
مع Swift ، يبدو أن كل شيء واضح. هناك عدد قليل من المبرمجين ، وهم يدفعون جيدًا (وفقًا للشائعات) ، واللغة تتطور بسرعة ، وهي عصرية ، ولكنها تختلف عن الضجيج من حيث أنها متوافقة مع الإصدارات السابقة مع ديناصور ObjC وكل ما كتب عليها لسنوات عديدة. آبل تقف وراءها أيضًا ، وتقوم بتطوير أطر المنصات بسرعة. بالإضافة إلى ذلك ، يمكن تجميعها في أنظمة أخرى ويبدو أنها تعد بالتوافق مع الإصدارات السابقة مع C / C ++. إذا حدث هذا ، فأنا لا أعرف ... سيكون هناك شيء جيد أو جيد أو شيء آخر. نظرًا لأنه قد تم كتابة الكثير بالفعل في الإصدار C / C ++ بحيث يمكنك تدوير رأسك ، فهذا مصدر ضخم.
جافا سكريبت. اللغة كلغة. يعتبرها الكثيرون لغة دنيا. لديه الكثير من المشاكل ، هذا صحيح. هذه هي إصابات الولادة التي يكاد يكون من المستحيل التغلب عليها بالمعنى التقني. يمكن استخدامه لتطبيقات الخادم ، لكنني لا أوصي بالقيام بهذا المسار. NodeJS هو الضجيج الخالص الذي قال خالقه نفسه مباشرة أن الأخطاء الأساسية ارتكبت خلال إنشائه. بالنسبة لتطوير المتصفح ، أوصي بأخذ ما هو الأكثر استخدامًا الآن ، وهذا هو React بالاقتران مع Redux. فقط الكثير منه. هو مطلوب في كل مكان. سوف تجد وظيفة. على الرغم من أنك فقط في المتصفح ، حتى لو كنت ممتلئًا ، إلا أن العميل من شواية السيراميك سيظل دائمًا فيليه.
نتيجة لذلك ، استنتاجاتك الشخصية
إذا أردت إعادة الانتخاب ، فسوف أتناول مجموعة من Java / Spring + React. بالطبع الربيع ليس الربيع الآن ، وينطبق الشيء نفسه على React ، ولكن المعايير هي نفسها.
ما يلمسني شخصياً في هذه المجموعة. من السهل نسبيًا "البيع" لعميل React ، وهو معروف للجميع ، لأنه ضجيج غمر في الوقت نفسه بالبنية التحتية ومتجذر بقوة في السوق ، بحيث يمكن استخدامه في مشاريع جادة. في الوقت نفسه ، لا توجد تناقضات قوية فيما يتعلق بتطوير مستعرض البرمجة ومستقبله - فهي موجهة للعناصر ، والمجتمع يدرك تمامًا البرمجة التفاعلية ، التي أصبحت الآن ذات صلة بالموضوع ، وتستخدمها. الإصدارات الجديدة من React لا تكسر الشفرة القديمة دون تحذيرات ؛ لا تتغير قواعد تكوين التطبيق بشكل كبير. لا يمكنك القول عن Angular التي شوهت سمعتها بالفعل مرات عديدة (آمل الآن أن كل شيء على ما يرام ولم يعد العواصف). حسنًا ، باستثناء Vue ، فكل شيء آخر من الأفضل عدم لمسه على الإطلاق ، يبدو لي.
توفر Java ، من ناحية أخرى ، مجالًا كبيرًا من الحلول الجاهزة ، ويمكن لأي "مفضلة" تقريبًا من العميل أو صاحب العمل أن تكون ، إن لم تكن سهلة ، ولكن على الأقل لا يتم تنفيذها من خلال عكاز. أعتقد اعتقادا راسخا أنه مع .Net وخاصة تطوير منصة مشتركة. كل شيء على ما يرام ، ولكن أنا شخصيا لا أحب C # ، حسنا ، اتضح.