Скидки до 20% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Дневник студента

Python: Второй проект. Мысли и впечатления.

Время чтения статьи ~2 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Python: Второй проект. Мысли и впечатления. главное изображение

Проект - крут! Было сложно. Иногда очень сложно. Порой был ступор на 3-4 дня, когда не знал как подступиться к задаче. При этом принципиально было найти решение самостоятельно, не подсматривая аналогичные решения где либо еще. (Однажды я подсмотрел решение учителя в одной из практик, и потом очень долго себя корил за это). В противном случае, это сильно бы подкосило уверенность в своих силах - значит я "не смог". В реальной работе, наверно, так делать не стоит - нужно будет советоваться и искать помощи со стороны, чтобы не срывать сроки. Второй проект по срокам я итак очень сильно затянул, даже с учетом поправки на новогодние праздники.Наверно, я могу это назвать своей "маленькой победой". Уж чего я точно не ожидал - так это, что проект сдам со второй попытки. Когда сдавал в первый раз, думал, что придется переделывать почти всю логику построения диффа. Мне казалось, что она не очень качественно сделана. И я был удивлен, что основная часть замечаний была не про самой логике формирования диффа, а различные "шероховатости" в типа функций в виде констант, опечаток а-ля "tAmplate", строках в услових etc. Многие из этих вещей остались без должного внимания, потому что весь фокус был на вот этих всех рекурсиях и "ифах".Когда отправлял проект на повторную проверку уже была некоторая надежда, на "вдруг прокатит" ))

Проект дал многое. Когда то в ВУЗе мы немного учили С. С тех пор некоторые базовые вещи из программирования типа переменных, циклов и рекурсии в памяти отложились достаточно хорошо. Булева алгебра и теория множеств немножко тоже. На теоретические вопросы, вероятно, я сейчас не смог бы ответить хорошо. Но понимание, чем отличается пересечение множеств от разницы множеств есть. Это то, что помогло в этом проекте. Но есть штуки, которые для меня новы и которые еще не отложилсь в голове как само разумеющиеся вещи. Например то, что функции можно возвращать из функций так же, как переменные, массивы и т.д. Я не знаю, можно ли так было в С. Для меня всегда существовали данные отдельно, функции отдельно. В некоторых случаях это прямо "вау"-эффект на меня производило. "А так можно было?" :) С этим нужно еще свыкнуться, чтобы это новое знание вытеснило старое.

Второй момент (на самом деле - первый по важности!) - это ТЕСТЫ! Это реально круто. Да, вначале нужно потратить некоторое время на их написание. Частенько нужно было фикстуры "подшлифовать" (там пробел лишний, там запятую забыл). Добиться сначала, чтобы тесты падали с AssertionError. Зато потом!! Рефакторинг при тестах становится ну просто сильно проще! Это реально открытие для меня.

И третий пункт (как следствие второго) - нужно помнить про "corner cases". Совершенно случайно перед сдачей проекта я решил запустить программу на своих собственных тестовых данных и тесты попадали. В JSON встречался 0 в значениях , который трактовался программой как False. Тогда же я выявил и проблему с null и булевыми значениями в JSON. Пришлось переписывать и дописывать код.

Ну и последнее - этот проект очень близок к тому пет-проекту, который я держу в голове в котором также нужно будет отбирать данные из различных форматов (прайсы в XML, CSV, GoogleSheets) в единый файл и отслеживать изменение исходных данных с заданой периодичностью. В этом ключе второй проект Хекслета прямо вот точно доктор прописал!

И да, это было круто! Спасибо.

Аватар пользователя Artem Stepanenko
Artem Stepanenko 03 февраля 2020
9
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря