Каким вы представляете себе идеального программиста? Компьютерный гений, который занимается программированием с семи лет и делает приложения на миллион долларов? Это опытный разработчик с 10 или 20 годами в бизнесе, который знает все языки (но, конечно, только хорошие) и может создать веб-сайт за то время, которое вам понадобится, чтобы выпить еще одну чашку кофе? Неужели это артист кода, который может писать код настолько красиво, что заставляет всех одновременно плакать от трепета и скрежетать зубами от зависти?

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

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

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

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

1. Напишите чистый код.

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

Дополнительная информация о написании хорошего кода (не партнерские ссылки, не волнуйтесь!):
Чистый код Роберта К. Мартина
Прагматичный программист Эндрю Ханта и Дэвида Томаса
Рефакторинг: улучшение дизайна существующего кода

2. Будьте в курсе тенденций.

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

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

Hacker News
A List Apart
Smashing Magazine
CSS Tricks

3. Будьте открыты для нового и быстро изучайте их.

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

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

4. Сосредоточьтесь и работайте эффективно.

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

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

Дополнительное чтение:
Глубокая работа Кэла Ньюпорта

5. Точно оценивайте время, необходимое для выполнения задач.

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

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

Один из способов оценить, сколько времени у вас уйдет на завершение проекта, - это отслеживать свое время при кодировании. (Это также идет рука об руку с №4, потому что ваши оценки будут лучше, если вы не просматриваете Reddit половину времени)

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

6. Уметь объяснять технические концепции нетехническим людям.

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

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

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

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

7. Не заставляйте свое эго работать.

Достичь этого 100% каждый день невозможно для всех, кроме лучших из нас. Но когда дело доходит до работы, мы можем, по крайней мере, постараться не руководствоваться исключительно нашим эго. Что это значит? Это означает, что вы не просто хотите хорошо выглядеть. Вы хотите, чтобы ваш проект, ваша команда и ваша компания тоже хорошо выглядели. Если вы усердно работаете, чтобы помогать другим и обеспечивать успех для всех, а не только для себя, людям понравится работать с вами. Но если вы изо всех сил наступаете на других, чтобы достичь того, чего хотите для себя, вы поджигаете мост. И вы будете в центре, когда он рухнет. Конечно, вы можете получить краткосрочные выгоды, но действительно ли вы хотите быть тем засранцем, с которым все ненавидят работать?

8. Не скрывайте своих ошибок.

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

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

9. Уметь просить помощи у других и помогать другим.

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

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

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

Если вам понравилось читать этот пост, не стесняйтесь ставить ему или два! Что-нибудь из этих вещей вызвало у вас отклик или поразило вас? Не согласны с кем-либо из них? Оставьте комментарий ниже.

📝 ⇨ 📬

Подпишитесь на @thecodercoder, чтобы получать еженедельные электронные письма со статьями, подобными этой!