ru
ru
У IT специалистов, как и у людей любой другой профессии, не все получается сразу. Многие навыки приходят лишь с опытом.
В начале своего пути, обычно это обучение в вузе, будущий программист учится императивному программированию — написанию программ, представляющих собой последовательность команд, которые должен выполнить компьютер. Помимо умения писать код, начинающий программист изучает алгоритмы и структуры данных, паттерны проектирования и многое другое. Но его знания и умения пока ценны лишь с академической точки зрения, поскольку в вузе не учат, что со всем этим делать и где это использовать.
Лишь упорно оттачивая свое мастерство, можно стать крутым программистом. Нужно не только постоянно читать, подтягивать теоретическую базу, но и регулярно и много практиковаться. Это нелегко, порой монотонно, может надоедать, но, чтобы добиться своего, требуется много желания и настойчивости. В программировании очень важна практика.
Какие же качества отличают опытного программиста от начинающего? Согласно проведенным опросам среди ведущих специалистов IT сферы, с точностью можно говорит о следующих:
Каждый опытный программист знает, что качество кода не определяется его длиной или временем, которое было затрачено на его написание. В идеале следует стремиться к тому, чтобы код был написан как можно понятнее, что должно привести к его упрощению и в результате к сокращению объема.
С годами код становится более аккуратным. У опытного программиста отсутствует потребность писать сложный код, чтобы кому-то что-то доказать. Красота и изящество кода заключается в его достаточности, простоте и понятности. Умение писать короткий код часто воспринимается как показатель высокого качества.
Помимо этого программист уже при написании понимает, как будет работать его код, и что при этом физически происходит с компьютером в процессе. Так развивается навык написания быстрого кода.
Еще один отличительный навык опытного программиста - умение писать код, понятный для человека. Это значит — понимать как будет мыслить разработчик, который будет впоследствии вносить изменения в систему, предугадывать его вопросы и видение задачи, оставлять комментарии.
В работе программист сталкивается с многообразием задач – от написания простого скрипта до проектирования больших систем. С течением времени и с опытом развивающемуся специалисту будет встречаться все меньше и меньше задач, фундамент для которых будет для него чем-то совершенно новым. И поэтому для оптимального решения типовых задач будут применяться уже наработанные паттерны. Опытный программист умеет оперировать в голове модулями кода, имеет возможность надёргать из разных проектов отличные идеи для реализации, подстраивая их под новые требования.
Одно из главных качеств, необходимых в программировании — способность и желание изучать что-то новое. Потребность в развитии должна быть свойственна программисту на протяжении всей деятельности. Постоянное расширение горизонтов помогает специалистам легче признавать свои ошибки.
Современный опытный программист идет в ногу со временем , следит за самыми передовыми технологиями и последними тенденциями в разработке, адаптирует свои навыки и умения к текущим и перспективным потребностям рынка.
Постоянное обучение и готовность браться за новые задачи играют зачастую более важную роль, нежели конкретные технические навыки.
С опытом уходит максимализм. Опытный программист понимает, что быстро написать код — далеко не всегда значит успешно справиться с поставленной задачей. Главным все же остается качество окончательного продукта. Гораздо важнее не то, сколько часов потрачено на разработку, а то, сколько времени смогут сэкономить пользователи со всего мира. Если благодаря труду программиста они будут делать на три клика меньше, то это вполне стоит трех дней его работы.
Очень часто предварительная подготовка играет достаточно большую роль и облегчает последующую работу, позволяет сократить или вовсе избежать возможных преобразований и исправлений. Грамотные разработчики много времени тратят на обдумывание кода и поиск оптимальных решений, которые можно внедрить. И даже 50 строк кода в день приобретают совсем другую ценность, когда к их написанию подошли очень вдумчиво.
Согласно опросу на Hacker News, многие программисты до сих пор делают записи в блокнотах и даже используют карточки, чтобы привести мысли в порядок и продумать код до начала самой работы.
Важный навык, который не дается программисту в начале пути - самоконтроль. Это внутренняя дисциплина, способность сохранять баланс между исследовательским интересом и результатом, без которого этот интерес угасает, лишая программиста энергии и мотивации работать и развиваться дальше. С опытом приходит самоконтроль, позволяющий находить баланс между творчеством и эффективностью.
Вопреки сложившемуся стереотипу о программистах в список отличительных черт высококлассного специалиста входят хорошие коммуникативные навыки. Коммуникабельность предполагает две важных стороны — умение работать в команде и понимать клиентов. Опытный программист понимает, что клиент тоже является частью команды, поэтому услышать его и понять, согласовать план и цели проекта — залог создания успешного продукта.
Подводя итоги, можно сказать, что настоящий опыт не всегда лежит в плоскости технологий или алгоритмов. Помимо практики, развития и совершенствования своих профессиональных навыков и самоконтроля, не менее важно умение извлекать опыт из своих ошибок, ценить свое время и время других людей, делать упор на качество, а не на скорость. И конечно, настоящего профессионала своего дела отличает умение быть частью команды, ценить и уважать людей вокруг себя, создавать что-то совместно и думать о том, какие ценности несет ваша работа.