Найти тему
Roman Smirnov

10 Привычек успешных разработчиков программного обеспечения

Оглавление

Представьте, что вы сравниваете резюме двух разработчиков программного обеспечения: Dev A и Dev B. Оба кандидата обладают почти одинаковым опытом и навыками: языками, фреймворками, платформами, методологиями, отраслями и так далее. Они практически один и тот же человек—на бумаге. Тем не менее, есть определенные вещи, которые могут указывать на то, что разработчик A, скорее всего, будет значительно более успешным в своей карьере, чем разработчик B, практически по любым показателям. Как это вычисляется?

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

1. Вы пишете чистый, многоразовый код, который легче читать и тестировать.

-2

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

“Когда вы начинаете кодировать, обычно начинаете писать строку за строкой кода в функцию, которая становится все больше и больше”, - говорит Мэги. Поначалу это может показаться проще, но это порождает несколько проблем: ваш код становится сложнее читать, сложнее повторно использовать и сложнее тестировать. “Функция должна делать одно и только одно. Если он делает больше, чем одну вещь, ему не хватает сосредоточенности”.

Magee также советует присваивать четкие, значимые имена переменным и функциям—то, что должно быть проще, если вы следуете эмпирическому правилу "одна функция, одна цель". “Как разработчик, вы тратите больше времени на чтение своего кода, чем на его написание”, - отмечает Мэги. “Важно, чтобы, когда вы вернетесь к своему коду через несколько недель после его написания, вы могли быстро и легко понять, для чего он предназначен”.

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

Есть много людей, которые могут написать код, скажем, для нового мобильного приложения компании. Гораздо меньше людей обладают общим видением, необходимым для понимания того, почему компания в первую очередь создает мобильное приложение. Великие разработчики “в общих чертах понимают, как компания работает на бизнес-уровне, говорят на языке бизнеса и овладевают переводом делового языка на технологии и наоборот”, - говорит Тодд Стефан, вице-президент по разработке программного обеспечения в Ask Applications. Точно так же Стефан добавляет, что великие разработчики могут говорить о ценности технологий в бизнес—терминах-другими словами, в терминах, которые понимает остальная часть компании, включая C-suite.

Хосе Мигель Перес, технический директор MarketGoo, разделяет аналогичное мнение об этой черте великих разработчиков: “Они стремятся понять цель, цели и влияние проекта, который является широким и выходит за рамки той роли, которую они играют в нем”.

Вот важный шаг к лучшему пониманию вклада вашего кода в общую картину: сосредоточьтесь на пользователе или клиенте. “Успешные разработчики берут на себя ответственность за то, что они предоставляют—не только репозиторию, но и пользователю”, - говорит защитник разработчиков New Relic Клей Смит. “Разработчики ниндзя выполняют свою смену с пейджером”.

3. Вы слушаете больше, чем говорите, или, по крайней мере, слушаете, прежде чем говорить.

.
.

“Если вы находитесь в офисе с другими разработчиками, сначала послушайте, а затем говорите”, - говорит Кристофер Менди, глава отдела разработчиков Evus Technologies. ”Это самый быстрый способ научиться"

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

4. Вы дисциплинированы.

Талант, за исключением, может быть, подавляющего количества, - это еще не все. Действительно, талант или мастерство-это только часть формулы успеха. “Дисциплина-это другая часть", - говорит Гади Питару, технический директор Badger Maps, новый клиент Relic. “Высококвалифицированный инженер-программист без дисциплины подобен моряку-ветерану без карты: действительно хорошо управляет лодкой, но не может найти берег".

Питару описывает дисциплинированного инженера-программиста как

  • Тот, кто не жертвует качеством ради скорости. Но когда они абсолютно обязаны, “они осознают технический долг, который они создают, и борются за то, чтобы вернуть его в будущем”.
  • Кто-то, кто принимает процессы, потому что они осознают, что они были созданы, чтобы помочь разработчикам добиться успеха. Например: “Они полностью присутствуют во время обзоров кода и поощряют конструктивные ретроспективы спринта”.
  • Кто-то, кто знает ценность сосредоточенного времени для работы над разработкой: “Они находят способы обеспечить его получение, используя pomodoros, отключая календарное время или надевая наушники, чтобы назвать несколько примеров”.

5. Вы способны глубоко сосредоточиться на правильном деле.

-4

Инженер-программист New Relic Ruby Agent Кэтрин Ву разделяет особую форму дисциплины, которая отличает очень успешных разработчиков: способность сосредоточиться на общей цели конкретного проекта, не отвлекаясь на то, что нравится имущим или на то, что на самом деле не приближает вас к вашей цели.

“Я думаю, что это довольно распространенная привычка спускаться в кроличьи норы или увязать в крайних случаях конкретной технической реализации”, - говорит Ву. Она описывает это мышление как “Разве не было бы здорово, если бы мы могли сделать X, Y и Z?”—когда фактическими целями проекта являются “A, B и C.” Это, конечно, естественный мыслительный процесс для инженеров, но иногда его нужно обуздывать. “Когда вы немного отступите назад, вы можете понять, что прилагаете много усилий к чему-то, что на самом деле не так важно для более широкой цели, которую все пытаются достичь”.

Конечно, хорошо иногда смотреть вперед, говорит Ву, пока вы можете переориентироваться на важность того, что, как вы знаете, вам нужно сделать, по сравнению с тем, что вам может понадобиться сделать. Часть этого заключается в том, чтобы убедиться, что вы находитесь на той же волне, что и остальная часть команды. Как отмечает Смит из New Relic, “Успешные разработчики понимают, что инновации-это командный вид спорта”.

6. Вы упорно решаете проблемы.

“Будьте упрямы—некоторые проблемы очень трудны", - отмечает Менди. ”При достаточном количестве времени и исследований всегда найдется решение, и найти решение трудной проблемы-самое лучшее чувство".

7. Вы получаете помощь от незнакомых людей в Интернете.

-5

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

“Хорошенько погуглите", - советует Менди. “Почти все проблемы в области компьютерного программирования, с которыми вы столкнетесь, были решены. Где - то там кто-то столкнулся с той же проблемой, что и вы, и они часто публикуют свои решения".

Однако не думайте, что получение справки в Интернете просто означает копирование и вставку кода из потока переполнения стека. Защитник разработчиков New Relic Тори Вельдт отмечает, что великие разработчики тратят время на то, чтобы понять, что, почему и как в любом решении, которое они находят в Интернете. “Изучите, что делает код и почему он решает проблемы”, - советует она. “Вы можете вырезать и вставлять, но без фоновых знаний это может вернуться, чтобы преследовать вас".

8. Вы выходите за рамки мастерства, чтобы достичь опыта, но не обязательно мастерства.

Когда Ask нанимает талантливых разработчиков, Стефан ищет знания о предыдущем опыте человека, и это не обязательно должно быть в областях, которые напрямую связаны с работой, которую он пытается заполнить. “Если человек раньше быстро набирался опыта, то, скорее всего, он сможет сделать это снова с помощью других навыков и технологий”, - говорит он.

Питару из Badger Maps объясняет разницу между навыками и опытом: “Хороший инженер-программист может написать запрос к базе данных Django, но высококвалифицированный инженер-программист будет знать, как наиболее эффективно написать этот запрос, чтобы одна строка кода масштабировалась”.

Однако проводите различие между опытом и мастерством. Последнее предполагает, что вам больше нечему учиться. “Не думай, что ты когда-нибудь чему-нибудь научишься”, - говорит Менди. “Развитие в наши дни-это просто непрерывное образование”.

9. Вы открыты для всего нового.

Еще одно необходимое условие для этого непрерывного образования, которое Менди описывает выше: быть открытым для новых вещей и воспринимать их по мере необходимости.
Еще одно необходимое условие для этого непрерывного образования, которое Менди описывает выше: быть открытым для новых вещей и воспринимать их по мере необходимости.

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

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

“Будьте непредвзяты. Худшее, что вы можете сделать, - это сосредоточиться на одном языке или инструменте”, - рекомендует Менди. В конце концов, “Если все, что у вас есть, - это молоток, то все начинает выглядеть как гвоздь”.

10. Вам комфортно чувствовать себя некомфортно.

Ву из New Relic говорит, что ее развивающийся подход к непрерывному образованию и развитию навыков частично вдохновлен книгой "Глубокая работа" Кэла Ньюпорта. Ключевая цитата: истинное развитие навыков требует “способности глубоко погрузиться в тему и противостоять трудным областям в ней—и настойчивости, несмотря на эти времена разочарования, чтобы вы могли действительно исследовать, действительно понять то, что перед вами”.

Это может быть сложно по разным причинам, включая все те вещи—электронную почту, Слабину, встречи и так далее,—которые часто заставляют нас чувствовать себя занятыми, но не обязательно способствуют глубоким интеллектуальным усилиям, описанным Ву. Ву, например, заметила сигнал о том, что она изо всех сил пытается понять сложную тему: ее внимание начнет рассеиваться. “Я могу быть в середине чтения технического сообщения в блоге, и буквально в середине абзаца, в середине предложения о какой—то идее, мой мозг почти восстает-интересно, что на Facebook?”

В ответ Ву применяет на практике свои выводы из книги Ньюпорта, выделяя блоки времени—скажем, два часа—и отключаясь от отвлекающих факторов, чтобы сосредоточиться на единственной цели. Она сравнивает это с медитативной практикой, которую можно выполнить, отложив эти временные блоки: “Заметив, что мое внимание уходит, и мягко перенаправив его обратно на текущую задачу, чтобы я мог справиться и определить: "Хорошо, что из этого я не понимаю? Как я могу найти ответ? Нужно ли мне проводить эксперимент? Нужно ли мне кодировать игрушечный проект и соотносить его с этим? Мне нужно найти эксперта, который сможет мне это объяснить?" Это включает в себя попытку очень сознательно продвигаться вперед по сложным темам”.

Чтобы быть ясным, отключение электронной почты на пару часов не сделает вас лучшим разработчиком—это просто механизм для сосредоточения внимания на реальном прогрессе и улучшении. Чтобы поправиться, она говорит: “Вы должны работать над вещами, которые для вас трудны. Даже если вы не отвлекаетесь и тратите много часов на кодирование, если вы просто снова и снова создаете одно и то же очень простое приложение, это не обязательно расширяет границы ваших навыков. И если вы намеренно не расширяете границы своих навыков, вы, возможно, не пытаетесь структурировать навыки в том направлении, которое поможет вам действительно расти как техническому вкладчику”.

Обязательно ознакомьтесь так же с 8 Способами стать лучшим программистом.