Найти в Дзене
Clean Code

How to Write Good Code Under Pressure.

Оглавление

Как писать хороший код под прессингом

Написание кода очень часто напоминает работу хирурга, который всеми силами пытается спасти человеческую жизнь в условиях острой нехватки времени. Он находится под сильным “прессом”, поскольку дедлайн не подлежит обсуждению.

Каким вы видите хорошего хирурга? Спокойным, сосредоточенным, действующего согласно полученным знаниям и навыкам и отдающим четкие, осмысленные указания своим ассистентам, либо утратившим контроль над ситуацией, потеющим и шепчущим заклинания неадекватным человеком в медицинском халате? Кому из них вы бы доверили свою жизнь?

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

Короче говоря, хороший кодер продолжает делать то, что должен и так, как должен, независимо от количества поставленных задач и времени, оставшегося до дедлайна.

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

Вот несколько способов, которые помогают хорошим программистам справляться со сложными ситуациями.

Не обещайте выполнить те обязательства, которые не брали

У вас, как у программиста, всегда есть два варианта поведения: выполнить задачу и получить лавры победителя, либо не выполнить и получить минус в “карму”.

Если ваши обязательства жестко привязаны к уже согласованным срокам, то на кону ваши слово и репутация. Они слишком долго приобретались, чтобы растрачивать их легкомысленно. Посему задача должна быть выполнена, чего бы вам это ни стоило. Авторитет приобретается именно таким путем.

Поэтому, вы совершенно обоснованно опасаетесь за свою репутацию, когда кто-то берет обязательства, прикрываясь вашим именем.

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

Разница между обязательствами, взятыми вами лично, и обязательствами, возложенными на вас без вашего ведома, слишком велика.

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

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

Если же руководство не принимает вашу точку зрения, обвиняя в непрофессионализме — стоит задуматься о смене работодателя.

Не срезайте углы

Быстро написанный “грязный” код не имеет ничего общего с профессионализмом. Грязный код — плохой код. Никогда не торгуйте качеством и не соглашайтесь на халтуру.

Проверку на профессионализм вы пройдете только во время трудных ситуаций. Если вы измените своим принципам, тогда ваши профессиональные навыки программиста сомнительны. Например, если вы следуете принципам Test Driven Development в обычных ситуациях, но отказываетесь от TDD во время дефицита времени, значит вы не верите в его полезность.

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

Никогда не пренебрегайте мелочами. Всегда выделяйте несколько дополнительных минут, чтобы сделать то, что вы можете сделать и должны сделать. Неважно, что думают об этом другие, важно оставаться верным своим принципам. Помните, что “срезание углов” влияет на качество работы. Если действовать в таком стиле, в конце концов, это навредит вам.

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

Общайтесь, общайтесь и еще раз общайтесь

Общение — это о доверии. Общение напрямую связано с правом коллектива знать о фактическом состоянии дел. Не пытаетесь рассказывать им половину правды. Не пытаетесь скрывать правду. Вы должны относиться к ним как к равноправным партнерам и всегда общаться.

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

И наоборот, практически всегда вы получите плюс в карму, если максимально быстро раскроете информацию, чтобы позволить всем понять и переварить ее, чтобы вовремя принять релевантное решение. Даже если новости плохие — своевременное информирование поможет позволить спланировать контрмеры, чтобы свести ущерб к минимуму.

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

Просить о помощи, когда становится по-настоящему трудно

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

Эффективность парного кодинга основывается на повышенном внимании к качеству кода. Другими словами — это постоянное присутствие проверяющего за спиной. Люди, активно участвующие в парном программировании, менее склонны отвлекаться на внешние раздражители (например, проверку электронной почты, блуждание разума или бессмысленное разглядывание монитора).

Даже выполнение связанных, но второстепенных задач может быть отложено «на потом». Человек за клавиатурой сможет сосредоточиться на написании кода, в то время как его партнер будет отвечать за читаемость кода, его тестирование, надежность и прочее. Парное программирование также помогает вам лучше сфокусироваться на поставленной задаче.

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

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

Как справедливо сказал Букер Т. Вашингтон.

«Если хотите выбраться из трудностей, вначале помогите выбраться кому-нибудь другому.”

Translated: medium