Путь программиста
37 subscribers
50 photos
12 links
Каждый день пишу отчёт о проделанной работе💪
Download Telegram
День 87

Вчера решил подтягивать свои знания по некоторым областям
, которые необходимы для работы Java программиста и в частности работы с Java Enteprise.

Начал я с изучения принципов которые вечно мне попадались в процессе изучения, это SOLID, KISS, DRY и YAGNI. SOLID - это аббревиатура - принципы по которым нужно писать код, расшифровывается так: принцип единой ответственности, принцип открытости и закрытости, принцип подстановки Барбары Лисков, принцип разделения интерфейсов, принцип - модули высших уровней не должны зависеть от модулей низших уровней. Без модели SOLID невозможно написать правильно структуированную, удобочитаемую и лекоизменяемую программу. Но, честно говоря, все это уже изучалось косвенно в книгах и видео, и я так уже интуитивно пишу, поэтому мне эти принципы никаких инсайтов не дали. Но их важно запомнить, помнить и применять.

Остальные принципы маленькие и косвенно повторяющиеся.
Первое KISS - делай короче и проще свой код. DRY - не повторяй код, используй интерфейсы, выноси за пределы класса. А YAGNI - делай так, как сказали. Не надо прикручивать доп. функционал, даже если ты думаешь что это ну уж очень надо.

На этом день начался😃 Следующие 5 с лишним часов я изучал отличия Java EE и Spring, а также основы интернета, как все работает на серверном уровне, и как все это вообще взаимодействует. Много читал про IP, поры, сервлеты, виртуальные машины и еще посмотрел одно видео про Docker, такую модную штуку для развертывания вашего приложения на серверах.

Сегодня день когда я повторяю пройденный материал за неделю. Вчера я занимался 7.2 часа. На этом все, всем удачи и продуктивного дня, ну или отдыха, воскресенье же🦾🙈
Всегда пиши на той же строке🤓
День 88

Опять красивая цифра😃
Вчера был день повторов и такой свободный график по тому что я могу учить. Начал я с решения задач на JavaRush которые остались нерешенными когда-то. Ни одна задача не поставила меня в тупик, хотя в свое время я бросал эти задачи, т.к. не смог решить. Это радует😁. Дальше я начал повторять вопросы по собеседованию. Те вопросы которые я уже учил, на них мог ответить без проблем, может и частично в некоторых деталях, но чтобы я не знаю ничего, такого уже нет.

У меня есть какие то проблемные области в теории еще, типа многопоточности (собираюсь сегодня изучать), ввода-вывода и что касается функционального программирования. Но самая большая проблема в практике. Да, я могу решать задачи с конкретными условиями, но я же хочу написать свой проект, а вот это уже сложно, т.к. нет такого человека кто будет говорить делай это, это и то и все получится. Нужно во всем самому копаться, и скорее всего, учить то что не надо.

Вечером я начал повторять тему обобщений, дженериков. Весьма интересная тема, некоторые моменты я все еще плохо понимаю, в особенности как все это применять на практике в реальном проекте. Но терпение и труд все перетрут

Так и прошел день, так и прошла неделя. Учился я вчера 6 часов, а за неделю около 45 часов, что является рекордом🎆. Если такими ударными темпами продолжать, пробелы в знаниях заполнятся очень быстро и можно без труда пройти собеседование. На этом все, всем удачи и продуктивного дня🦾
День 89-90

Как я и говорил в эти дни я чередовал Java и Spring.
В понедельник я решил изучить многопоточность в java, ту ее часть которая содержится в библиотеке concurrent. Честно скажу, тема довольна обширная и сложная, научиться применять ее за день невозможно. В первые часы изучения пытался понять зачем вообще нужна эта библиотека и почему ее так часто используют. Оказалось что это "облегченная" версия синхронизации в Java. Т.е. чтобы не использовать каждый раз ключевое слово synchronized, в этой библиотеке содержатся классы и методы которые уже синхронизированы и могут использоваться сразу в многопоточном приложении. На этом примере все просто, но главная проблема заключается в том чтобы все это запомнить и начать использовать.

Я посмотрел с десяток видео и прочитал столько же статей. Выделил несколько классов которые и нужны в основном и начал с ними ковыряться в коде. В процессе туман начал рассеиваться и тема в общем стала более менее понятной. Но чтобы отточить свои навыки нужно еще посидеть ни один час. Пока оставим эту тему на следующую неделю, дальше в планах повторить коллекции.

Что касается Спринга, во вторник я полностью уделил ему время. Допилил веб приложение от ютуб канала alishev. Здесь не было проблем, приложение было простеньким, просто чтобы показать функционал Спринга. А вот дальше я столкнулся с проблемами. Начал смотреть другого блогера и следовать его указаниям к по созданию веб приложения. 1 урок более менее, запустил веб приложение. На втором уроке застрял на несколько часов, оно было посвящено подключению базы данных к проекту.

Базу данных Postgres скачал, создал, и прикрутил к своему проекту. Но тут начались проблему, я добавлял какой то текст с сайта и оно не добавлялось в базу данных. После 2 часов с бубнами и с десяток попыток изменения кода, я нашел проблему. В Html коде я не дописал всего 1 букву, вместо messages, я написал message. И из-за этого не проходило сообщение. Вот такой вот урок, нужно внимательно смотреть, что пишешь😄

За эти 2 дня занимался 12.5 часов, на этом все, всем удачи и продуктивного дня!🦾
День 91-92

Продолжаю по той же схеме чередуя изучение Джавы и Спринга. По джаве темы уже повторяются, сложно найти что то новое что пригодилось бы для работы Junior специалиста. Одним из последних тем для изучения было логирование. Эта такая вещь которая записывает в файл или куда угодно то что происходит в программе. Но на практике его используют чтобы фиксировать ошибку и после их исправлять.

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

По спрингу, все также, смотрю видео и повторяю, пытаюсь вникнуть в код. Что то запоминаю, что то уже понимаю. Архитектура построения приложения мне понятна, но многих используемых классов не знаю и их стоит поучить. Параллельно по видео делаю веб приложение, и вечно сталкиваюсь с какими то багами, сижу их и исправляю. На это уходит больше времени 😃

На этом все, за эти дни учился 8 и 6 часов соответственно. Всем удачи и продуктивного дня!🦾
Мой код: *Интуитивно понятен и прекрасно структурирован*
Я: *Отвернулся на 5 секунд*
Тот же код:
День 93-95

Времени особо не было чтобы писать отчёты
, занимаюсь по 8 часов каждый день, чтобы максимально получить знания за минимальное время. Эти дни были посвящены Java, Spring и повторам по воскресеньям. По java изучил, повторил темы лямбда, стримы, наследование, дженерики, аннотации, логирование и ещё много тонкостей по другим темам.

По спрингу я делал проект из видео на Ютуб, но делать его не очень просто, т.к. видео старое и приходится лезть в комменты и на официальные сайты фреймворков чтобы обновлять данные. Иначе программа не будет работать. Так, над 2-3 ошибками в одном видео я просидел целый день, но такой кайф в итоге их исправить 😄 Потом за 20 минут написал и запустил уже следующее видео.

Вот так бывает, что на одной строчке можешь сидеть по полдня думать и потом за 20 минут накатать 300 строк кода. Но все равно не было такого чтобы без ошибок все проходит, это реально полезно, т.к. параллельно перечитываю много нюансов которые я бы не увидел без ошибок.

На этой неделе начну мою задумку по созданию боту телеграм, собираюсь его делать с применением всех технологий которые я уже знаю. Также нашел много материалов по этой теме, будет интересно 😄 На этом все, всем удачи и продуктивного дня🦾
День 96-99
Процесс обучения начал замедляться
т.к. все ранее неизвестные мне термины были изучены, а теперь стоит в них углубиться. Повторять то что уже "знаешь" не очень весело, но нужно для того чтобы не растерять так трудно добытые знания. Сейчас план такой же, один день изучаю Java, другой Spring. По Спрингу я сейчас делаю бота в телеграм, он по функциональности простой, но его сложно делать так как моих знаний пока не хватает, нужно изучать кучу документаций по Telegram API и библиотеку Java для ботов.

Позавчера я разработал по туториалу и видео простенький бот, который просто отвечает на сообщение рандомным текстом. Но теперь предстоит дать ему ту функциональность которую я хочу. Надеюсь решить этот вопрос до конца месяца, чтобы поставить этот учебный проект в резюме. Это дает несомненный плюс перед другими кандидатами, у которых, скорее всего, не будет никаких практических наработок.

Также, в связи с эпидемиологической ситуацией буду искать работу удаленно, начну в ноябре, когда закончу бота. Если предложат оффер, то тогда уже поеду в офис (или нет, если можно работать удаленно).

В последнее время стал писать реже, т.к. это отвлекает меня от учебы, но если буду писать отчет вечером, то нормально. Так и буду делать в дальнейшем, этот пост тоже был написан вчера (привет из прошлого😃). На этом все, всем удачи и продуктивного дня🦾
День 100 и я готов на все 💯

Но пока это преувеличение😄 Надо еще поднажать по некоторым пунктам. Вчера уделил время тестам по Java. Это сертифицированные тесты Oracle, владельца Java. То есть я сдавал не сам тест, а похожий на него, т.к. сам тест является секретным и выдают его только в сертифицированных центрах за 150$. Если проходишь барьер 65% ты сдал, и ты сертифицированный разработчик Java. У меня вчера было 50% что я считаю неплохим результатом, ошибки которые я совершал я легко разобрал и повторил. Все что там давалось я уже знал, но если не применять их каждый день, то потихоньку забывается.

Сам тест сложный, запутанный. Нужно все смотреть до последней точки, всегда нужно ожидать подвох. Примерная задачка такая: дается код и нужно исправить, сказать что получится, сказать почему не получится, сказать как улучшить и т.п. Еще бывают просто вопросы без кода. И все это на английском, тест на русский не переводится. В стрессе иногда путаешься в понятиях, и не совсем понятно что автор вопроса имеет ввиду, из-за этого тоже было несколько ошибок. Ну, еще очередной повод подтянуть свой английский, особенно технический.

Просмотрел одно интервью на разработчика уровня мидл. То есть человека уже с опытом. Никаких прямо новых вопросов я не услышал, но так, с переменным успехом мог отвечать. Обозначил свои пробелы, в основном связано уже не с Java, а с Hibernate, таким "фреймворком" для работы с базой данных, который повсеместно используется.

На этом все, всем удачи и продуктивного дня🦾
День 101

Вчера восполнял свои пробелы
по базам данных и в частности по Hibernate. Конечно, за 1 день такой фреймворк не выучить, но основные понятия и сложности которые там возникают можно узнать. Так, я узнал что значили те аннотации которые я прописывал в учебном проекте по Спрингу, оказывается это не совсем чистый Hibernate, а Spring Data с имплементацией Hibernate, он более легкий в использовании и не требует конфигурации, все настройки пишутся автоматически.

После этого, на чистом Hibernate не хочется писать, и в будущем собираюсь применять именно Spring Data + Spring Boot, который включает в себя многие автоматические настройки. Но, конечно, знать внутреннюю структуру Hibernate стоит. Например, если возникнет какая-нибудь ошибка или нужно оптимизировать код для работы с базами данных.

Больше рассказать тут нечего, если буду бросаться терминами будет уже скучно:) Также можно поделиться крутыми статьями тык, тык и тык. Все хорошие статьи уже идут на английском, так как на этом уровне уже нет смысла переводить, все и так должны знать английский.

На этом все, всем удачи и продуктивного дня🦾
Уже 400 часов учебы🥳 Цель 600-700 часов
134 день (не точно)

Прошел месяц и один день как я не писал свои отчеты. Надо исправляться. В этот месяц мой процесс в обучении замедлился. На то были причины, но еще причина была в том что я почти все прошел по теории, а процесс практики очень медленный т.к. нужно перелопатить весь интернет чтобы написать "две строчки". Из-за этой медлительности у меня чуть пропала мотивация. Но сейчас уже привык к этому и потихоньку восстанавливаюсь. Сейчас заполняю свое резюме. Первое что мне нужно сделать, это завершить 2 своих проекта, по телеграм боту и веб-приложению.

Еще, сейчас в процессе быстрого прогресса на JavaRush, стараюсь в минимальные сроки сделать хотя бы 35 уровней (сейчас 27), чтобы это тоже внести в резюме и подписать, что я окончил их курсы. Это будет тоже на пользу. Далее, нужно сделать хорошую фотографию и описание. Краткое, емкое и чтобы глаз HR зацепился. Недавно читал что HR просматривает в среднем резюме соискателя 8 секунд и за это время нужно его чем то зацепить, чтобы он сразу понял, вот он идеальный кандидат.

По теории я готов больше всего, уверенность здесь есть. А вот практику постараюсь максимально подтянуть. Нужно делать тестовые практические задания из интернета и проходить тесты на общее знание Java, что то подобных Oracle тестам.

На этом все, сегодня планирую заниматься минимум 5 часов, а дальше как пойдет. Всем удачи и продуктивного дня🦾
135 день

Вчера занимался практикой. Делал веб приложение и задачи на JavaRush. Рассказывать особо нечего, т.к. столкнулся с проблемами, которые до сих пор не могу решить. Разбираюсь с базой данных (Postgres). Проблема в так называемой миграции БД, не могу ее сделать, выскакивает куча ошибок. Постараюсь сегодня эту миграцию завершить. Все это нужно для того чтобы приготовить приложение к деплою, чтобы он был доступен всем по ссылке, а не только мне, на локальном хостинге.

На этом все, завтра постараюсь побольше написать. Всем удачи и продуктивного дня🦾
136-137 день

За эти 2 дня делал веб-приложение по примеру из ютуба и задачки на Javarush. Позавчера, я говорил о проблеме миграции БД, которую я сразу же после отчета решил. Но из консоли я не смог ничего сделать, как делал автор видео и говорили комментаторы. Я зашел на клиент Postgres и вручную удалил и создал новый БД. Потому что, если создавать с таким же именем, то возвращается старый БД, что странно. И прописал опять все данные БД в своем приложении и успешно осуществил миграцию.

Т.к. видео, по которому я делаю проект, уже 3 года очень часто выскакивают какие-то ошибки. После того как я поправил миграцию, перестала отправляться пользователю почта, хотя месяц назад все было успешно. У меня был почтовый клиент от Яндекса, и как я понял, они решили ввести плату на корпоративных клиентов, то есть на сайты, приложения и т.п. Они прямо в середине коде ошибки пишут ссылку на сайт с оплатой. В итоге, я перевелся на почту Гугла и все заработало.

Третья ошибка была в том что я не мог настроить подтверждение пароля, когда нужно ввести 2 пароля, которые совпадают. Здесь немного ошибся сам автор видео, но потом исправил на 2 видео, но у меня все равно не работало, т.к. я немножко видоизменил код под себя. Я пишу все в русском варианте, и пароль у меня идет после заполнения email, а у автора наоборот. Из-за этого я немного ошибся, и написал password 2 вместо password2, из-за этого все приложение ломалось. Еще один раз, из-за точки с запятой, не поднималось все приложение. Вот так, пропускаешь какую-то мелочь и все многомиллиардное приложение просто ложится, но конечно в коммерческой разработке такое почти невозможно, потому что все тестируется 300 раз.

По Javarush я достиг 28 уровня. Цель: хотя бы 35 уровней, а лучше 40 до заполнения резюме и начала откликов. На этом все, всем удачи и продуктивного дня🦾
138-140 дни
Также занимаюсь моим проектом для резюме aka веб-приложение. Возникают проблемы, решаю их и дальше иду по видео материалу. Уже довольно много сам сделал, дорабатываю сам. Хочу немного видоизменить проект к концу, чтобы не было простой копипастой. Много читал про интеграционное тестирование, вчера впервые попробовал, интересно. А сегодня надо делать модульное тестирование, его я раньше уже делал на других проектах. Вообще, весь проект, каждый кусок кода должен быть покрыт тестами, это сейчас обязательное условие на проектах. Нельзя полагаться на авось и писать код, нужно или сразу проверять тестами, или даже писать сначала тест, а потом код, сейчас такое в тренде.По проекту остались уроки про тесты и пару доработок, потом деплой на сервера и выставление в резюме.

По JavaRush все медленно продвигается, сегодня хочу достигнуть 30 уровня. Сейчас там стало чуть полегче, по сравнению с 17-20 уровнем, т.к. я не очень люблю работать с перекидыванием байтов туда-сюда и точечной настройкой. В конце 25 уровня и дальше появляется одна большая задача, вместо маленьких, обычно это игра, но иногда попадаются интересные вещи, например сделать MVC проект с нуля. Сейчас я его и делаю.

На этом все, всем удачи и продуктивного дня🦾
141-143 дни

Продолжаю заниматься своими проектами. Веб-приложение я почти закончил, нужно немножко доработать и залить на сервер с доменом. По JavaRush достиг 31 уровня и перешел в раздел Java Collections. Сделал пару больших задач, например, написал игру змейка на декстопе и архитектуру MVC с бизнес логикой. По теории сейчас начну немного догоняться, буду делать тесты от Oracle и хочу пройти сложный тест от GeekBrains, чтобы его тоже внести в резюме (начальный и средний у меня уже есть). По часам, уже более 500 часов, как я и предполагал в начале, нужно 600-700 часов потратить, чтобы подобраться к позиции Junior.

RoadMap, как развиваться Java разработчику в 2020 году⬆️

На этом все, получилось кратко, всем удачи и продуктивного понедельника🦾
144-146 дни

Практика, практика, практика. Именно в таком темпе нахожусь последние несколько недель. Достаточно хорошо продвинулся по пониманию Спринга и Хибернейта на практике. Представляю в голове общую картину проекта и понимаю аннотации и что делают те или иные классы, методы. Залил свой проект на Гитхаб, теперь осталось залить на Heroku, и дать ссылку в резюме. Сегодня сделаю маленькое CRUD + MySQL (create,update,delete) приложение для того чтобы продемонстрировать свои знания и в этом направлении. Это будет простая форма, куда можно внести какие-то данные (например название фильма, его режиссера, бюджет и т.п.), типа эксель,только онлайн. Данные можно вводить, редактировать, удалять.

На JavaRush достиг 35 уровня из 41. Мне стала доступна онлайн-стажировка, которая начнется в начале января, но сомневаюсь что я туда пойду, потому что там делается проект который я уже сделал (веб-приложение), и немножко добавляют JavaScript. На этом все, всем удачи и продуктивного дня🦾
JavaRush + полезный совет