День 17
Задание:
1. Добавить в REST API выдачу точек трека по заданному автомобилю и диапазону дат/времени с учётом локальной таймзоны предприятия (сами точки на сервере хранят дату время в UTC).
2. Выдавать их по отдельной настройке либо в json, либо в geoJSON (на выбор пользователя).
Ход проекта:
1. Добавил ендпоинт, который при передаче параметров (vehicleID и дат) будет выдавать точки соответствующие параметрам запроса с поправкой на сдвиг от UTC, который есть у предприятия (если даты не передать, то точки будут выданы все:
-
-
Задание:
1. Добавить в REST API выдачу точек трека по заданному автомобилю и диапазону дат/времени с учётом локальной таймзоны предприятия (сами точки на сервере хранят дату время в UTC).
2. Выдавать их по отдельной настройке либо в json, либо в geoJSON (на выбор пользователя).
Ход проекта:
1. Добавил ендпоинт, который при передаче параметров (vehicleID и дат) будет выдавать точки соответствующие параметрам запроса с поправкой на сдвиг от UTC, который есть у предприятия (если даты не передать, то точки будут выданы все:
-
/gps/track?vehicle=1&start=2015-01-01&end=2022-01-01
2. Также добавил возможность получить ответ в geoJSON, если передать соответствующий параметр в строку "geoJSON":-
/gps/track?vehicle=1&start=2015-01-01&end=2022-01-01&geoJSON
#проектДень 18
Задание:
1. Добавить модель Поездка, в которой хранится автомобиль, и дата-время в UTC начало и окончание поездки без ограничений (может быть два часа, может быть два года).
2. В API сделать запрос, который по заданным дате-времени начала и конца вытащит все поездки (считаем, что они в таймзоне предприятия) - запрос именно по поездкам, но выдаются только точки трека по id заданного автомобиля.
3. Точки могут быть из нескольких реальных треков (которые в проекте сами по себе никак не представлены); условно, можно запросить за месяц все поездки, и получить один огромный трек.
4. Если начало первой поездки раньше начального времени запроса, или окончание последней поездки позже времени конца запроса, то их не включаем в выдачу.
Ход проекта:
1. Добавил модель "поездка (trip)" в БД и проект.
2. Сделал ручку, по которой можно получить все поездки на определенном промежутке со всеми граничными условиями.
#проект
Задание:
1. Добавить модель Поездка, в которой хранится автомобиль, и дата-время в UTC начало и окончание поездки без ограничений (может быть два часа, может быть два года).
2. В API сделать запрос, который по заданным дате-времени начала и конца вытащит все поездки (считаем, что они в таймзоне предприятия) - запрос именно по поездкам, но выдаются только точки трека по id заданного автомобиля.
3. Точки могут быть из нескольких реальных треков (которые в проекте сами по себе никак не представлены); условно, можно запросить за месяц все поездки, и получить один огромный трек.
4. Если начало первой поездки раньше начального времени запроса, или окончание последней поездки позже времени конца запроса, то их не включаем в выдачу.
Ход проекта:
1. Добавил модель "поездка (trip)" в БД и проект.
2. Сделал ручку, по которой можно получить все поездки на определенном промежутке со всеми граничными условиями.
#проект
Июнь 2023:
✅ Продолжаю разрабатывать "дипломный проект" писал о нем выше. Текущий прогресс: 18/25
✅ Для получения опыта разработки "с нуля" в свободное время занимаюсь разработкой MVP-проектов в стартапе. Одну из наработок передал в тестирование Заказчику.
✅ Наметил планы по дальнейшему развитию, как инженера-программиста, на ближайшие 3 года.
✅ Очень давно хотел найти ментора и в июне это удалось. В текущей компании есть программа внутреннего обмена опытом между сотрудниками и мне удалось найти инженера E6 (пред-пред-максимальный грейд в Авито), который согласился менторить меня по проектированию систем. Успели провести пробное интервью, на котором вскрылись слабые места... Хочу постепенно полностью освоить дорожную карту
✅ И, пожалуй, очень важная технология, к которой, наконец, прикоснулся - ChatGPT. Это действительно прорыв. Если этот инструмент использовать с умом, то можно сэкономить многие часы, потраченные на изучение документации. Уже сейчас я его использую как цифрового ментора / советника, а также генератор запросов для наполнения БД большим количеством случайных записей.
▶️ Завершить второй курс по парадигмам программирования // материал очень объемный и требует серьезного осмысления, чтобы продвигаться дальше
—
Планы на июль:
🔖 Закончить курс по JS (повторно)
🔖 Закончить освоение веб-фреймворка Gin (повторно)
🔖 Завершить второй курс по парадигмам программирования
🔖 Завершить дипломный проект (осталось 7 заданий) и выложить все на гитхаб
🔖 Выстроить регулярное взаимодействие с ментором и выполнить первое задание про балансировщик нагрузки
🔖 Приступить к изучению одной из N купленных в июне книг
#результаты
✅ Продолжаю разрабатывать "дипломный проект" писал о нем выше. Текущий прогресс: 18/25
✅ Для получения опыта разработки "с нуля" в свободное время занимаюсь разработкой MVP-проектов в стартапе. Одну из наработок передал в тестирование Заказчику.
✅ Наметил планы по дальнейшему развитию, как инженера-программиста, на ближайшие 3 года.
✅ Очень давно хотел найти ментора и в июне это удалось. В текущей компании есть программа внутреннего обмена опытом между сотрудниками и мне удалось найти инженера E6 (пред-пред-максимальный грейд в Авито), который согласился менторить меня по проектированию систем. Успели провести пробное интервью, на котором вскрылись слабые места... Хочу постепенно полностью освоить дорожную карту
✅ И, пожалуй, очень важная технология, к которой, наконец, прикоснулся - ChatGPT. Это действительно прорыв. Если этот инструмент использовать с умом, то можно сэкономить многие часы, потраченные на изучение документации. Уже сейчас я его использую как цифрового ментора / советника, а также генератор запросов для наполнения БД большим количеством случайных записей.
▶️ Завершить второй курс по парадигмам программирования // материал очень объемный и требует серьезного осмысления, чтобы продвигаться дальше
—
Планы на июль:
🔖 Закончить курс по JS (повторно)
🔖 Закончить освоение веб-фреймворка Gin (повторно)
🔖 Завершить второй курс по парадигмам программирования
🔖 Завершить дипломный проект (осталось 7 заданий) и выложить все на гитхаб
🔖 Выстроить регулярное взаимодействие с ментором и выполнить первое задание про балансировщик нагрузки
🔖 Приступить к изучению одной из N купленных в июне книг
#результаты
Telegram
time2code
Начал делать "дипломный" проект в ВШПСБ. Он идет бонусом к основному курсу, который прохожу по декларативной модели, и состоит из 25 заданий (основные боли в бэкенд разработке). Тема: автопарк, регистрация и учет автомобилей.
Проект нужно успеть выполнить…
Проект нужно успеть выполнить…
День 19
Задание:
1. Добавить REST-запрос, который по заданному диапазону дат-времени (считаем, что они в таймзоне предприятия) выдаст список всех поездок машинки (без треков), где будет вся общая информация по поездке, начальная и конечная точки.
2. Также добавить текстовое "представление" этих точек, физический адрес. (Получить его можно через разные maps API)
Ход проекта:
1. Добавил начальную, конечную точки поездки + их физический адрес.
2. Использовал API MapQuest: https://developer.mapquest.com/
- искал доступ к API с простой регистрацией + очень хотел информацию о точках получать батчевым запросом, так как их много, а на каждую делать свой запрос - дорого. MapQuest позволяет за 1 запрос обрабатывать до 100 точек, что хорошо подошло, как мне кажется.
Долго возился со случайными данными, которые наполняют БД, чтобы широту/долготу нормально распарсить, пришлось кучу ограничений ставить, чтобы хороший результат получить.
#проект
Задание:
1. Добавить REST-запрос, который по заданному диапазону дат-времени (считаем, что они в таймзоне предприятия) выдаст список всех поездок машинки (без треков), где будет вся общая информация по поездке, начальная и конечная точки.
2. Также добавить текстовое "представление" этих точек, физический адрес. (Получить его можно через разные maps API)
Ход проекта:
1. Добавил начальную, конечную точки поездки + их физический адрес.
2. Использовал API MapQuest: https://developer.mapquest.com/
- искал доступ к API с простой регистрацией + очень хотел информацию о точках получать батчевым запросом, так как их много, а на каждую делать свой запрос - дорого. MapQuest позволяет за 1 запрос обрабатывать до 100 точек, что хорошо подошло, как мне кажется.
Долго возился со случайными данными, которые наполняют БД, чтобы широту/долготу нормально распарсить, пришлось кучу ограничений ставить, чтобы хороший результат получить.
#проект
Возвращаюсь в регулярный ритм журналирования своего прогресса по проекту.
Очень плотный выдался июль в плане разнообразных дел: работа, проект и личное.
Очень плотный выдался июль в плане разнообразных дел: работа, проект и личное.
День 20
Задание:
В веб-интерфейсе сделать минимальную логику drill-down (удобство не нужно):
- Менеджер логинится, видит список своих предприятий,
- выбирает предприятие - видит список машинок в нём,
- выбирает машинку - видит по ней всю детальную инфу и список поездок (лучше, из заданного диапазона дат).
- Выбрав любую поездку (или все из диапазона), он увидит её трек (все треки) на карте -- подберите подходящий Map API для отображения трека.
Ход проекта:
Добавил следующую механику:
1) менеджер логинится
2) видит список всех предприятий
3) выбирает предприятие - получает список всех машин
4) выбрав машину - получает список всех поездок
5) выбрав поездку, он видит трек на карте (начальное положение - конечное)
Возникли проблемы с треком: пока не заставил библиотеку отрисовывать нормальный маршрут по точкам - хочу с этим разобраться.
Использую OpenStreetMap (https://www.openstreetmap.org/), так как предоставляет бесплатное API.
#проект
Задание:
В веб-интерфейсе сделать минимальную логику drill-down (удобство не нужно):
- Менеджер логинится, видит список своих предприятий,
- выбирает предприятие - видит список машинок в нём,
- выбирает машинку - видит по ней всю детальную инфу и список поездок (лучше, из заданного диапазона дат).
- Выбрав любую поездку (или все из диапазона), он увидит её трек (все треки) на карте -- подберите подходящий Map API для отображения трека.
Ход проекта:
Добавил следующую механику:
1) менеджер логинится
2) видит список всех предприятий
3) выбирает предприятие - получает список всех машин
4) выбрав машину - получает список всех поездок
5) выбрав поездку, он видит трек на карте (начальное положение - конечное)
Возникли проблемы с треком: пока не заставил библиотеку отрисовывать нормальный маршрут по точкам - хочу с этим разобраться.
Использую OpenStreetMap (https://www.openstreetmap.org/), так как предоставляет бесплатное API.
#проект
День 21
Задание:
1. Добавить утилиту: для заданной id машинки, которая генерит её трек в реальном времени (дописывает точки в базу например раз в 10 секунд), похожий на настоящий. Можно какие-нибудь сплайны задействовать. Задаются также длина трека в километрах, максимальные скорость и ускорение и шаг точек с разбросом.
2. Треки желательно к улицам привязывать, в карточных API есть роутинг. Есть например GraphHopper Directions API - строит случайный маршрут по автодороге.
3. Попробуйте добавить генерацию с роутингом.
Ход проекта:
1. Сделал утилиту, которая на вход принимает флагами нужные параметры и каждые 10 секунд записывает точки трека в БД. Использую роутинг GraphHopper'а, который генерирует трек, получая 2 или более точек. Если есть флаг step (шаг точек), то генерируется несколько точек в зависимости от заданной длины трека, по которым затем строится роутинг с привязкой к улицам.
2. Сохраняю непосредственно поездку.
#проект
Задание:
1. Добавить утилиту: для заданной id машинки, которая генерит её трек в реальном времени (дописывает точки в базу например раз в 10 секунд), похожий на настоящий. Можно какие-нибудь сплайны задействовать. Задаются также длина трека в километрах, максимальные скорость и ускорение и шаг точек с разбросом.
2. Треки желательно к улицам привязывать, в карточных API есть роутинг. Есть например GraphHopper Directions API - строит случайный маршрут по автодороге.
3. Попробуйте добавить генерацию с роутингом.
Ход проекта:
1. Сделал утилиту, которая на вход принимает флагами нужные параметры и каждые 10 секунд записывает точки трека в БД. Использую роутинг GraphHopper'а, который генерирует трек, получая 2 или более точек. Если есть флаг step (шаг точек), то генерируется несколько точек в зависимости от заданной длины трека, по которым затем строится роутинг с привязкой к улицам.
2. Сохраняю непосредственно поездку.
#проект
День 22
Задание:
1. Добавьте модель Отчёт, которая содержит поля - название, период и пр.
2. От него наследуйте конкретный отчёт "Пробег автомобиля за период" (тип отчёта). Период и даты задаются, а в результате показываются пробеги в км. Если период - сутки, то раскладка пробега по дням, если месяц - по месяцам, и т. д.
3. Добавьте в интерфейсе для менеджера раздел "Отчёты", где доступен список отчётов и календарь с возможностью выбора дат.
4. Для получения отчёта сделайте API, где запрашивается отчёт с id автомобиля, нужным типом, датами и периодом.
Ход проекта:
1. Добавил модель "Отчет". В Go нет наследования, но есть композиция - завел структуру "Пробег автомобиля за период", в которую вложил кроме Id и Пробега непосредственно сам "Отчет".
2. Для менеджера сделал дополнительную кнопку на экране всех предприятий.
3. По кнопке он получает доступ к конфигуратору отчета с календарем. Выбирает нужный автомобиль из доступных. Когда все значения выбраны, можно сформировать отчет.
#проект
Задание:
1. Добавьте модель Отчёт, которая содержит поля - название, период и пр.
2. От него наследуйте конкретный отчёт "Пробег автомобиля за период" (тип отчёта). Период и даты задаются, а в результате показываются пробеги в км. Если период - сутки, то раскладка пробега по дням, если месяц - по месяцам, и т. д.
3. Добавьте в интерфейсе для менеджера раздел "Отчёты", где доступен список отчётов и календарь с возможностью выбора дат.
4. Для получения отчёта сделайте API, где запрашивается отчёт с id автомобиля, нужным типом, датами и периодом.
Ход проекта:
1. Добавил модель "Отчет". В Go нет наследования, но есть композиция - завел структуру "Пробег автомобиля за период", в которую вложил кроме Id и Пробега непосредственно сам "Отчет".
2. Для менеджера сделал дополнительную кнопку на экране всех предприятий.
3. По кнопке он получает доступ к конфигуратору отчета с календарем. Выбирает нужный автомобиль из доступных. Когда все значения выбраны, можно сформировать отчет.
#проект
Июль 2023:
✅ Продолжаю разрабатывать "дипломный проект" писал о нем выше. Текущий прогресс: 23/25
✅ Завершил второй курс по парадигмам программирования (на подходе курс по ФП!)
✅ Реализовал MVP для стартапа, который организует отправку данных на сервер, как просто json, так и multipart/form-data.
✅ В ходе реализации "дипломного проекта" и общением с ChatGPT сильно продвинулся в понимании JavaScript'а, а также в упаковке и развертывании приложения с помощью Docker'а
// так как не нашел времени на достижение данных целей даже повторно, то они не так важны для меня, а значит - убираются из списка:
❌ Закончить курс по JS (повторно)
❌ Закончить освоение веб-фреймворка Gin (повторно)
—
Планы на август:
🔖 Приступить к изучению одной из N купленных в июне книг (повторно)
🔖 Приступить к третьему курсу по парадигмам программирования (функциональное программирование)
🔖 Завершить дипломный проект (осталось 2 задания) и выложить все на гитхаб (повторно)
🔖 Выстроить регулярное взаимодействие с ментором и выполнить первое задание про балансировщик нагрузки (повторно)
🔖 Заполнить матрицу компетенций (внутренний авитовский инструмент), чтобы понимать чего мне не хватает, чтобы развиваться карьерно: E3->E4 (и дальше в сторону senior)
#результаты
✅ Продолжаю разрабатывать "дипломный проект" писал о нем выше. Текущий прогресс: 23/25
✅ Завершил второй курс по парадигмам программирования (на подходе курс по ФП!)
✅ Реализовал MVP для стартапа, который организует отправку данных на сервер, как просто json, так и multipart/form-data.
✅ В ходе реализации "дипломного проекта" и общением с ChatGPT сильно продвинулся в понимании JavaScript'а, а также в упаковке и развертывании приложения с помощью Docker'а
// так как не нашел времени на достижение данных целей даже повторно, то они не так важны для меня, а значит - убираются из списка:
❌ Закончить курс по JS (повторно)
❌ Закончить освоение веб-фреймворка Gin (повторно)
—
Планы на август:
🔖 Приступить к изучению одной из N купленных в июне книг (повторно)
🔖 Приступить к третьему курсу по парадигмам программирования (функциональное программирование)
🔖 Завершить дипломный проект (осталось 2 задания) и выложить все на гитхаб (повторно)
🔖 Выстроить регулярное взаимодействие с ментором и выполнить первое задание про балансировщик нагрузки (повторно)
🔖 Заполнить матрицу компетенций (внутренний авитовский инструмент), чтобы понимать чего мне не хватает, чтобы развиваться карьерно: E3->E4 (и дальше в сторону senior)
#результаты
Telegram
time2code
Начал делать "дипломный" проект в ВШПСБ. Он идет бонусом к основному курсу, который прохожу по декларативной модели, и состоит из 25 заданий (основные боли в бэкенд разработке). Тема: автопарк, регистрация и учет автомобилей.
Проект нужно успеть выполнить…
Проект нужно успеть выполнить…
День 23
Задание:
Сгенерируйте побольше данных, несколько тысяч треков на десяток машин в течение пары лет например,
и упакуйте всю вашу систему с демо-данными в докер, чтобы её можно было быстро стартануть и показать, как она работает вживую.
Можно Docker compose с несколькими контейнерами, чтобы не в одном всё поднимать.
Ход проекта:
1. Создал файл - Dockerfile, который упаковывает в контейнер мое приложение.
2. Создал файл - docker-compose, который позволяет управлять запуском сразу нескольких контейнеров: с приложением и с БД.
3. Создал файл - Makefile, который описывает необходимые для разворачивания команды.
4. 3 файла в совокупности позволяют упаковать разработанное приложение и развернуть, используя docker-compose. При этом контейнер с БД идет первым и пока не будет развернут, не запускается второй с приложением (делаю healthcheck в docker-compose файле).
5. При первом запуске приложение запускает внутренний скрипт на генерацию треков.
#проект
Задание:
Сгенерируйте побольше данных, несколько тысяч треков на десяток машин в течение пары лет например,
и упакуйте всю вашу систему с демо-данными в докер, чтобы её можно было быстро стартануть и показать, как она работает вживую.
Можно Docker compose с несколькими контейнерами, чтобы не в одном всё поднимать.
Ход проекта:
1. Создал файл - Dockerfile, который упаковывает в контейнер мое приложение.
2. Создал файл - docker-compose, который позволяет управлять запуском сразу нескольких контейнеров: с приложением и с БД.
3. Создал файл - Makefile, который описывает необходимые для разворачивания команды.
4. 3 файла в совокупности позволяют упаковать разработанное приложение и развернуть, используя docker-compose. При этом контейнер с БД идет первым и пока не будет развернут, не запускается второй с приложением (делаю healthcheck в docker-compose файле).
5. При первом запуске приложение запускает внутренний скрипт на генерацию треков.
#проект
День 24
Задание:
Сделать для наглядности, например, отчёт или что-то подобное, чтобы показывать на карте все треки по предприятию за сутки.
Ход проекта:
Попытался реализовать отчет по поездкам, чтобы они все на карте отображались, но знания JavaScript'а пока только на это хватило:
- добавил кнопку Daily Report, по которой менеджер видит одновременно все поездки за период (к сожалению, маркеры поисчезали, так и не получилось их красиво рисовать)
На будущее:
Изучить JS на уровне, на котором будет несложно красиво дооформить данную работу. И, конечно же, дооформить, чтобы проект выглядел красиво и его было не стыдно показать.
#проект
Задание:
Сделать для наглядности, например, отчёт или что-то подобное, чтобы показывать на карте все треки по предприятию за сутки.
Ход проекта:
Попытался реализовать отчет по поездкам, чтобы они все на карте отображались, но знания JavaScript'а пока только на это хватило:
- добавил кнопку Daily Report, по которой менеджер видит одновременно все поездки за период (к сожалению, маркеры поисчезали, так и не получилось их красиво рисовать)
На будущее:
Изучить JS на уровне, на котором будет несложно красиво дооформить данную работу. И, конечно же, дооформить, чтобы проект выглядел красиво и его было не стыдно показать.
#проект
День 25
Задание:
1. Зарегистрируйте телеграм-бота и отладьте его, чтобы он просто работал: отвечал эхом на введённую строку например.
2. Затем добавьте команду, например, /login, где задаётся логин-пароль (для менеджеров), после чего бот авторизует его и помнит, что такой-то юзер есть в системе.
3. Сделайте команды выдачи сводок (пробег) по конкретной машинке/предприятию за сутки и за месяц (как-то даты надо задавать, можно обычным текстовым форматом).
Ход проекта:
1. Зарегистрировал бота через BotFather
2. С помощью ChatGPT быстро накидал каркас отправки сообщения и его обработки
3. Добавил примитивную авторизацию, которая хранит логин-пароль в памяти во время работы бота
4. Добавил метод получения отчета - пришлось в приложение car-park добавить соответствующий ендпоинт (API) для взаимодействия с ботом
Улучшить:
Конечно, сейчас есть немало захардкоженных моментов в коде, которые стоит улучшить, но так как времени ни на что не хватает, то получился MVP, который можно улучшить в будущем.
#проект
Задание:
1. Зарегистрируйте телеграм-бота и отладьте его, чтобы он просто работал: отвечал эхом на введённую строку например.
2. Затем добавьте команду, например, /login, где задаётся логин-пароль (для менеджеров), после чего бот авторизует его и помнит, что такой-то юзер есть в системе.
3. Сделайте команды выдачи сводок (пробег) по конкретной машинке/предприятию за сутки и за месяц (как-то даты надо задавать, можно обычным текстовым форматом).
Ход проекта:
1. Зарегистрировал бота через BotFather
2. С помощью ChatGPT быстро накидал каркас отправки сообщения и его обработки
3. Добавил примитивную авторизацию, которая хранит логин-пароль в памяти во время работы бота
4. Добавил метод получения отчета - пришлось в приложение car-park добавить соответствующий ендпоинт (API) для взаимодействия с ботом
Улучшить:
Конечно, сейчас есть немало захардкоженных моментов в коде, которые стоит улучшить, но так как времени ни на что не хватает, то получился MVP, который можно улучшить в будущем.
#проект
Новиков > путь в Big Tech
Начал делать "дипломный" проект в ВШПСБ. Он идет бонусом к основному курсу, который прохожу по декларативной модели, и состоит из 25 заданий (основные боли в бэкенд разработке). Тема: автопарк, регистрация и учет автомобилей. Проект нужно успеть выполнить…
Завершил проект автопарка!
Разработка заняла ровно 3 месяца. Следует оговориться, что я не занимался этим каждый день, а совершал набеги каждые 2-3 дня продолжительностью несколько часов.
Очевидно, что у проекта есть недостатки и некоторые фичи сейчас там захардкожены для скорости разработки. Самое главное, что у меня есть понимание того что можно улучшить и как это правильно сделать.
Какой положительный эффект от реализации данного проекта я получил:
1. Осознал, насколько важно продумывать и документировать архитектуру до начала реализации проекта
2. В проекте нужно было работать с множеством ендпоинтов (их организации и роутинг) - сейчас у меня гораздо больше понимания как при работе с ними организовывать более чистый и поддерживаемый код
3. Значительно улучшил свои знания в JavaScript (+bootstrap), так как пришлось работать с OpenStreetMap и другими API
4. Наконец, решился пощупать chatGPT, который стал отличным консультантом в ходе реализации проекта
5. Научился работать с веб-фреймворком Gin
6. Улучшил навыки по работе с PostgreSQL и проектированию БД
7. Улучшил свою экспертизу в разработке веб-приложений: поддержка CSRF, запрос с авторизацией через CURL
8. Получил знания в области геотрекинга: увидел как это работает изнутри, какие вызовы обычно возникают и как с ними справляться
9. Попрактиковался в решении проблемы хранения и презентации данных в разных временных зонах (важная тема, нужно постоянно про это помнить)
10. Освоил контейнеризацию до уровня "Готов запаковать свой проект в Docker и написать Makefile вместе с docker-compose для удобного разворачивания своего приложения"
Проект планирую улучшать в свободное время, так как очень интересно создавать продукт с полного нуля. Часто, работая в IT-компании, программист занимается разработкой новых фичей и поддержкой старых, а создание чего-то нового - это прерогатива стартапов или избранных разработчиков в крупных компаниях. Поэтому, если вы раньше не разрабатывали ничего с нуля, то очень важно улучшать свою экспертизу в этом направлении, чтобы быть сильным специалистом, способным поставлять как новые фичи в существующий проект, так и писать проект с нуля.
Разработка заняла ровно 3 месяца. Следует оговориться, что я не занимался этим каждый день, а совершал набеги каждые 2-3 дня продолжительностью несколько часов.
Очевидно, что у проекта есть недостатки и некоторые фичи сейчас там захардкожены для скорости разработки. Самое главное, что у меня есть понимание того что можно улучшить и как это правильно сделать.
Какой положительный эффект от реализации данного проекта я получил:
1. Осознал, насколько важно продумывать и документировать архитектуру до начала реализации проекта
2. В проекте нужно было работать с множеством ендпоинтов (их организации и роутинг) - сейчас у меня гораздо больше понимания как при работе с ними организовывать более чистый и поддерживаемый код
3. Значительно улучшил свои знания в JavaScript (+bootstrap), так как пришлось работать с OpenStreetMap и другими API
4. Наконец, решился пощупать chatGPT, который стал отличным консультантом в ходе реализации проекта
5. Научился работать с веб-фреймворком Gin
6. Улучшил навыки по работе с PostgreSQL и проектированию БД
7. Улучшил свою экспертизу в разработке веб-приложений: поддержка CSRF, запрос с авторизацией через CURL
8. Получил знания в области геотрекинга: увидел как это работает изнутри, какие вызовы обычно возникают и как с ними справляться
9. Попрактиковался в решении проблемы хранения и презентации данных в разных временных зонах (важная тема, нужно постоянно про это помнить)
10. Освоил контейнеризацию до уровня "Готов запаковать свой проект в Docker и написать Makefile вместе с docker-compose для удобного разворачивания своего приложения"
Проект планирую улучшать в свободное время, так как очень интересно создавать продукт с полного нуля. Часто, работая в IT-компании, программист занимается разработкой новых фичей и поддержкой старых, а создание чего-то нового - это прерогатива стартапов или избранных разработчиков в крупных компаниях. Поэтому, если вы раньше не разрабатывали ничего с нуля, то очень важно улучшать свою экспертизу в этом направлении, чтобы быть сильным специалистом, способным поставлять как новые фичи в существующий проект, так и писать проект с нуля.
❤1
Август 2023:
✅ Закончил "дипломный проект" (см. пред. пост)
✅ Приступил к третьему курсу по парадигмам программирования (императивное программирование, а не ФП - как я раньше думал)
✅ Прочитал несколько глав из книги по Компьютерным сетям (по заданию от ментора)
✅ С ментором +- наладили регулярное взаимодействие: встречаемся 1 раз в 1-2 недели (сдал ему задание про балансировщик нагрузки и получил хороший фидбек)
✅ Заполнил матрицу компетенций, которая необходима для движения по карьерной лестнице, обсудил с тим-лидом, начинаю работать над слабыми местами (к счастью, их не очень много)
✅ Научился работать с beanstalkd очередями и добавил их поддержку в разрабатываемый на досуге проект (из функционала: чтение из нескольких очередей, обработка данных и отправка в другие очереди)
—
Планы на сентябрь:
🔖 Принять участие во внутреннем хакатоне с командой и показать достойный результат
🔖 Начать проводить технические собеседования в компании (необходимо для карьерного роста + улучшение собственных софт скиллов)
🔖 Выработать систему, по которой буду читать техническую литературу, делая упор, как на рабочий инструмент - Go, так и на более широкие области компьютерных наук
#результаты
✅ Закончил "дипломный проект" (см. пред. пост)
✅ Приступил к третьему курсу по парадигмам программирования (императивное программирование, а не ФП - как я раньше думал)
✅ Прочитал несколько глав из книги по Компьютерным сетям (по заданию от ментора)
✅ С ментором +- наладили регулярное взаимодействие: встречаемся 1 раз в 1-2 недели (сдал ему задание про балансировщик нагрузки и получил хороший фидбек)
✅ Заполнил матрицу компетенций, которая необходима для движения по карьерной лестнице, обсудил с тим-лидом, начинаю работать над слабыми местами (к счастью, их не очень много)
✅ Научился работать с beanstalkd очередями и добавил их поддержку в разрабатываемый на досуге проект (из функционала: чтение из нескольких очередей, обработка данных и отправка в другие очереди)
—
Планы на сентябрь:
🔖 Принять участие во внутреннем хакатоне с командой и показать достойный результат
🔖 Начать проводить технические собеседования в компании (необходимо для карьерного роста + улучшение собственных софт скиллов)
🔖 Выработать систему, по которой буду читать техническую литературу, делая упор, как на рабочий инструмент - Go, так и на более широкие области компьютерных наук
#результаты