Как стать хорошим программистом

16.05.13

Саморазвитие

В этой статье я приведу несколько рекомендаций, следуя которым можно стать хорошим программистом. Только для начала внесем ясность, что же понимать под "хорошим программистом"? Вообще, скажу сразу, что хороший программист этот не тот, который быстро пишет много кода (горы кода могут быть глючными и запутанными, а программы неудобными для пользователей), и не тот, который всегда пишет задачи строго в соответствии с ТЗ (техническим заданием), так как закодить при грамотной постановке задачи много ума не надо. А хороший программист это тот, кто умеет грамотно ставить задачи, разрабатывать оптимальные алгоритмы и качественно кодировать их. Зачем программисту уметь ставить задачи? А затем, что пользователи не умеют внятно формулировать свои хотелки. Зачастую они просто говорят: напиши: "хорошую программу". И именно такие программисты, которые умеют писать "хорошую программу", как раз наиболее востребованы на рынке труда.

Как стать хорошим программистом.

В этой статье я приведу несколько рекомендаций, следуя которым можно стать хорошим программистом. Только для начала внесем ясность, что же понимать под "хорошим программистом"? Вообще, скажу сразу, что хороший программист этот не тот, который быстро пишем много кода (горы кода могут быть глючными и запутанными, а программы неудобными для пользователей), и не тот, который всегда пишет задачи строго в соответствии с ТЗ (техническим заданием), так как закодить при грамотной постановке задачи много ума не надо. А хороший программист, это тот, кто умеет грамотно ставить задачи, разрабатывать оптимальные алгоритмы и качественно кодировать их. Зачем программисту уметь ставить задачи? А затем, что пользователи не умеют внятно формулировать свои хотелки. Зачастую они просто говорят: напиши: "хорошую программу". И именно такие программисты, которые умеют писать "хорошую программу" как раз наиболее востребованы на рынке труда.

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

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

2. Задавайте вопросы (как? зачем и почему?), когда пишете код. Есть одна черта характера, которая выгодно отличает хорошего программиста от всех остальные - это желание знать, что и как происходит. Для того, что бы быть хорошим программистом, нужно "мучить" код до тех пор, пока досконально не будет понятно, как программа работает, даже если это чужой код и вы внесли в него лишь парочку изменений. Да, если вы работаете в авральном режиме, есть искушение пренебречь этим правилом. Единственный выход - сами устанавливать сроки, закалывая туда время на тщательное изучение кода. Заказчика не устраивают ваши сроки? Жестко стойте на своем, лучше написать качественно, но долго, чем сдать глючный продукт и опозорится. Так что на любые попытки срезать сроки, как заезженная пластинка отвечайте: "Быстрее невозможно. И точка!" И помните, хороший программист без работы не останется по любому.

3. Учите других — учитесь сами Большинство людей обращаются к форумам и различным сообществам только тогда, когда нам нужна помощь. Еще одна вещь, которая отличает хорошего программиста от все остальных: хороший программист чаще заглядывает в такие места, чтобы помочь другим. Такая помощь учит больше, чем помощь, оказанная вам при решении вашей проблемы. Поверьте, после того как вы разберетесь в чужой проблеме и ее контексте, поразмышляете над ней и дадите решение, вы научитесь гораздо большему.
 

4. Пишите простой, понятный, но в то же время логичный код. Как и в других областях, формула KISS (Keep it simple and short — делай короче и проще) работает и в программировании. Пишите простой код и избегайте усложнений. Иногда люди пишут сложный код только для того, чтобы показать, какие они умные. Однако простой код легче отглючивать, сопровождать и вносить в него изменения. К тому же (см. пункт 2) чем проще код, тем проще понять, как он работает.

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

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

7. Не пугайтесь быстрой смены технологий. Каждый день появляются новые инструменты, API, библиотеки, фреймворки, призванные сделать разработку быстрой и простой. И эта тенденция не снизится. Однако следует понять одну вещь: фундаментальные знания и основы меняются значительно медленнее, чем фреймворки, новые инструменты и API. Можно провести аналогию с морем, на поверхности которого находятся быстрые течения, однако на глубине вода спокойна и она составляет большую часть объема. Поэтому держитесь «на глубине», поближе к основам. Иными словами, языки программирования сменяют друг друга, но основные понятия, такие как алгоритм, ООП и прочее остаються практически неизменными. Устарел Delphi, на смену ему пришел C# - изменился только язык, но концепция ООП осталась прежней. Усталела 1С:БУхгалетрия 7.7, на смену ей пришла восьмерка. Но изменился только язык. Основные алгоритмы, такие, например, как партионный учет и прочее остались прежними.

8. «Костыли» долго не работают. Множество программистов используют «костыли»: от недостатка времени, понимания проблемы или опыта. Однако со временем такие решения делают код глюкавым: он становится менее расширяем и его труднее сопровождать. Всегда старайтесь написать такую реализацию, о которой вы знаете все.

9. Читайте документацию. Хорошие программисты читают много документации. Это могут быть спецификации, JSR, API, документы, туториалы и т.д. Чтение документации позволит вам понимать основы, и вы будете решать задачи наилучшим способом.

10. Чужой код тоже может чему-то научить. Чтение исходных кодов известного open source проекта, или кодов, написанных вашим коллегой программистом, может помочь вам писать код лучше.

При подготовке текста использовался материал с http://habrahabr.ru/post/112017/


Источник: http://easyprog.ru/index.php?option=com_content&task=view&id=1435&Itemid=35

См. также

Личная эффективность Бесплатно (free)

Я Костя, разработчик 1С и руководитель образовательного направления в компании. Живу в Казахстане, работаю удалённо. Прошёл путь от стажёра до руководителя отдела разработки, меняю позиции и роли, потому что всегда хочется задач посложнее. Расскажу о карьере и тех условиях, которые сыграли важную роль для роста.

25.11.2024    4676    0    PROSTO-1C    7    

11

Обучение и наставничество Бесплатно (free)

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

12.11.2024    649    0    AlexSvoykin    9    

4

Личная эффективность Бесплатно (free)

«Я знаю одно – во мне есть нечто, и я это скрываю. Я не говорю об этом. Но оно там всегда. Мой Темный попутчик. Когда он просыпается, я чувствую себя живым.» (сериал «Декстер»). «Жажда разработки» – это психологические проявление внутреннего «я», вызывающее острую необходимость программировать. Все, кто любит программировать, неоднократно испытывали такую жажду, и я не исключение. Расскажем о том, как утолить свою жажду и найти баланс между хобби, работой и другими аспектами жизни.

07.11.2024    3495    0    BlizD    81    

44

Обучение и наставничество Бесплатно (free)

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

09.10.2024    2376    0    Akcium    1    

5

Личная эффективность Бесплатно (free)

В этом выпуске мы поговорили с ведущими подкаста "Аналитики у микрофона" Татьяной Рыловниковой и Анной Войкиной про цели и ценности создания, прослушивания и участия в подкастах.

09.09.2024    399    0    Radio_Analyst    1    

2

Личная эффективность Бесплатно (free)

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

23.08.2024    1129    0    user1947860    3    

5

Удаленная команда Личная эффективность Бесплатно (free)

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

20.08.2024    4496    0    PROSTO-1C    14    

23

Коммуникации Личная эффективность Обучение и наставничество Бесплатно (free)

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

23.07.2024    1913    0    SerjoginaMaria    6    

13
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ibrogim 1320 16.05.13 09:00 Сейчас в теме
Заказчика не устраивают ваши скрои
скрои вообще редко кого устраивают
нужно "мучить" код до тех пор, пока досконально не будет понятно, как она работает

если вы написали код, то конечно желательно знать, как она работает...
Почему то напомнило сочинение студента МГИМО
expert.1c8; Maxis; Ta_Da; MarSeN; +4 Ответить
13. expert.1c8 16.05.13 19:06 Сейчас в теме
(1) Ibrogim, Интересное сочинение ))
(4) tolyan_ekb, Спсасибо за ссылку, действительно явный копипаст

Автору советую вместо ссылки на свой сайт поставить эту ссылку с Хабра на оригинал,
так будет более честно..
18. megabax 195 16.05.13 20:48 Сейчас в теме
(13) expert.1c8,
Автору советую вместо ссылки на свой сайт поставить эту ссылку с Хабра на оригинал,
так будет более честно..

Ну вообще то это не копипаст, а рерайтинг,
2. TrinitronOTV 16 16.05.13 09:27 Сейчас в теме
спасибо за предоставленную статью, было весьма интересно прочитать
3. yuraos 1003 16.05.13 09:37 Сейчас в теме
Очень гут!
Полезно будет почитать разработчикам типовых конфигураций
(если они кодят не злонамеренно )
...

4. Пишите простой, понятный, но в то же время логичный код. Как и в других областях, формула KISS (Keep it simple and short — делай короче и проще) работает и в программировании. Пишите простой код и избегайте усложнений. Иногда люди пишут сложный код только для того, чтобы показать, какие они умные. Однако простой код легче отглючивать, сопровождать и вносить в него изменения. К тому же (см. пункт 3) чем проще код, тем проще понять, как он работает.

...
Дриугими словами используйте Бритву Оккама
ula1c; ranger; +2 Ответить
4. tolyan_ekb 106 16.05.13 11:59 Сейчас в теме
Товарисч копипастом занимается http://habrahabr.ru/post/112017/

Там еще было.
И последнее: не сравнивайте себя с другими

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


Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку.
Мартин Фаулер
expert.1c8; ElenaStel; kiros; +3 Ответить
5. Ibrogim 1320 16.05.13 12:04 Сейчас в теме
(4) tolyan_ekb, Тогда это не только копипаст, но и реклама своего сайта.
17. Поручик 4658 16.05.13 20:02 Сейчас в теме
(4) По поводу копи-паста http://forum.infostart.ru/forum1/topic86131/ (во вложении первого поста)

(0) Если на твоём сайте дейсвительно чужие статьи, смотри, как бы не нарваться на грубость.
6. Yashazz 4796 16.05.13 12:17 Сейчас в теме
Уже по анонсу видно, что все понятия свалены в кучу. Разные это вещи - постановка задачи, архитектура, кодинг, внедрение. Быть хорошим везде по нашим временам реально лишь на некрупных проектах, остальное есть вопрос специализации, а стало быть, каждому своё и каждый "хорош" в своём деле. Вот кабы статья была "Как стать хорошим программистом". А то мне это сильно напоминает статью типа "Как стать хорошим менеджером" - вроде и обо всём, а ни о чём.
7. Irek-kazan 16.05.13 12:21 Сейчас в теме
автор молодец, старался. Но статья, мне показалось, из серии книжек "Как заработать миллион"
8. Ibrogim 1320 16.05.13 12:34 Сейчас в теме
(7) Irek-kazan,
автор молодец, старался.
Копипастил?
9. Kosstikk 87 16.05.13 14:02 Сейчас в теме
Помоему это фарм стартмани =)
Но мне статья принесла некоторую пользу, т.к. в другом случае бы ее не прочитал. Плюс узнал что такое бритва Оккама
10. vervolf9 16.05.13 15:37 Сейчас в теме
Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением.
Даг Линдер
11. megabax 195 16.05.13 16:28 Сейчас в теме
(10) Полностью согласен, везде нужна защита от дурака.
12. ula1c 16.05.13 17:06 Сейчас в теме
(10) vervolf9, Согрели душу -не считаю себя хорошим программистом, но честное слово, замечала за собой- смотрю в обе стороны, даже если точно знаю, что одностороннее движение -а вдруг:)
16. Поручик 4658 16.05.13 19:58 Сейчас в теме
(10) Я тоже не считаю себя хорошим программистом, но автоматом смотрю в обе стороны, даже если перехожу тропинку в лесопосадке. По-моему, эта привычка у многих горожан уже на генетическом уровне, иначе можно быстро закончить дни под колёсами шальной тачки.
14. expert.1c8 16.05.13 19:08 Сейчас в теме
Посмотрел профиль, много статей автора уже неактивны из-за минусов,
и это неудивительно )
15. krein 63 16.05.13 19:12 Сейчас в теме
Сама статья хорошая, минус за копипаст
Оставьте свое сообщение