strftime

strftime

Kirill Zvonov


Здравствуй, меня зовут Кирилл, и это отчет по проекту с Иваном Немытченко.

Что за проект?

Мой проект - strftime - это небольшое web приложение, которое подбирает формат по примеру даты.

Представим, что вам нужно вывести дату типа "20 Jan 2018 22:04", и скорее всего для этого придется заглянуть в доку. Да, это не сложно, но скучно, и иногда приходится делать это несколько раз в день. Strftime же подберет формат и сделает еще пару полезных мелочей. В крайнем случае там есть ссылки на доку)

Постановка задачи

Я созвонился с Иваном, и мы обговорили основные моменты, а именно: что должно получиться, какие фичи должны быть, с чего стоит начать, формат работы.

Было решено:

1 ) Провести небольшое исследование, поискать другие решения, посмотреть стандарт ISO-8601(стандарт представления даты и времени).

2) Приложение должно быть только на клиенте, возможно vuejs, возможно чистый js.

3) Работать каждый день, максимум можно пропускать 1 день. В день тратить примерно 2 часа на проект.

4) Две недели на весь проект.

Исследования

Первые пару дней я занимался исследованиями, немного изучил стандарт ISO-8601, и как с ним работают языки. Нашел несколько web приложений(http://strftime.net , http://strftimer.com , http://www.strfti.me/), которые решают мою задачу, что не очень хорошо, cмысл продолжать пропал.

Иван предложил два варианта.

1) поменять проект;

2) оставить проект, но добавить некоторые фичи.

Выбрал второе.

Первая неделя

Поразмыслив, я решил, что стоит начать со своего алгоритма подбора. Потратил на него примерно неделю. Особо ничего не добился. Почему? Времени оказалось недостаточно на такую задачу. Никогда не решал ничего подобного.

Иногда переключаясь на верстку, познакомился с Tachyons. По началу он как-то не зашел, но потом очень вкатило) Его можно использовать компонентами и это оочень круто, а еще, насколько я понял, Tachyons использует подход atomic css, ну или как-то так, короче, можно верстать, не открывая файл стилей, а просто добавляя классы.

Так прошла первая неделя.

Вторая неделя

Я стал думать о том, что с алгоритмом точно не успею, а если успею, то он не будет работать так хорошо, как хотелось бы, и я никак не смогу закончить другие фичи.

Появилось решение. Отбрасываю свой алгоритм и поднимаю rails приложение, которое будет дергать библиотеку на python. Иван одобрил и посоветовал написать четкий план на три дня, что я и сделал. Забыл сказать, в силу некоторых обстоятельств несколько дней было потеряно, и у меня осталось 3 дня. Также понял, что две недели - это ошибка, стоило взять одну. Ощущение, что у тебя полно времени, очень расслабляет.

3 дня

Первый день. Поднял рельсовое приложения. Набросал сервис, который дергает библиотеку на python. Поднял все это на digital ocean.

Второй день. На сегодня было запланировано несколько фич, но сначала нужно заняться окружением для моего vuejs приложения, повозился с rails-webpacker, но быстро настроить его не получилось. Вспомнил, что есть vuejs-rails, этот gem меня спас. Кстати в laravel есть что-то типа rails-webpacker, начинать работать с ним гораздо проще.

Третий день. Допилил фичи, кайфовал.

Итог: для этого проекта мне понадобилось 3 дня, а не 2 недели. С самого начала стоило сделать минимально работающий проект, а потом уже пилить свой алгоритм.

Формально Успех

Я все успел, но лишь формально, оставалось еще много работы. Нужно было все отшлифовать, возможно пересмотреть смысл или дополнить некоторые фичи.

Еще одна неделя

Иван сформировал требования, а я раскидал их по задачам.

Коротко о том, что нужно было сделать. Посмотреть, как у python, ruby, php обстоят дела со стандартом ISO-8601. Расположить основные элементы компактнее. Выделить форму для даты, относительно других элементов. Переделать историю, из истории данных сделать историю форматов, пояснения далее. История данных - это о том, что вводит пользователь и что он получает. История форматов - это о форматах, которые получил пользователь, а потом уже о данных, которые он ввел. Добавить блок избранное, он фомируется пользователем из его истории.

Приступил к задачам. Каждый день ковырялся в коде, получилось даже что-то отрефакторить, но двигалось все медленно. Поговорив с Иваном, решили, что я буду делать демо в конце каждого дня и обозначили границу по времени. Пошло живее, закончил в срок.

Итого

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

Report Page