Як стати програмістом частина 3 - що повинен знати junior розробник мінімальний арсенал знань,

Як стати програмістом частина 3 - що повинен знати junior розробник мінімальний арсенал знань,

Ще назву кілька особистісних якостей, які також дуже впливають на вашу успішність в отриманні роботи. Ці якості багато в чому допомогли мені свого часу. Я навіть думаю, що якби не ці якості, то у мене нічого не вийшло. Ви зможете в цьому переконатися протягом цієї статті.

Перш за все, я розповім про те, яке тестове завдання мені доводилося робити на першому місці роботи. Це дасть вам розуміння того, що очікувати вам, якщо ви потрапите в таку ж ситуацію. І це трохи відкриє завісу таємниці над тим якою мірою потрібно знати ту чи іншу технологію.

Потім, Я детально розповім про технології, які я знав на момент проходження співбесіди в ту фірму. Це і буде мінімальний список знань, оволодівши яким вже можна ходити на співбесіди.

Моє тестове завдання.

У мене було кілька завдань за той час. Перед останнім я вже погано пам'ятаю. Там було щось дуже просте - буквально один сервлет, який брав текст з БД (База даних) і виводив його у вікно браузера. Також, можна було цей текст, через HTML форму, зберегти в базу. При цьому, мені потрібно було використовувати SVN для зберігання вихідного коду на сервері.

Потім, мені дали друге завдання, терміном на 2 тижні. І сказали, що за його результатами мене візьмуть на справжній проект, на випробувальний термін. Я був в шоці, від того, який мені маленький термін дали на виконання завдання. Все ускладнювалося тим, що мені потрібно було робити це завдання нема на java, а на groovy. Вірніше навіть на фреймворку, який використовував Spring MVC. Hibernate. Gradle і Groovy. Його назва Groovy on Grails. Як ви розумієте я його не знав.

Мушу зауважити, що я був зовсім трохи знайомий з такими технологіями як Spring MVC і Hibernate. Про Groovy і Gradle я взагалі нічого не знав. Трохи знав JDBC і SQL.

Все виявилося набагато простіше ніж я думав. Виявляється, що фреймворк Groovy on Grails дуже простий і більшу частину коду генерує самостійно. Додатково до всього, за мною доглядав більш досвідчений розробник, який іноді мені допомагав. Це дало мені шанс вивчити необхідний мінімум і вкластися в термін.

Що я знав на момент проходження співбесіди?

Вирішив знайти своє старе резюме, щоб розповісти вам про те, що я тоді знав або думав, що знаю. У відповідь на резюме, рекрутер надіслав мені свою анкету. В якій я відповідав на деякі питання. Питання з розряду "Ким ви бачите себе через 10 років?". Буде вільний час, запив статтю, в якій прочитаю свої відповіді. Нещодавно прочитав, дуже навіть посміхнувся.

Почнемо. Перше, що я вказав в резюме це щось, що знаю Spring Framework. Якщо мені не зраджує пам'ять, тоді я знав, як впроваджувати залежності. Зізнаюся, що на той момент я робив це максимум раз п'ять на 2-3х своїх проектах. Про розуміння навіщо це потрібно і які вигоди несе й мови не йде. Не пам'ятаю точно, але я вже напевно, трохи використовував jdbcTemplate і hibernateTemplate.

Я пораджу вам не витрачати сильно час на jdbcTemplate і hibernateTemplate. Досить буде пару раз попрактикуватися в їх використанні і знати, що це дає. Краще навчитеся конфігурувати JDBC і Hibernate (JPA) використовуючи Datasource і Spring context.

Далі. Я написав, що знаю Spring Security. Насправді, я максимум міг розмістити форму для входу на сайт на сторінці, щоб вона хоч якось працювала. Знову, мова не йде про те, що я знав як взагалі це влаштовано. Я напевно брав просто конфігурацію, яку знайшов на якомусь сайті і копіював її собі. А потім довго намагався налаштувати її під себе, методом проб і помилок.

Spring Security знати не потрібно. Мало ймовірно, що він знадобиться вам на співбесіді.

Servlets. JSP і JSTL. Знав для чого використовуються і як працюють. Але не знав їх життєвий цикл, хоча і було потрібно. На той момент вже неодноразово використовував. І в університеті у мене були лаби на цю тему. Знання були в основному практичні.

Якщо ви більше не знаєте, жодної технології, на якій можете написати клієнтську частину вашого веб-додатки, то вивчіть Servlets. JSP і JSTL. Ви точно не помилитеся. Навчіться передавати інформацію на jsp сторінки і красиво її підносити.

Hibernate і MySQL. Про те, як працює Hibernate я тоді й гадки не мав. Я користувався сотнями статей, які описували найпростіше DAO і то, як мапіть поля об'єктів на таблиці бази даних. За базу даних я використовував MySQL. Не впевнений, що я тоді міг на SQL згенерувати найпростішу схему бази даних. У цьому мені допомагав Hibernate.

Hibernate знати потрібно. Потрібно вміти мапіть поля сутностей на колонки таблиць. Також вмійте написати найпростіше DAO з використання Hibernate. SQL - знати обов'язково. Вміти використовувати join. І вміти групувати отриману інформацію.

Я більш-менш міг написати найпростіші запити з використанням JDBC. Запити з join я тоді не писав. JDBC Скажу те ж саме. Вмійте писати DAO. Там же ви мінімально познайомитеся з SQL.

Ще я писав, що маю досвід роботи з Swing. Я робив на ньому покер. Я вже якось про це згадував. Ще робив гру "Життя". Якщо цікаво пошукайте в інтернеті, що це таке. Swing знати не потрібно. Його зараз практично ніхто не використовує.

HTML. CSS - я знав трохи. Зверстати зовнішній вигляд сайту міг, але зробити це красиво, було складно. Прості форми у мене версталися нормально. HTML. CSS - знати потрібно мінімально. Ви завжди можете нагугліть, то що хочете зробити. З цього, спеціально його вчити не бачу сенсу.

Пару раз писав unit tests. Як писати їх правильно, взагалі не знав. За великим рахунком, я їх не використав тому погано розумів навіщо вони потрібні. По хорошому, unit tests знати потрібно. От є у вас шматок логіки, потренуйтеся писати тести, які перевірять, що в цій логіці немає помилок. Розберіться, ніж такі тести відрізняються від інтеграційних.

Також я вказав, що знаю Assembler. Хоча користувався ним тільки в рамках програми в університеті і то пів року всього. Assembler - в топку. На позицію java junior його знати не потрібно.

Ну і мінімально використовував XML. Для чого я його тоді використовував, для мене загадка. Не розумію, що в ньому можна вчити.

Про англійську я писав, що говорю на рівні elementary, а пишу і розпізнаю мова на рівні intermediate. На щастя вимоги до англійської не високі. Досить вміти бекати і мекати, але чим краще у вас англійська тим у Вас більше шансів.

Я дуже вам рекомендую спробувати зробити свій магазин кави. Використовуючи такі технології як Spring core. Spring MVC і Hibernate. Нехай у вас ця система теж відправляє листи вашим клієнтам. Якщо у вас це вийде, то сміливо починайте ходити по співбесідах.

Як ви могли помітити, на протязі всієї цієї статті, для того, щоб отримати заповітну вакансію junior розробника далеко не обов'язково просто володіти необхідним стеком технологій. Також дуже важливо бути підприємливим і вміти ризикнути, нехай навіть іноді прикрасити свої знання. Хороший навик - вміти створити видимість. Також виділю важливість мати живий розум, який вам допоможе швидко, щось вивчити і закрити свої прогалини.

Я ні в якому разі не хочу, щоб ви обманювали вашого роботодавця. Якщо ви щось прикрасили, то це не означає, що якщо ви не підтвердили своїх знань, що вас звинуватять у брехні. Цілком можливо, що ви хвилюєтеся і при інших умовах, може бути при більш гарячої HR-ке, ви проявили б себе по іншому.

Схожі статті