Java-developer
Контакты
Ищу работу/стажировку в качестве Junior Java-разработчика. Подходит любой формат работы.
О себе
Про язык Java я услышал еще в далеком 2010 году, когда мой друг - разработчик в США, сказал, что за Java будущее. Мне тогда очень запомнились его слова.
На предыдущем месте работы на одном из совещаний встал вопрос о внедрении системы CRM. Я начал собирать информацию и изучать вопрос на предмет того, на каких языках пишут CRM и можно ли написать самостоятельно такую систему. Так я вспомнил о языке Java и начал знакомиться с ним: прочел книгу Герберта Шилдта "Java.Полное руководство", Адитья Бхаргава "Грокаем алгоритмы" и даже попытался написать на нем CRM самостоятельно, используя архитектурный стиль REST API и Spring Framework, но знаний и навыков не хватало. Продолжив глубже изучать Java, понял, что хочу связать свою жизнь с программированием.
Язык Java привлек меня своей обстоятельностью, конкретностью и строгой типизацией (пусть это и приводит порой к излишней многословности). Все это позволяет писать большие, сложные, но при этом быстрые и безопасные приложения и сервисы.
На данный момент завершил обучение по направлению Java-разработчик на образовательной платформе Hexlet.
Проекты
В процессе обучения были реализованы следующие проекты:
Менеджер задач
Это веб-приложение, являющееся системой управления задачами, которое позволяет создавать задачи, изменять их статусы и назначать для них исполнителей, а также устанавливать теги для удобной группировки задач по ним.
Полученные навыки:
* Применены принципы построения веб-приложения с использованием архитектурного стиля REST и MVC-архитектуры;
* Получен опыт работы с фреймворком Spring(Spring Boot, Spring Web, Spring Data JPA, Spring Security);
* Знакомство с открытым стандартом для создания токенов доступа - JSON Web Token;
* Опыт использования библиотеки для управления изменениями схемы базы данных - Liquibase;
* Понимание принципов работы платформы контейнеризации Docker;
* Работа с сервисами для деплоя приложений, работающими по модели PaaS.
* Навыки создания интерактивной документации по API с использованием Swagger.
Стек:
* Java 20, Spring Boot, Spring Web, Spring Data JPA, Spring Security, JWT, Liquibase, QueryDSL, Lombok, Swagger, SQL DB H2, PosgreSQL, Deploy: Render, Git, GitHub, Gradle, Checkstyle, Code Climate, JUnit5, MockMvc, Jacoco, GitHub Actions, make.
Анализатор страниц
Приложение представляет собой полноценный веб-сайт, позволяющий анализировать веб-страницы на предмет их пригодности для поисковой оптимизации (SEO).
Полученные навыки:
* Отработаны базовые принципы построения современных сайтов на MVC-архитектуре: работа с роутингом, обработчиками запросов и шаблонизатором, взаимодействие с базой данных через ORM;
* Углубление знаний о протоколе HTTP и клиент-серверной архитектуре;
* Знакомство с языком SQL для запросов к базе данных: вставка, модификация и удаление данных;
* Опыт использования шаблонов HTML и инструментов для создания сайтов и веб-приложений;
* Понимание основ работы протокола TCP и знакомство с понятием ip-адреса и порта;
* Работа с сервисами для деплоя приложений, работающими по модели PaaS.
Стек:
* Java 20, Javalin Framework, Thymeleaf, Bootstrap, ORM Ebean, SQL DB H2, PosgreSQL, Deploy: Render, Git, GitHub, Gradle, Checkstyle, Code Climate, JUnit5, MockWebServer, Unirest, Jacoco, GitHub Actions, make.
Валидатор данных
Библиотека для проверки корректности (валидации) данных.
Эта библиотека имеет широкое применение, так как практически все программы работают с внешними данными, которые нужно проверять на корректность. В первую очередь речь идет про данные форм заполняемых пользователями.
Полученные навыки:
* Опыт проектирования архитектуры приложения в объектно-ориентированном стиле с учетом возможности его расширения без переписывания кода;
* Применение и соблюдение принципов SOLID;
* Знакомство с Предметно-ориентированными языками (DSL);
* Опыт реализации приложения на основе fluent-интерфейса;
* Работа с лямбда-выражениями и углубление знаний о функциональных интерфейсах.
Стек:
* Java 17, Git, GitHub, Gradle, Checkstyle, Code Climate, JUnit5, Jackson, GitHub Actions, make.
Вычислитель отличий
Утилита, определяющая разницу между двумя структурами данных(входными файлами).
Возможности утилиты:
- Поддержка разных входных форматов: yaml и json;
- Генерация отчета об отличиях в виде plain text, stylish и json.
Полученные навыки:
* Развитие ООП мышления;
* Применение принципов модульности и абстракции;
* Работа с параметрами командной строки;
* Углубление понимания работы операционных систем в целом и командных интерпретаторов в частности;
* Применение практики непрерывной интеграции(CI/CD);
* Разработка на основании подхода Test-Driven Development (TDD) с использованием JUnit5 и JaCoCo;
* Использование библиотеки picocli для создания утилиты командной строки;
* Парсинг данных из файлов с использованием библиотеки Jackson;
* Работа с Java Collections Framework (основная логика проекта реализована на его возможностях).
Стек:
* Java 17, Git, GitHub, Gradle, Checkstyle, Code Climate, JUnit5, picocli, Jackson, GitHub Actions, make.
Игры разума
Приложение представляет собой пять игр, тренирующих арифметические и математические навыки. Взаимодействие с играми осуществляется через консоль.
Полученные навыки:
* Работа с терминалом, консолью и командным интерпретатором bash Linux(Ubuntu);
* Работа с Git;
* Работа с GitHub;
* Использование Gradle для сборки проекта и управления зависимостями;
* Использование инструкций в Makefile для автоматизации сборки проекта;
* Использование статического анализатора кода (Checkstyle);
* Автоматическое отслеживание качества кода (Code Climate);
* Работы по настройке окружения;
* Опыт построения архитектуры полноценного приложения и написания чистого кода.
Стек:
* Java 17, Git, GitHub, Gradle, Checkstyle, Code Climate, make.
Имею жгучее желание стать частью первоклассной команды разработчиков. Основные мотивации на рабочем месте - командное решение поставленных стандартных и нетривиальных задач, а также развитие собственных знаний, навыков и способностей.
- Java Core
- Основы ООП
- Java Collections Framework
- Spring Framework
- PosgreSQL/H2
- Deploy
- Docker
- Liquibase
- Lombok
- Swagger
- Intellij IDEA
- Gradle/Maven
- Git/Github
- Работа с терминалом, консолью и командным интерпретатором Linux
- Разработка через тестирование (TDD), JUnit5
- Основы HTML / CSS
Опыт
Обязанности:
- Комплексное сопровождение деятельности предприятия;
- Разработка и внедрение внутренней документации организации(Договоры, Инструкции, Отчетные документы), контроль за ее ведением и использованием;
- Контроль за соблюдением внутренних нормативных актов организации;
- Организация взаимодействия с контрагентами и поставщиками;
- Создание и поддержание цифровой инфраструктуры предприятия(Настройка и отладка внутренней локальной сети, Внедрение и поддержка ПО компании, Настройка периферийных устройств, Улучшение технических характеристик компьютерной техники организации);
- Наём сотрудников;
Достижения:
- Работал в организации с момента основания, что позволило не только наладить все бизнес-процессы, но и глубже понять принципы их работы и влияние на результат деятельности компании;
- Разработал всю необходимую внутреннюю документацию организации с нуля, которая действует и используется по настоящее время;
- Создал, настроил и поддерживал всю необходимую сетевую и цифровую инфраструктуру предприятия;
- Совместно с учредителем разработал и внедрил систему складского учета, прозрачную и понятную систему учета заработных плат и выработки сотрудников с учетом специфики деятельности;
- Привлек в организацию порядка 80 постоянных клиентов-юридических лиц;
- Совместно с учредителем, путем создания комфортных и честных условий труда, добился минимизации "текучки" кадров(абсолютное большинство сотрудников работают практически с момента основания предприятия).
Образование
Читаю профессиональную литературу на английском языке
Проживаю в городе Воронеж