Личность программиста

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

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

Но ведь программы пишут люди, такие же, как мы с вами. Одни становятся выдающимися программистами и достигают больших успехов, другие же забрасывают профессию. Перефразируя классика, можно сказать: «покажи мне свой код, и я скажу, кто ты». Исследования показывают, что лучшие программисты создают программы в 10 раз быстрее, чем их менее квалифицированные коллеги. Время, уходящее на отладку кода, а также объем и быстродействие итоговой программы, уровень ошибок и число обнаруженных ошибок также различаются примерно в 10 раз.

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

Интеллект и скромность

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

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

Любопытство

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

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

 

Профессиональная честность

«Любой дурак способен отстаивать свои ошибки — большинство дураков именно так и делают.»
Дейл Карнеги

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

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

 

Общение и сотрудничество

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

Творчество и дисциплина

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

Лень

Лень может проявляться несколькими способами:

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

Первое проявление лени едва ли когда-нибудь будет выгодным.
Вы сможете избавиться от первого типа лени, если выработаете привычку выполнять эти
задачи сразу. Эта привычка соответствует второму типу лени — «просвещенному». Вы все так же ленитесь, но решаете неприятные проблемы, тратя на них как можно меньше времени. Третий вариант лени предполагает написание инструмента для выполнения неприятной задачи. Это «долговременная лень». Несомненно, это самый продуктивный вид лени (если, конечно, инструмент позволяет в итоге сэкономить время). В этом контексте определенная лень даже выгодна.

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

Свойства, которые менее важны, чем кажется

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

  • настойчивость, если ее понимать как ослиное упрямство;
  • опыт, при современной динамике развития отрасли (пример — приверженность старым подходам и технологиям);
  • страсть к программированию — работая по 16 часов в день, вы может попросту сгореть, либо наделать ошибок, которые потом придется исправлять в несколько раз дольше, чем «выигранное время».

 

Привычки

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

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

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

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

Резюме

 

  • Способность к написанию программ напрямую зависит от личного характера.
  • Важнейшие качества программиста — скромность, любопытство, профессиональная честность, творчество и дисциплина, а также «просвещенная» лень.
  • Чтобы стать отличным программистом, можно не обладать особым талантом, но необходимо постоянно стремиться к самосовершенствованию.
  • Удивительно, но интеллект, опыт и настойчивость вредят программистам не
    меньше, чем помогают.
  • Многие программисты не ведут активного поиска новых сведений и методик, а полагаются на случайные столкновения с новой информацией на работе. Если вы посвятите небольшую долю своего времени чтению книг и изучению программирования, через несколько месяцев вы будете намного превосходить почти всех своих коллег.
  • Хороший характер во многом — продукт правильных привычек. Если хотите стать великолепным программистом, выработайте правильные привычки, а все остальное придет само собой.

Стив Макконнелл

Review Scores

10
  • Важность - 10

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *