Путь программиста
41 subscribers
50 photos
12 links
Каждый день пишу отчёт о проделанной работе💪
Download Telegram
Уже 250 часов. Неплохо...
День 78
Смотрел много видео на ютуб и заполнял свои пробелы по знаниям Java Core. Повторил вопросы по Java собеседованию, уже неплохо знаю сам Java Core. И рассказать то нечего, пока скучно и все повторяется, но сегодня начинаю новую тему фреймворки Spring и Hibernate. Буду их изучать и параллельно делать проект, о котором вчера рассказывал.

Вчера учился 5 часов + смотрел некоторые интервью с историями успеха. Люди с разными возрастами и разных социальных групп устраиваются айтишниками и это мотивирует. Короткий отчет, завтра будет больше😁💪
День 79
Вчера я начал читать 2 книги по Spring и Hibernate. По Hibernate я понял что это такой инструмент для облегчения работы с базами данных. Т.е. можно писать такой java код в перемешку с SQL и все это будет переводится в язык базы данных, разных баз данных, например MySQL postgresql, Ms SQL и т.п. Очень удобная штука которая всегда нужна. Но в том же Spring есть такой же инструмент и я не знаю что чаще используется.

Spring это очень большой фреймворк который избавляет от необходимости писать много лишнего кода на java. Как я понял главная его фишка в том что он сам создаёт объекты за тебя и как то их связывает. Нужно ещё разобраться, пока не совсем понятно.

Также каждый день повторяю то что уже учил и выучил и заполняю свои пробелы по знаниям технологий. Вчера посмотрел видео по сервис Jira, в основном он используется для управления проектами. Тимлид в этом сервисе формирует задачи и раскидывает их разработчикам, там под каждую задачу даётся определенное количество часов и нужно выполнить задачу или увеличить время, если это необходимо.

На этом все, вчера учился 5 часов. Всем удачи и продуктивного дня💪
День 80-81
Решил совместить эти дни в один отчет т.к. ничего особенного сейчас не происходит. Паралельно пытаюсь читать несколько книг по алгоритмам Spring и Hibernate + смотрю видео про Spring Core и вообще как все это работает на практике. Видео с ютуб канала alishev, хорошо объясняет для новичков, но его проблема в том что он совсем не углубляется в тему, показывает как будто это все легко и просто. Также было даже и на его платном курсе продвинутая Java, хотя если покопаться, то все эти темы очень сложные.

На сегодня план купить лицензию IDEA для того чтобы там работать со Спрингом, т.к. бесплатная версия поддерживает только Java код. И самому "пощупать" Спринг и сделать свое веб приложение. Веб приложение я уже делал, но это было на старом Java EE, посмотрим какие отличия здесь есть.

На сегодня все, за эти 2 дня я занимался 8 чистых часов + еще смотрел какие то интервью и читал статьи общие об IT. Всем удачи и продуктивного дня💪
День 82
Вчера целый день изучал Spring по видео из Ютуб
. Сначала скачал среду разработки intelij idea, и как оказалось, за первые 30 дней не нужно было платить. Этому я обрадовался т.к. не хочется платить когда тебе ещё не платят😉 Дальше по инструкции из видео настроил проект через сборщик проектов Maven, зашёл на их сайт и скопировал зависимости со Spring Core и ещё несколькими. Собрал и импортировал модули Спринг.

По самой теме пока материал усваивается процентов на 50, нужно ещё много дополнительного читать, чтобы было полное понимание. На практике сделал бины (объекты) через xml файл и аннотации. Как я понял сейчас везде используются аннотации т.к. они максимально удобны и без лишнего кода.

Вчера занимался 5.4 часов, сегодня планирую 7 и дальше буду набирать обороты т.к. вечно учиться нельзя, нужно применять знания на работе. На этом все, всем удачи и продуктивного дня!
День 83
Вчера был мой рекорд по продолжительности учебы в день — 7.5 часов. Читаю некоторых людей на форумах которые говорят что учатся по 14-16 часов, что я считаю абсолютно невозможным. Или ты убиваешь свое здоровье или ты неправильно считаешь. Убивать свое здоровье конечно можно, но в таком ритме больше нескольких недель находиться нельзя, попадешь в больничку надолго. Я думаю оптимально-максимальный режим это до 7-8 часов чистой учебы (если отвлекаемся, останавливаем время).

Вчера целый день уделил спрингу, в основном это видео с Ютуб и книга "Спринг для профессионалов". Наконец разобрался как работать с аннотациями в Спринге и как вообще работать без устаревшего xml кода. Аннотации это очень крутая штука, которая содержит в себе часть кода. Например, ставишь какую - нибудь аннотацию вида @ Annotation и он может заменить по 20-30 строчек кода и более. Я думаю что это одна из основных фишек Спринга и роста его популярности.

Также, вчера узнал о такой полезной штуке как Lombok. Этот проект также работает с аннотациями и заменяет излишний код в проекте. Например нам очень часто нужны несколько дефолтных методов и конструкторов к классу или полям. Мы просто пишем определенные аннотации и они заменяют нам 100-200 строк так называемого бойлерплейт кода, которые мы в ином случае писали бы вручную.

Это очень облегчает трудности разработчика и ставит обратно Java на равне с новыми языками, которые более удобны - Scala, Kotlin и т.п.

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

Т.к. в моем графике обучения появился целый большой фреймворк Спринг, который нужно изучать столь же долго и нудно как и Java, я решил разделить эти 2 области по дням. Поочередно по дням буду изучать то Спринг, то Java. Вчера был день Джавы, и начал я с JavaRush. Задачи на 20 уровне очень мутные и не дается какой то конечной цели которую надо решить. Ты должен прочитать код и сопоставить их в логическую цепочку, что дается очень сложно. Так, я первый час пытался вникнуть что от меня хотят и на второй час пошел доучивать теорию по этой задаче, а на 3 час решил ее. Решение буквально до 10 строчек, но чтобы догадаться до них нужно потратить кучу попыток.

На этом я решил что задачек хватит на сегодня и пошел учить теорию и смотреть видео. В принципе, по теории Java, по моему мнению у меня мало пробелов, что касается основ. А вот где у меня пробелы, это те области которые были добавлены в JDK 8. Это касается функционального программирования, Stream API и лямбда, и еще одной областью является Reflection API, который используется в Спринге. Этим 3 темам и еще библиотеки многопоточности Concurrency я хочу уделить особое внимание в дальнейшем.

Занимался вчера 7 часов по помодорро, а сегодня день Спринга. На этом все, всем удачи и продуктивного дня💪😎
День 85-86

Решил не записывать позавчерашний отчет, т.к. получилось бы мало текста. Как я и говорил, я один день учился Спрингу, а другой уделил Джаве. По Спрингу, я в основном смотрел видео на Ютуб и записывал некоторые важные моменты. В текстовом формате по Спрингу не так много информации или она устаревшая. Узнал о таком модуле как Spring Boot который, можно сказать, все делает за тебя. Основа Спринг была в том, что мы выносили в отдельный файл бины и там уже вся магия происходила, и в этом файле нужно было прописывать все свои бины.

В Спринг Буте же, мы можем обойтись без создания этого файла, сам Boot уже делает за нас все. Нам в начале нужно просто импортировать зависимости (ссылки версии из интернета) Spring Boot и все, можно идти делать свое веб приложение. И в этом модуле очень много используется аннотации вида @ Annotation, который прописывается сверху метода, поля или класса, чтобы что то обозначить, например то что этот класс имеет какие то свойства которые другие не имеют. Чтобы точно рассказать об этом, мне еще нужно время покопаться, но аннотаций очень много и их все нужно выучить😃

А вот вчера я серьезно принялся изучать лямбда выражения и Stream API который очень помогает при работе с коллекциями, то есть с массивами данных. Грубо говоря, стримы и лямбда сокращает код Java в 2-3 раза и делает его более удобочитаемым. Вообще эти термины в Java появились недавно и используются 50/50, но в современных проектах все построено на них. Это так называемый функциональный стиль программирования, а не объектно-ориентированный, коим является Java. Из-за этого не все его любят, но как по мне, функциональный стиль это действительно удобно и красиво, нет нагромождения лишнего кода.

За эти 2 дня, в общей сумме, я занимался 13 часов чистого времени. Скрин с помодорро внизу. Мне нравится темп который я набрал, сейчас процесс обучения движется намного быстрее, 1-2 лишних часа это большое преимущество при долгосрочных целях🌝

На этом все, всем удачи и продуктивного дня🦾
День 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, таким "фреймворком" для работы с базой данных, который повсеместно используется.

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