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

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)

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

08.07.2024    2425    0    biimmap    114    

23

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

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

01.07.2024    981    0    Neti    4    

4

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

В восемнадцатом выпуске второго сезона подкаста Радио “Аналитик“ обсудили, как появилась методика WOOP, чем она может быть полезна и зачем нужна отдельная методика, если можно просто брать и делать.

30.04.2024    555    0    Radio_Analyst    0    

5

Лидерство Личная эффективность Agile Анализ потребностей и поиск решений Бесплатно (free)

В семнадцатом выпуске второго сезона подкаста Радио “Аналитик“ обсудили, что из себя представляет модель Кеневин, чем и в каких ситуациях она может быть полезна тем, кто работает в сфере ИТ и не только.

19.04.2024    582    0    Radio_Analyst    0    

5

Личная эффективность Презентации и публичные выступления Бесплатно (free)

В статье рассказывается о 5 способах развития аналитика уровня мидл, мидл + и выше.

18.04.2024    1479    0    TanyaRi    1    

14

Личная эффективность Презентации и публичные выступления Бесплатно (free)

В шестнадцатом выпуске второго сезона подкаста Радио “Аналитик“ обсудили, что такое матанавыки, в чем их ценность, чем они отличаются от soft skills и как их развивать.

01.04.2024    498    0    Radio_Analyst    0    

4

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

Данная статья является пилотной в цикле публикаций на тему «Профессиональное мировоззрение учетного специалиста», в котором предполагается рассмотреть основные идеи, важные для профессиональной деятельности любого учетного специалиста в области бухгалтерского, налогового, управленческого и любого другого вида учета. В статье рассмотрены критерии научности профессионального мировоззрения, предложен вариант модели бухгалтерского научного знания. Если данная тема вызовет интерес у читателей, то в последующих статьях будет предложена профессиональная мировоззренческая модель на основе пары взаимосвязанных реальностей – хозяйственной и бухгалтерской (виртуальной) реальностей, а также будут рассмотрены принципы построения научных бухгалтерских моделей.

01.04.2024    963    0    Polav62    4    

9

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

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

18.03.2024    514    0    Radio_Analyst    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ibrogim 1319 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 194 16.05.13 20:48 Сейчас в теме
(13) expert.1c8,
Автору советую вместо ссылки на свой сайт поставить эту ссылку с Хабра на оригинал,
так будет более честно..

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

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

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

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

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


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

(0) Если на твоём сайте дейсвительно чужие статьи, смотри, как бы не нарваться на грубость.
6. Yashazz 4761 16.05.13 12:17 Сейчас в теме
Уже по анонсу видно, что все понятия свалены в кучу. Разные это вещи - постановка задачи, архитектура, кодинг, внедрение. Быть хорошим везде по нашим временам реально лишь на некрупных проектах, остальное есть вопрос специализации, а стало быть, каждому своё и каждый "хорош" в своём деле. Вот кабы статья была "Как стать хорошим программистом". А то мне это сильно напоминает статью типа "Как стать хорошим менеджером" - вроде и обо всём, а ни о чём.
7. Irek-kazan 16.05.13 12:21 Сейчас в теме
автор молодец, старался. Но статья, мне показалось, из серии книжек "Как заработать миллион"
8. Ibrogim 1319 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 194 16.05.13 16:28 Сейчас в теме
(10) Полностью согласен, везде нужна защита от дурака.
12. ula1c 16.05.13 17:06 Сейчас в теме
(10) vervolf9, Согрели душу -не считаю себя хорошим программистом, но честное слово, замечала за собой- смотрю в обе стороны, даже если точно знаю, что одностороннее движение -а вдруг:)
16. Поручик 4683 16.05.13 19:58 Сейчас в теме
(10) Я тоже не считаю себя хорошим программистом, но автоматом смотрю в обе стороны, даже если перехожу тропинку в лесопосадке. По-моему, эта привычка у многих горожан уже на генетическом уровне, иначе можно быстро закончить дни под колёсами шальной тачки.
14. expert.1c8 16.05.13 19:08 Сейчас в теме
Посмотрел профиль, много статей автора уже неактивны из-за минусов,
и это неудивительно )
15. krein 63 16.05.13 19:12 Сейчас в теме
Сама статья хорошая, минус за копипаст
Оставьте свое сообщение