JavaRush /وبلاگ جاوا /Random-FA /چگونه یک انسان دوست قدیمی به سمت فناوری اطلاعات رفت
PieIsLie
مرحله
Санкт-Петербург

چگونه یک انسان دوست قدیمی به سمت فناوری اطلاعات رفت

در گروه منتشر شد
آتش بازی! راستش خیلی وقته فکر میکردم تو این پست دقیقا چی بنویسم و ​​اصلا بنویسم یا نه. اتفاقاً در دوره‌های مختلف دو سال گذشته، شانس خود را برای گرفتن یک موقعیت توسعه‌دهنده جاوا به روش‌های مختلف ارزیابی کردم: از "دیر یا زود - قطعا" تا "هیچ چیز برای من در IT نمی‌درخشد." چگونه یک انسان دوست قدیمی به سمت فناوری اطلاعات رفت - 1با این حال، تقریباً دو سال از ثبت نام من در JavaRush می گذرد. یکی دو ماه پیش اولین پیشنهادم را دریافت کردم، کمی بعد دومی را دریافت کردم و سپس کار جدیدی را شروع کردم. داستان های موفقیت در طول دوره به من کمک زیادی کرد، بنابراین تصمیم گرفتم داستان خودم را پست کنم. از آنجایی که دوره در سال 18 برگزار شد، ممکن است برخی از اطلاعات فعلی نباشند. فوراً می گویم که متن های زیادی وجود خواهد داشت، زیرا ... من سعی خواهم کرد در مورد آموزش و جستجوی شغل (الزامات، پاسخ ها، مشخصات فنی، مصاحبه و غیره) به شما بگویم. من همچنین چند نکته کلی را خواهم نوشت که شخصاً به من کمک کرد و ممکن است به دیگران کمک کند. مختصری در مورد خودم: 32 ساله، 10 سال سابقه مدیریت و فروش، آموزش آزاد و بدون هیچ سابقه فنی. چندین سال پیش سعی کردم وارد C++ و سپس پایتون شوم - چیزی جز سردرد نداشتم. بنابراین، دشوار است که من را یک توسعه دهنده با استعداد خطاب کنید: بلکه برعکس.

مرحله 1. آموزش

من آگاهانه به JavaRush آمدم: لیست قیمت ماهانه مناسب، ساختار واضح مواد، تمرین زیاد و حضور جامعه خودم. نکته اول کاملاً واضح است، اما یادگیری یک زبان بدون ساختار بسیار دشوار است و مطمئناً چنین آموزش هایی باعث می شود فرد با خلاءهای جدی در Java Core مواجه شود. تجربه مصاحبه ها و مشخصات فنی نشان می دهد که سوالات مربوط به "هسته" را می توان برای همه چیز استفاده کرد: از تغییر بیتی و ریخته گری ژنریک ها تا IO و سریال سازی. تمرین یک امر ضروری است. من هنوز فقط می توانم نیمی از چیزها را بفهمم و به خاطر بسپارم اگر خودم آنها را بنویسم. خوب، جامعه: شما مشکل را حل کردید - در نظرات درباره آن لاف بزنید. اگر تصمیم نگرفته اید، می توانید سؤال بپرسید، اما به احتمال زیاد هیچ کس راه حل آماده ای به شما نمی دهد. و حتی پس از اتمام دوره به مقالات سفارشی در مورد موضوعات رایگان برگشتم، چیزهای خوبی برای شروع وجود دارد (مخصوصا اولین تجربه با چارچوب ها با استفاده از مثال های گام به گام + سوالات برای مصاحبه). به طور کلی، من از این پروژه برای پایه ای که دریافت کردم سپاسگزارم، اما من فقط به JavaRush متکی نیستم - همان Shildt از همه بهتر در مورد موضوع مورد مطالعه "همپوشانی" دارد و اغلب نکاتی را آشکار می کند. قبلاً در بررسی ها در مورد کارهایی که گاهی از تئوری جلوتر می روند و شما را مجبور به گوگل می کنند، گفته شده است. برای من، این بیشتر یک مزیت است تا منفی - و این یک واقعیت نیست که اکنون وضعیت مشابه زمانی است که من در حال تحصیل بودم. توصیه فوری به کسانی که مانند من "از ابتدا" وارد جاوا می شوند : در مرحله ای ممکن است خسته یا سخت شوید:
  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 را به خاطر بسپارید - احتمالاً می خواهید سبک ها و طرح بندی را اصلاح کنید.

ساده ترین راه برای ایجاد چنین برنامه توسعه ای برای خود این است که از طریق HH برای جاهای خالی Junior\Middle Java Developer بروید و ببینید کدام فناوری ها و چارچوب ها بیشتر نشان داده می شوند. آنها را بنویسید، مشخصات فنی آنها را بیاورید، برای خود ضرب الاجل تعیین کنید. اگرچه، شاید اگر با یک دوره کارآموزی محلی شروع می کردم، مجبور نمی شدم چندین ماه برای پروژه های خانگی وقت بگذارم.

آنچه را که از دست داده بودم (بعداً در طول مصاحبه سوختم)

  1. الگوریتم ها برای جلوگیری از اشتباهاتم، فوراً یک کتاب کوتاه به زبان روسی به نام «الگوریتم های غم انگیز» را توصیه می کنم. پیچیدگی الگوریتم ها چیست، از چه چیزی تشکیل شده است، چرا مرتب سازی سریع کافی نیست، مقدمه ای بر نظریه گراف - همه چیز وجود دارد و به قابل درک ترین زبان.

  2. مجموعه های "زیر کاپوت". به یاد نمی‌آورم که آیا این در JavaRush بود یا نه، اما دانستن اینکه HashMap.get() چگونه کار می‌کند یا اینکه چرا HashSet تضمینی برای حفظ نظم عناصر نیست مفید است. باز هم، کدام مجموعه ها امن هستند و چرا.

  3. SQL. شما حداقل به JOIN نیاز دارید - چه هستند، چگونه کار می کنند، توانایی نوشتن یک SELECT روی دو جدول روی کاغذ در حال پرواز. من www.sql-ex.ru را توصیه می کنم: یک یا دو روز دیگر شما را به سطح مورد نظر می رساند.

  4. Spring Core: چه نوع حاشیه نویسی وجود دارد، یک زمینه چیست، چگونه bean ایجاد می شود، چه Bean Scope ایمن است، و چگونه می توان تزریق متقابل را حل کرد - همه سوالات مصاحبه. نحوه برگرداندن یک صفحه، نحوه برگرداندن JSON و غیره من در حال حاضر در حال خواندن "Spring 5 for Professionals" به زبان روسی هستم، اما به طور کلی آنها "Spring in Action" را توصیه می کنند.

مرحله 3. جستجوی کار

در واقع، در چند ماه اول پس از تکمیل پروژه‌های خانگی، من حدود 30 پاسخ به مشاغل مختلف Junior\Trainee (از طریق HH، LinkedIn، آژانس‌های استخدام)، با نتایج تقریباً صفر ارسال کردم. من فقط روی جای خالی بدون تجربه تمرکز کردم، صادقانه یک پشته آشنا را نشان دادم و در مورد توانایی یادگیری بالای خود در نامه های جلد نوشتم. نتیجه دو تماس است (یکی از آنها بلافاصله به زبان انگلیسی پیش از متوسط ​​من به پایان رسید)، دو شرکت دیگر مشخصات فنی را ارسال کردند، تنها یک "جلسه" وجود داشت، و سپس من به تنهایی در آنجا بودم و مسائل مربوط به الگوریتم ها را روی یک تکه کاغذ حل می کردم. پس از آن HR به سادگی اوراق را برداشت و "ما با شما تماس خواهیم گرفت." من سعی کردم چند دوره کارآموزی (بدون حقوق و مشروط) بگیرم: مشخصات فنی را انجام دادم اما از تامین اجتماعی نهایی فراتر نرفته ام. اما اکنون می توانم بگویم که کارآموزان قطعا توسط T-Systems، CFT، Andersen و EPAM جذب می شوند (آنها نظرات متفاوتی دارند، خودتان تصمیم بگیرید). در مورد من، اگر فرصت داری که چندین ماه بدون درآمد بشینی و نمردی، راه خوبی برای ورود به عرصه است =) در کل بعد از این تجربه تا حدودی افسرده شدم و کل داستان را با جستجو در حالت مکث قرار دادم. تقریباً شش ماه - من به کار بر روی نمایه قبلی ادامه دادم، برخی از برنامه ها را فقط برای سرگرمی نوشتم، اما حتی آنها را در Git پست نکردم. تا اینکه با یکی از آشنایان آشنا شدم که به طور اتفاقی در مورد شکست های شغلی به او گفتم: در آن زمان او قبلاً به عنوان توسعه دهنده میانی کار می کرد ، اما او به همان روش شروع کرد - با خودآموزی. یکی از آشنایان چند توصیه به من کرد که خودش از آنها استفاده کرد و به من در جستجوی شغل در آینده کمک زیادی کرد. این که آنها را دنبال کنید یا نه به خودتان بستگی دارد، زیرا ... آنها به نوعی کاملاً صادق نیستند. بنابراین، نقل قول های بیشتر:
  • به هر ترتیب، 6+ ماه تجربه تجاری در رزومه خود داشته باشید: کارآموزی، پروژه های فارغ التحصیلی، مشاغل آزاد، کار از راه دور - هر چه باشد. این در مرحله غربالگری اولیه رزومه ها توسط منابع انسانی کمک زیادی خواهد کرد.

  • کلمه Junior و حقوق و دستمزد مورد انتظار را از رزومه خود حذف کنید. فقط آن را به عنوان توسعه دهنده جاوا بگذارید و در مورد پول به صورت جداگانه با هر شرکت صحبت کنید.

  • سعی کنید قبل از اینکه انتظارات خود را نام ببرید، از منابع انسانی نام "چنگال" حقوق پیشنهادی را بخواهید. اگر شرکتی 80-120k ارائه دهد، و شما به دنبال 40k یا بیشتر باشید، برخی از انتخاب کنندگان با شما رفتار تحقیر آمیز خواهند داشت.

  • برای همه مشاغل خالی که مناسب پشته شما هستند، درخواست دهید، حتی اگر به 1 تا 3 سال تجربه تجاری نیاز داشته باشند.

پس از اینکه همه این توصیه ها را دنبال کردم، وضعیت جستجو به طور قابل توجهی بهبود یافت. اولاً، از حدود 12 پاسخ جدید، نیمی از آنها تقریباً بلافاصله به یک جلسه یا اسکایپ یا TK (که قبلاً با نادیده گرفته شدن در ماه های قبل بسیار متفاوت بود) به پایان رسید. ثانیاً ، افراد منابع انسانی شروع به نوشتن برای من کردند ، که من به آنها پاسخ ندادم - در پیام رسان های فوری ، ایمیل ، در لینکدین. ثالثاً ، معلوم شد که الزامات تجربه تجاری واقعاً خیلی سخت نیست - بسیاری از شرکت ها آماده بودند تا با نامزدی که در محدوده مشخص شده 1-3 سال فعالیت شرکتی قرار نمی گرفت ، ارتباط برقرار کنند. در نتیجه - یک پیشنهاد برای جونیور، یکی برای وسط با دوره آزمایشی. در مجموع، جستجو دو ماه طول کشید. نصیحت :
  1. کل پشته زبان ها، فن آوری ها و چارچوب هایی را که با آنها کار کرده اید در رزومه خود بگنجانید.

  2. در لینکدین ثبت نام کنید - واقعاً تعداد زیادی از افراد منابع انسانی از شرکت های مختلف در آنجا هستند. نمایه خود را با دقت پر کنید - در واقع این رزومه شما نیز هست. برای توسعه شبکه مخاطبین خود، LION های مرتبط با نمایه خود را اضافه کنید؛ آنها درخواست های همه کاربران را می پذیرند.

  3. خودتان را در تست های رایگان جاوا امتحان کنید - آنها اغلب قبل از مصاحبه Junior روی کاغذ داده می شوند. بهتر است از قبل آماده شوید.

چند کلمه در مورد مصاحبه
  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 با کنترل کنسول.

  • برنامه اندروید مبتنی بر کتابخانه LibGDX با خروجی متن نویسه به نویسه هنگام فشار دادن یک دکمه.

  • REST تقلید اشتراک‌گذاری خودرو، با افزودن مشتریان از طریق درخواست HTTP و بازگشت JSON.

  • مشکل مرتب سازی یک گراف بدون جهت از طریق یک سلول آزاد.

  • با استفاده از مختصات یک فایل مثلث های متساوی الساقین را جستجو کنید.

  • بازسازی کد نهایی با استفاده از Stream API.

  • ماشین حساب UI با پشتیبانی از عبارات سه تایی.

  • Race of Threads با نوشتن نتایج در یک فایل.

گاهی اوقات از روش‌های محاسبه خواسته می‌شود که با آزمون‌های واحد پوشش داده شوند و از روش‌های پرس و جو خواسته می‌شود که با آزمون‌های ادغام پوشش داده شوند. نصیحت :
  1. سعی کنید نه تنها کار را کامل کنید، بلکه از مطابقت کد با اصول OOP نیز اطمینان حاصل کنید.

  2. کد خود را از نظر کارایی بررسی کنید - من یک بار رد شدم زیرا، از جمله، از PrintStream به جای BufferedWriter استفاده کردم.

  3. زمان اجرای خود را با حاشیه 50 درصد برنامه ریزی کنید - بهتر است زودتر شروع کنید و به پایان برسانید تا اینکه در ساعت هشت صبح آخرین مهلت، یک فشار git انجام دهید.

خوب، هر چه می خواستم، فکر می کنم نوشتم. مهمترین چیز این است که آب سنگ ها را از بین می برد. شما نمی توانید زیاد، زیاد در جاوا بنویسید، سپس برای مدت طولانی به دنبال کار بگردید و در نهایت چیزی به دست نیاورید. اگر یک متخصص علوم انسانی 30 ساله این کار را انجام دهد، شما می توانید آن را حتی بهتر انجام دهید. نکته اصلی این است که از اولین تماس ها، تکالیف فنی و مصاحبه ها نترسید: پس از هر بار شکست، تضمین می شد که چیزی برای خودم یاد بگیرم و آن را بهبود بخشم - هر چه طولانی تر، اعتماد به نفس بیشتری داشته باشید. اگر جایی آشفته بود یا خطاهایی وجود داشت - پیشاپیش عذرخواهی می کنم، بنویسید، آن را اصلاح می کنم. امیدوارم تجربه من حداقل به کسی کمک کند =)
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION