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

Термин «средний разработчик» может не произвести положительного впечатления. Некоторые люди предпочитают искать разработчиков «рок-звезд», «ниндзя» или «10x». Лично я считаю, что быть средним разработчиком — это очень хорошее достижение. В долгосрочной перспективе, что действительно имеет значение, так это терпение, настойчивость и последовательность. Кроме того, с точки зрения работодателя, действительно важно выполнить работу и свести к минимуму риск некачественного найма.

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

1. Разберитесь в основах

Использовать контроль версий.

- Разбейте проект на мелкие части (функции). Работайте над ними по очереди.

- Отправлять код на проверку кода (функция за функцией), а не весь код. Возможно, вам потребуется добавить проектный документ, чтобы объяснить рецензенту ваш код.

- Получайте отзывы о работе над небольшими частями (небольшими различиями), чтобы убедиться, что вы идете по правильному пути и не тратите время попусту.

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

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

- Потратьте свое время на разработку фактических функций вашего приложения, а не фреймворка, инфраструктуры или библиотек. Есть отличная статья, в которой подробно объясняется эта идея. Автор упомянул, что 85% всего времени разработчика должно быть потрачено на бизнес-логику.

- Лени (в хорошем смысле). Автор книги Языки программирования Perl описывает три хороших качества хорошего программиста: лень, нетерпение и высокомерие. Ленивый человек пытается найти самый быстрый и эффективный способ выполнить любую задачу. Обычно это требует большого объема работы по автоматизации, чтобы автоматизировать процессы и сэкономить время и деньги.

Рефакторинг как можно скорее и в максимально возможной степени.

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

2. Настройте свое отношение

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

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

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

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

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

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

3. Заточите пилу

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

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

- Имейте свой собственный небольшой побочный проект.

- По возможности работайте один на один с другими разработчиками. Лично у меня очень хороший опыт парного программирования. Я вижу это как простую структуру передачи экспертных знаний.

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

Оттачивайте свои навыки устранения неполадок.

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

4. Научите всему, чему научились

Общеизвестно, что один из лучших способов учиться — учить. Одна из моих любимых цитат

«Письмо — это способ природы дать вам понять, насколько небрежно ваше мышление». — Дик Гиндон.

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

- Пишите обучающие блоги и размещайте сообщения на форумах, если это возможно.

Распространяйте культуру преподавания и разрешите говорить «я не уверен». Сделайте допустимым высказывание «Я думаю, что это так, но я не совсем понимаю и, возможно, ошибаюсь». Сделайте приемлемым признание того, что в собственном понимании есть пробелы, и это не является признаком слабости.

Используйте возможность получить быструю обратную связь от людей, обучая их.

- Думайте об обучении как о механизме укрепления и роста вашей команды в целом.

Не стесняйтесь учить даже мелочам, которым вы научились. Помните: если вы чему-то научились, это значит, что вы старше тех, кто еще не научился этому.

- Подготовьтесь к выступлению на семинарах или конференциях, если это возможно.

5. Быть частью команды

- Сосредоточьтесь на одной роли. Это правда, что любой разработчик должен иметь возможность изучать любой новый язык и работать на разных уровнях абстракции (уровень ОС, серверная часть, внешний интерфейс и т. д.), но я думаю, что это Гораздо лучше сосредоточить свою энергию на одной конкретной области (например, на интерфейсе), которая позволит вам проявить себя и стать экспертом, а не растрачивать ее повсюду. На момент приобретения Facebook в Instagram работало 14 сотрудников. Этого было достаточно, потому что они были экспертами в одной области, они сосредоточились на вещах, которые они хорошо знают (например, фильтры изображений), и повторно использовали доступные компоненты.

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

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

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

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

Предлагайте новые идеи и берите на себя инициативу по их реализации.

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

- Распространяйте/поддерживайте культуру обратной связи. Проверка кода — один из самых эффективных способов дать/получить отзыв, а также отличный способ обсудить проблемы кодирования и поучиться у людей.

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

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

6. Выполните глубокую работу

Бар написал отличную статью о глубокой работе и о том, как это может стать вашим оружием, чтобы стать 10-кратным разработчиком.

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

Имейте в виду, что умение концентрироваться не является естественным даром, с которым вы рождаетесь. Это навык, который вы можете и должны изучать и практиковать.

Запирание себя в темной комнате на несколько часов автоматически не превратит вас в продуктивного разработчика. То, что вы что-то делаете, не означает, что это стоит делать. Сосредоточьтесь на вещах, которые имеют высокую отдачу от затраченных усилий.

Удалите все отвлекающие факторы, такие как приложения для обмена сообщениями, телефонные звонки, уведомления и т. д.

- Выберите один из методов повышения производительности (например, Техника помидора), чтобы максимизировать производительность и оптимизировать свою работу.

Каждый день добавляйте хотя бы один фрагмент кода.

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

Прежде чем уйти —

Если вам понравилась эта статья, нет лучшего способа поддержать меня, чем хлопнуть в ладоши и/или подписаться на Medium (Zakwan Jaroucheh). Это дает мне понять, что я должен писать больше!

Знаете ли вы, что вы можете дать до 50 👏, нажав на кнопку 👏? Попробуйте, если вам действительно понравилась эта статья! Спасибо.