Как стать программистом 3

Как стать программистом? Часть 3 – Что должен знать junior разработчик? Минимальный арсенал знаний.

Привет. Я Александр. Это третья статья из серии о том, как стать программистом. Сегодня я решил поделиться с вами тем, что минимально нужно знать и чем владеть для получения работы.

Еще назову несколько личностных качеств, которые также очень влияют на вашу успешность в получении работы. Эти качества во многом помогли мне в свое время. Я даже думаю, что если бы не эти качества, то  у меня ничего не получилось. Вы сможете в этом убедиться на протяжении этой статьи.

Сначала, я расскажу о том, какое тестовое задание мне приходилось делать на первом месте работы. Это даст вам понимание того, что ожидать вам, если вы попадете в такую же ситуацию. И это немного приоткроет завесу тайны над тем в какой степени нужно знать ту или иную технологию.

Затем, Я подробно расскажу о технологиях, которые я знал на момент прохождения собеседования в ту фирму. Это и будет минимальный список знаний, овладев которым уже можно ходить на собеседования.

Мое тестовое задание.

Я уже в прошлых своих статьях упомянул о том, что прежде чем устроиться на работу, мне пришлось 3 месяца регулярно ходить в мою первую фирму и делать там тестовое задание. Так как я не был привязан ни к одному из имевшихся проектов, то и зарплату мне не платили. Мне грех жаловаться потому, что это был очень хороший шанс для меня. И я им воспользовался.

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

Затем, мне дали второе задание, сроком на 2 недели. И сказали, что по его результатам меня возьмут на настоящий проект, на испытательный срок. Я был в шоке, от того, какой мне маленький срок дали на исполнение задачи. Все усугублялось тем, что мне нужно было делать это задание не на java, а на groovy. Вернее даже на фреймворке, который использовал Spring MVC, Hibernate, Gradle и Groovy. Его название Groovy on Grails. Как вы понимаете я его не знал.

Должен заметить, что я был совсем чуть-чуть знаком с такими технологиями как Spring MVC и Hibernate. Про Groovy и Gradle я вообще ничего не знал. Немного знал JDBC и SQL.

Я должен был сделать небольшой интернет магазин. Где можно было заказать несколько разных видов кофе, оформить заказ через корзину и выслать письмо заказчику на адрес электронной почты.

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

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

Решил отыскать свое старое резюме, чтобы рассказать вам о том, что я тогда знал или думал, что знаю. В ответ на резюме, рекрутер прислал мне свою анкету. В которой я отвечал на некоторые вопросы. Вопросы из разряда “Кем вы видите себя через 10 лет?”. Будет свободное время, запилю статью, в которой прочитаю свои ответы. Недавно прочитал, очень даже улыбнуло.

Прежде чем начать, я обращаю ваше внимание на то, что эта статья называется “Что нужно знать программисту java junior? Минимальный арсенал знаний.”. Он полностью основан на моем опыте. Позже будет статья, в которой я назову топ технологий, которые нужны java junior там около 23-х пунктов. А в этом просто назову, что я знал и то, что бы следовало знать.  

Начнем. Первое, что я указал в резюме это-то, что знаю 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 с использование HibernateSQL – знать обязательно. Уметь использовать join. И уметь группировать полученную информацию.

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

Еще я писал, что имею опыт работы со Swing. Я делал на нем покер. Я уже как-то про это упоминал. Еще делал игру “Жизнь”. Если интересно поищите в интернете, что это такое. Swing знать не нужно. Его сейчас практически никто не использует.

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

JavaScript и Ajax – мог отправлять Ajax запросы и писать простые скрипты. Манипулировать домом я тогда не умел. JavaScript и Ajax – нужно знать (не сильно) и уметь отсылать Ajax запросы на сервер и потренируйтесь манипулировать домом.

Пару раз писал unit tests. Как писать их правильно, вообще не знал. По большому счету, я их не использовал т.к. плохо понимал зачем они нужны. По хорошему, unit tests знать нужно. Вот есть у вас кусок логики, потренируйтесь писать тесты, которые проверят, что в этой логике нет ошибок. Разберитесь, чем такие тесты отличаются от интеграционных.

Также я указал, что знаю Assembler. Хотя пользовался им только в рамках программы в университете и то пол года всего. Assembler – в топку. На позицию java junior его знать не нужно.

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

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

Вам нужно не скромничать про свой английский в резюме. Более подробно я расскажу, про него в следующих статьях. Сейчас добавлю, что когда указываете свой уровень в резюме, то лучше его преувеличить.

Итог

Я очень вам рекомендую попробовать сделать свой магазин кофе. Используя такие технологии как Spring core, Spring MVC  и Hibernate. Пусть у вас эта система тоже отправляет письма вашим клиентам. Если у вас это получится, то смело начинайте ходить по собеседованиям.

Как вы могли заметить, на протяжении всей этой статьи, для того, чтобы получить заветную вакансию junior разработчика далеко не обязательно просто владеть необходимым стеком технологий. Также очень важно быть предприимчивым и уметь рискнуть, пусть даже иногда приукрасить свои знания. Хороший навык – уметь создать видимость. Также выделю важность иметь живой ум, который вам поможет быстро, что-то изучить и закрыть свои пробелы.

Я ни в коем случае не хочу, чтобы вы обманывали вашего работодателя. Если вы что-то приукрасили, то это не значит, что если вы не подтвердили своих знаний, что вас обвинят во лжи. Вполне возможно, что вы волнуетесь и при других условиях, может быть при более горячей HR-ке, вы проявили бы себя по другому.

Все.

Комментарий “Как стать программистом? Часть 3 – Что должен знать junior разработчик? Минимальный арсенал знаний.

Добавить комментарий

Ваш e-mail не будет опубликован.

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">