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

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


05.02.2018
/
oberset

10 принципов успешного разработчика программного обеспечения: перевод статьи 10 Habits of Highly Successful Software Developers.

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

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

  • Успешный разработчик ПО


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

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

Рекомендуется также присваивать ясные, осмысленные имена переменным и функциям – это должно быть проще, если вы следуете правилу «одна функция – одна цель». Разработчик тратит больше времени на чтение кода, чем на его написание. Когда вы вернетесь к своему коду через пару недель после его написания, важно, чтобы вы быстро и легко поняли, в чем его назначение.

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

Ключевой шаг к лучшему пониманию вклада вашего кода в общее дело: сфокусируйтесь на пользователе или заказчике. Успешные разработчики берут ответственность за то, что они поставляют – не только в репозиторий, но и конечному пользователю.

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

4. Вы дисциплинированны. Талант, если он только не абсолютно ошеломляющий, это еще не всё. В самом деле, талант и мастерство — только части формулы успеха. Другая часть – это дисциплина. Высоко квалифицированный разработчик ПО без дисциплины как опытный моряк без карты: действительно хорош в управлении лодкой, но не может найти берег.

Можно описать дисциплинированного разработчика как кого-то, кто:

1) Не жертвует качеству в угоду скорости. Но когда другого выхода нет, он должен быть осведомлен о создаваемом техническом долге и бороться за то, чтобы «оплатить» его позже.

2) Вовлечен в процессы, так как понимает, что они были введены с целью помочь разработчику достичь успеха. Например, он в полной мере присутствует на код-ревью и поощряет конструктивные ретроспективы спринтов.

3) Знает цену концентрации во время разработки. Находит способы сконцентрироваться. К примеру, используя технику «помодоро», жестко резервируя время, надевая наушники.

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

Есть мнение, что это довольно распространенная привычка – погружаться в сложные, незаканчивающиеся процессы или зацикливаться на «граничных случаях» конкретной технической реализации. Такой образ мышления можно описать как «Разве не здорово, если мы сделаем X, Y и Z?», когда настоящими целями проекта являются A, B и C. Безусловно, это естественный ход мыслей разработчика, но иногда нужно остановиться. Когда вы немного отступите, вы можете осознать, что прилагаете множество усилий к чему-то, что на самом деле не настолько важно для достижения широкой цели, к которой все стремятся.

Быть способным иногда подумать наперед определенно хорошо, до тех пор, пока вы можете переключить внимание на важность того, что как вы знаете должно быть сделано, а не того, что возможно должно быть сделано. В том числе нужно убедиться, что вы с остальной командой находитесь «на одной волне». Успешный разработчик понимает, что инновации – командный спорт.

6. Вы стойко решаете проблемы. Будьте упорны – некоторые проблемы очень сложны. При достаточном количестве времени и тщательном исследовании решение всегда найдется, и нет чувства лучше, чем найти решение сложной проблемы.

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

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

Однако не думайте, что получение помощи онлайн означает бездумное копирование кода со Stack Overflow. Хорошие разработчики тратят некоторое время на то, чтобы понять что, как и почему устроено в найденном решении. Изучите, что делает код, и почему он решает проблему. Вы можете скопировать его и вставить, но без базовых знаний это может позже стать для вас проблемой.

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

Разницу между навыками и экспертными знаниями можно объяснить так: хороший разработчик может написать запрос к базе данных, но высококвалифицированный разработчик знает, как написать этот запрос наиболее эффективно.

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

9. Вы открыты новому. Есть еще одно условие для непрерывного обучения: нужно быть открытым для новых вещей и по мере необходимости пользоваться ими.

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

В самом деле, обучение не останавливается с получением ученой степени по информатике или завершением курса программирования и даже со словами «Мы берем Вас на работу!». Будьте открыты новому. Худшее, что вы можете сделать, это сосредоточиться на одном языке или инструменте. В конце концов, «если у вас в руках молоток, то всё вокруг выглядит как гвозди».

10. Вас не пугают трудности. В книге «Глубокая работа» Кэла Нюпорта есть цитата: настоящее развитие навыков требует «способности глубоко погружаться в тему, сталкиваться с её самыми трудными областями и упорно переживать временные разочарования, что позволяет по-настоящему исследовать, действительно понимать изучаемый вами предмет».

Это может быть тяжело по самым разным причинам, включая электронную почту, социальные сети, новостные сайты, совещания и так далее: всё это часто заставляет нас чувствовать себя занятыми, но не обязательно способствует глубокой умственной деятельности. Многие люди, пытаясь понять сложную тему, начинают отвлекаться. Прямо посреди чтения статьи в техническом блоге, буквально в середине абзаца мозг начинает протестовать – становится интересно узнать, что нового в социальных сетях?

В ответ на это, пользуясь выводами из книги Ньюпорта, предлагается резервировать блоки времени (скажем, часа два) и отключать всё, что может отвлечь от единственной цели. Можно сравнить это с медитативной практикой, запускаемой резервированием этих блоков времени. Замечая стремление внимания улетучиться и мягко направляя его обратно на текущую задачу, можно побороть рассеянность и прийти к мысли: «Хорошо, что из этого я не понимаю? Как я могу найти ответ? Нужно ли мне провести эксперимент? Нужно ли мне написать небольшую программу для этого? Нужно ли мне найти эксперта, который сможет мне это объяснить?». Такой подход подразумевает обдуманное продвижение по сложным темам.

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



Как стать успешным фрилансером и получать больше заказов?

10 полезных советов для фрилансеров, которые помогут вам получить больше доверия со стороны заказчиков.

Компиляция C# программ в Notepad++

В данной статье я расскажу, как с помощью Powershell скомпилировать код, написанный в Notepad++.

Разбираемся со связкой React и Redux на простейшем примере

Простой пример, который поможет быстро разобраться, как управлять данными с помощью библиотеки Redux в ваших приложениях на React.