JavaRush /مدونة جافا /Random-AR /كيف ذهب عالم إنساني قديم إلى تكنولوجيا المعلومات
PieIsLie
مستوى
Санкт-Петербург

كيف ذهب عالم إنساني قديم إلى تكنولوجيا المعلومات

نشرت في المجموعة
الألعاب النارية! في الواقع، فكرت لفترة طويلة فيما سأكتبه بالضبط في هذا المنشور وما إذا كنت سأكتبه على الإطلاق. لقد حدث أنه في فترات مختلفة من العامين الماضيين قمت بتقييم فرصي في الحصول على منصب مطور Java بطرق مختلفة: من "عاجلاً أم آجلاً - بالتأكيد" إلى "ليس لدي أي فرصة في مجال تكنولوجيا المعلومات". كيف ذهب عالم إنساني قديم إلى تكنولوجيا المعلومات - 1ومع ذلك، فقد مر عامان تقريبًا منذ أن قمت بالتسجيل في JavaRush. قبل شهرين تلقيت عرضي الأول، وبعد فترة وجيزة تلقيت عرضي الثاني، ثم بدأت وظيفة جديدة. قصص النجاح ساعدتني كثيرًا خلال الدورة، لذلك قررت أن أنشر قصتي. نظرًا لأن الدورة أقيمت في عام 18، فقد لا تكون بعض المعلومات حديثة. سأقول على الفور أنه سيكون هناك الكثير من النص، لأن ... سأحاول أن أخبرك عن التدريب والبحث عن الوظائف (المتطلبات، والإجابات، والمواصفات الفنية، والمقابلات، وما إلى ذلك). سأكتب أيضًا بعض النصائح العامة التي ساعدتني شخصيًا وقد تساعد الآخرين. باختصار عن نفسي: عمري 32 عامًا، و10 سنوات من الخبرة في الإدارة والمبيعات وتعليم الفنون الليبرالية وليس لدي أي خلفية تقنية على الإطلاق. منذ عدة سنوات مضت حاولت الدخول إلى لغة C++، ثم إلى لغة Python - ولم أشعر إلا بالصداع. لذلك، من الصعب أن نطلق علي مطورًا موهوبًا: بل على العكس.

المرحلة 1. التدريب

لقد جئت إلى JavaRush بوعي: قائمة أسعار شهرية مناسبة، وبنية واضحة للمادة، والكثير من الممارسات، ووجود مجتمعي الخاص. النقطة الأولى واضحة تمامًا، لكن تعلم لغة بدون بنية أمر صعب للغاية، ومن المؤكد أن مثل هذا التدريب سيترك الشخص يعاني من فجوات خطيرة في Java Core. تُظهر تجربة المقابلات والمواصفات الفنية أنه يمكن استخدام الأسئلة حول "الأساس" في كل شيء: بدءًا من تحويل البتات وصب الأدوية العامة إلى الإدخال/الإخراج والتسلسل. الممارسة أمر لا بد منه. ما زلت لا أستطيع أن أفهم وأتذكر نصف الأشياء إلا إذا كتبتها بنفسي. حسنًا، المجتمع: لقد قمت بحل المشكلة - تفاخر بها في التعليقات؛ إذا لم تكن قد قررت، فنحن نرحب بك لطرح الأسئلة، ولكن على الأرجح لن يقدم لك أحد حلاً جاهزًا. وعدت إلى المقالات المخصصة حول المواضيع المجانية حتى بعد الانتهاء من الدورة، هناك الكثير من الأشياء الجيدة للبدء بها (خاصة التجربة الأولى مع أطر العمل باستخدام أمثلة خطوة بخطوة + أسئلة للمقابلات). بشكل عام، أنا ممتن لهذا المشروع للقاعدة التي تلقيتها، لكنني لن أعتمد فقط على JavaRush - من الأفضل أن "يتداخل" نفس Shildt مع الموضوع الذي تتم دراسته، وغالبًا ما يكشف عن بعض النقاط. لقد قيل الكثير بالفعل في المراجعات حول المهام التي تتقدم أحيانًا على النظرية وتجبرك على البحث عن Google. بالنسبة لي، هذا أكثر من ناقص - وليس حقيقة أن الوضع الآن هو نفسه عندما كنت أدرس. نصيحة فورية لأولئك الذين، مثلي، يدخلون لغة Java "من الصفر" : في مرحلة ما قد تشعرون بالملل أو الصعوبة:
  1. الأمر صعب على الجميع البدء من الصفر، لا قدر الله، 5% فقط من الأشخاص يصلون إلى نهاية الدورة. مهمتك هي أن تصبح واحدا منهم.

  2. أصبحت مهتمًا بعد شهر أو شهرين، عندما أصبحت المهام أكثر صعوبة وإثارة للاهتمام. كن صبوراً.

  3. الشيء الرئيسي هو التقدم الأسبوعي. بعد أسبوعين من الراحة، من الصعب بالفعل العودة، ولا يمكن للجميع الكتابة كل يوم لعدة أشهر متتالية. امنح نفسك حدًا لساعات الأسبوع - على سبيل المثال، 15. يمكنك البرمجة لمدة 1.5 ساعة كل يوم من أيام الأسبوع و3-4 ساعات أخرى في عطلتي نهاية الأسبوع، أو يمكنك أخذ إجازة لبضع أمسيات، ولكن "حد عطلة نهاية الأسبوع" سوف يزيد. بهذه الطريقة، سيكون الجدول الزمني مرنًا، ولكن منتظمًا. بالطبع، سيكون من الممكن قياس العمل حسب المهام والمشاريع، ولكن على مستوى بناء الجملة والنواة، ستفي الساعات بالغرض.
بشكل عام، استغرق الأمر مني حوالي 5 أشهر لإكمال الدورة (قبل الحصول على التدريب) ، على الرغم من أنني أستطيع تحمل تكاليف الإجازة والإجازات القصيرة؛ مرة أخرى، لم يترك العمل لمدة خمسة أيام في الأسبوع سوى عطلات نهاية الأسبوع وأمسيات أيام الأسبوع مجانًا من الساعة 22 إلى الساعة 00. لذلك، مع جدول زمني أكثر مرونة أو نظام تدريب أكثر صرامة، يمكنك التأقلم في وقت أبكر بكثير. ثم خططت للحصول على تدريب، لكن في النهاية لم ينجح الأمر.

المرحلة 2. التعليم الذاتي

لذلك، لم أحصل على التدريب: لقد تركت بضعة أيام فقط للمتطلبات الفنية حتى نهاية التوظيف في المجموعة ولم يكن لدي الوقت لمعرفة المتطلبات - كان هناك الكثير من الكلمات غير المألوفة. لأن لم أكن أرغب في الانتظار ثلاثة أشهر أخرى، قررت المضي قدمًا بنفسي. لحسن الحظ، هناك أدلة ودروس فيديو لجميع الأطر الشعبية. خلال الأشهر القليلة التالية، تعاملت مع Spring MVC، وSpring Boot + Data، وSpring Security، وHibernate، وjUnit، وMaven، وGit، وRDBMS، وأتقنت SQL وحاولت تجميعها معًا في كل واحد. بعد ستة أشهر، كان لدي مشاريع مخيفة للنظر فيها الآن، لكنني اكتسبت خبرة عملية في استخدام أطر العمل "للبالغين" وGitHub، والتي يمكن عرضها بناءً على طلب صاحب العمل المحتمل. نصيحة :
  1. كلما أسرعت في التعرف على .gitignore، كلما كان ذلك أفضل. ;)

  2. تتضمن العديد من الأدلة عدة أطر عمل في وقت واحد؛ استخدام هذا وإضافة بنفسك. لقد أنشأنا متجرًا عبر الإنترنت باستخدام Maven + Spring Boot + Data - أضف التفويض واختبارات الوحدة والتسجيل.

  3. بالنسبة لمشاريع الويب، يمكنك الحصول على قوالب الواجهة الأمامية المجانية من الإنترنت - فهي أكثر متعة في العمل معها، وتبدو أفضل كلقطات شاشة في ملف README على Git. وفي الوقت نفسه، ستكون قادرًا على تذكر HTML وCSS - وربما ترغب في تصحيح الأنماط والتخطيط.

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

ما كنت في عداد المفقودين (في وقت لاحق تعرضت للحرق أثناء المقابلة)

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

  2. مجموعات "تحت الغطاء". لا أتذكر ما إذا كان هذا في JavaRush، ولكن من المفيد معرفة كيفية عمل HashMap.get() أو لماذا لا يتم ضمان HashSet للحفاظ على ترتيب العناصر. مرة أخرى، ما هي المجموعات الآمنة ولماذا.

  3. SQL. أنت بحاجة على الأقل إلى ما يصل إلى JOINs - ما هي، وكيفية عملها، والقدرة على كتابة تحديد على جدولين على الورق بسرعة. أوصي بـ www.sql-ex.ru: سوف يأخذك إلى المستوى المطلوب خلال يوم أو يومين.

  4. Spring Core: ما نوع التعليقات التوضيحية الموجودة، وما هو السياق، وكيف يتم إنشاء الحبوب، وما هو نطاق Bean الآمن، وكيفية حل الحقن المتبادل - جميع أسئلة المقابلة. كيفية إرجاع صفحة، وكيفية إرجاع JSON، وما إلى ذلك. أقرأ حاليًا "Spring 5 for Professionals" باللغة الروسية، ولكن بشكل عام يوصون بـ "Spring in Action".

المرحلة 3. البحث عن وظيفة

في الواقع، في أول شهرين بعد الانتهاء من المشاريع المنزلية، أرسلت حوالي 30 ردًا على العديد من الوظائف الشاغرة للمبتدئين/المتدربين (من خلال HH، LinkedIn، وكالات التوظيف)، وكانت النتائج قريبة من الصفر. لقد ركزت فقط على الوظائف الشاغرة بدون خبرة، وأشرت بصراحة إلى كومة مألوفة بالنسبة لي وكتبت عن قدرتي التعليمية العالية في رسائل الغلاف. والنتيجة هي مكالمتين (انتهت إحداهما على الفور بلغتي الإنجليزية قبل المتوسطة)، وأرسلت شركتان أخريان المواصفات الفنية، وكان هناك "اجتماع" واحد فقط، ثم كنت هناك بمفردي لأحل المشكلات المتعلقة بالخوارزميات على قطعة من الورق. وبعد ذلك قام قسم الموارد البشرية ببساطة بأخذ الأوراق و"سنتصل بك". حاولت الحصول على تدريبين داخليين (غير مدفوعي الأجر ومدفوعين بشكل مشروط): لقد قمت بالمواصفات الفنية، لكنني لم أتجاوز الضمان الاجتماعي النهائي؛ ولكن الآن أستطيع أن أقول إن المتدربين يتم تجنيدهم بالتأكيد بواسطة T-Systems وCFT وAndersen وEPAM (لديهم مراجعات مختلطة، قرر بنفسك). أما بالنسبة لي، فهي طريقة جيدة لدخول المجال إذا أتيحت لك فرصة الجلوس بدون دخل لعدة أشهر وعدم الموت =) بشكل عام، بعد هذه التجربة أصبحت مكتئبًا إلى حد ما، وأوقفت القصة بأكملها مع البحث مؤقتًا لمدة ستة أشهر تقريبًا - واصلت العمل على الملف الشخصي السابق، وكتبت بعض التطبيقات من أجل المتعة فقط، لكنني لم أنشرها حتى على Git. حتى التقيت بأحد معارفي، الذي أخبرته بشكل عرضي عن الإخفاقات في الوظائف الشاغرة: في ذلك الوقت كان يعمل بالفعل كمطور متوسط، لكنه بدأ بنفس الطريقة - بالدراسة الذاتية. أعطاني أحد معارفي بعض التوصيات ، والتي استخدمها بنفسه والتي ساعدتني كثيرًا في البحث عن عمل في المستقبل. سواء أتبعتهم أم لا، الأمر متروك لك، لأن... إنهم، بطريقة ما، ليسوا صادقين تمامًا. لذا، مزيد من الاقتباسات:
  • بأي شكل من الأشكال، امنح نفسك أكثر من 6 أشهر من الخبرة التجارية في سيرتك الذاتية: التدريب الداخلي، ومشاريع التخرج، والعمل الحر، والعمل عن بعد - أي شيء. سيساعد هذا بشكل كبير في مرحلة الفحص الأولي للسير الذاتية من قبل قسم الموارد البشرية؛

  • قم بإزالة كلمة Junior والراتب المتوقع من سيرتك الذاتية؛ ما عليك سوى ترك الأمر كمطور Java، ومناقشة الأموال بشكل فردي مع كل شركة؛

  • حاول أن تجعل قسم الموارد البشرية يسمي "مفترق" الراتب المقترح قبل أن تحدد توقعاتك. إذا كانت الشركة تقدم ما بين 80 إلى 120 ألفًا، وأنت تبحث عن 40 ألفًا أو أكثر، فسوف يعاملك بعض المحددين بازدراء؛

  • تقدم بطلبك إلى جميع الوظائف الشاغرة التي تناسب مجموعتك، حتى لو كانت تتطلب خبرة تجارية تتراوح من سنة إلى ثلاث سنوات.

وبعد أن اتبعت كل هذه التوصيات، تحسنت حالة البحث بشكل ملحوظ. أولاً، من بين حوالي 12 ردًا جديدًا، انتهى نصفها على الفور تقريبًا إما باجتماع أو عبر Skype أو TK (والذي كان بالفعل مختلفًا تمامًا عما تم تجاهله في الأشهر السابقة). ثانيًا، بدأ موظفو الموارد البشرية في الكتابة إليّ، ولم أرد عليهم - في برامج المراسلة الفورية، وفي البريد، وفي LinkedIn. ثالثا، تبين أن متطلبات الخبرة التجارية ليست صارمة للغاية - كانت العديد من الشركات على استعداد للتواصل مع مرشح لا يقع ضمن النطاق المحدد من 1-3 سنوات من ممارسة الشركات. نتيجة لذلك - عرض واحد للمبتدئين، واحد للوسط مع فترة اختبار. في المجموع، استغرق البحث شهرين. نصيحة :
  1. قم بتضمين سيرتك الذاتية المجموعة الكاملة من اللغات والتقنيات والأطر التي عملت بها.

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

  3. جرب نفسك في اختبارات Java المجانية - غالبًا ما يتم إجراؤها على الورق قبل مقابلة المبتدئين. من الأفضل الاستعداد مسبقًا.

بضع كلمات عن المقابلات
  1. يسألون دائمًا عن المجموعات: ما هي المجموعات الموجودة، وكيف تختلف، ومتى هو أفضل وقت لاستخدامها.

  2. دائمًا على الفئات والواجهات المجردة - هل يمكن أن يكون لديهم أساليب، وحقول، وأي منها، وهل يمكن توريثها، وما إلى ذلك.

  3. دائمًا ما تستخدم مؤشرات ترابط متعددة - ما الذي استخدمته في عملك، والكلمات الرئيسية، والأساليب، هل أنت على دراية بـ util.concurrent.

  4. في كثير من الأحيان عند العمل مع الذاكرة - الكومة، والمكدس، وسوف تكون هذه السلاسل متساوية، وهذه الكائنات، لماذا.

  5. في بعض الأحيان يتعلق الأمر بالخوارزميات - ما هي الخوارزميات التي تعرفها، وما مدى تعقيدها، ولماذا، هل يمكنك كتابة خوارزمية الآن.

  6. في بعض الأحيان، بناءً على الأنماط - ما هي الأنماط التي تعرفها، وتلك التي تستخدمها، اكتب مفردة أو مصنعًا.

  7. في بعض الأحيان في SQL - أنواع JOIN، ما هي المعاملة، وكيفية تنفيذها في JDBC، اكتب استعلامًا قصيرًا.

في الواقع، كل شيء يعتمد إلى حد كبير على الشركة : لا يسأل شخص ما سؤالاً واحدًا حول Java Core، ولكنه يقضي 40 دقيقة في الحديث عن أطر العمل وSQL؛ بعض الأشخاص لا يستخدمون الأطر الشائعة على الإطلاق ويسألون فقط عن الخوارزميات والأنواع والمجموعات والذاكرة. بدأ حوالي نصف الاجتماعات باختبارات - أحيانًا باللغة الروسية، وأحيانًا باللغة الإنجليزية (20-30 سؤالًا لمدة 20-30 دقيقة)؛ عادةً ما تكون الأسئلة على مستوى "هنا هو الكود، هل سيتم تشغيله أم لا، وإذا لم يكن كذلك، ففي أي سطر" أو "هنا عدة كائنات، هل ستكون متساوية بعد عمليات N". بضع كلمات عن المواصفات الفنية : 70% من الشركات التي بدأت التواصل أرسلت لي المواصفات الفنية قبل الاجتماع أو بعده. عادة، يتم إعطاء الانتهاء من بضعة أيام إلى أسبوع، ولكن في أغلب الأحيان يمكن نقل المواعيد النهائية قليلا. يمكن استخدام أي شيء كمواصفات فنية. فيما يلي الأمثلة التي قمت بها:
  • صفحة جهات الاتصال التجارية للملف الشخصي في Salesforce مع تحرير وإضافة سجلات جديدة؛

  • محاكاة مصعد في مبنى متعدد الطوابق باستخدام Spring State Machine مع وحدة التحكم؛

  • تطبيق Android يعتمد على مكتبة LibGDX مع إخراج نص حرفًا بحرف عند الضغط على زر؛

  • تقليد REST لمشاركة السيارة، مع إضافة عملاء عبر طلب HTTP وإرجاع JSON؛

  • مشكلة فرز الرسم البياني غير الموجه من خلال خلية حرة؛

  • البحث عن مثلثات متساوية الساقين باستخدام إحداثيات من ملف؛

  • إعادة هيكلة التعليمات البرمجية النهائية باستخدام Stream API؛

  • حاسبة واجهة المستخدم مع دعم التعبيرات الثلاثية؛

  • سباق المواضيع مع كتابة النتائج إلى ملف.

في بعض الأحيان يُطلب تغطية طرق الحساب باختبارات الوحدة، ويطلب تغطية طرق الاستعلام باختبارات التكامل. نصيحة :
  1. حاول ليس فقط إكمال المهمة، ولكن أيضًا التأكد من أن الكود يتوافق مع مبادئ OOP.

  2. تحقق من كفاءة التعليمات البرمجية الخاصة بك - لقد تم رفضي ذات مرة لأنني، من بين أمور أخرى، استخدمت PrintStream بدلاً من BufferedWriter.

  3. خطط لوقت التنفيذ بهامش 50% - من الأفضل أن تبدأ وتنتهي مبكرًا بدلاً من القيام بالدفع في الساعة الثامنة صباحًا من الموعد النهائي.

حسنًا، كل ما أردته، أعتقد أنني كتبته. الشيء الأكثر أهمية هو أن الماء يزيل الحجارة. لا يمكنك كتابة الكثير، الكثير في Java، ثم البحث عن وظيفة لفترة طويلة جدًا، وفي النهاية لا تجد شيئًا. إذا نجح متخصص في العلوم الإنسانية يبلغ من العمر 30 عامًا في تحقيق ذلك، فيمكنك القيام بذلك بشكل أفضل. الشيء الرئيسي هو عدم الخوف من المكالمات الأولى والمهام الفنية والمقابلات: بعد كل وقت فاشل، كنت مضمونًا لتعلم شيء ما بنفسي وتحسينه - كلما زاد شعورك بالثقة. إذا اتضح أن الأمر فوضوي في مكان ما أو كانت هناك أخطاء - أعتذر مقدمًا، وأكتب، وسوف أقوم بتصحيح ذلك. آمل أن تساعد تجربتي شخصًا ما على الأقل =)
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION