August 19, 2010

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 — это защита. Затрудняйте другим людям работать с вашим кодом или исправить в нем ошибки. За каждый час, который они тратят на исправление ошибок вы инвестируете час на создание свежего кода или переписывания существующего чужого, тем самым расширяя границы вашего влияния.

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

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

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

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

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

http://habrahabr.ru/blogs/arbeit/82586/

Posted by admin
August 18, 2010

Вы прирождённый программист, если:

- Если Вы представляете свою жену как www.mуlаdу.hоmе.wifе.

- Если Ваши домашние вызывают Вас на обед по электронной почте.

- Если Вы хотите новый модем на Новый Год.

- Если Вы воспринимаете пакет апельсинового сока как ZIР-файл кучки апельсинов.

- Если все Ваши шутки получены через электронную почту.

- Если в Ваших наручных часах стоит процессор классом не ниже Реntium III.

- Если Вы с нетерпением ожидаете Рождества, чтобы вволю наиграться новыми играми, подаренными Вашим детям.

- Если Ваш идеальный отдых - в ускоренном режиме просмотреть новый фильмец, чтобы найти в нём кучу технических ошибок.

- Если Вы регулярно запускаете часовую программу для проверки результатов теста, занимающего пять минут.

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

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

- Если Ваш консервный нож, переделанный Вами, имеет не менее 16 Мб оперативной памяти.

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

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

- Если Вы своими электрическими опытами хотя бы раз поджигали школу.

- Если на Вашей любимой футболке написано "WINDОWS МUSТ DIЕ!".

- Если Вы частенько носите в кульке свой жёсткий диск.

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

- Если Вы знаете, что Чужие живут среди нас.

- Если Вы всегда сохраняете шнуры питания от выброшенных электробытовых приборов.

- Если на Вашем жёстком диске где-то потерялась библиотека драйверов.

- Если Вы меняете свои пароли чаще, чем компьютеры.

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

- Если Ваш IQ больше Вашего веса.

- Если Вы легко запоминаете до восьми сетевых адресов - но не день рождения жены.

- Если Вы набираете текст со скоростью свыше 70 слов в минуту - но часто не можете разобрать собственный почерк.

- Если люди стонут, когда Вы ставите свою любимую музыку.

- Если на Ваших наручных часах кнопок больше, чем на Вашем телефоне.

- Если в Интернете друзей у Вас гораздо больше, чем в реальной жизни.

- Если Вы уверены, что настоящие герои фильма "Аполло-13" - это те, кто управляли полётом, сидя в Центре управления полётами.

- Если Вы думаете, что люди могут зевать только потому, что не выспались.

- Если на вопрос трёхлетнего малыша "Почему небо синее?" Вы начинаете бормотать что-то о Билле Гейтсе.

- Если Ваш компьютер вместе с периферией стоит чуть-чуть дороже "Жигулей".

- Если Ваш дневной рацион состоит всего из четырёх наименований - кофеин, сахар, пиво и чипсы.

Posted by admin
August 17, 2010

Шутки про программистов-2

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

Настоящие программисты не готовят сами. Они питаются в закусочных и забегаловках.

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

Настоящие программисты никогда не работают с 9 до 5. Если какой-нибудь настоящий программист в девять часов утра на работе, это значит, что он провел на работе всю ночь.

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

Настоящие программисты знают лучше пользователя, что ему нужно.

Настоящие программисты не тестируют программы. Тестирование для людей со слабыми нервами и к тому же не уверенных в себе.

Posted by admin


Page 1 of 5312345»...Last »
  • Индия – бомбей
  • Как заработать в интернете, занимаясь любимым делом
  • Автоматизация рутинной работы в браузере
  • Выпущен инструмент преобразования мобильных Java-приложений в Android-программы
  • Программисты. деньги. вирусный маркетинг