JavaRush /Java блог /Random UA /Шлях Java розробника
trinit
41 рівень

Шлях Java розробника

Стаття з групи Random UA
Ну ось, настала і моя черга написати свою історію. Якщо стисло, то я вже 3.5 місяця, як Junior Java Developer. Якщо хочете подробиць, читайте далі. Як і всі, хто пише історії працевлаштування, напевно, правильно розпочатиме з передісторії, хто я був і ким став. Давним давно, багато років тому я намагався почати програмувати. Це був 2-й чи 3-й клас, я записався на гурток програмування, був схожий кілька разів, навчився набирати на клавіатурі своє ім'я та домашню адресау, на цьому моє програмування закінчилося, бо я чомусь кинув той гурток. У школі я не мав програмування, в універі теж, так, як я вчився на бухгалтера. Кілька разів я намагався повчитися програмування самостійно. У мене вдома була книга з інформатики, де були завдання на паскалі, але я нічого там не зрозумів, а пояснити не було кому і я на цю справу забив. Роки йшли, я вивчився на бухгалтера, роботи не було. І приблизно два роки тому я знайшов роботу в одній фірмі-франчайзі від 1С. Ішов туди лінію техпідтримки користувачів, т.к. я знав бухгалтерію, а основним напрямком 1С поки що є ця галузь. Через деякий час директор сказав, що треба було б, щоб я повчив програмування, т.к. писати нікому та й у техпідтримці ці знання не завадять. Подітися було нікуди і це був мій перший крок на дорозі. Два місяці я читав книгу по 1С платформі, потім мені пояснабо, що таке змінна, а далі, як у тумані :) Жартую. Далі змінних я взагалі нічого не розумів і довелося переглянути курси для початківців на основі Python-a. Вже в процесі роботи та конкретних завдань я починав розуміти цикли, масиви, механізм покрокового налагодження. Справжнім проривом був момент, коли я зрозумів, як передавати параметри інші функції. Якось я сидів і гуглив у пошуках, що мені може допомогти у вивченні 1С і на одному з форумів знайшов, що в цьому може допомогти вивчення мови VB.NET. То був ще один прорив. Я скачав книгу "Лукін С.Н. Зрозуміло про Visual Basic.NET. Самовчитель у 3 томах" і почав по ній займатися. Книга дуже хороша, особливо для початківців. І мова для початківців теж хороша, хоч і багато хто про неї говорить погане (мабуть пам'ятають старий VB). З одного боку він дозволяє пиляти логіку, не відволікаючись на інтерфейс користувача, з іншого боку, він як процедурний, так і ООП-шний одночасно. До того ж VB.NET справді виявився дуже схожим на 1С, точніше, 1С був схожим на нього і мені було легко цілий день програмувати на 1С, вирішуючи робочі завдання, а ввечері приходити та швидко перемикатися іншою мовою. Весь вільний час, вихідні я присвячував програмуванню. Приблизно на той час мені вже починала набридати 1С і приходило розуміння, що з 1С грошей не заробити (заробляв я в півтора рази менше, ніж мої клієнти-бухгалтери, для яких писав програму і яких навчав). Я почав думати, чим зайнятися далі? Прийшли думки про Андроїд, як здавалося, це цікаво, перспективно тощо. Друг програміст сказав, що там пишуть Java, інтернет підтвердив. Друг сказав, що перед Java краще б повчити С++. Вже хотілося починати, але було ще більше половини книжки з VB.NET, а кидати не хотілося. Книгу можна було прочитати за місяць, але я зрозумів, що одне читання без практики нічого не дасть і надумав написати якийсь невеликий, але свій проектик. Для цього було обрано блокнот. Я написав блокнот, який відкриває, зберігає файли, визначає кодування під час відкриття файлу, розфарбовує синтаксис 1С. Потім я написав калькулятор (ніколи не думав, що це складна штука). Потім був ще один великий, за моїми мірками, проект – це програма для вирішення тестів з 1С. Суть у тому, що вона бере текстовий файл із запитаннями та відповідями, заганяє це все у excel-файл (так, тоді я ще не вмів працювати з БД) і потім можна вирішувати, як розділ, так і випадкові квитки тощо. Було ще кілька дрібних програм, щоб зрозуміти потоки, модифікатори доступу та інші штуки. Настав час, коли я завершив книгу з VB.NET. У мене була достатня база приблизно як після 2-го або навіть 3-го курсу універа. На роботі теж виходило добре писати, розбиратися в нетрях коду. Ось тільки робота в кінець набридла, тому щоб писати на 1С не потрібно знати програмування, а більшою мірою потрібно просто розуміти механізми роботи платформи. Настала черга С++, як і радив друг. Окрив книгу С++, відкрив другу. Скрізь пишуть, що перед тим, як вивчати С++, потрібно знати С. Знайшов книгу по С, погортав і подумав "ТАК НУ ВАС НАФІГ!", я ж хочу на Андроїд писати, мені потрібна JAVA. І як би остаточно і не кидаючи С, вирішив, так, чисто на майбутнє подивитися курси для початківців з Java. Вгадайте, куди я натрапив? Так, на наш улюблений JavaRush. Це був новий 2015 рік. Варто мені натиснути велику зелену кнопку ГРАТИ, як мене захлеснуло. Перші 10 рівнів пройшли без нічого. Далі було платно, а долар був небувалих висот, треба було чекати на знижку. Тим часом мені трапабося безкоштовні курси з Python середнього рівня складності, мізки порозім'яти ніколи не буває зайвим і я пройшов ці курси, що зайняло ще кілька місяців. Якось мені випав шанс піти на співбесіду в одну компанію, їм потрібна була людина, яка пише на Java. Всю ніч я не міг нормально спати, все думав, що мене можуть спитати, вранці повторював різницю між інтерфейсом та абстрактним класом, модифікатори доступу, поліфорфізм. Але мене нічого не запитали, а просто написали список технологій, які потрібно вивчити, після чого пообіцяли дати тестове завдання, на його підставі подивляться стиль написання коду, логіку й надалі ухвалять рішення про моє працевлаштування. Вакансія була не на Андроїд, а на сервер сайд, може це і на краще. На другий день я звільнився з 1С, тому що ця сфера для мене була вичерпана, а отримувати копійки та лопатити тонни 1С коду щодня, після чого вивчати Java-технології - було вищим за мої сабо. Я з прагненням почав вивчати Java-технології, які мені дали, ось цей тоді я ще не вмів працювати з БД) і потім можна вирішувати як розділ, так і випадкові квитки тощо. Було ще кілька дрібних програм, щоб зрозуміти потоки, модифікатори доступу та інші штуки. Настав час, коли я завершив книгу з VB.NET. У мене була достатня база приблизно як після 2-го або навіть 3-го курсу універа. На роботі теж виходило добре писати, розбиратися в нетрях коду. Ось тільки робота в кінець набридла, тому щоб писати на 1С не потрібно знати програмування, а більшою мірою потрібно просто розуміти механізми роботи платформи. Настала черга С++, як і радив друг. Окрив книгу С++, відкрив другу. Скрізь пишуть, що перед тим, як вивчати С++, потрібно знати С. Знайшов книгу по С, погортав і подумав "ТАК НУ ВАС НАФІГ!", я ж хочу на Андроїд писати, мені потрібна JAVA. І як би остаточно і не кидаючи С, вирішив, так, чисто на майбутнє подивитися курси для початківців з Java. Вгадайте, куди я натрапив? Так, на наш улюблений JavaRush. Це був новий 2015 рік. Варто мені натиснути велику зелену кнопку ГРАТИ, як мене захлеснуло. Перші 10 рівнів пройшли без нічого. Далі було платно, а долар був небувалих висот, треба було чекати на знижку. Тим часом мені трапабося безкоштовні курси з Python середнього рівня складності, мізки порозім'яти ніколи не буває зайвим і я пройшов ці курси, що зайняло ще кілька місяців. Якось мені випав шанс піти на співбесіду в одну компанію, їм потрібна була людина, яка пише на Java. Всю ніч я не міг нормально спати, все думав, що мене можуть спитати, вранці повторював різницю між інтерфейсом та абстрактним класом, модифікатори доступу, поліфорфізм. Але мене нічого не запитали, а просто написали список технологій, які потрібно вивчити, після чого пообіцяли дати тестове завдання, на його підставі подивляться стиль написання коду, логіку й надалі ухвалять рішення про моє працевлаштування. Вакансія була не на Андроїд, а на сервер сайд, може це і на краще. На другий день я звільнився з 1С, тому що ця сфера для мене була вичерпана, а отримувати копійки та лопатити тонни 1С коду щодня, після чого вивчати Java-технології - було вищим за мої сабо. Я з прагненням почав вивчати Java-технології, які мені дали, ось цей тоді я ще не вмів працювати з БД) і потім можна вирішувати як розділ, так і випадкові квитки тощо. Було ще кілька дрібних програм, щоб зрозуміти потоки, модифікатори доступу та інші штуки. Настав час, коли я завершив книгу з VB.NET. У мене була достатня база приблизно як після 2-го або навіть 3-го курсу універа. На роботі теж виходило добре писати, розбиратися в нетрях коду. Ось тільки робота в кінець набридла, тому щоб писати на 1С не потрібно знати програмування, а більшою мірою потрібно просто розуміти механізми роботи платформи. Настала черга С++, як і радив друг. Окрив книгу С++, відкрив другу. Скрізь пишуть, що перед тим, як вивчати С++, потрібно знати С. Знайшов книгу по С, погортав і подумав "ТАК НУ ВАС НАФІГ!", я ж хочу на Андроїд писати, мені потрібна JAVA. І як би остаточно і не кидаючи С, вирішив, так, чисто на майбутнє подивитися курси для початківців з Java. Вгадайте, куди я натрапив? Так, на наш улюблений JavaRush. Це був новий 2015 рік. Варто мені натиснути велику зелену кнопку ГРАТИ, як мене захлеснуло. Перші 10 рівнів пройшли без нічого. Далі було платно, а долар був небувалих висот, треба було чекати на знижку. Тим часом мені трапабося безкоштовні курси з Python середнього рівня складності, мізки порозім'яти ніколи не буває зайвим і я пройшов ці курси, що зайняло ще кілька місяців. Якось мені випав шанс піти на співбесіду в одну компанію, їм потрібна була людина, яка пише на Java. Всю ніч я не міг нормально спати, все думав, що мене можуть спитати, вранці повторював різницю між інтерфейсом та абстрактним класом, модифікатори доступу, поліфорфізм. Але мене нічого не запитали, а просто написали список технологій, які потрібно вивчити, після чого пообіцяли дати тестове завдання, на його підставі подивляться стиль написання коду, логіку й надалі ухвалять рішення про моє працевлаштування. Вакансія була не на Андроїд, а на сервер сайд, може це і на краще. На другий день я звільнився з 1С, тому що ця сфера для мене була вичерпана, а отримувати копійки та лопатити тонни 1С коду щодня, після чого вивчати Java-технології - було вищим за мої сабо. Я з прагненням почав вивчати Java-технології, які мені дали, ось цей І як би остаточно і не кидаючи С, вирішив, так, чисто на майбутнє подивитися курси для початківців з Java. Вгадайте, куди я натрапив? Так, на наш улюблений JavaRush. Це був новий 2015 рік. Варто мені натиснути велику зелену кнопку ГРАТИ, як мене захлеснуло. Перші 10 рівнів пройшли без нічого. Далі було платно, а долар був небувалих висот, треба було чекати на знижку. Тим часом мені трапабося безкоштовні курси з Python середнього рівня складності, мізки порозім'яти ніколи не буває зайвим і я пройшов ці курси, що зайняло ще кілька місяців. Якось мені випав шанс піти на співбесіду в одну компанію, їм потрібна була людина, яка пише на Java. Всю ніч я не міг нормально спати, все думав, що мене можуть спитати, вранці повторював різницю між інтерфейсом та абстрактним класом, модифікатори доступу, поліфорфізм. Але мене нічого не запитали, а просто написали список технологій, які потрібно вивчити, після чого пообіцяли дати тестове завдання, на його підставі подивляться стиль написання коду, логіку й надалі ухвалять рішення про моє працевлаштування. Вакансія була не на Андроїд, а на сервер сайд, може це і на краще. На другий день я звільнився з 1С, тому що ця сфера для мене була вичерпана, а отримувати копійки та лопатити тонни 1С коду щодня, після чого вивчати Java-технології - було вищим за мої сабо. Я з прагненням почав вивчати Java-технології, які мені дали, ось цей І як би остаточно і не кидаючи С, вирішив, так, чисто на майбутнє подивитися курси для початківців з Java. Вгадайте, куди я натрапив? Так, на наш улюблений JavaRush. Це був новий 2015 рік. Варто мені натиснути велику зелену кнопку ГРАТИ, як мене захлеснуло. Перші 10 рівнів пройшли без нічого. Далі було платно, а долар був небувалих висот, треба було чекати на знижку. Тим часом мені трапабося безкоштовні курси з Python середнього рівня складності, мізки порозім'яти ніколи не буває зайвим і я пройшов ці курси, що зайняло ще кілька місяців. Якось мені випав шанс піти на співбесіду в одну компанію, їм потрібна була людина, яка пише на Java. Всю ніч я не міг нормально спати, все думав, що мене можуть спитати, вранці повторював різницю між інтерфейсом та абстрактним класом, модифікатори доступу, поліфорфізм. Але мене нічого не запитали, а просто написали список технологій, які потрібно вивчити, після чого пообіцяли дати тестове завдання, на його підставі подивляться стиль написання коду, логіку й надалі ухвалять рішення про моє працевлаштування. Вакансія була не на Андроїд, а на сервер сайд, може це і на краще. На другий день я звільнився з 1С, тому що ця сфера для мене була вичерпана, а отримувати копійки та лопатити тонни 1С коду щодня, після чого вивчати Java-технології - було вищим за мої сабо. Я з прагненням почав вивчати Java-технології, які мені дали, ось цейСписок: 1. OOP. 2. Maven. 3. Apache Tiles. 4. Spring MVC. 5. Hibernate. 6. Eclipse (я раджу використовувати не чисте середовище, а STS від Spring - https://spring.io/tools/sts/). 7. Tomcat 8. 8. JUnit. від себе додам ще кілька технологій, які дуже бажано знати: 9. Вооtstrap - з ним ви дуже швидко можете зробити інтерфейс сайту не винаходячи самі знаєте чого... 10. JQuery - щоб не писати тонни нативного JS коду + тут ​​є всякі корисні плюшки типу autocomplete() тощо. 11. Linux/Ubuntu - здебільшого на роботі стоятиме вона. Потрібно хоча вміти поставити JDK, Tomcat. 12. GIT/інша система контролю версій – це must have. 13. JSON. і технології, які, можливо, доведеться використовувати в проектах: 14. AngularJS - JS framework, дуже крута штука. 15. МоngoDB. 16. RabbitMQ. і без чого взагалі ніяк: 17. English! Потрібно було тримати баланс між якістю вивчення та витраченим на це часом. Вакансія не могла мене чекати вічно, саме це мене й підганяло. Щодня, близько 14-16 години я приділяв навчанню. Щоб ознайомитись із цими технологіями, у мене пішло 3 тижні. Про одні технології я просто почитав кілька статей, про інші подивився відео. З такими, як Spring та Hibernate знайомився на практиці – дивився відео індусів та повторював, що вони роблять. Написав кілька JUnit тестів, tomcat просто встановив на комп'ютер. Maven-ом підключав dependencies в pom.xml. Про Eclipse подумав, що це просто інструмент, і я в будь-який момент зможу перейти на нього з IDEA (як я помилявся). Хоч і не був упевнений у знаннях, але настав час брати тестове. Взяв, виявилося не дуже складне, тому що за останні три тижні я стикався майже з усім цим при вивченні технологій. Потрібно було написати веб-додаток - таскменеджер (сайт), де можна створювати завдання, змінювати його, видаляти, надавати їй статус, дату створення. Також до нього розробити модуль реєстрації/входу. Це можна було зробити без використання JS, красивого UI, простим HTML & CSS. У цей же час з'явилася знижка на JavaRush, і я оформив передплату, але часу на курси вже не було. Було дуже цікаво виконувати тестове завдання. На основний функціонал пішов тиждень, потім ще три на виправлення дрібних багів, рефакторинг, переписування з org.hibernate.SessionFactory на javax.persistence.EntityManager, зміна бази даних з MySQL на H2 або HSQLDB, написання JUnit тестів. Поки це все переробляв, зіткнувся з тисячею помилок, попутно навчився читати англійською тепер уже улюблений stackoverflow і хоч трохи щось розуміти, хоч і з гугл translate. Також я боровся з Eclipse, адже вона була у списку технологій, які дали мені на співбесіді. Скажу лише, що різниця між IDEA та Eclipse колосальна. Уявіть, що ви летить у літаку, так ось, IDEA - це літак з пілотом, а ви спите в кріслі першого класу і потихеньку летить до місця призначення, а Eclipse - ви теж летить у літаку, але вже як пілота, за бортом гроза і блискавка кожні 20 хвабон потрапляє до двигуна. Якщо серйозно, то IDEA багато чого робить за вас, а ви про це навіть не здогадуєтеся, в Eclipse все це потрібно налаштовувати, конфігурувати, прописувати. У перші дні "свого екліпсу" я плювався, матюкався і виявляв суїцидальні нахабо, після 5 місяців роботи з цією IDE я можу заявити, що вона класна, потужна і придатна для роботи, просто потрібно звикнути. У результаті все вийшло, була ще одна співбесіда з питаннями щодо реалізації функціоналу додатку, і я його пройшов. Потім ще одна співбесіда з директором. Потім деякі люди, які вирішували мою долю, пішли у відпустку, потім були травневі свята, потім везли мій комп, ще щось. Так минуло ще 2 місяці. За ці 2 місяці я встиг пройти 13-22 рівні на JavaRush, подивитися 2 курси Батиршинова з Spring і Spring MVC, до речі, придатні курси, але тільки для початківців, тому що в основному всі приклади на рівні Hello world. І я потрапив до роботи. Відразу ж дали проект – REST API для іграшки під iOS, спілкування через JSON. Було дуже цікаво, але тяжко. Особливо важко було спочатку вникнути в те, що я ніколи не бачив – це Ubuntu та GIT. Ubuntu освоюється без проблем, а ось GIT – штука весела, потужна, складна, особливо на великих проектах та у нестандартних ситуаціях. Ніколи не забуду свою першу зарплату, яка виявилася у 4 рази більшою, ніж у 1С. Відразу ж, як влаштувався на роботу, для самостійного вивчення технологій і як тестовий проект я вирішив написати іграшку, на кшталт пісочниці для реалізації якихось ідей. І ось нещодавно я її закінчив. Якщо хочете, можете подивитися результат (тільки заходити дуже бажано з компа і хрому, тому що верстальник з мене поки що нікчемний): http://triangles.cf Ось я працюю вже 4-й місяць. Я думав, що все складне позаду, виявилося, що навпаки. Попереду вивчення англійської, бо якщо ви її не знаєте, навіть якщо вас взяли на роботу, довго ви не пропрацюєте. Читання документації, спілкування із замовниками, написання коду та коментарів - все англійською. Ще обов'язково потрібно закінчити курси JavaRush, вивчити патерни, алгоритми та інші корисні речі. Хочеться всім побажати удачі, легкого розвитку та міцного розуму. Тим, хто працює та тим, хто хоче знайти роботу. Все у вас вийде, потрібно тільки прагнути і робити, боротися із собою та з ексепшинами. Всім JAVA!) боротися із собою та з ексепшинами. Всім JAVA!) боротися із собою та з ексепшинами. Всім JAVA!)
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ