Убедитесь, что они есть в вашем арсенале

Сейчас инженеры-программисты нуждаются в довольно широком спектре навыков. Наверху списка этих навыков вы найдете что-то вроде того, что… вам нужно знать, как программировать. Следовательно, вам нужно знать язык программирования. Другие пункты этого списка: вы должны быть хороши в решении проблем и знать материал, когда дело доходит до алгоритмов и структур данных. И мы, наверное, все согласны, что также необходимы некоторые навыки общения.

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

1. Чтение кода

Одним из самых недооцененных навыков является умение читать код. Код живёт намного дольше, чем вы ожидаете, когда пишете его. Вот почему до сих пор существует приличный спрос на разработчиков COBOL, а этот язык, в свою очередь, существует уже около 60 лет. Мы живем в мире, где разработчики приходят и уходят, но код остаётся, поэтому программистам приходится тратить слишком много времени на чтение кода и попытки понять его.

Цитата Роберта К. Мартина очень хорошо подводит итог: “Соотношение времени, потраченного на чтение и написание кода, значительно превышает значение 10 к 1. Мы постоянно читаем старый код, пока пишем новый”.

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

2. Умение задавать вопросы

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

Не поймите меня неправильно. Создавать что-то по правилам важно. Но большинство программистов уделяют этому слишком много внимания. Прежде чем вы начнёте создавать проект, вы должны задать себе вопрос: я создаю нечто полезное?

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

3. Регулярные выражения

Удивительно, но многие инженеры-программисты не очень хорошо разбираются в регулярных выражениях. Регулярные выражения — это способ сопоставления шаблонов в тексте. Они часто упускаются из виду. Большинство программистов думают о регулярных выражениях как о чём-то трудном.

Регулярные выражения могут быть довольно непростыми и определенно имеют кривую обучения. Тем не менее они могут сделать для вас многое. Наиболее очевидный вариант использования — поиск определенных фрагментов текста в больших кодовых базах.

Ещё один вариант использования регулярных выражений  —  поиск и замена в редакторе кода. Вы даже можете использовать регулярные выражения, чтобы запретить отправку (или даже коммит) определенных строк. Если вы веб-разработчик, вероятно, в какой-то момент своей карьеры вы использовали регулярные выражения для проверки пользовательских данных.

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

4. Отладка

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

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

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

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

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

5. Создание инструментов

Умение создавать инструменты для себя — одна из вещей, отличающая действительно великих программистов от посредственных. Это то, что делают лучшие программисты. Написание собственных инструментов помогает нам быть максимально продуктивными.

Инструментарий — вероятно, самая большая разница между инженером-программистом, который делает X полезного, и программистом с эффективностью 2*X . Или, возможно, даже 3*X. Возможности ваших собственных инструментов могут быть самыми разными. Например, вы можете написать сценарий, автоматически проверяющий стиль вашего кода перед каждым коммитом. Так вам не придется делать новый коммит, если вы неправильно ставите запятую.

Обычно эти инструменты (сценарии) создаются на Python, Bash или PHP. Есть и другие языки, но должен использоваться какой-то скриптовый язык, удобный для командной строки. Эти сценарии могут применяться для ускорения рабочего процесса в целом, а значит вы успеете сделать ещё больше! 

Вот и все на сегодня, спасибо, что прочитали!

Читайте также:


Перевод статьи Daan: 5 Essential, Yet Overlooked Skills for Software Engineers

Предыдущая статьяОтмена в корутинах
Следующая статьяЧистый код JavaScript - объекты и классы