Как программисту оценить собственную эффективность?

“Как правило, самый простой подход оказывается самым эффективным” Д. Трамп.
Сейчас работаю над интернет-магазином. Раньше у них был сайт на Битриксе, но видимо надоело им засилье кода из начала 2000-х, поэтому решили перейти на Laravel. Нашли меня в качестве фрилансера на этот проект.


Как обычно новые требования появляются постепенно, по мере вхождения во вкус. Если с Битриксом многие вещи просто не видны и невозможно сделать, то при использовании Laravel, как под микроскопом начинают просвечивать вполне такие интересные моменты, которые естественно хочется улучшить, а главное — это возможно сделать без критического усложнения алгоритмов и нагрузки на сервер.


Пример: cначала товары выводились в обычном порядке и одна из сортировок по цене выполняла упорядочение по возрастанию или убыванию.


Затем придумали начислять скидку на товар в зависимости от категории. Например, для категории А – сегодня будет скидка 10% и все товары в ней получают новое обозначение цены. Сверху перечеркнутая старая цена и ниже большим шрифтом цена со скидкой. Сверстали и красиво вывели в списке.


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


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


Ход моих мыслей был таков: если у нас есть таблица для хранения товаров и по одной из колонок идет сортировка, но при этом визуально отображается два значения, то почему бы не сделать дополнительную колонку для хранения вычисляемого значения, а уже по нему будет сортировка, тем более во многих СУБД есть такой функционал.


Чтобы в будущем другим программистам было проще понять, что колонка, по которой идет сортировка, является вычисляемой по триггеру обновления категории, то мы просто называем ее соответствующим образом price_calculated_by_category_trigger. Теперь в самом названии поля мы заложили ключевые слова, по которым можно догадаться о природе этого поля.


Получился рабочий вариант. Причем количество изменений в коде было минимальным.


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


Многие начнут писать про сложное документирование, отладку и прочее. Тут нужно соблюдать баланс, естественно не стоит выгружать всю бизнес-логику в хранимки. Если есть инструмент, то нужно оценить плюсы и минусы.


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


Такое же происходит, когда долго читаешь фантастику или фентези и дико фанатеешь от этих жанров. А затем, вдруг, попадается «Доктор Живаго» или «Сто лет одиночества», после которых внутри происходит что-то такое, что заставляет в книгах искать не только удовольствие от эфемерных фантазий, но еще и настоящие чувства реальной жизни, переживаемые героями, то, как это менять взгляд на мир. Сложно передать словам, но после некоторых книг, словно спадают розовые очки. Мысли теперь уже мало полета на драконе, мысль повзрослела и требует того, что может остаться в памяти, как собственное переживание.


Вывод


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


Ничего сверхъестественного, все укладывается в пару часов чтения документации, внедрения и тестировании, полученного решения.

Лига программистов

1.5K постов11.4K подписчика

Добавить пост

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества