JavaRush /Java блог /Random UA /Історія для тих, кому за 30 років
Святослав Винниченко
20 рівень
Томск

Історія для тих, кому за 30 років

Стаття з групи Random UA
І так, дісталися руки, знайшовся час і мені поділитися своєю невеликою історією.

Пролог.

Почнемо з того, що мені 30, моя основна освіта — вища хімічна (не заглиблюватимуся в тонкощі), майже 8 років я пропрацював на заводі. Робота була насправді досить цікава, але, дивлячись на колег, я розумів, що виходити на пенсію і працювати * 20 років тут мені не хочеться, не так хочу провести своє життя. Так само хочу додати, що у мене є сім'я, двоє дітей (старшої 6, молодший рік) і, за класикою, іпотека. Нарешті я вирішив спробувати виїхати в інше місце, на інший завод, де вища оплата і є кар'єрне зростання. Коріння на заводі я вже пустив, йти було важко, але наважився. Поїздка під Пітер тривала місяць. Там я пропрацював офіційно тиждень, зрозумів, що в нашій країні із заводами здебільшого ситуація сумна, і повернувся до рідного міста. Повертатись назад не хотів, мені здавалося, що це крок назад. Тут я й вирішив, що якщо міняти життя, то міняти кардинально! Близько тижня я думав, яку мову програмування вибрати, і, власне, вибір упав на Java . Після цього почав шукати курси. Насправді курсів хороших дуже багато, деякі з них навіть за прийнятну ціну, але я мав проблему: бажання і часу для навчання було багато, а ось фінансова подушка була максимум на 3-4 місяці. Усі курси, які мені подобалися, були від півроку та більше з двома заняттями на тиждень (найчастіше). І тут мені одна знайома порекомендувала JavaRush , мовляв, чула, що дуже хороший ресурс. Я побачив, що тут є все, що мені потрібне:
  • підписка з матеріалами та завданнями.
  • ніяких обмежень у часі: я міг навчатися рівно стільки, скільки дозволяв мій графік (а він був вільний), і моє бажання (а його, як писав вище, було в достатку).

Частина 1: У пошуках знань.

26 листопада 2019 року я оформив підписку та розпочав заняття. Скажу відразу, часом були дні, коли сидів до 14 години за вивченням, читав усі суміжні посилання, шукав красивіші рішення (не підглядаючи у Допомога). Тільки коли думав, що моє рішення оптимальне, то дивився в Допомога і дуже часто дивувався, що можна було вирішити красивіше та лаконічніше. Наприкінці січня, після досягнення 17 рівня, я вирішив почати ходити по соцзабезах, натягувати навичку і дивитися, що взагалі потрібно на ринку. За фактом ніхто мені особливо не відповідав, але знайшлася одна контора, яка взяла мене на умовно-безкоштовне стажування: перший місяць безкоштовно, другий та третій – з невеликою стипендією). Далі мав бути соцзабез за результатами трьох місяців, і вже за успішного проходження — працевлаштування.

Частина 2: Вриваємося "у бій".

Стажування полягало в написанні плагіна для Chrome з back-end Java для автоматизації рутинних завдань одного внутрішнього відділу компанії. У мене був чудовий наставник з великим багажем знань, гадаю, це теж важливо. Власне, щоб не йти в нетрі, я одразу напишу який стек використовувався, а наприкінці статті дам кілька посилань, які для мене виявабося дуже корисними.

Стек:

Java 11 (проект повністю писався з нуля), Spring (Boot, Security, OAuth2); як база використовувалася MongoDB; Для покриття автотестами використовував Assertj, Mockito, Spring-boot-starter-test, працювали за досить популярним GitHub Flow (стаття російською , в оригіналі ). Тут і далі намагатимуся давати посилання на оригінал та на переклад. Бажано, звичайно, читати оригінал, але якщо можливості немає, читайте переклад. Тут саме час порадити вивчати англійську мову. У мене рівень А2, але намагаюся читати статті англійською (звичайно ж, не без використання перекладача). У цьому якраз була найбільша складність спочатку на стажерському проекті, тому що там треба було працювати зі сторонньою CRM, у якої вся документація англійською мовою. Так само при роботі зі спрингом краще читати оригінальну документацію, вона в них дуже хороша і докладна, навіть і не потрібні жодні російськомовні гайди, та й взагалі майже вся документація англомовна (трохи від Капітана Очевидності). Також наставник сказав писати всі коментарі до коду та документацію щодо API англійською мовою, тому повторюся ще раз: вивчайте англійську мову! Навіть якщо і не збираєтеся працювати із закордонними замовниками або виїжджати за кордон, ця навичка просто дуже спростить вам вивчення та розробку.

Частина 3: Розв'язування.

Ця частина буде значно коротшою :) Після закінчення стажування я пройшов соцзабез і влаштувався на роботу, продовжив займатися цим проектом. У рамках стажування мав бути реалізований перший етап, а їх було, можна сказати, три. Через початок пандемії багато комерційних проектів зникло, і я реалізував усі етапи та задуми/хотілки, які тільки могли бути на даному проекті. Були й інші завдання, але це, як кажуть, інша історія.

Частина 4: Happy End, хоч ще далеко не End ;)

У середині липня мені зателефонували і запитали, чи я шукаю роботу. Резюме висіло на hh, хоч і давно не оновлювалося. Я вирішив спробувати себе, пройшов 3 етапи: тестове завдання, технічне співбесіду, співбесіду з начальством, надіслали оффер і... Це була пропозиція, від якої я не зміг відмовитися. До речі, обов'язково почитайте статтю про те, які бувають компанії , і постарайтеся вибрати для себе більш підходящу. Розумію, звичайно, що на перших парах ви намагатиметеся потрапити туди, куди візьмуть, але все ж таки. Моя перша робота була аутстаф, а зараз – продуктова (на момент написання статті я працюю лише другий день). Взяли також на позицію джуна, але я ні краплі не засмучений, адже є куди рости і за знаннями, і по грошах.

Епілог.

Тож, друзі, не журіться, головне — вирішити і не згортати зі свого шляху. У моєму випадку я мала велику відповідальність перед сім'єю і бажання поміняти щось у житті, займатися тим, що дійсно подобається. Особливо чудово в цій сфері те, що ти можеш підніматися кар'єрними сходами незалежно від того, чи є в компанії вакансія вище, чи пішов звідти пенсіонер, який пропрацював уже 20 років, і чи достатньо в тебе волохата рука, щоб пролізти на це. вакантне місце. У нашій сфері все у наших руках!

Статті, якими хотілося б поділитися:

  • Розуміння архітектури ( російською та в оригіналі ). Цю статтю я особисто читав 4 рази, коли розробляли архітектуру майбутнього додатку. Пишу у множині, тому що все перевіряв і відправляв на повторні виправлення наставник (робив code review). Вперше я мало що зрозумів, потім читав через 3 місяці, тоді зрозумів чому саме так. Потім прочитав ще 2 рази, так би мовити, для закріплення та повного засвоювання всієї інформації.
  • Інтерактивне навчання роботи з Git .
  • Раджу всім вивчити роботу зі стримами (stream). Це реально класна річ: найчастіше можна величезну писанину замінити на невеликий стрим. Для нагадування про роботу зі стримами у мене завжди висіла відкрита ця статейка .
  • Для роботи зі спрингом є докладна документація, так що вже на неї я посилання давати не буду, але чомусь я не відразу натрапив на людину на ім'я Євген Борисов, він же Spring- порошитель . Ось дуже класний виступ і розбір роботи бінів і т. д. Дуже шкодую, що не відразу натрапив на нього, багато чого було б ясніше на початковому етапі. Особливо рекомендую не просто прослухати, а паралельно писати код і закладати все так скзати в м'язову пам'ять.
  • Ну і оскільки я працював з нереляційною базою, а більшість компаній (особливо великих) працюють з SQL, то у вільний час намагався вирішувати хоча б пару завдань на побудову SQL-запитів. Для цього є маса різних сайтів, але мені сподобався ось цей , із завданнями та підручником для вивчення.
  • Ще порекомендував би почитати про написання тестів (Assertj, Mockito), але прям хороших статей не пригадаю, просто документація.
  • І при розробці програми (але це вже не зовсім для новачків) намагайтеся використовувати патерни проектування . Принаймні ознайомтеся з діагоналі з відомими патернами, на початковому етапі буде корисно.
Ще раз бажаю всім удачі у цій справі! Будуть запитання — ставте, наскільки можна відповім.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ