JavaRush /Java блог /Random UA /Мій шлях Java-дая
Spoloborota
22 рівень
Казань

Мій шлях Java-дая

Стаття з групи Random UA
Як і багато хто тут, давно хотів написати історію свого вступу на шлях Java-розробника. І ось, зміг таки це реалізувати. Я почну здалеку. Все почалося 23 січня 2003 року. Увечері цього дня я прийшов додому після школи та театрального гуртка, зайшов до кімнати та побачив на підлозі коробки. Одну дуже велику. І дещо інших, поменше. Так, це був він – мій перший комп'ютер: AMD Athlon XP 1800+, 256 Mb оперативної пам'яті, NVidia GeForce 2 64 Mb та HDD на 40Gb. З цього важливого дня розпочинається нова історія мого життя. Тоді я навчався у 9-му класі. Що ж я почав робити, як тільки його встановив і ввімкнув? Звичайно ж грати! Приблизно на 4 роки я випав із життя. Квейк, дум, варкрафт, старкрафт, диябло, командендконкер дженералз, цивілізація, сайлент хілл, деус екс, гта, фаркрай та ін. Багато було конфліктів з мамою, яка не дозволяла мені довго грати і говорила робити уроки. Так, було нелегко перемикатися на навчання у школі, а потім і в інституті. Адже там був такий чудовий віртуальний світ, де для досягнення певних успіхів там, в іграх, потрібно було виконувати наперед певні дії, завжди можна було запустити попереднє збереження та досягти бажаного. Чи то річ у реальному житті... Коротше, багато життя я витратив на ігри. Але! Був дуже важливий для мене плюс у всьому цьому. Періодично ігри то не запускалися, то гальмували, то просто не встановлювалися. І ось у ці моменти виникало величезне бажання розібратися у проблемі. І тоді я встановлював, встановлював, налаштовував, і оптимізував усе, що міг. Починаючи від переробки розділів жорсткого диска та зміною файлової системи з переустановкою вінди, закінчуючи тюнінгом реєстру та кофігураційних файлів на іграх. Завдяки таким знанням, я став славитися серед друзів як "програміст". Допомагав зі своїми комп'ютерами, переустановкою вінди, видаленням вірусів та інше. До того ж, у мене тоді ще не було доступу до інтернету, а диски з ПЗ я купував у відповідних кіосках. І ось одного разу, влітку, після важко завершеного першого курсу технічного свого вишу, я вирішив почати продавати свої навички. Накидав у ворді оголошення із заголовком "Швидка Комп'ютерна Допомога" і ходив розклеював їх по селищу, в якому мешкаю. На "пиво та жуйки" вистачало. Далі, на 5-му курсі, замість того, щоб старанно писати дипломну роботу, влаштувався по знайомству адмінити в невелику конторку, що загинається. Вперше дізнався про домен віндовс, роботу в мережах, керіо винрут фаєрволл. Коли я отримав диплом за спеціальністю "Обчислювальні машини, комплекси, системи та мережі" у 2010, то я бачив для себе 2 шляхи - програмерський чи адмінський. Досвід у програмуванні був обмежений лабораторними, курсовими та дипломною роботою. Я вже тоді розумів, що таке масиви, цикли, умовні оператори та класи. Але ніколи особливо не тяжів до кодингу. Були спроби вчитися кодити ще у школі. Але ГТА успішно перебивала це бажання. Хоча, варто зазначити, що я кодив із чималим задоволенням. Допомагав із лабами одногрупникам. Але оскільки досвіду адмінських справ у мене було більше, я обрав саме цей шлях. На одній із наступних робіт, коли я розрулив проблеми, що накопичабося, вирішив, що настав час взятися за лінукс. Просиджував вечорами на роботі, експериментував. Результатом була настройка шлюзу в інет з файрволлом, перенаправленням портів, підключенням в інет по вай-фай, підключенням до впн. Так, не дуже круто, згоден. Але для початку було непогано. Завдяки цим знанням, я зміг влаштуватися у 2011 році на посаду керівника відділу впровадження та супроводу. У мене було у підпорядкуванні 4 особи. Ми займалися впровадженням товстого клієнта на Java Swing у магазинах та складах однієї ювелірної компанії. Зараз я розумію, яку цікаву річ ми впроваджували! Але тоді мене мало цікавабо тонкощі реалізації цього програмного забезпечення. Жив я у Казані. І давно хотів спробувати себе у самостійному житті. Дуже хотів поїхати до Негумової для цього. І ось, через деякий час, залишаючись працювати в тій самій організації, наприкінці 2012 року я перебрався до Москви. Оооо, це метро! Ці гігантські вулиці зі швидким потоком дорогих автомобілів! Ці величезні потоки людей всюди! Мене це все шалено приваблювало. Я був гордий тим, що зміг досягти цього переїзду. Після згортання проекту, в середині 2013 я вирішив, що настав час відходити від налаштування комп'ютерів, техпідтримки та адмінства. Несерйозно це мені здалося. Бачив 2 варіанти – аналітика чи управління проектами. Знайшлася вакансія, в якій затверджувалася можливість розвиватися до цих, вказаних мною посад. Мене туди взяли... І там я зрозумів... Чим ніколи в житті не хочу займатися! Був момент, коли я, перекладаючи сторінки у звіті щодо держконтракту у правильному порядку, раптом усвідомив те, що відбувається. О Боже!!! Мені вже чверть століття! Я стою і колупаюсь у цих папірцях, попередньо інтелектуально скопіпастивши текст у них з таких же папірців за минулий звітний період! Адже до цього я мутив цікаві штуки із серверами, організовував робочі процеси, допомагав людям... Це був переломний момент у моєму житті. Така собі "професійна криза". І ось я почав аналізувати, чим мені зайнятися в житті. Поки не пізно. Мені набридло займатися обслуговуванням. Я хотів сам щось творити і створювати. Це було основною причиною бродіння в умі. Я згадав, що в інституті мені непогано виходило кодити. Згадав, що програмісти непогано заробляють. Згадав, що є прикольна мова Java, товстий клієнт на якій ми впроваджували, і програми якої можуть запускатися під будь-якими ОС. І тут почалися пошуки матеріалів вивчення мови. Я вже не пам'ятаю, як нарвався на JavaRush. Це було приблизно в жовтні 2013 року. Спосіб подання інформації, величезну кількість прикладів мене дуже приваблювали. Я йшов на роботу, сідав за комп'ютер, приходив з роботи і ввечері знову сідав за комп'ютер, щоб навчатися. Просиджував до глибокої ночі часом. Перші 10 уроків у мене пройшли легко, т.к. багато понять мені було знайоме. Щоб залишалося більше часу на навчання, я перестав ходити до спортзали, а роздобув гирі та займався з ними вдома. У грудні приблизно, я планував, що не раніше кінця березня почну займатися пошуками роботи. А ось на роботу я почав підзабивати. Чи не прагнув отримати більше завдань, не виявляв ініціативу. Та й ненавидів я цю роботу. Іноді нахабно робив завдання JavaRush прямо на робочому комп'ютері в робочий час. Результат не змусив себе довго чекати - на початку січня 2014 року мені повідомабо, що я працюю у них лише до кінця місяця. Це був шок, звісно. Усвідомлення того, що я залишусь без основного доходу за потреби оплачувати житло, дуже непокоїло. Я старанно взявся за статті з роду "100 питань, які ставлять java-джуніорам на співбесіді". Ну і продовжував займатись на джавараш. Дійшов приблизно до 17-го рівня. Я ходив на різні співбесіди. І ось, в одній із організацій мені дали написати тестове завдання. Потрібно було написати програму, яка визначить, чи можна викласти в одну лінію всі кісточки доміно. Якщо так, то вивести цей варіант рішення. Натхненно я сів за комп'ютер її писати і... Був з жахом! У тепличних умовах задач JavaRush було дуже зручно сидіти і писати код. Але тут треба було все вигадати з нуля, з чистого аркуша, так би мовити! Ось тут пішли мої перші сумніви щодо прийняття рішення про становлення програмістом. Дуже важко було мені писати код! Я нічого не знав про базові штуки Java, мої знання були дуже поверхові. Та й незрозуміло було як вирішувати це завдання. Але я все ж таки зміг знайти в інеті алгоритм рішення з використанням графів - все зводилося до знаходження Ейлерового шляху. До речі, весь період вивчення Java мені дуже допомагав мій колега із попередньої роботи. Саме той, який писав цей товстий клієнт на Java. Він дуже допомагав мені у всьому. Допоміг вирішити завдання ще й за допомогою рекурсивного методу. І ось я відправив завдання на перевірку. Далі були довгі 2 тижні очікування відповіді... Але все пройшло успішно! Мене взяли! Урррааа, я зміг! 5го березня 2014 року я вийшов на роботу на посаді розробника Java. На щастя не було меж. Багато в чому ще тому, що я опинився в компанії, яка займається електронними платежами. А в ній дуже добре ставляться до персоналу. Чого тільки вартий їхній шикарний офіс і халявна кава і чай - тоді ще це для мене було напрочуд. І ось сиджу я, розгрібаю проект... І усвідомлюю... Що я зовсім нічого не розумію! Сервлети, фільтри, ксемель-парсери, ескуель запити, комміти в репозиторії, аштетепе геть і пост, юніт-тести... Все це було мені новинкою. Тому що я тільки недавно дізнався, як користуватися інтерфейсами. Бували такі моменти, що дивлюся я на код, лізу по ланцюжках викликів методів, все далі заглиблююся в код. І тут розумію, що забув із чого починав пошуки. Періодично були думки просто встати і втекти! А тут ще алергія весняна та проблеми в особистому житті. Мозок просто відмовлявся встигати все розуміти. Коротше. Я не пройшов випробувального терміну. Через 3 місяці перебування у цій шикарній організації я підписав розірвання трудового договору. Це був пекельний стрес. Я не впорався з тим, про що так мріяв. Самооцінку було сильно підірвано. З'явилося сиве волосся. Але я вирішив продовжувати те, що я почав. У липні 2014 року мене погодабося взяти на роботу в рідній Казані, в міжнародну організацію, над одним із продуктів якої працювали в казанському офісі. Там я писав фронтенд на свінгу. Програма виконувала переклад даних із однієї СУБД до іншої. Ох, і помучив же я тоді тимліда та сеніорів своїми поганими знаннями в написанні джава-коду! Ця робота мені дозволила набити руку, вивчити базові прийоми та безумовно покращила знання. Я зі свого боку також зробив кілька серйозних нововведень. У цей період мене дико долали сумніви. Мені все також важко давалася робота, не вистачало посидючості та концентрації уваги. І випробувальний термін ледве минув. Але, в лютому 2015 року, у саму кризову пору, пройшли скорочення штату. Скоротабо мене, як найдосвідченішого і найкосячішого, і колегу, як найстаршого і вже захитаного. Теж був нехабой стрес для мене. Я знав, що я ще зовсім зелений у програмуванні. І що в період кризи мало кому потрібні нові люди до штату. Усього 10 місяців досвіду роботи у мене вже було у скарбничці. Нехай і не особливо вдалого, але все ж таки досвіду. У березні, коли я був у пошуках, сталася дуже цікава подія. Цілком випадково в російській соцмережі мені написали чи не хочу я піти викладати Java. Мене ця пропозиція дуже здивувала. Як з'ясувалося ейчари тоді випадково тицьнули в мене, буквально, пальцем у небо. Адже навіть слів Java чи програмування не було вказано у мене у профілі. Ну що ж, я люблю всілякі авантюри, тому погодився приїхати і пройти щось на зразок співбесіди. Воно являло собою написання в блокноті маленької програми. Я впорався. Хоча дуже негативно сприйняв такий необ'єктивний спосіб перевірки знань. І тоді мені запропонували провести пробний урок. Дали відскановані сторінки з методики, якою побудований курс. Я підготувався, накатал презентацію та успішно провів цей урок. Після закінчення його мені сказали, що всі гуд, але уроки треба буде вести у школярів! У віці від 12 до 18 років. Тому попросабо переробити матеріал так, щоб було цікаво і зрозуміло цій віковій групі. Що я й зробив потім. В результаті мені повідомабо, що не готові мене взяти на користь іншого досвідченішого у викладанні кандидата. Ну нічого, я особливо не засмутився. Також повідомабо, що готові зі мною зв'язатися восени, коли набиратимуться нові групи. Та й у мене лише 10 місяців досвіду роботи було на той момент. Якось невпевнено я почував себе. Далі, у квітні, я працевлаштувався у найвідомішу і найбільшу в Казані багатопрофільну айтішну контору. Там я працював над різними проектами. Також, в серпні підхопив ініціативу колеги почати готуватися до здачі OCA. Коли почав готуватися, я зрозумів, що не знаю базові штуки в Java! Всі ці проблеми з ініціалізацією конструкторів при успадкування, просто безбашенний свіч, компайл тайм та рантайм. Виходить, що все це я почав вивчати лише трохи більше року, як почав працювати програмістом. Восени 2015 року, як і очікувалося, я зателефонував організаторам курсів і уточнив що до чого. Мені повідомабо, що зараз готується до запуску курс для дорослих. Я надихнувся. Попросив скинути матеріал, яким потрібно буде вести курс. Коли отримав його, він був дуже здивований - там були тільки теми, які потрібно розглянути! Виявилося, що я повинен сам сформувати весь навчальний матеріал – теорію, практичні завдання на уроках, домашню роботу. Ця обставина дуже зменшила ентузіазму. Адже я очікував, що просто пропускатиму через себе матеріал з методички, а потім його видавати в деякому вигляді на уроках. Але знову ж таки, я подумав, що коли ще мені життя підкине таку можливість? Я бачив кілька плюсів у цій діяльності для себе. По-перше, поліпшення та закріплення власних знань. Адже не дарма кажуть – хочеш щось вивчити чи зрозуміти – розкажи та поясни іншому! По-друге, привід подолати страх публічних виступів. По-третє, гарна нагода натренувати пам'ять. По-четверте, це виправить моє матеріальне становище, т.к. джуніорам платять небагато, а машинку вже давно змінити хотілося, бо прогнила наскрізь нексюша. Ну і по-п'яте - самолюбство тішиться, коли розумієш, що твої знання та досвід комусь можуть знадобитися. І ось, з листопада почалися у мене курси. Це було пекельне пекло! Знаходити та готувати матеріал, продумувати теми уроків, домашні завдання. На це витрачався абсолютно весь вільний час. У сб я готувався до уроку у ві, у все я готував урок на чт. Але це теоретично. У суботу ж я починав підготовку до уроку у Вт, до вечора в все я поспіхом намагався накидати матеріал. Ну і якусь частину встигав зробити на чт. До речі, активно пропагував JavaRush. Як будинок я давав пройти певні рівні на цьому чудовому сайті. До 10го безкоштовного рівня природно. Але й надалі рекомендував придбати передплату. Тому що вважаю, що джавараш чудово підходить для набивання руки на прикладах. Але теорію потрібно опрацьовувати додатково. Пам'ятаю той кошмарний мій перший урок. Я зайшов до навчального класу. Сів на учительське місце. До початку уроку залишалося 10 хвабон... Я сидів і розумів, що все добре, я в цілковитій безпеці... У клас почали заходити учні... Залишилося 5 хвабон до початку... Щось підказувало мені, що треба повторити матеріал, я щось забув із теми уроку, почала наростати тривога... І ось цей момент! Мені потрібно починати! Я встав. вийшов до центру перед проекційною дошкою. Підняв голову... І побачив ці приблизно 20 пар очей, які уважно і з недовірою на мене дивабося, ніби намагаючись просвердлити! Паніка! Я представився. Почав щось говорити, абсолютно забувши про все, що планував розповісти. Поступово відчув, що починають тремтіти коліна, голос щось здавлює. Мені важко стало вимовляти слова. Хотілося втекти. Але коли я закінчив теоретичну частину і перейшов до пояснення як створити новий проект екліпс, тобто до практичної частини, стало значно легше і урок пішов як по маслу. Ось так, у постійній напрузі від необхідності готувати уроки пройшов цей перший 4-місячний курс у мене. Я значно покращив свої знання в Java, закріпив основи. Змінив автомобіль. І перестав боятися незнайомої публіки. Навпаки, як і писали в книгах з риторики, я дуже драйвово почував себе в процесі уроку. Чого не скажеш про підготовку до нього. Так, це був дуже непростий період, коли я не встигав спілкуватися із друзями. Ну а про відсутність особистого життя я думаю і не варто згадувати. Перевагою себе як викладача курсу про становлення Java-розробником я вважаю те, що сам пройшов відносно недавно цей шлях. Зіткнувся з різними проблемами у цьому. Пройшов купу співбесід. Я знаю, які технології актуальні на даний момент. І найголовніше – я знаю, як не треба робити! А саме виходити на пошуки роботи так рано, як це я зробив. Але я мала таку ситуацію, що потрібні були кошти для існування. А так, я б ще як мінімум місяці 3 продовжував би навчання, вивчав би технології та фреймворки, спробував би написати якусь марну, але технологічну програму. У такому випадку, стресу та сивого волосся було б значно менше. У тій організації я пропрацював рік та місяць. В принципі, там було все добре з погляду професійного зростання до того моменту, як пішов тимлід. Це була людина, яка направляла, давала мені різні цікаві завдання. Навіть незважаючи на часті мої косяки, ех. Він знав усе, з будь-яких питань могла дати пораду - і з фронтенду, і з бекенду, і з субд... З його відходом було втрачено зв'язуючу ланку між керівництвом, розробниками та аналітиками. Повний розгардіяш розпочався в проекті, коротше. До речі, лише до кінця роботи у цій організації мене перестали відвідувати думки про правильність мого вибору шляху розробника. До цього вони мене завжди супроводжували. При усвідомленні кожної проблеми, затримці розв'язання завдання, базі в моєму фіксі іншого бага. Це дуже давило. Але я пам'ятаю, твердо вирішив ще на початку шляху, що приймати рішення про продовження або завершення шляху розробника буду лише через 5 років. Якось уже важко у мене все йшло. Я відчував постійно, що навколо мене люди набагато розумніші за мене, що я не можу так само швидко схоплювати як вони. Що й не варто, мабуть, це все думати. У червні цього року я влаштувався працювати туди, де працюю досі. Ми працюємо над дуже цікавим сервісом резервування хмарних даних із сервісів типу гуглдиска, дропбокса, офіс365 на сервері амазону. Хочу зазначити, що, якби не уважне опрацювання теми багатопоточності для проведення уроків, я не зміг би пройти співбесіду до цієї організації, т.к. були дані завдання саме з цієї частини. Та я вирішив знову повернутися до підготовки до OCA. Ще наприкінці зими знайшов чудові матеріали для цього. Але все не шукав часу на підготовку. І ось, між 2 та 3 потоком учнів, у мене був вільний місяць для підготовки. До початку курсу я, звісно, ​​не встиг. Але все ж таки досяг свого - пройшов екзаменацію оракл 1z0-808 з 81% правильними відповідями при 65% прохідних. Хотів, звісно, ​​85%. Але літр з лишком випитої води попередньо, щоб "мозок краще розумів", змусабо закінчити на півгодини раніше без можливості перевіряти ще раз все. Але я все ж дуже пишаюся цією успішною сертифікацією. Наприкінці січня 2017 року планую йти здаватися на OCP. Так, користі від сертифікації не так багато, якщо подумати. Особисто для мене це можливість добре закріпити найази. Т.к. мені необхідно відповідати на каверзні питання учнів. Наприкінці своєї історії хочу написати ось що. Незважаючи на те, що розробником я працюю вже майже 2,5 роки, як таким програмістом я себе не відчуваю. Я знаю який величезний обсяг інформації мені потрібно через себе пропустити про всілякі алгоритми, субд, структури даних, веб-технології, патерни, фронтенд, фреймворки і їх множинні різновиди. Та й на JavaRush хочу продовжити займатися для загального розвитку, благо підписка безлімітна. Роботи непочатий край! І головне – мені це подобається. Хочеться знати дедалі більше. Вміти писати код швидше та краще. Хочеться з часом перерости в тимліда чи архітектора. Але раніше стільки всього! Залишається тільки правильно розподіляти час і менше прокрастинувати. Дякую за увагу!
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ