Всем привет! Вот и закончился мой испытательный срок на новом рабочем месте, и теперь я могу наконец-то поделиться своей историей трудоустройства.
Мне 22 года, у меня экономическое образование. Еще год назад (в феврале – марте) у меня не было никаких навыков программирования, и с Java сталкивался только в играх на старых Siemens (в виде приветственного окна "powered by Java" при запуске игры).
Год назад я работал в отделе технической поддержки. Работа не сказать, чтобы плохая или не нравилась, но не особо интересная. И сложилось так, что в один момент задумался — хорошо было бы иметь работу, на которую ты бы не шел с ощущением "блин, снова работать", а чтобы она приносила удовольствие. Подумал — а что бы я делал, если бы у меня был, условно, год, в течение которого мне не надо было бы обязательно зарабатывать деньги, а я мог бы заниматься чем хочу? Ответ как-то пришел сам собой — сидел бы дома и учился программировать.
Тогда я решил, что дело за мной. Я понимал, что будет сложно изучать программирование с нуля, что это временный откат в карьере (я не сомневался, что Junior Developer получал меньше, чем я на том рабочем месте), но воспринял это как шаг назад ради того, чтобы сделать два шага вперед.
Окей. Сказано — сделано. Так как я не разбирался в языках программирования абсолютно, первой идеей было изучать язык, о котором был наслышан больше всего (на нем разрабатывали софт в компании, где я работал) - PHP. Хорошо, девушка отговорила. Подсказала, что у них в компании (разрабатывающей мобильные приложения) андроидеры пишут на Java + зарплата у них вроде хорошая. Я погуглил-погуглил, подумал и принял решение изучать Java.
Моим первым шагом были традиционные попытки изучения чего-то нового - вооружаешься книгами, осваиваешь теорию, и вперед! Так у меня появилась книга Хорстманна и Корнела — Java. Основы. Это был март 2014 года.
Вообще говоря, всю жизнь изучать что-то по книгам у меня получалось отчаянно плохо. Вероятно, это связано с тем, какой способ восприятия преобладает у человека. Я всегда действительно усваивал материал только после того, как практически его проработал, закрепил, поигрался с ним. Поэтому мои первые попытки учить Java по книге были обречены на провал. Хотя книга хорошая.
Где-то в апреле я наткнулся на группу JavaRush вконтакте.
Дальше все понеслось как по рельсам. Решать задачи, много задач, которые сопровождаются небольшим количеством теории — явно оптимальный способ изучения материала (по крайней мере, для меня). Я сидел дома, я сидел на работе и решал, решал, решал) Именно тогда я дополнительно убедился, что программирование мне интересно. Я не мог вспомнить, чтобы над чем-то так зависал.
Прошло три месяца, за которые я дошел до 20 уровня. Мне казалось, что дальнейшее изучение языка будет идти намного быстрее, если уже получить работу программиста — тогда ты будешь в этой среде по 8 часов в сутки 5 дней в неделю и будешь крайне быстро развиваться.
Таким образом, в августе я начал рассылать резюме. Из пары мест мне прислали тестовые задания, по результатам которых предложений о работе я не получил — оглядываясь назад, я не удивлен ни разу — задачу то поставленную я, быть может, и решил, но какой же плохой у меня был стиль написания кода) В этом, кстати, небольшой минус JavaRush — до тех пор, пока задача решена и тесты пройдены, задание засчитывается, хотя твой код может оставлять желать сильно лучшего. Достаточно установить в Intellij IDEA тот же плагин Checkstyle, и ситуация будет иной — он будет подчеркивать "сомнительные" моменты в коде, что позволит писать не только рабочий, но и красивый, правильный код.
Как бы то ни было, в сентябре меня позвали на первое собеседование. Вакансия содержала примерно следующее - разработчик любого уровня, мы предложим зарплату, соответствующую навыкам.
На этом собеседовании задачки были примерно следующие — дан фрагмент кода. Правильно ли он написан, и какие могут быть проблемы?
Не помню, сколько из них я правильно решил. Вообще нужно было помнить про Null, почти все вопросы были про него — что не стоит обращаться к параметру метода, не проверив его прежде на (if param != null).
По результатам мне предложили первый месяц работать бесплатно (как стажировка), затем зарплату, которая ниже (хоть и не сильно), чем на том месте работы, где я был.
Я хорошо понимал, что мне и не стоит ожидать замечательных предложений, ибо теории знал мало, практика только по JavaRush, ноль опыта и так далее. Поэтому я договорился, что выйду через 2 недели (нужное время для увольнения на старом месте).
Параллельно с этим я подал резюме в другую компанию. Эта компания предлагала следующее:

- 2 месяца обучения Java EE (2 раза в неделю по 4 часа)
- если результаты показываешь хорошие (защищаешь свой проект успешно, который пишешь эти два месяца), то тебе предлагают трудоустройство.
- Выполнение практических заданий дома.
- В случае успеха тебя приглашают на компьютерное тестирование в офисе.
- В случае успешного тестирования в этот же день с тобой проводят собеседование.
- чем отличаются checked exceptions от unchecked;
- какие методы есть у класса Object и зачем они нужны;
- какие бывают коллекции и зачем они;
- и немного про многопоточность.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
ЗЫ 1С поднадоел, но не уверен пока, что опять в стажеры ломанусь после курса:)
Английский знаю с детства, мама — учитель, изучал его практически одновременно с русским.
Не думаю, однако, что это сильно повлияло) Уровня Intermediate для моей работы было бы достаточно.
Соответственно, есть два типа пользователей — администратор и клиент. Нужно реализовать их возможности, как то для админа — создание нового пользователя, тарифа, контракта, опции к тарифу, пополнение баланса, администрирование существующих пользователей и контрактов. Для пользователя — просмотр контракта, смена тарифа, подключение новых опций.
Как-то так.
До стажировки не имел о них представления.
Также интересуют ответы на вопросы Turambar про английский, а так же какие у вас были знания по java при поиске работы, допустим взять план обучения на javarush, ваши знания были по 20 уровень (имею ввиду в основном те темы, что в них рассматриваются)? или намного обширней?
Хочу понимать, на каком этапе и при каком объеме знаний, уже можно пробовать устраиваться junior'om?..)
Сколько времени в день уделяли учебе? ежедневно? и были ли пропуски в обучении дни, недели, месяцы в течении этих 9 месяцев?)
Если можно, пример резюме в личку:)
И последний вопрос, длительность рабочего дня? и сколько дней в неделю?)
Заранее спасибо)
Мои знания были ровно 20 уровней по JavaRush. Дополнительно параллельно ничего не изучал. Именно из-за этого возникли сложности при собеседовании из-за отсутствия знания теории.
Я занимался в основном на работе, где-то по 3 часа в день — получалось 5 дней в неделю. Пропуски были (когда на работе надо было что-то сделать), но не часто. Зато я все время был в атмосфере, где меня могут дернуть и отвлечь по рабочему вопросу — если сидеть дома и заниматься, думаю, было бы намного продуктивней)
До 20 уровня я дошел где-то к июлю, т.е. я не все 9 месяцев занимался. С июля по начало стажировки (конец сентября) почти не изучал ничего, за исключением недели между первым и вторым собеседованием, когда я пытался выучить весь туториал Oracle)
Мне кажется, после 20 уровня уже стоит пробовать устраиваться. Даже если получится на бесплатной основе (например, первый месяц, как мне предлагали), это будет более эффективное дальнейшее развитие, чем дальше проходить уровни. Это мое мнение, связанное, прежде всего, с тем, что к 20 уровню основы Java SE более-менее затронуты и изучены, и дальше идет только углубление.
Насчет резюме — оно у меня пока не специфично-программистское, так как я его не переделывал под новую профессиональную область, поэтому не думаю, что будет смысл)
Рабочий день стандартный, 5 дней по 8 часов.
Подскажи, пожалуйста, как компания называется (можно в личку), я тоже сейчас на пути устройства в иностранную компанию, довольно известную, и там тоже, скорее всего речь будет идти о 2 месяцах стажировки.
Учебные материалы остались, но, к сожалению, не уверен, что имею право ими делиться. Если будут какие-то конкретные вопросы или темы, по которым нужна будет помощь — пишите)
С помощью этого блога во время стажировки я осваивал Java EE.
Мне кажется, в нем доступно и с нуля разъясняются основные темы.
Попробуйте ознакомиться с этой статьей — www.journaldev.com/1854/java-web-application-tutorial-for-beginners
В ней происходит знакомство с контейнером сервлетов, с основными принципами отображения JSP-страниц и использования тегов для вывода контента в браузер.
Дальше можно изучить сервлеты более подробно — www.journaldev.com/1877/java-servlet-tutorial-with-examples-for-beginners
Затем можно подключить базу данных и освоить взаимодействие с ней. На том же ресурсе можно найти статьи по JDBC / JPA / Hibernate.
После этого можно перевести фронтенд на какой-нибудь фреймворк — JSF или Spring MVC.
Все это есть в этом блоге, и все разъяснено доступно и с нуля)
В любом случае, поздравляю с исполнением мечты! Вы молодец!
Спасибо!
Спасибо!)
отдельное спасибо за упоминание плагина Checkstyle, заинтересовал
Из подобных плагинов знаю еще PMD. Пользоваться им, правда, не приходилось, но вы можете попробовать — суть примерно та же.
— Checkstyle в целом оправдывает свое название и дотошно следит за наличием Javadoc-comment'ов, фигурных скобок в однострочных if-else конструкциях, пробелов между оператором и переменной и прочей «красотой»;
— PMD и FindBugs гораздо меньше внимания уделяют подобной «грамматике» и «пунктуации», но идут дальше в анализе логики кода, начиная от подсказки мелочей — убрать лишние скобки в сложных условиях с несколькими логическими операторами, а также как можно их упростить, до указания мест возникновения потенциальных исключений, задублированного или неиспользуемого кода, рекомендаций использованию иных конструкций и т.п.
В целом, все плагины друг друга дополняют, у PMD еще понравилась возможность перейти по ссылке к более расширенной документации по каждой из обнаруженных проблем.
Это очень мощный инструмент, уже включающий в себя и Checkstyle, и PMD. Именно им я проверял качество своего проекта, и он предъявляет самые жесткие требования к коду из всех, что я видел.
Минусы — он более сложен в установке, нежели простые плагины. Также он анализирует не на лету.
Хотя я им пользовался, как отдельной тулзой — отдельно устанавливал, поднимал для него локальный сервер, а вроде как можно установить прямо как плагин в IDEA.
В любом случае, им довольно часто пользуются в рабочих проектах. Если вы ознакомитесь и научитесь его использовать — будет огромный плюс)
А в целом анализаторы заинтересовали серьезно, особенно глядя на собственный код на ранних уровнях. Вы правы, в отсутствии ментора можно решать задачи на Javarush с далеким от идеала кодом, поэтому буду пытаться его постепенно улучшать по рекомендациям анализаторов.
Изначально было около 13 человек, трудоустроились 7-8.
Тут еще важно — мы не были друг другу конкурентами. Если бы каждый хорошо сделал свой проект, выполнив все требования, работу бы получили все.