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

0
1663
views

На сайте Quora один из посетителей задал вопрос: «Что я действительно должен знать и делать, чтобы стать успешным разработчиком?». Ранее мы уже публиковали один из ответов, а сейчас составили подборку из других интересных комментариев.

Что нужно делать, чтобы стать успешным разработчиком

Брайан Кнапп

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

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

Так вот, этот парень был очень умен, но «настоящей» работы у него не было.

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

Что это за навыки, в которых он был так хорош?

  1. Умение писать программы.
  2. Коммуникационные навыки.

Если вы хотите стать успешным разработчиком, вам нужно как можно лучше отточить эти навыки. Это основа вашей карьеры.

Этот мой друг, о котором я рассказал, зарабатывал достаточно, чтобы хорошо жить в Сиэтле, так что, полагаю, его доходы исчислялись 6-значными числами. Может, что-то около 250-500 тыс. долларов в год.

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

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

Код и коммуникация. Больше для успеха ничего и не нужно.

Райан Йенч

  1. Ваш мозг должен быть несколько извращен, чтобы вы могли видеть смысл в чем-то подобном: if (reg_exp(‘^[A-Z0-9._%+-]{1,64}@(?:[A-Z0-9-]{1,63}\.){1,125}[A-Z]{2,63}$’, email) === TRUE) { // valid email };
  2. Будьте готовы много думать о дизайне и очень мало печатать код.
  3. Вы должны быть терпеливы и хорошо уметь фокусировать внимание, чтобы успешно справляться с проблемами по мере их поступления.
  4. Следует быть достаточно скромным, чтобы учиться у своих товарищей.
  5. Нужно быть достаточно подкованным в техническом плане, чтобы иметь возможность на равных со всеми применять лучшие подходы и хорошие шаблоны проектирования.
  6. Необходимо осознавать, что IT-сфера постоянно меняется. Это палка о двух концах: с одной стороны, это делает работу интересной, с другой — вы можете потратить время на изучение технологий, фреймворков и т. п. вещей, а они слишком быстро устареют.
  7. Стоит быть готовым к бессонным ночам, проведенным в размышлениях:
Мой код не работает, а я не знаю, почему.
Мой код работает, а я не знаю, почему.

Оуэн Кэмпбелл-Мур

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

Совершенно не лишними будут знания математики, в частности — теории вероятности, дискретной математики (комбинаторики) и линейной алгебры.

Опыт в веб-разработке это хорошо, но, честно говоря, это немного «мелко». Занимаясь веб-разработкой, вы скорее практикуетесь в запоминании, чем в наработке навыков более общего использования. Работа над веб-проектами это очень ценный опыт, но вы получите больше пользы, если займетесь еще и бэкендом.

  • Бэкенд: Ruby on Rails, Python + Django, Node + Express.
  • Фронтенд: «Vanilla» JS, JQuery, React, Angular (или Vue, или Polymer, или что-то еще).

Вам пригодится изучение объектно-ориентированного программирования. Лично я не согласен с некоторыми его аспектами, но важно чувствовать себя уверенно при работе с ним. Скорее всего, на Coursera можно найти курс и на эту тему.

Я бы посоветовал изучить базы данных. Досконально в них разбираться не нужно, просто следует знать достаточно, чтобы суметь набросать таблицы для базы данных и уметь объяснять основные понятия.

Также я бы посоветовал изучить сети.

Наконец, как наименее важное, я бы порекомендовал изучить конкурентное программирование («параллельное программирование»), в частности — программирование с семафорами и передачей сообщений.

При изучении всех этих тем у вас будет возможность поиграться с несколькими языками программирования, например, с Python, C, Java, JavaScript и, может, парой других. Способность уверенно писать код как минимум на двух из этих языков является необходимым условием. Это следует иметь в виду, изучая все вышеуказанные темы.

Что касается книг, которые стоит почитать, я бы посоветовал следующие:

  • «Effective Java»
  • «The Pragmatic Programmer»
  • «Code Complete»
  • «Cracking the Coding Interview» (вообще я не люблю книги с упором на прохождение собеседований, потому что в результате применения советов из этих книг люди оказываются в ситуациях, к которым не готовы. Но эта книга полезна в плане освежения знаний перед собеседованием).

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

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

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

Викрам Камат

Достигнуть успеха на поприще разработки программ вам помогут три вещи:

  • Заинтересованность. Интерес к IT очень облегчает все остальное. Это основа, на которой можно построить карьеру.
  • Практика. Посвящайте несколько часов в день практике в написании кода. Создавайте какие-то приложения просто ради интереса. Испытывайте новые концепции и подходы.
  • Знания. Читайте книги, статьи на сайтах, заходите на форумы, ориентированные на то, что вам интересно. Будьте в курсе последних изменений в технологиях.

Шагар Шривастава

Чтобы стать хорошим разработчиком, нужно следующее.

1. Аналитическое мышление

  • Четкого определения аналитического мышления нет, но одно можно сказать точно: если оно у вас есть, вы обладаете хорошей памятью, способны размышлять и анализировать данные, и при помощи всего этого решать проблемы.
  • К сожалению, это самая важная и нужная черта разработчика программ. Почему «к сожалению»? Ну, это означает, что не каждый способен стать хорошим разработчиком, даже если сильно этого хочет. Наличие аналитического мышления это во многом врожденная черта. Если ее у вас нет, лучше поискать другую сферу интересов.
  • Решение большого количества алгоритмических и логических задач может повысить уровень аналитических способностей. Однако, выше головы не прыгнешь, у каждого свой предел развития природных талантов.

2. Умение видеть картину крупным планом

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

3. Бизнес-ориентированный подход к разработке

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

Разработка это не только код

4. Стремление к командной работе

  • Хороший разработчик это не просто человек, весь день сидящий за компьютером и пишущий код. Для успеха проекта критически важное значение имеет коммуникация в команде. Обмен мыслями, идеями, знаниями и опытом может существенно улучшить качество решений и повысить эффективность работы.
  • Разработчик, который не хочет или не может коммуницировать с другими членами команды, не впишется в эту команду и в процесс разработки программы. Я знаю, что есть много разработчиков-интровертов, очень хорошо работающих и производящих очень качественный код. Но в методологии Agile, очень распространенной в IT-компаниях, чистый кодинг недостаточен. Одним из важнейших ключей к успеху является коммуникация внутри команды.

Луи Монтуи

Стройте что-нибудь! Моя основная претензия ко многим свежевыпущенным из колледжей программистам состоит в том, что они не используют свои навыки для создания чего-либо. Процесс построения настоящего приложения или работы над уже существующим open source продуктом, которым люди на самом деле пользуются, это невероятный учебный опыт. Теории и процедуры, изученные в вузе, очень тяжело «впитываются», пока вы не столкнетесь с реальностью создания настоящего продукта при помощи программирования.

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here