Меня зовут Дмитрий Гольцов и я начинающий Java программист.
Летом 2022 года я принял решение сменить род деятельности и переквалифицироваться из юриста и менеджера проектов в сфере недвижимости в профессионального программиста для чего я начал осваивать профильные ресурсы, читать книги, смотреть записи лекций и, после определённых раздумий и пробных занятий, понял что хочу развиваться в качестве Java разработчика.
Для систематизации получаемых знаний и для получения "каркаса" требуемых профессиональному программисту навыков, я также записался на курс "Java Разработчик" онлайн школы Хекслет, который я заканчиваю в настоящее время.
Сейчас я нахожусь в активном поиске работы или оплачиваемой стажировки по своей новой специальности. Готов рассмотреть варианты переезда, удалённой или очной работы.
В ходе обучения и вне его я реализовал следующие пет-проекты:
1. Консольная утилита Вычислитель отличий - простая, лёгкая и быстрая консольная утилита, способная находить различия между двумя конфигурационными файлами.
В настоящее время поддерживает следующие форматы указанных файлов:
* .json
* .yml (.yaml)
Навыки и инструменты: .json и .yaml, библиотека Jackson, фреймворк (one-file framework) Picocli, CI на примере GitHub Actions, структуры данных и их реализация в Java, JUnit, использование шаблона проектирования "Фабрика", библиотека JaCoCo.
2. Validator - простая yup-подобная библиотека валидации данных, написанная на Java и предназначенная для валидации таких типов данных как:
- Strings;
- Numbers (Integers);
- Objects of Map type.
Навыки и инструменты: более глубокое использование принципов и паттернов ООП (в частности наследования), знакомство с DSL-языками, продолжение изучения TDD и JUnit.
3. Анализатор страниц - веб-приложение позволяющее собирать, сохранять URLs для их SEO. Сервис валидирует передаваемые URLs, корректно сохраняет их в базу данных (при отсутствии соответствующего URL в ней), выдаёт сохранённые URL по запросу, а также способен производить их анализ в целях SEO.
Навыки и инструменты: фреймворк Javalin, шаблонизатор Thymeleaf, Bootstrap, использование баз данных и их взаимодействие с кодом на Java (базы данных: H2, PostgreSQL), тестирование с использованием JUnit и MockWebServer, Docker (for deploy), Lombok и другие.
4. Task manager - Менеджер задач, позволяющий регистрироваться и, для аутентифицированных пользователей, управлять такими сущностями как Задачи, их Метки и Статусы. Поддерживается фильтрация Задач.
Навыки и инструменты: Spring Boot, Spring Data JPA для взаимодействия с базой данных, Spring Security 6 (JWT-аутентификация и авторизация пользователей), PostgreSQL, Liquibase, Swagger (для документаци), Hibernate для валидации, Lombok, JUnit для тестирования, и др.
5. Dispatch service - приложение, представляющее собой реализованный микросервис с использованием Apache Kafka.
Навыки и инструменты: Apache Kafka, Spring Boot, Apache Maven, JUnit 5 & Mockito, другие.
Магистр юриспруденции, диплом с отличием.
Участвовал в различных научных конференциях и конкурсах. Имею публикации на русском и английском языках.
Бакалавры юриспруденции, диплом с отличием.
За время учёбы участвовал в различных конкурсах, выступал на публичных дебатах и научных конференциях, в том числе осуществлял синхронный перевод (с английского языка) приглашённых иностранных профессоров и экспертов. Имею многочисленных награды и благодарности.
В ходе прохождения курса я значительно подробнее разобрался в устройстве различных структур данных и их возможных реализациях в Java. Так, в курсе рассматривались: Linked and Double Linked lists, Stacks & Queues, Hash Tables, Graphs and Trees, Heaps etc.
Кроме того, курс содержал информацию об определении и сравнении асимптотического поведения алгоритмов (Big O), упражнения на разные виды сортировок, рекурсию и т.д. Всё это позволило улучшить мои знания по алгоритмам.
В ходе курса более я подробно:
1) Изучил, как работать с реляционными базами данных из Java приложения, как отправлять DDL and DML запросы;
2) Уяснил различия классов Statement and PreparedStatement, а также варианты их использования;
3) Понял, что такое JDBC драйвер, как его подключать в Java приложение без использования инструментов сборки проекта, таких как Maven or Gradle;
4) Усвоил устройство и варианты работы с properties файлом;
5) Изучил возможности настройки запросов (fetch size, batch size, timeout, etc);
6) Реализовал на практике Connection Pool и узнал о важности его использования;
7) Изучил и реализовал шаблон проектирования DAO;
В рамках обучения на платформе Хекслет я получил и усвоил базовые знания о Java (8, 17, 20 версии), о его месте среди прочих языков программирования, синтаксисе и особенностях его использования в настоящей разработке.
В ходе обучения реализовал следующие пет-проекты:
1. Консольная игра Brain Gaimes - сборник логико-математических игр, запускающийся в консоли.
Стек технологий и навыков: Intellij Idea, Gradle, Git & GitHub, Java linter, CodeClimate, утилита Make, основы архитектуры проекта, работа с "пахнущим кодом".
2. Консольная утилита Вычислитель отличий - простая, лёгкая и быстрая консольная утилита, способная находить различия между двумя конфигурационными файлами.
Стек технологий и навыков: форматы: .json и .yaml, библиотека Jackson, фреймворк (one-file framework) Picocli, CI на примере GitHub Actions, структуры данных и их реализация в Java, JUnit, использование шаблона проектирования "Фабрика", библиотека JaCoCo.
Стек технологий и навыков: более глубокое использование принципов и паттернов ООП (в частности наследования), знакомство с DSL-языками, продолжение изучения TDD и JUnit.
4. Веб-приложение Анализатор страниц - приложение позволяющее собирать, сохранять URLs для их SEO. Сервис валидирует передаваемые URLs, корректно сохраняет их в базу данных (при отсутствии соответствующего URL в ней), выдаёт сохранённые URL по запросу, а также способен производить их анализ в целях SEO.
Стек технологий и навыков: фреймворк Javalin, шаблонизатор Thymeleaf, Bootstrap, использование баз данных и их взаимодействие с кодом на Java (базы данных: H2, PostgreSQL), тестирование с использованием JUnit и MockWebServer, Docker (for deploy), Lombok и другие.
5. Spring Boot приложение Task manager - приложение менеджер задач. Позволяет регистрировать новых пользователей, а аутентифицированным и авторизованным пользователям создавать Задачи, присваивать им определённые метки и статусы (также могут создаваться Пользователями), а также назначать Задачам исполнителей. Менеджер поддерживает фильтрацию задач по различным критериям.
Стек технологий и навыков: Spring Framework (MVC, Boot, Security с использованием JWT), PostgreSQL, Liquibase, Hibernate (ORM and Validation), JUnit, MockMvc и Postman (тестирование), Docker (deploy), Lombok, SpringDoc OpenAPI, Rollbar и другие.