Что приводит программиста на его рабочее
место каждый день? Страсть к программированию и получение удовольствия
от него. Но чтобы действительно получать удовольствие и радость от
программирования, нужно знать некоторые базовые вещи, которые позволят
вам стать хорошим программистом.
Я не собираюсь писать мантры,
следуя которым, вы станете хорошим специалистом. Моя цель —
перечислить те вещи, которые помогли мне добиться успехов в этой
профессии. Не существует четкого определения, кто такой хороший
программист. Под таковым я подразумеваю человека, который разрабатывает
отличные IT-решения и вносит вклад в развитие индустрии.
1. Учите основы
Понимание основ — это ключ к успеху в любой индустрии и любой
профессии. До тех пор, пока вы недостаточно хорошо знаете основы, вы не
сможете стать хорошим программистом. Знание азов позволит вам
разрабатывать и реализовывать лучшие решения наилучшим способом. Если
вы ощущаете пробелы в своих знаниях, будь то основы computer science,
или концепции языка, на котором вы пишете, то никогда не поздно
вернуться назад и повторить забытое.
2. Задавайте вопросы (как? почему?), когда пишете код
Есть одна вещь, которая отличает хорошего программиста от всех
остальных — это желание знать, что и как происходит. Есть люди, которые
никогда не оставят в покое код, пока точно не будут знать, что именно
происходит при его выполнении. Я понимаю, что это приближает дедлайн,
что у нас не всегда есть на это время, и поэтому мы часто заканчиваем
работать с кодом, как только он начинает выполнять свои функции. И хотя
поведение в подобных ситуациях это тема для другого разговора, каждый
программист может приложить как можно больше усилий для того, чтобы
вникнуть в работу кода. И поверьте, со временем это войдет в привычку, и
вы будете делать это уже неосознанно.
3. Учите других — учитесь сами
Большинство из нас обращаются к форумам и группам только тогда, когда
нам нужна помощь. Еще одна вещь, которая отличает хорошего
программиста от все остальных: хороший программист чаще заглядывает в
такие места, чтобы помочь другим. Такая помощь учит больше, чем помощь,
оказанная вам при решении вашей проблемы. Поверьте, после того как вы
разберетесь в чужой проблеме и ее контексте, поразмышляете над ней и
дадите решение, вы научитесь гораздо большему.
4. Пишите простой, понятный, но в то же время логичный код
Как и в других областях, формула KISS (Keep it simple and short —
делай короче и проще) работает и в программировании. Пишите логичный
код и избегайте усложнений. Иногда люди пишут сложный код только для
того, чтобы доказать, что они умеют писать такой код. Мой опыт
подсказывает, что простой и логичный код всегда работает хорошо,
приносит меньше проблем и лучше поддается расширению. Вспоминается
отличная фраза:
Хороший код — это лучшая документация. Каждый раз, когда
вы захотите добавить комментарий, спросите себя: «Как я могу улучшить
этот код, чтобы он не требовал комментирования?»
Стив МакКоннелл
5. Уделяйте больше времени анализу проблемы, тогда вам понадобится меньше времени для ее устранения
Уделяйте больше времени на понимание и анализ проблемы и разработку
решения. А остальное будет легко сделать. Разработка решения не означает
использование языков или инструментов для моделирования, вы можете
просто смотреть на небо и думать о решении. У тех, кто привык стучать по
клавиатуре сразу же, как только узнал о проблеме, результат обычно не
совпадает с ожидаемым.
Если вы не можете целиком понять общую структуру программы, пока принимаете душ, значит, вы не готовы ее запрограммировать.
Ричард Паттис
6. Будьте первым, кто проанализирует и оценит ваш код
Хотя это трудно, но попробуйте «сломать» ваш код до того, как это
сделает кто-то другой. Со временем вы научитесь писать почти
безошибочный код. Всегда проводите подробную и беспристрастную оценку
своего кода. И никогда не бойтесь спрашивать, что другие думают о вашем
коде. Работайте с хорошими программистами и прислушивайтесь к их мнению
— это поможет вам стать хорошим программистом.
7. Не пугайтесь быстрой смены технологий
За все время работы в области IT, я встречал множество людей, которых
не устраивала их работа, и людей, которые меняли место работы, чтобы
работать с новейшими технологиями. В таком стремлении нет ничего
плохого, однако ошибка в «новейших технологиях». Каждый день появляются
новые инструменты, API и фреймворки, призванные сделать разработку
быстрой и простой. И эта тенденция не снизится. Однако следует понять
одну вещь: фундаментальные знания и основы меняются значительно
медленнее, чем фреймворки, новые инструменты и API. Можно провести
аналогию с морем, на поверхности которого находятся быстрые течения,
однако на глубине вода спокойна и она составляет большую часть объема.
Поэтому держитесь «на глубине», поближе к основам. В мире Java
приложений уровня enterprise существует много веб-фреймворков, а новые
выходят каждые две недели. Однако основы клиент-серверной архитектуры,
шаблона MVS (Model View Separation), фильтров/сервлетов/JSP, упаковки
ресурсов, обработки XML и т.д. остаются неизменны. Поэтому лучше
потратьте время на изучение этих основ, нежели на изучение вечно
меняющихся фреймворков. Поверьте, зная основы, изучить новые API и
фрейморки будет куда легче.
8. «Костыли»* долго не работают
Множество программистов используют «костыли»: от недостатка времени,
понимания проблемы или опыта. Однако со временем такие решения делают
код хуже: он становится менее расширяем и удобен в поддержке. Всегда
старайтесь написать такую реализацию, о которой вы знаете все. Я
понимаю, что «костыли» в некоторых ситуациях неизбежны, но тогда
ситуация напоминает что-то вроде «всегда говори правду, но иногда можешь
соврать».
9. Читайте документацию
Хорошие программисты читают много документации. Это могут быть
спецификации, JSR, API, документы, туториалы и т.д. Чтение документации
позволит вам понимать основы, и вы будете решать задачи наилучшим
способом.
10. Чужой код тоже может чему-то научить
Я работал с двумя отличными программистами, которые постоянно в своих
IDE держали исходники чужих проектов на Java, и обращались к ним
каждый день. Они делали это не только из желания узнать, как работают
базовые вещи, но и из желания научиться писать хорошие программы.
Чтение исходных кодов известного open source проекта, или кодов,
написанных вашим ведущим программистом, может помочь вам писать код
лучше.
И последнее: не сравнивайте себя с другими
Сравнение себя с другими выльется только в плохое самочувствие и
нездоровую конкуренцию. У всех есть свои сильные и слабые стороны.
Важнее понять свои сильные и слабые стороны и работать над ними. Я много
раз видел, как даже так называемые fundoo-программисты (программисты с
хорошей фундаментальной подготовкой) делали глупые ошибки. Поэтому
проанализируйте и запишите те вещи, которые вам стоит улучшить в себе, и
за работу. Программируйте в удовольствие и наслаждайтесь этим.
Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку.
Мартин Фаулер