"Пути развития Java разработчика" Дмитрий Соколов

Preview:

Citation preview

Заголовок презентации

Имя и фамилия автора докладаКомпания

Контактные данные 1Контактные данные 2Контактные данные 3Контактные данные 4

Пути развития Java разработчикаDmytro SokolovBecomeJavaSenior

fb.com/dimafeddtwitter.com/SokolovDmytrofb.com/becomejavaseniorbecomejavasenior@gmail.com

Dmytro Sokolov▷ 9 years Java Developer▷ 3 years Trainer & Mentor▷ Java Trainer / Lead Software

Engineer▷ Full-stack experience▷ Project: BecomeJavaSenior.com▷ email: becomejavasenior@gmail.com

Hello!

Уровни Java разработчика- Intern- (Strong) Junior- Java Automation- (Strong) Middle/Regular- Senior- Tech Lead- Team Lead- Project Manager- Scrum Master- Architector

Уровни Java разработчика

Давайте определим какой у вас уровень!

Junior Java developer

Junior'ом обычно называют разработчика, который только начинает серьезно работать в определенной области технологий.

Junior Java developerУ такого разработчика есть знания, позволяющие ему работать над реальным проектом, но очень мало (или нет) опыта такой разработки. Зачастую в технических аспектах он советуется с более опытным разработчиком.

Требования - Junior Java developer▷ Программирование (системы исчисления, чем оператор отличается от операции, некоторые алгоритмы)

▷ Язык Java (синтаксис, OOP возможности, многопоточность, стандартная библиотека)

Требования - Junior Java developer▷ OOP и OOD (парадигмы, основные паттерны проектирования)

▷ Базы данных (JDBC, язык SQL)

Поведение - Junior Java developer▷ Нуждается в постоянном контроле

▷ Не отвечает за свой код.▷ Важно показать, что умеешь учиться и стремление решать поставленные задачи в назначенные сроки.

Поведение - Junior Java developerТо есть в результате его деятельности может появиться что-то работающее. Мыслит в рамках языка и технологий.

Поведение - Junior Java developerЗнает язык программирования на уровне получения сертификата и прочитал книжку по конкретным технологиям. При этом программировать не умеет, постоянно пишет плохой код по причине отсутствия опыта, код тяжел в поддержке.

Поведение - Junior Java developerБыстро пишет прототип, но очень долго доводит его до работоспособности по причине неумения программировать. Как результат, за ним нужно следить, постоянно поправлять, просить все переписать и говорить, как нужно переписать.

Поведение - Junior Java developer▷ Стоит больше прислушиваться к мнению старших коллег.

▷ Стараться делать свою работу как можно качественнее.

▷ Проявлять инициативу, но в пределах поставленных Вам задач.

▷ Стараться изучить сначала вещи, необходимые для текущей работы.

Junior Java developerПрежде чем двигатсья дальше - убедиться что хорошо знаешь JavaCore

Middle/Regular Java developerПрограммист является лицом, ответственным за качественное и своевременное исполнение порученной ему работы в проекте разработки информационно-программных систем, основанных на применении современных технологий.

Middle/Regular Java developerПрограммист выполняет задачи по программированию и первоначальному тестированию порученных ему компонент системы и работает по внешним спецификациям.

Требования - Middle Java developer▷ Образование — законченное высшее.

▷ Наличие практического опыта: стаж работы не менее одного года.

▷ Владение Software Engineering Process?

Требования - Middle Java developerSoftware Engineering Process:

1. Waterfall development2. Prototyping3. Incremental development4. Spiral development5. Rapid application development6. Agile development (Scrum,

Kanban)

Требования - Middle Java developerИностранный язык — английский технический, в том числе:

▷ умение читать техническую литературу IT профиля (без словаря);

▷ умение комментировать тексты программ (без словаря);

▷ умение общаться на профессиональные темы (Pre Intermediate).

Требования - Middle Java developer▷ Владение методами и инструментами анализа и проектирования.

▷ Знание: языков разметки, web-серверов и серверов приложений, клиентских технологий, серверных технологий, СУБД, ОС, средств офисной работы.

Требования - Junior/Middle Java developer

Поведение - Middle Java developer▷ Контроля не требует - отвечает за отдельные функции или модули и т.п.

▷ Не надо учить, умеет решать поставленные задачи самостоятельно в рамках подготовленной архитектуры.

Поведение - Middle Java developer▷ Наконец научился абстрагироваться от языка и технологий, голова забита не деталями языка, а понятиями предметной области.

▷ Научился писать структурно, кратко, поддерживаемо, без копирования.

▷ Перестает писать плохой код. Код получается поддерживать.

Middle Java developer

Если в резюме нет выше перечисленного опыта - не оценят как Middle Java Developer

Middle Java developerПрежде чем двигатсья дальше - убедиться что хорошо знаешь JavaCore и самые популярные технологии

Senior Java developerВедущий программист является лицом, ответственным за качественное и своевременное исполнение порученной ему работы в проекте разработки информационно-программных систем, основанных на применении современных технологий.

Senior Java developerОн обладает глубокими знаниями используемых технологий и работает внутри проектной команды без необходимости контактировать с представителями менеджмента заказчика.

Senior Java developerВедущий программист выполняет работы по детальному проектированию (созданию спецификаций) компонентов на основе предоставленных общих спецификаций для крупных проектовА для мелких проектов выполняет проектирование полностью самостоятельно.

Senior Java developerВедущий программист также выполняет работы по программированию и первоначальному тестированию порученных компонентов.

Требования - Senior Java developer▷ Наличие практического опыта: стаж работы не менее двух-трех лет в качестве программиста.

▷ Владение Software Engineering Process.

▷ Владение методами и инструментами анализа и проектирования.

Требования - Senior Java developer▷ Знание: языков разметки, web-серверов и серверов приложений, клиентских технологий, серверных технологий, СУБД, ОС (Linux)

Требования - Senior Java developer▷ английский технический

(Intermediate): умение читать техническую литературу IT профиля (без словаря);

▷ умение комментировать тексты программ (без словаря);

▷ умение разрабатывать документацию (со словарем); умение общаться на профессиональные темы

Поведение - Senior Java developer▷ Может контролировать других, отвечает за проект.

▷ Умеет подготавливать инфраструктуру, решать сложные задачи. Наставляет и ведет junior'ов.

Поведение - Senior Java developerЗа годы опыта выработал best practices в решении конкретных задач. За счет чего на большом промежутке времени способен демонстрировать бешеную производительность в сравнении с юниорами и миддлами.

Поведение - Senior Java developer▷ Производительность заключается в том, что делает гораздо меньше ошибок, а если и делает, то ошибки легко устраняются, ибо локализованы в конкретном месте.

▷ Держит cроки, которые он дает.

Fake - Senior Java developer/Team Lead

Проработал на проекте с самого начала, получил титул, так как знает проект больше всего

Возраст ~ 23 года

Знания Java разработчика

На каждом уровне (Junior/Middle/Senior)

нужно знать все технологии и фреймворки

Знания Java разработчика

Разница между уровнями - глубина и ширина знаний в каждой области

Инструменты для Senior Java Developer

Какими инструментами, знаниями и навыками должен владеть Senior Java Developer?

Инструменты для Senior Java Developer

▷ Jenkins, TeamCity▷ Администрирование БД▷ SonarQube (сатический анализ кода)

▷ Linux

Знания и навыки для Senior Java Developer

▷ Design Patterns (Java, Web, DB)▷ Security▷ Asynchronous programming▷ Enterprise Patterns▷ Advance Multithreading

Знания и навыки для Senior Java Developer

▷ Scrum▷ Interviewing▷ Internal training, mentoring and

coaching▷ Customer negotiation▷ Reporting▷ Планирование, коммуникация, решение конфликтов

▷ Сертифицированние

Знания и навыки для Senior Java Developer

▷ Spring▷ Hibernate▷ NoSQL▷ Caching (Redis, Ehcache)▷ RESTful (HATEOAS)

Что мешает стать Middle/Senior?

Что мешает стать Middle/Senior?▷ плохие базовые знания (Java

Core)▷ отсуствие мотивации на текущем месте работы

▷ не умение говорить высокоуровневым языком (абстракциями), не знание архитектурных терминов

▷ плохой английский язык

Что поможет стать Middle/Senior?

Что поможет стать Middle/Senior?▷ мотивация▷ посещение конференций, выступление на конференциях,

▷ чтение книг по soft скилам, персональной эффективности, коммуникативные, командообразованию

▷ посещению тренингов по soft скилам: ораторскому искуству, тайм-менеджменту.

Что поможет стать Middle/Senior?▷ активная работа в команде▷ общение с более опытными разработчиками/менторами

Что поможет стать Middle/Senior?▷ Хорошее знание английского -

upper-intermediate▷ Уменее прохождение собеседований: уметь себя продать, решать интревьюшные задачи

▷ Глубокое понимание (теория) языка Java и фреймворков

Как изучать технологииРекомендуемый подход, лучшее соотношение время/качество (теория и практика)

Как изучать технологии1. Выполнить несколько tutorials 2. Посмотреть видео,

объясняющее общий принцип работы

3. Прочитать официальную спецификацию/guides

4. Пролистать по диагонале книгу5. Написать свой проект с нуля6. Пройти тренинг

(структурировать знания)

Что всегда спрашивают на interview у Java Middle/ Senior?

▷ JavaCore▷ Multithreading▷ Collections▷ JDBC▷ Servlet API▷ Spring IoC▷ SQL, Транзакции, уровни изолирования

Что всегда спрашивают на interview у Java Middle/ Senior?

Почитать

Карьера в IT: должность Team Lead http://dou.ua/lenta/articles/team-lead-position/

Карьера в IT: должность Software Architect

http://dou.ua/lenta/articles/software-architect-position/

Thanks!Any questions?

You can find me at:

http://becomejavasenior.com

Recommended