Досьє
- Хто: Толеген Ізбасар
- Місце проживання: Астана
- Вік на момент старту навчання Java: 23
- Перша робота програмістом: 2 місяці після старту навчання
- Оригінал історії успіху
Чи можна дуже швидко проскочити стадію Junior і одразу стати Middle-програмістом? В принципі, можна, але не так це просто. "Не знаннями єдиними", - вважає герой цієї історії успіху, але знань у нього, треба сказати, дуже чимало. Нестандартна історія успіху, в якій автор розповідає, яку роль у швидкому підвищенні можуть відіграти уважність, цигарки та стратегічне планування. Вітаю всіх читачів, які подумали, що за
2.5 місяці з нуля справді можна стати
Middle . Поспішаю вас засмутити: це можливо тільки за дуже старанної роботи над собою, а я знаю, як усім хочеться всього й одразу причому — прямо зараз і ніяк інакше. Та й фраза з нуля до мене застосовна лише умовно. Так, мова програмування
Java у мене дійсно була абсолютно нульовою. Але дещо я все-таки вже знав і вмів ще до знайомства з
Java Rush і, мабуть, мені хотілося б почати свою розповідь саме з цього, тому що моє кар'єрне зростання — досить дивне поєднання знань, умінь і успіху до певної міри.
Перед JavaRush
Отже, дозвольте навести список, завдяки якому я і набув конкурентної переваги перед іншими, а також дозволив пройти
Java Rush (
до 34 рівня ) досить швидко і без особливих складнощів (
принаймні вони мене не здивували ). Список складається зі знань, які я отримав в університеті, а також з того, що мені самому було цікаво. Не розділятиму, де що лежить, і називати університет теж не буду. За бажання можна засвоїти ці знання самостійно.
Алгоритми та структури даних : мій шлях у цьому напрямі розпочався з вивчення принципів побудови алгоритмів, читання класичних книг (
Кнут ) та вивчення мови програмування
Pascal . Продовжився він мовою
C , реалізацією всіх структур даних та розбором переваг та недоліків кожного з них. Не буду говорити, що також вмію працювати з Машиною Тьюринга та Алгоритмами Маркова… вже сказав, але ви можете пропустити це повз вуха. Хоча на мою скромну думку, поняття про нескінченну стрічку пам'яті і рух покажчика по ньому, дає найбільш правильне уявлення про те, як все-таки працює комп'ютер зсередини.
Архітектура комп'ютера та Assembler : коли ви вирішите, що повністю розібралися з принципом роботи комп'ютера, спробуйте писати програми на дуже низькому рівні (
інакше як ви оціните всі принади Java ? ). Я розглядав усі навчальні варіанти з одним, двома, трьома регістрами і зрозумів, як доводиться викручуватися, коли регістр лише один, а програма працює (дивно, правда?).
Дискретна математика : варто взятися ще й за цей предмет, тому що він дає повне уявлення про логічне мислення, а теорія кінцевих автоматів розповість вам, як влаштовані «начинки» процесора, як вони організовані в інтегральних схемах. Також у рамках цього предмета вивчають Теорію графів, яка
100% зайвою не буде.
Вища математика : вирішив виділити всі інші математичні предмети в один пункт, щоб не надто забивати голову. Тут лежать: математичний аналіз, теорія ймовірностей та статистика, лінійна алгебра. Остання, до речі, дуже важлива, якщо ви плануєте займатись тривимірною графікою. Знаю, у всіх мрія — писати ігри, щоправда, для цього доведеться ще й курс диференціальних рівнянь з чисельними методами пройти.
Архітектура Linux : після того, як освоїтеся тут, багатопоточність у
Java викличе набагато менше питань, та й виявиться, що казку про філософів ви десь чули.
ООП, мова C++ :ну ось, майже дісталися вершини харчового ланцюга. Не буду тут докладно писати, чому реалізацію
ООП саме на
C++ дивитися набагато цікавіше.
Додатково ще пара дрібниць, яку я вже знав, були: комп'ютерна графіка (
OpenGL , Unity
3D ) і
C # (
Core ).
До чого тут JavaRush?
Ну ось, разом із усім цим барахлом знань, ще у вересні минулого року я натрапив на
Java Rush , перегорнув пару рівнів і забив, бо досить просто знайшов роботу після університету (
не програміста, але в IT… Може, хто здогадається, що це могло бути? ). Але невдовзі виявив, що мені це стало зовсім не цікаво, за пару місяців я майже досяг стелі і зрозумів, що розвиватися тут немає сенсу, хоча керівництво компанії пропонувало майже цікаві варіанти (серед яких був DevOps
) . Їх я відкинув. Паралельно я займався підготовкою школярів до олімпіад з інформатики (
забув згадати — мені дуже подобалося спортивне програмування ), та й після виходу з основної роботи пішов туди з головою. Приблизно
4-5 місяців мене все влаштовувало, доки і ця справа мені не набридла. Питання повторювалися, всі теми були пройдені і ось тут-то я згадав про
Java Rush .
«Будучи раціоналістом (жадіною), я спочатку від кірки до кірки пройшов 10 початкових рівнів, потім заглянув подалі (вистачило рівня до 15 на кшталт), зрозумів, що це досить цікаво і у властивій мені манері займався цим просто у будь-який вільний момент. Чи є зайві 5 хвабон? Відмінно, допишу логіку методу.
Отже: я купив дві місячні підписки. За перший місяць пройшов від
10 рівня до 28 , за другий неповний (
приблизно 15 днів ) пройшов
від 28 до 34 рівня . По хронології - це був квітень-середина травня, тобто витрачено
1.5 місяці (
у рублях самі порахуйте ). Не говоритиму, як варто займатися, а як не варто — про це вже багато сказано.
Працевлаштування
Десь на
30 рівні я переглянув вакансії у своєму місті і вирішив не поспішати, розсилаючи резюме всім підряд, а точково вибрати бажану компанію, підготуватися до неї і лише після цього відправляти свої каракулі до HR-
відділу . Каракулі я теж дуже старанно вивів, і вийшло дуже нічого. Мене досить швидко запитабо на співбесіду. Я пройшов його дуже впевнено (принаймні те, що стосується
Java Core ). Не розписуватиму, які були питання. Проблеми почалися, коли в мене запитали, як працює Spring, і чи я знаю хоч якісь
Enterprise —
технології . Власне, я сказав, що не знаю, а з таким рівнем —
Junior гарантований (вище не стрибнете), але я все ж таки стрибнув і ось тут, напевно, починається найцікавіша частина. Загалом, коли мені пояснабо умови (
2 місяці – випробувальний термін, позиція – Junior та вилка зарплат ), я зрозумів, що мені вони не дуже подобаються, але погодився. Тільки запитав, чи можу я приступити до роботи пізніше, мотивувавши тим, що мені необхідно було закінчити справи на поточній роботі, перш ніж приходити до нової компанії. Таким чином, я вибив майже місяць для підготовки. На співбесіді я був на початку травня, а працював 23 числа. Звичайно, я ще раз вивчив вимоги, дізнався, які використовуються технології (Java EE 6) і готувався до роботи.
Middle чи Middle?
Приступивши до роботи, я виявив, що вони набрали близько
5 Junior-ів , серед яких я виділявся, але не надто.
«Перш за все, я познайомився з безпосереднім керівником, помітив, що він курить і почав виходити курити разом з ним (а так взагалі я не курю)».
Також з нами ходив ще один програміст, про нього розповім трохи згодом. Загалом, за курінням (
3-4 рази за робочий день ) я спілкувався з керівником, докладніше розповідав про свої успіхи, ненароком згадував свої знання (
мають же вони знадобитися ) і взагалі, входив у довіру, як тільки міг. Організований мною наприкінці першого тижня шашлик із пивом дозволив встановити більш приятельські стосунки.
«В офісі я залишався працювати до 11-ї вечора (робочий день до 18:30), поки мене не виганяв охоронець. Зі мною в офісі іноді залишалися генеральний директор компанії та CTO, з якими я теж спілкувався. Ми разом вечеряли та разом виходабо з офісу (мені CTO навіть пропонував підвезти до дому, але я чемно відмовлявся).»
Таким чином, я, по-перше, встановив добрі стосунки з безпосереднім керівником, по-друге, показав вищому керівництву, що дороблю завдання, а потім піду додому. Звичайно, все це ще не робить мене
Middle . То що зробило? Нагадую, що я не знав до співбесіди жодного фреймворку (
крім JUnit ). Ось тут саме варто повернутися до програміста, якого я згадав вище. Це був дуже потужний програміст
з 20-річним досвідом, який пропрацював 5 років у Москві, близько 7 років в Америці (як головний архітектор проектів) і багато де ще, включаючи урядові проекти особливої важливості (все це я дізнався, поки курив разом з ним). Так от цьому програмісту дали дуже серйозне завдання, і він вирішив взяти мене в помічники. Після того, як йому дали це завдання, виявилося, що йому треба терміново виїжджати з країни і працювати він не зможе. Він написав каркас програми і залишив мене за головного, сказавши, що стежитиме здалеку. Саме цей момент допоміг мені стати
Middle і закінчити випробувальний термін не за 2 місяці, а за один і претендувати на більш серйозну зарплату. Тому що стежити здалеку цього програміста не виходило і проект повністю залишився на мені. За місяць я успішно його завершив, за що й отримав свою посаду та можливість претендувати на більш високу зарплату.
У чому мораль?
Ви можете сказати, що мені пощастило вчитися там, де дали всі ці знання (
зауважте, я використав їх просто для згадки перед начальством ), що обставини склалися так, що випав такий проект на мої плечі, та й до чого тут, здавалося б,
Java Rush ? Ще раз нагадаю, до
Java Rush рівень володінь
Java у мене був 0 це раз. По-друге, коли вирішуєш завдання від 52 спроби, щось та запам'ятовується. У мене була набита рука на винятках, перевірках та інше, що теж було конкурентною перевагою, та й загалом — Java Core починаєш розуміти дуже ґрунтовно (що
підтверджує сертифікат OCA, який я здав за рахунок компанії та набрав 94% ), а без цього далі рухатися особливого сенсу не бачу. Наступного тижня мене призначають на новий проект з нуля, який я вестиму сам (включаючи проектування бази даних, вибір технологій, а також набір команди). Також, я вестиму співбесіди, і розглядатиму прогрес Junior-ів для визначення: варто, не варто. Хочу сказати, що у цих питаннях мені допомогли не лише фактичні знання, а й уміння налагоджувати спілкування з командою, добре показувати себе перед керівництвом, уміння справити враження та доказ того, що я доведу все до кінця. Дякую за увагу, бажаю всім побільше завзятості та уваги до деталей.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ