Как стать хорошим разработчиком?

Пользователи сайта Quora поделились своим мнением по поводу того, как стать высококлассным разработчиком. Самые интересные ответы - в нашем материале.

 

Майк Циаральди, занимаюсь программированием уже 50 лет

Вот список советов, которые помогли мне добиться этого. (и, да, я считаю, что я более чем великолепен в разработке и внедрении систем программного обеспечения. Не Линус Торвальдс или Ричард Столлман, конечно, но тоже далеко не последний в списке.

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

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

3. Изучите основы компьютерной науки: как функционирует аппаратное обеспечение, как именно выполняет свою работу компилятор, каким образом работают различные алгоритмы. Разберитесь, как анализировать алгоритм, учитывая то, как много времени, памяти и прочих ресурсов ему понадобится для выполнения вашей задачи. Подобный анализ сможет показать вам, целесообразно ли использование того или иного алгоритма. Знаете ли вы, что означает «NP-полная задача»? Вам необходимо знать.

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

5. Осознайте то, насколько важно создавать и использовать надлежащую документацию. Наверное, это одна из самых важных вещей, которую игнорируют и не хотят понимать и принимать новички. Как вы сможете написать верную программу, если вы понятия не имеете, какую цель она должна выполнять и каким образом ей следует функционировать? И если вы, работая над ней, не зафиксируете всю эту информацию, то как об этом узнают те, кто будут с ней работать?  

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

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

 

 

Тим Бодро, на данный момент работает в компании Oracle Labs

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

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

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

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

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

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

Кроме того, существует список того, что не нужно делать, чтобы стать великим программистом:

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

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

3. Скорее всего, вам придется много работать с объектно-ориентированным программированием. В связи с этим с моей стороны не лишним будет еще раз напомнить, что объекты не реальны. Объект – это лишь кипа данных, привязанная к части кода. И иногда лучше всего выбрать что-то одно из этого.

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

5.  Не ввязывайтесь в проекты, в которых вы не сможете научиться чему-то новому.

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

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

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


Равичадран Джейв, Full stack-разработчик структуры программного обеспечения

1. Создавайте все, что угодно: игры, дизайн, анимацию.

2. Полюбите ошибки. Внимательно просматривайте каждое сообщение об ошибке. Станьте истинным фанатом ошибок. 

3. Показывайте свой код другим людям. Расскажите им, как вы написали эту программу – и не просто то, какими соображениями вы пользовались при ее создании, а тот путь, который вы прошли при написании самого ПО.

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

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

6. Следите за здоровьем. Какое-то время, пока мой компьютер компилировал, я поднимал гантели и ходил с ними из одной комнаты в другую, а потом выходил в коридор и шел обратно. Кодовая база тогда состояла из 15 000 строк – и это действительно большая цифра для компиляторов Clipper и Turbo C, так как им необходимо было сгенерировать объектный код для компоновщика, а с оперативной памятью в 256 Mb этот процесс проходил крайне медленно. Поэтому процесс поднимания и хождения с гантелями растягивался иногда на 30 минут, но именно это и помогало мне оставаться в хорошей физической форме!

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 2
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя mike

Лучшее у индуса:

старайтесь добавить в разрабатываемое вами ПО какую-то функцию, которой в данный момент еще нет в другом ПО.

Остальное тривиально, а кое-что и вздор. Например:

объекты не реальны.

Любопытно, что так высказался разраб со стажем 30 лет. Впрочем, переводчику, думаю, пофиг. :)

На самом деле после создания и запуска в своих потоках объекты живут самостоятельной жизнью.

Аватар пользователя mike

-- А вам что же, мой код не нравится? -- с любопытством спросил mike.
-- Ужасно не нравится.
-- А вы какой смотрели?
-- Никакого я вашего кода не видел! 
-- А как же вы говорите?
-- Ну что же тут такого, как будто я других не видел? Впрочем... разве что чудо? Хорошо, я готов принять на веру. Хорош ваш код, скажите сами?
-- Чудовищен! 
 

mike пишет:

 

На самом деле после создания и запуска в своих потоках объекты живут самостоятельной жизнью.


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

Я знаю, как стать хорошим разработчиком. Это очень просто. Надо хорошо разрабатывать.

Аватар пользователя mike

Логик,  14-ые плюсы -- мультипарадигменный язык.

Не знал, поди? :)

Эдуард пишет:

Я знаю, как стать хорошим разработчиком. Это очень просто. Надо хорошо разрабатывать.


Логично! (С) yes

P.S. Логика есть наука о логических тавтологиях. (С)

-1

mike пишет:

Логик,  14-ые плюсы -- мультипарадигменный язык.

Не знал, поди? :)


С++  это необъятный монстр. (С)