суббота, 22 января 2011 г.

3 простых правила, которые сделают из вас Суперзвезданутого Программиста

Я верен, что вы уже читали пост Джоэля о том, что 1% разработчиков в 10 раз продуктивней всех остальных; про разработчиков-суперзвезд; тех, только которых и стоит нанимать. Вы знаете, что вы умеете программировать, что вы умный и талантливый, но – этого недостаточно. Вы хотите быть в 10 раз продуктивней, чем все остальные в вашей компании? Вы хотите быть гуру, к которому приходят все, когда у них возникает проблема; гуру, которому достаточно лишь мельком взглянуть на проблему и лишь взмахнуть пальцем, чтобы решить ее?

И вы можете! Следуйте следующим 3-м простым правилам, и в течение 12 месяцев все это и многое другое будет вашим.

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

Правило 2: Пишите код быстро. Затроньте наибольшее количество файлов, и не забудьте включить каждый из них в ChangeLog. Не беспокойтесь о случайном создании трудно находимых ошибок; они помогут вам в будущем, потому что их, на самом деле, трудно найти. Избегайте создания тривиальных ошибок.

Правило 3: Не тратьте время для документирование кода, или добавления небольших комментариев, объясняющих потенциальные ловушки, связанные с изменением нечетких участков кода. Вам это не нужно – вы пишете код.

Усердно следуйте этим трем правилам – и вы станете суперзвездой вашей команды в течение 12 месяцев. Выпишете их и приклейте на видном месте. Только не в офисе! А где-нибудь в скрытом от посторонних глаз месте. И повторяйте их каждый день, перед началом работы. Они могут показаться вам спорными, но поверьте мне, все это имеет очень глубокий смысл.

Вы задаете вопрос: откуда я знаю, что это работает? – Потому что я сделал это сам, и потому, что я видел, как это делают другие. Конечно, я не понимал, что придерживался Трех правил – в то время, я был молодым и наивным и думал, что я просто пытаюсь сделать все возможное для проекта. И только теперь, спустя много лет, опираться на мудрость и опыт, я могу вот так просто поделиться ими с вами.

Система 3-х Великих Правил Программирования основана на Двух Фундаментальных Принципах: техническом и социальном.

Технический принцип: Вы работаете в 10 раз продуктивней над вашим кодом, по сравнению с тем кодом, который писали не вы.

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

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

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

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

Система 3-х правил – это безупречная стратегия для достижения этой цели.

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

Соблюдая правилам 2 и 3, вы увеличиваете вашу долю захвата, избегая наиболее трудоемких частей написания хорошего кода. Это жизненно важно, чтобы вы контролировали больше кода, чем остальные участники команды вместе взятые.

Кроме того, есть и социальные выгоды работы подобным образом:

Выгода 1: все увидят, как быстро вы пишите огромные куски кода и начнут уважать вас – особенно ваш босс, который не имеет другого критерия, чем оценивать вас по частоте и объему вносимых изменений.

Выгода 2: Хоть вы и вносите множество новых ошибок, все равно пройдут еще несколько месяцев, перед тем как они вылезут, а к тому времени вы уже приобретете репутацию программиста-эксперта. И даже сейчас Вы можете получить выгоду от всех этих багов во второй раз, ведь вы же можете исправить эти проблемы быстрее, чем кто-либо другой. Ваши коллеги будут затрачивать в 10 раз больше времени, по сравнению с вами, для отслеживания каждой из этих проблем. Все чаще они будут приходить к вам за советом или помощью, потому что именно вы написали этот кусок кода. Будьте дружелюбным, скромным, помогайте с удовольствием. Вы определите место ошибки очень быстро. Ваша репутация великого Гуру будет расти день ото дня.

Относитесь к этому процессу, как будто это игра в стратегию реального времени. Карта мира – это код вашего проекта. Участки кода, которыми владеете вы – это ваши ресурсы, а чужой код – производит ресурсы другим. Но, главный ваш ресурс – это ваша десятикратная эффективность, так как вы в 10 раз продуктивней при работе, как с вашим собственным кодом, так и с чужим. Ваша десятикратная продуктивность улучшает вашу репутацию, которая является валютой в Игре.

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

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

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

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

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

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

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

Теперь вы – суперзвезда команды. Это завершение вашей игры.

Вы выиграли!

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

Постскриптум для руководителей проектов: Если ваша обстановка соответствует Двум Фундаментальным Принципам, то ваши программисты будут играть в Игру, и ваш проект будет страдать. Меняйте правила. Убедитесь в том, что программисты признают и хорошо играют кодом друг с друга, для успешной работы небольших групп, которые решают большие проблемы. Переписывание кода, из-за появления ошибок приводят к появлению новых ошибок, из-за которых код будет опять переписан. И я не знаю хорошего способа избавиться от этого. И если вы знаете, то, пожалуйста, ради всех проектов во всем мире, оставьте комментарий!



Англ. оригинал:3 Simple Rules That Will Make You a ‘Superstar’ Developer
Автор оригинала: Mark O’Connor
Перевод: Дмитрий Жарий

0 коммент.:

Отправить комментарий

 

.NET ate my MOSK;. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc