Задачки для самообучения, и почему менторство не работает
Предлагаю тем кто изучает Java (это к примеру — можно выбрать любой ваш любимый язык), сделать вот такую задачу
Для будущих enterprise/web Java разработчиков:
Разработать мини-макет веб-приложения, у которого есть элементы секьюрити, база данных с регистрацией пользователей, и взаимодействие со сторонними веб-сервисами.
Подобные задачи встречаются каждый день, смысл этого — оттачивание практических навыков, и практика в реализации собственных архитектурных решений «с нуля»
-Веб приложение состоит из трех страниц
-страница логина
-страница регистрации нового аккаунта
-страница показывающая курсы валют, взятые с какого-нибудь публичного веб-сервиса (на ваше усмотрение)
-страница логина и регистрации доступна всем
-страница с курсами закрыта для неавторизованных пользователей
-после успешного логина, пользователь автоматически редиректится на страницу с курсами
-страница регистрации содержит обычную адресную форму (имя-адрес-телефон-емейл и прочее на ваше усмотрение)
страница с курсами валют — показывает курсы нескольких выбранных валют на текущую дату, и несколько предыдущих
для простоты список можно захардкодить, для сложноты — положить в конфиг
например валюты: (EUR, USD, GBP, NZD, AUD, JPY,
и курсы за последние 10 дней.
приложение должно быть загружено на гитхаб и иметь инструкцию как сбилдить jar/war
в приложении должен быть
-логгинг
-конфиг файл
-юнит тесты
уровень средний — для хранения использовать любую базу данных (hsqldb, mysql, mongodb, etc) . можно и текстовый файл :-) но желательно чтобы приложение не знало что это файл (предусмотреть уровень абстракции от способа хранения)
уровень сложный — для хранения использовать облачный сервис хранения данных. а также предусмотреть конфиг переключающий хранилище с локальной базы данных на облачный сервис
уровень суперсложный — программа должна быть задеплоена на хостинг, чтобы быть доступной по адресу в интернете любому пользователю :
(варианты — Heroku, Digital Ocean, Google App Engine, CloudFoundry, или что сами найдете)
рекомендуемые (но необязательные) технологии — spring mvc, spring boot, spring data
вы можете использовать любые фреймворки которые вам нравятся или какие знаете, главное чтобы все это работало и делало то что написано в спецификации.
красота не требуется, можно в виде топорного html table выводить . если вы тяготеете к бэк-енду , можете ограничиться самым простым веб интерфейсом
веб-сервисы для считывания курсов валют:
openexchangerates.org
currencylayer.com
и там и там поддерживается REST , клиента можно написать на любом языке
много деталей в ТЗ нет, потому что задание творческое :-) любые детали можете додумывать сами. с реальными заказчиками бывает так же — они не всегда точно знают что хотят. «сделайте демку — а мы посмотрим»
К чему я здесь это написал. один человек спрашивал про менторство и про то что хочет быть Java девелопером. я ему задал эту задачку и он слился.
Девелопера отличает от не-девелопера, мотивация и способность к самообучению . Если человек не способен найти в гугле как скачать и установить какой-то фреймворк или базу данных, вряд ли он сможет стать разработчиком.
Варианты с решениями можно кидать в виде ссылок на свой гитхаб.
Могу поревьювить ваш код в качестве менторского опыта на досуге.
Что хотелось бы увидеть
-чистый код, покрытый юнит тестами.
-архитектуру, разделенную на слои.
-хороший стиль ОО-проектирования. принципы SOLID.
-в идеале — работающую программу на облачном хостинге. пригодится для вашего портофолио.
Есть еще на уме задачки :-)
68 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів