Наслаждаетесь ли вы качеством своего кода?

Просмотров: 2328Комментарии: 0
Дело

Это тезисный перевод увлекательной статьи Do You Enjoy Your Code Quality? из блога RubyLearning Blog.


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


Цель статьи -- помочь улучшить качество вашего кода, вне зависимости от того, новичок вы или профессионал, всегда есть куда развиваться. С улучшением качества кода выше удовольствие от работы несомненно будет возрастать. Для этого существует ряд практичных способов, большинство из которых универсально и применимо к каждому разработчику.


Перед разработкой

  • Соберите у клиента требования и "истории". Истории практичнее, поскольку они более соответствуют образу мысли не-разработчика. Иными словами, "я хочу, чтобы А происходило Б образом, когда я делаю В". Убедитесь, что клиент подготовил к вашей с ним встрече максимально возможное количество информации, особенно о конечном пользователе планируемой системы
  • Подвергайте сомнению каждую "фичу" и уточняйте ее суть спрашивая "зачем?". Обычно требования клиентов основываются на их знаниях и опыте, а вы, возможно, увидите иной путь решения задачи или заметите нестыковки в требованиях.
  • Уточняйте, что необходимо и что желательно, ибо от этого прямо зависит срок разработки и бюджет.
  • Отказывайтесь воспроизводить некачественный софт. Если нужно, отклоняйте требования воспроизводить плохо сконструированную систему, если вам не разрешают сделать ее правильно. Делать иначе невыгодно ни для вас, ни для клиента. Плохой софт можно определить по интерфейсу, скорости, безопасности, стабильности. Пользовались бы им вы сами?
  • Мягко отклоняйте нереалистичные временные требования : "Да, я могу сделать это за 3 месяца, но вы не получите качества, на которое рассчитываете. Мне нужно 5 месяцев". Спросите себя: "хочу ли я работать 17-20 часов в день для того, чтобы уложиться в нереальный дедлайн?"
  • Принимайте минимальную функциональность для первой версии. Важнее иметь стабильный фундамент, чем кучу функций. Остальные отложите на следующие версии.
  • "Можно сделать" не значит "нужно сделать". Все возможно, но не все полезно. Этого принципа нелегко придерживаться, особенно на этапе мозгового штурма.
  • Если вы не знаете ответа на вопросы "зачем эта функция?" и "на что она окажет влияние?", даже не пытайтесь отвечать "как ее сделать?"
  • Контроль версий и бэкапы.
  • Отделите время, непригодное для решения задачи. Например, день, когда вы вынуждены отвлекаться каждые пару минут, не подходит для написания кода.

Разработка

  • Потратьте максимально возможное время на понимание реальной задачи и данных, предоставляемых клиентом, прежде чем написать хоть что-то. Абсолютно необходимо убедиться, что ваше приложение исходно адекватно спроектировано. Не двигайтесь вперед, пока не осознаете, что хорошо понимаете требования. Просите помощи, если нужно.
  • Насколько возможно, не доверяйте пользовательским действиям, особенно вводу данных.
  • Не изобретайте велосипед. Возможно, уже существует и многократно опробован код, решающий ваши задачи.
  • Не внедряйте ничего, пока вы не поймете, в рамках отведенного времени, что именно вы подключаете. Почитайте список багов, просмотрите код, постарайтесь понять, как оно работает. Не выбирайте нечто только потому, что 3 человека рекомендовали это на каком-то форуме. Часто случается, что разработчик быстро внедряет какое-то стороннее открытое приложение, а через пару месяцев всплывает баг, который неизвестно как фиксить.
  • Подключайте другие языки и технологии, если они лучше подходят. Даже если не интегрируете, возможно, они смогут подсказать вам решение проблемы.
  • Не дублируйте в коде то, что лучше сделает база данных. Иными словами, знайте возможности используемых технологий.
  • Насколько возможно, избегайте экспериментальных фич в реальных (не учебных)
  • проектах. Риск может с лихвой перекрывать удовольствие от их использования.
  • Сообщайте необходимое, чтобы держать клиента в курсе дела. Излишняя коммуникация по мелочам будет только раздражать.

После разработки

  • Проверьте код на предмет скорости, стабильности, безопасности и удобства использования.
  • Попросите кого-либо просмотреть ваш код и обсудить его.
  • Подключите к тестированию приложения обычных людей -- будете удивлены, как много "интуитивно понятных" для вас вещей поставят их в тупик.
  • Не бойтесь попросить о помощи.
  • Просматривайте старый код и думайте, что бы вы сделали по-другому. Часто вас будет воодушевлять то, что теперешний код лучше прежнего.

Наслаждайтесь разработкой

  • Подберите условия, в которых вам работается лучше. Потратьте время на персональные настройки, изучение более комфортных условий работы (музыка, свет, время суток и прочее)
  • Настаивайте на использовании инструментов, с которыми вам работается лучше.
  • Давайте себе время подумать и отдохнуть. Вам нужен сон, иногда придется менять темп разработки, если возможно, планируйте перерывы. Постарайтесь осознать, что некоторые дни будут тяжелыми для разработки -- тогда можно изучить что-то новое.
  • Немного прогуляйтесь. Легко заработать "туннельный взгляд" и думать, что еще немного и проблема будет решена. Иногда это верно, однако часто бывает полезнее "отойти от проблемы" и поделать что-нибудь совершенно другое. Вы будете удивлены идеями и решениями, которые "впрыгнут" в ваш ум, когда вы думаете или делаете что-то другое.
  • Ставьте реалистичные сроки. Например, вместо того, чтобы обещать закончить к пятнице, добавьте еще неделю. Никогда не знаешь заранее, какие проблемы всплывут, и чаще вы будете благодарны себе за эту отсрочку.
  • Знайте пределы своих возможностей и подчеркивайте их: "Нет, я не могу и не буду воспроизводить Gmail".
Оставьте комментарий!


Используйте нормальные имена.

     

  

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

MaxSiteAuth. Войти через loginza

(обязательно)