newsmode
search
Меню
arrow_back Назад

Advice on How to Become a Programmer | Rob Walling

auto_awesomeКраткое саммари

Роб Уоллинг отвечает читателю на три вопроса о том, как стать хорошим программистом. Он подчёркивает необходимость постоянного обучения, перехода от синтаксиса языков к концепциям (D.R.Y., теория разбитых окон, переиспользование кода) и общения с более опытными разработчиками — в том числе через блоги Скотта Гатри, Рокки Лхотки и других. Среди путей получения знаний автор выше всего ставит ученичество у опытного разработчика, затем работу с полной занятостью, книги (The Pragmatic Programmer, Code Complete, Facts and Fallacies) и журналы; колледж даёт теорию, но проигрывает практике, а техшколы — наоборот. Знание математики, по его мнению, не обязательно для большинства задач (кроме игр), но люди с математическим складом ума обычно осваивают код быстрее. В конце автор предлагает бесплатную 33-страничную электронную книгу How to Become a Programmer.

Советы о том, как стать программистом

Читатель Software by Rob пишет:

Я хочу научиться программировать:

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

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

В: Какой ваш совет о том, как стать хорошим программистом?

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

Вот элементы, которые я считаю ключевыми:

Учитесь, учитесь, учитесь. У вас должен быть ненасытный аппетит к знаниям. Обычно это означает читать книгу по программированию раз в несколько недель в начале пути и переходить к более концептуальным книгам, таким как The Pragmatic Programmer, Code Complete и Facts and Fallacies, спустя 6–12 месяцев программирования на полную ставку. Я не могу переоценить пользу чтения, как и пользу полного погружения в код в начале пути. Переходите к концепциям. Обучение тому, как стать хорошим программистом, начинается с изучения логических концепций и синтаксиса языка; их гораздо проще понимать вместе. Но хорошие разработчики быстро начинают желать знаний, выходящих за рамки синтаксиса. Perl, PHP, Java, ColdFusion, ASP… все языки, которые я использовал в первые 18 месяцев работы профессиональным программистом. Хорошим программистом меня сделало не знание каждого языка, а стремление понять и отточить такие концепции, как D.R.Y., теория разбитых окон и переиспользование кода. Общайтесь с программистами лучше вас. Как гитарист, больше всего о ремесле сочинения песен я узнавал, когда общался с людьми, которые были намного лучше меня. То же самое верно и для написания программ. И благодаря этой новомодной штуке под названием интернет вам даже не нужно физически присутствовать, чтобы быть частью сообщества: читайте блоги ведущих программистов (Scott Guthrie, Rocky Lhotka, Dino Esposito, Scott Mitchell и т. д.), заглядывайте на программистские форумы и смотрите чужой код. Чтение исходников может быть мучительным, но чем больше вы видите, тем лучше сможете отличать понятный код от того, в котором нужно иметь степень PhD, чтобы разобраться, как они выводят «Hello World» на экран.

В: Как приобрести необходимые знания?

Есть несколько вариантов:

Программистское ученичество. Если вы ещё не читали мою статью о программистском ученичестве, рекомендую это сделать. Лучший (и, я бы сказал, самый быстрый) способ стать хорошим программистом — писать код под крылом опытного разработчика, который научит вас не только основам, но и глубоким знаниям, на которые уходят годы опыта. Я ставлю этот вариант существенно выше всех остальных. Учитесь, делая. Хотите научиться программировать? Найдите работу, где надо писать код. Мне всё равно, будут ли вам платить $5 в час; за 1 месяц работы разработчиком на полной ставке вы продвинетесь больше, чем за год программирования как хобби. Нет лучшего способа научиться программировать, чем писать код. Книги и журналы. Книги и журналы были ключевыми в моём пути за знаниями в программировании. Когда я в прошлом брал учеников, я использовал книги как основной источник базовых знаний, заставляя их читать по 1–2 книге по программированию в месяц, а более продвинутым техникам обучая лично. Колледж. Пройдя этот путь сам, я хорошо осознаю ограничения системы американских колледжей в подготовке студентов к карьере в программировании. Подготовить их к карьере в определении little-o и big-O нотации — это да, но реально писать код с самого начала? Нет. Колледж хорош для высокоуровневой теории, но рабочий опыт обходит его, когда речь идёт о том, чтобы научиться разработке ПО. Техшкола. Я работал лишь с одним программистом, который окончил техническую школу, и у неё были хорошие знания языка и концепций кодирования, но не так много теории и знаний по проектированию. В результате её код был утилитарным и использовал много решений «в лоб», но часто не был хорошо спроектирован и легко поддерживаем. Очевидно, есть баланс между нехваткой практических знаний (колледж) и нехваткой теоретических (техшкола). Я опираюсь на очень узкую выборку, так что не воспринимайте это как обобщённую оценку техшкол. Возможно, читатель SbR с большим опытом в этой области может нас просветить. К слову, сетевые администраторы, с которыми я работал, окончившие техшколы, были хорошо подготовлены, и с ними было приятно работать. Возможно, именно нюансы сетей лучше подходят такому практическому подходу к обучению.

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

Если коротко — нет; знание математики не обязательно, чтобы быть программистом.

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

Однако, по личному опыту, людям, которым легко даётся математика и которые любят решать логические задачи (будь то алгебра или как сдвинуть гору Фудзи), обычно быстрее учатся коду и больше получают от него удовольствия в долгосрочной перспективе. Тут нужен особенный склад ума, друзья мои.

==

Если вам интересно почитать больше на тему того, как стать программистом, я написал совершенно бесплатную электронную книгу на 33 страницы под названием How to Become a Programmer: Everything (Non-technical) You Need to Know. Скачать её можно здесь.