Всем привет!
Хочу начать писать проект/проекты но при этом совместить полезное (обучение) с приятным (портфолио), но не до конца понимаю как это правильно делать. Возможно таких как я много и кому-то еще будет интересно послушать умных людей)
Мой первый пост на форуме, поэтому прошу не закидывать тапками :)
Предисловие:
Прошёл изучение курсов Java Core и Java Syntax. Закреплял полученные знания решением задач на JR. Параллельно с JR читаю книгу Шилдта (помогает прожевать и углубить знания по темам, которые дались тяжело или, которые не смог осознать) и предметно смотрю другие курсы (напр., нравится подача информации у Алишева, но кажется, что проходит тему поверхностно), YouTube + гуглинг.
JR выбрал как основное направления для получения базы именно из-за большого количества практических задач. Некоторые задачки "щелкал как орешки", а над некоторым пыхтел, со скрипом получая одобрение валидатора, но всё же шёл как паровоз прямолинейно от лекции к лекции, от задачи к задаче. Были моменты, когда материал лекций и задач скипал, чтобы уж совсем не растерять хватку и мотивацию, но возвращался, когда упирался в нехватку знаний по "пропущенным" блокам (например, по лямбде и Stream API, так как на момент прочтения лекций материал казался слишком непонятным и запутанным).
Но при этом всё время было ощущение, что решать только задачки JR, это уровень песочницы и никак не поможет приблизится к цели "получение профессии Java-разработчика".
Пришло осознание, что одними лишь лекциями на JR сыт не будешь и пора переходить к изучению стека технологий Джава-разработчика. Немного погуглив, просмотрев несколько десятков актуальных вакансий и подсмотрев несколько roadmap из интернетов поставил себе в план погрузится в изучение следующих технологий (не обязательно в указанном порядке):
- git;
- maven (gradle поверхностно);
- docker;
- SQL & JDBC & Hibernate;
- REST;
- JUnit testing;
- spring (core, boot, mvc, data, security, etc...)
Если тут есть, что подкорректировать или добавить - с радостью послушаю.
Но тут проблема в том, что если просто погрузится в теорию, то новополученная информация будет успешно вытеснять менее свежую и еще не закреплённую. А просто повторять код лекторов и писать мини программки на несколько десятков строк кода кажется не самым эффективным способом. Тут на ум пришло только написание собственных пет-проектов, в которых можно пробовать внедрять новые знания/технологии.
Собственно сами вопросы:
1) У меня сложилось понимание, что в качестве портфолио для будущих работодателей один большой и продуманный проект с осмысленным кодом будет иметь больший вес, нежели несколько маленьких. Так ли это? какой тут подход более верен?
2) Реально ли писать Java-бекендщику проект для портфолио в одиночку? Будет ли такой проект воспринимается всерьёз?
3) Какая реализация является более востребованной: десктопное приложение с очень условным и простеньким GUI (Java FX, Swing) или Веб-приложение (написанное с помощью того же Spring-а) с неумелой версткой и простеньким визуалом (во мне так и не родился "дизайнер")?
4) Как понять, что инструментария "достаточно" для написания проекта (будь то "домашняя бухгалтерия", "таск трекер" или любой другой проект). Не совсем понимаю, насколько эффективно писать без фреймворков имея в руках только консоль, а потом с новыми знаниями переписывать весь код на новый лад. Или всё же такое "переписывание" и даст тот нужный толчок в развитии и необходимый опыт приближенный к «реальной» разработки?
P.S. Понимаю, что путь предстоит не легкий и некоторые подходы/представления могут быть в корне неверны. Поэтому буду благодарен за любые конструктивные советы. Просьба высказывать аргументированное мнение и критику.
на котадругому клиенту, продать или еще что-то сделать, и вот уже можно норм ТЗ забацать на такое, и тебе будет легче - ты будешь фокусироваться на технических вещах, как реализовать ТЗ, и идти по пунктах, а не на том, чотбы придумать то, не знаю что. И такое будет выглядеть на гитхабе норм, особенно если там еще и клин код будет, и технологий ты туда набросаешь побольше, + ты всегда на форуме можешь спросить, что еще можно добавить, есть куча технологий которые легко добавляются расширяя привлекательность твоего проекта.