JavaRush /Java блог /Random UA /Дивовижна подорож до Вальхалли, або як історик-архівіст с...
Denis Sidorenko
25 рівень
Новосибирск

Дивовижна подорож до Вальхалли, або як історик-архівіст став Java-розробником

Стаття з групи Random UA
Вступне слівце Всім привіт! Мене звуть Денис, і на момент написання цієї статті мені буквально кілька тижнів тому виповнилося 30 років. Ось уже рівно 6 місяців, як я працюю на позиції Java-розробника в одному з найбільших фінтехів Росії. Пишу код на Java 8, паралельно вивчаю React, щоб не втрачати швидкість мого драккара та плисти далі. Чесно, я досі не вірю у те, що відбувається. Ну а тепер – до самої історії. Історія писалася навколішки. Якщо раптом буде помічено помилки або порушення правил публікації, я зроблю виправлення. Історія успіху Одного разу я опинився на вулиці (у прямому розумінні цього слова): таке життя багатьох дітей з 90-х, які залишабося без батька. У цей період життя єдиним моїм дозвіллям був японський cd-плеєр і єдиний диск з альбомом гурту "Епідемія". Щоб хоч якось урізноманітнити життя, взимку я ходив грітися до міської бібліотеки. У бібліотеці почав почитувати фентезі, проте одного прекрасного дня, коли потрапив до зали технічної літератури, мені в руки потрапила книга "Мова програмування Сі" Брайана Кернігана та Денніса Рітчі. Я захопився синтаксисом язика. Для мене це здалося зразком. Хоча про який зразок я міг тоді знати? Я був ніхто, і кликати мене ніяк. Далі я сильно захопився вивченням цієї мови і мені потрапила книга братів Дейтл, Мова С/С++. Відразу обмовлюся, та й, напевно, ви вже зрозуміли: як можна вчити ЯП, не маючи комп'ютера? Та в мене навіть житла не було. Але я вивчав просто на папері, або уявляв, як воно працювало, якби у мене хоч найзвичайніше "відро". Намагався запам'ятовувати типи даних, конструкції та інше. Життя сильно змінилося, коли з'явився дах над головою та перша машина на базі Intel Celeron. Звичайно ж, дитя, яке не бачило радості в житті, дорвавшись до ПК, насамперед кинулося грати. У той час вийшла гра World of Warcraft, ще бета-версія. Жив я тоді в Купчино (район Санкт-Петербурга). Інтернет був "супер швидкий" і більшою популярністю користувалися локальні мережі (де ми грали в CS 1.6, Battlefield і т.д.). Після виходу World of Warcraft хлопцям з району дуже захотілося пограти разом, і звичайно ж, не платити за офіційну підписку Blizzard. Тут сталося більше занурення у ІТ. Я знайшов емулятор, написаний китайцями на мові Delphi, і цілком працює як сервер для WoW. Однак усі коментарі та документація були китайською. Після деяких спроб налаштування воно запрацювало. На просторах мережі знайшов ентузіастів, які займалися парсингом мережевих пакетів WoW та написанням власного сервера для гри. З'явився знаменитий проект Mangos, написаний C++. Ми робабо готові збірки сервера, інсталятори в один клік та інше. Не було мануалів у мережі — сам собі мануал та гайд. Писали гайди іншим. Весь коротко описаний період дитинства вище протікав у звані " шкільні роки " . Я не ходив до школи і абияк закінчив 11 класів на всі 3-ки, крім 4-ки з історії. Мені ніколи було ходити, коли питання стояло просто вижити. Якимось дивом не вилетівши і здавши ЄДІ у 2008 році, я вступаю на істфак на спеціальність історик-архівіст. А куди мені ще йти? Знання математики нульове, фізики та хімії теж. Про які знання може бути мова? Іти на інженера? Вступну математику можна було навіть намагатися. Навчаючись перші 3 курси очного відділення на історичному факультеті, в гуртожитку в мене були книги виключно за кодом. Це і .NET FRAMEWORK 3.0 Ендрю Троєлсена, і книги з SQL, JS і т.д. Приходячи на пари Стародавнім Сходом, я думав про код. Проте бурхливе студентське життя та активні археологічні розкопки сильно займали, і залишали мало часу на улюблене заняття. Дивно, на той момент минуло вже більше 6 років як я вперше торкнувся мови Сі, але продовжував цікавитися суто з цікавості. Знаменита епоха "юристів та економістів". Жодного хайпа "йти в айті", а тобі все одно цікаво. Отримуючи оксфордську стипендію, вже будучи наприкінці 3-го курсу, я був змушений покинути Росію і поїхав до Італії (сімейна історія). Навчання, звичайно, також довелося залишити. Пробувши 3 роки в Італії, я вивчив чудову італійську мову, але геть-чисто забув все те що, вчив до Італії. Повернувшись та влаштувавшись барменом в італійський ресторан у рідному місті Санкт-Петербурзі, я почав вивчати PHP. На той момент були популярні курси зі Фахівця, відомого викладача Ігоря Борисова (з голосом Галигіна) з PHP, JS та інше. Вивчаючи дані технології, я активно прагнув написати свій форум, хоча який сенс? Адже є чудові двигуни для цього. Але знову ж таки, просто було цікаво. Через 8 місяців після повернення назад на батьківщину, я згадую залишений ВНЗ і витрачений на нього час. Іду туди і відновлююсь, але вже як історик-археолог. Провчившись буквально 3 місяці, я приймаю вкрай дивне рішення переїхати з Санкт-Петербурга в м. Златоуст (Челябінська область). Маючи невелику фінансову подушку і не працюючи, я намагаюся усвідомити те, що відбувається. Що? Навіщо? Чому? Переїзд у глибинку мав сімейний характер, я хотів знайти свого батька, який залишив нас у "прекрасному" 1992 році на вулиці. Паралельно роблячи спроби знайти підробіток, я продовжував "колупати" PHP. Розуміючи всю безперспективність цієї компанії на той момент і маючи велике бажання закінчити ВНЗ, я переїжджаю в Челябінськ і перекладаюсь до місцевого ВНЗ - ЮУРГУ (так-так, той самий, де навчався Євген Рошаль - автор WinRAR). Але на превеликий подив напряму "історія" там немає, а точніше заочного формату не було. Встав вибір: теологія та політологія? Звичайно, я вибрав другий варіант. Вперше на обрії з'являється JavaRush. Знайомі радять пройти перші 10 рівні (так, тоді вони ще були безкоштовні), і вже якщо сподобається, продовжити. Я чесно пройшов лише перші 7 рівнів, розуміючи, що, навіть дійшовши до 10, далі у мене грошей просто немає. Коли вперше я зіткнувся з Java, щодня відчував подвійне почуття. Мене ніби ламало і викликало відторгнення. Ці пакети, запакувати все по пакетах. Назвав клас Dog, будь ласка і ім'я файлу таке ж. Після "хаосу" та могутності С++ ортодоксальність Java була вкрай незвична. Швидкість роботи цього добра залишала бажати кращого. Загалом, я чесно кинувся забувати це як тихий жах, і вже тоді поглядав знову в бік C#. Ще в 2007 році пам'ятаю, коли читав книгу з .NET FRAMEWORK 3.0, думав про себе: "Напевно, на цьому можна писати цікаві ігри". Немов передбачаючи активний розвиток Unity та іншого. Звичайно, не без допомоги C++. Але повернемося до історії з Java. Зробивши перший захід на JavaRush і зупинившись на 7-му рівні, я загруз у гуманітарному навчанні на політології. Писав наукові статті, і лише уві сні робив спроби компіляції коду. Коштів на існування ледь вистачало. Важкі часи, звісно. Але не без Божої допомоги я відучився і захистив диплом. Одразу після захисту мені запропонували вступити до магістратури, але вже за напрямом не політології, а соціології. Бюджетна форма навчання мене спокушала, і я погодився. Тут відразу обмовлюся (опускаю два роки життя): коли після початку вивчення PHP я зустрічаю молодого дизайнера, ми пліч-о-пліч робимо замовлення на фріланс майданчику. Він робить дизайн, я роблю верстку. Це лише невеликий досвід на frontend. Майстер в ЮУРГУ за напрямом соціології вже здавався більш прикладним та практичним заняттям. В курсі була вищ.математика, мат. аналіз, статистика та інше (практично все те, що зараз у roadmap на Data Science). Навіть Python був під кінець магістратури. І саме в цей момент, початок другого курсу магістратури, я розумію, що працювати з цим не дуже хочеться, та й затребуваність саме "соціології" несуттєва. Дивлюся знову у бік розробки, і знову списуюсь з друзями, які радабо свого часу JavaRush. Пройшло 3-4 роки з першої спроби. На мій великий подив, хлопці вже працюють як Java-розробники, на middle позиціях. Історій успіху вони не писали, але в особистому спілкуванні я здивувався, що вже після 18-19 рівня вони влаштовувалися на стажистів або Junior. Я знову почав думати, поневірятися, метатися... Дивитися добу безперервно рейтинги Tiobe, Pypl і т.д. Відео на youtube - "Яку мову програмування вибрати першою в XXXX році?". Лише зараз, пропрацювавши 6 місяців на позиції розробника, я усвідомлюю всю безглуздість цього питання. Кількість вакансій на hh.ru в моєму регіоні (на той момент Челябінськ) залишала бажати кращого. Один із "успішних" друзів, хто вже влаштувався на розробку, сказав прямим текстом: "вистачить думати, оплачуй підписку на JR, проходь до 20 рівня, далі ми допоможемо тобі з базою Spring`а, а далі від тебе залежатиме". Я пам'ятаю цей прекрасний день, 11.09.2019 - покупка річної підписки по акції за 5800 руб... На той момент і подумати не міг, що ця придбання окупиться в х100500 разів. Це була подорож довжиною у 5 місяців. Згадую досі 8-й рівень JR (квест Java Syntax): він виявився переломним. Багато хто, хто займався в той момент паралельно зі мною, не витримали складності завдань і залишабо JR зі словами: "ой, ну нафіг, я піду займуся інвестиціями, і отримуватиму пасивний дохід 200к руб. на місяць". На сьогодні всі ті, кого я знав і хто здався на 8-му рівні, не стали інвесторами, мільйонерами, або хоча б середнім класом. Вони приходять іноді, зі словами: "дай грошей у борг". Як я відчув 8-й рівень (Java Syntax) на JavaRush: Дивовижна подорож до Вальхалли, або як історик-архівіст став розробником.  - 1 Друг, з яким ми пліч-о-пліч проходабо рівні аж до 20-го, будучи старшим за мене на 9 років, влаштувався успішно в компанію Luxoft. Думаю, він ще встигне написати свою історію. Якщо вже зовсім не розводити тут байку Крилова, то мораль і результат такі: 1) Перший соцзабез був у компанії Zaycev.net у Челябінську. Успішно завалив (1.5 години були вкрай дивні питання, решту хвабон 20-25 я намагався зробити тестове на папері). Дякую хлопцям за досвід першої співбесіди. На тестовому було стандартне питання про принципи ОВП, далі переведення з однієї системи числення до іншої. Усього 6 завдань. Останнє — написати алгоритм сортування — просто не дійшов до нього, т.к. завис на 5-му (завдання: "Що робить цей код?") і час скінчився. 2) Після провального соцзабезу в березні 2020 в zaycev.net почалася велика депресія - пандемія Covid-2019. Вкрай неоднозначний час. Як буде відбуватись захист дисертації? Що робити далі? Де працювати? До того ж у мене згоріла дача, яку я купив за пару сотень тисяч з надією побудувати свій будиночок. Хоч якийсь, аби не поневірятися в 30 років. 3) У розпал пандемії я приймаю рішення переїхати з Челябінська до Новосибірська (а що мені втрачати? Дача і так згоріла). Сам тріп був "веселий", Курганську область закривають на в'їзд та виїзд. Страх, що зупинить поліція і розгорне додому зі словами "без прописки не можна до Новосибірська". Так званий період режиму самоліквідації . 4) Переїхавши до Новосибірська, я не можу знайти роботу. Прекрасні хлопці з компанії 2ГІС, після 4-го етапу співбесіди, кажуть мені, що вибачте, ми витратабо Ваш місяць, але вже знайшли іншого (це була спроба влаштуватися не на розробку, а звичайна вакансія телефоніста); 5) Далі влаштовуюсь продавцем у чудовий магазин "Лента", бо літо 2020 року, і такий варіант здавався казкою. Колишні власники ресторанного бізнесу змушені одягати жовті сумки Яндекс.Єди та працювати на ногах. Виживали, як могли. Події свіжі, пам'ятаєте самі. 6) Друг, з яким ми вирішували завдання на JR (згаданий вище), вже влаштувався на роботу (через 5 місяців навчання на JR), кличе мене взяти участь у open source проекті на Java. Мені сподобалася думка отримання та обмін досвідом, навіть якщо за це не платять. На цьому проекті була людина, яка організувала саму цю "движуху". Паралельно він працював на позиції TeamLead QA у великій компанії у Москві. Йому сподобалися мої ідеї щодо проекту і якнайкраще використовувати Spring (на той момент я знав лише ази). 7) Настав день, коли цей організатор open source проекту запитав: чи можу я приділяти більше часу? І де я взагалі працюю? Почувши слова "Лента" та продавець-консультант, він порекомендував мене у свою компанію на позицію Mobile QA. Пристрій ДПХ. Я не знав нічого про Selenium, Appium та інше. Але буквально за кілька тижнів я в'їхав у суть написання автотестів для мобілок на базі Android та iOS. Базовий оклад, вище ніж 1000$ мене сильно вразив. З цього моменту життя пішло зовсім по іншому руслу. 8) Настає серпень 2020 року, буквально 1,5 місяця я працюю в компанії на позиції QA. Це був серпневий вечірок,Juniorіз заголовка резюме. Додав також невеликий комерційний досвід на новому місці, свій прогрес на JavaRush (на той момент це був 22-й рівень). Також зазначив, що беру участь в open source проекті і скинув посилання на єдине тестове завдання в Zaycev.net на github (до речі так, його я робив місяць, і мабуть, я зробив реальний кейс — це був погодний сервіс). 9) Настає той день Х, коли в "черговий" серпневий ранок, я перевіряю пошту. Бачу повідомлення від hh.ru, що компанія хоче з вами поспілкуватися. Перша реакція була такою: "Так? Серйозно? Ви жартуєте? Я вам відправляв резюме ось уже який рік, і тільки зараз?". Сказати, що я готувався до співбесіди, нічого не сказати. Я просто не готувався, розуміючи що, чи вистачить поточних знань, або вибач, друже, але тобі ще вчити і вчити. 10) Настав день дзвона по Zoom з hr. За мініту до зустрічі я задумався: а чи варто підключатися зараз і ганьбитися? А чого думати, я нічого не втрачаю: в Zaycev.net я і так максимально обкладався, а досвід співбесід потрібен. Зваривши чашку кави, я зайшов рівно у призначену годину. На превеликий подив мене чекало двоє людей: 1) Власник продукту і 2) Team Lead. Я розповів історію, приблизно ту, що ви читали досі. Відповідав питання з розряду: " Навіщо пішов у магістратуру? " , " Навіщо повернувся до Росії з Італії назад? " , " Чому проміняв життя у Мілані життя у Новосибірську? " . На той момент, буквально за день до дзвінка, я налаштовував сервер Wildfly на чистому Debian 9, і цими словами закінчив свій міні монолог на соцзабезі. Після невеликої паузи я зрозумів, що коннект відбувся, і коротко було озвучено: "Ти згоден зробити тестове і, у разі успішного виконання, ми тебе беремо?" Моя відповідь була: "Так". PS Я зробив тестове за пару днів, паралельно продовжуючи роботу на позиції QA. Завдання було досить цікавим: потрібно було написати сервіс на чистому Spring, де на вхід контролера надходив запит, потрібно було реалізувати кілька шарів DTO, і в репозиторії отримувати дані не з БД, а з файлів json, структуру яких повинен був придумати сам. Кому цікаві подробиці завдання та його рішення, пишіть мені на личку: не знаю, наскільки правомірною буде публікація цього матеріалу. Після відправки завдання на перевірку в той же день я отримав "Так" з боку компанії, що запитила мене. Офіційно я став Java-розробником. Довелося багато чого опустити, щоб не втомлювати Вас текстом. Принадність всієї ситуації в тому, що передплату на JavaRush я сплатив 11.09.2019, а оффер отримав 11.09.2020 — рівно 1 рік, з великою паузою під час початку пандемії та підготовкою до захисту магістерської дисертації. На цей день я отримав безцінний досвід розробки комерційних програм. 6 місяців дали більше ніж роки навчання. Але це було б неможливим без практичного досвіду на JavaRush (завдання і вкотре завдання). Зараз з усією подякою до проекту JR, намагаюся допомагати друзям, які, як і я, хочуть потрапити в розробку на Java, дарую деяким річні преміум-підписки. Завдяки роботі я не ходжу на роботу. Я не можу навіть назвати це роботою: я отримую задоволення від важких завдань. За цей час були вивчені технології від Kafka до Hadoop, і власний стек технологій не перестає поповнюватися. Студентські роки загальною довжиною майже в 9 років прищепабо навички посидючості та постійну тягу вчити та вивчати нове. Без цього жодні тисячі доларів на місяць Вас особливо не мотивують. Іти в цю сферу виключно через гроші точно не варто. Колись, живучи на вулиці, я не міг уявити, що куплю собі будинок у екологічній зоні сибірських просторів. Займатися улюбленою справою, отримуючи гідну оплату праці – завдяки чому виживання закінчено. Згадую знамениту фразу Петір Бейліша із серіалу Ігри Престолів: Дивовижна подорож до Вальхалли, або як історик-архівіст став розробником.  - 2 Майже 30 років виживання, рівно за рік пандемії стали Валхаллою, в яку так само нестримно прагнуть усі вікінги. Якщо ти тільки думаєш, чи навчати Java? Чи мені це потрібно? Чи зможу я? Просто прогортай до footer`a на головній сторінці JR і прочитай ті самі три слова: Програмістами не народжуються. Блок порад Яка може бути історія та без порад? 1) Не рекомендую заглиблюватися в завдання з іграми, за умови, що вам якнайшвидше потрібно влаштуватися. Чому? А тому, що Ви витратите тонну часу на те, що Вам не знадобиться. А ось натомість повчити Spring, наблизить Вас до мети набагато швидше. ( Однак якщо Ви маєте час, у Вас солодке життя, і є дах над головою, можете і ігри поробити ). Але повторюся: Java - це не про gamedev. Ах так, загалом забудьте про ігри на комп'ютері, видаліть Steam в телефонах і на інших носіях. Я знову пограв у Відьмака лише через 5 місяців роботи на позиції розробника. 2) Приділіть більше часу структурам даних та колекціям (по першій вони знадобляться Вам під час виконання завдань з рефакторингу коду); 3) Вчити SQL можна лише до Join`ів - якщо передбачається пройти інтерв'ю. Решту докурітьпо дорозі до офісу. Найкращий ресурс на даний момент у рунеті: sql-ex.ru 4) Spring. Так-так, це вже як Java-core. За умови, що Ви бажаєте влаштуватися на роботу. Мені вистачило відеокурсу Алішева на Youtube та кількох статей на Хабрі. 5) Алгоритми, так щоб відсякувало? Навряд чи, однак, парочку поширених сортувань знати зайвим не буде. Книгу Грочаємо Алгоритми досі не прочитав до кінця. 6) З книг виявабося вкрай корисними Д. Блох - Java-ефективне програмування (3-тє видання) і Р. Мартін - Чистий код. "Філософію Java" Брюса Еккеля досі не прочитав (зупинився на 150 сторінці). 7) Впишіться в будь-яку движуху, де можна отримати досвід. Open source, свій пет-проект, можливо, стажування. Звичайно ж, корисну активність відобразіть у резюме: загалом "зачешіть" резюме. 8) Без праці не виловиш і баги зі ставка. Якщо Ви пройдете чесно 8-й рівень (Java Syntax) на JavaRush, включаючи додаткові завдання, знайте: Ви майже стали Java-котиком. Далі буде трохи легше. 9) Як готуватися до співбесід? Хай простить мене Один за відкриття скарбниці, ось вам посилання: https://github.com/enhorse/java-interview 10) І не забудьте пройтися по темах Лямбд і Stream API в Java (бажано перед співбесідою, але частіше для більш продуктивної роботи з перших днів вашого пристрою). Спочатку ви не зрозумієте, що це і як часто це використовуватиметься. Однак, вивчивши тему, ви полюбите stream`и всієї своєї душенької. Дякую, що дочитали мою коротку історію. Радий відповісти на ваші запитання, а також особливо "гарячих" хлопців, покликати до себе в компанію на стажування або відразу на роботу, залежно від ваших знань зараз (подробиці в лс). Зовсім забув. На березень 2021 року у світі величезний кадровий голод на Java-розробників. Глави компаній змушені платити вам, щоб ви забули на час про споживання і зволабо встати з дивана і стати розробником. Те, що хтось почав вивчати мову і дійшов до 3-4 рівня, ще не означає, що Вам не буде місця на ринку. Вас запилососять (у прямому значенні цього слова), як тільки ви освоїте хоча б ази Java Core. Глобалізація, яка привела нас до цифровізації (привіт Cyberpunk), потребує не просто армії розробників, а легіонів Java-котиків! Так, на Java продовжують писати нові проекти, а не просто займатися підтримкою легаси. Потрібно бути суперлінивим єнотом, щоб сьогодні, 2021 року, не потрапити у розробку. Компанії на Вас чекають. Компанії готові сплатити Вашу підготовку. Просто зробіть крок на зустріч! Не бійтеся! Агорі!
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ