Нет, вам не нужно учиться программированию!

Дата публикации:Ноябрь 30, 2013

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

Представьте себе, что вдруг интернет бы наводнился статьями с заголовками: «Почему каждый должен уметь вязать». Отдавая должное уважение людям, связанным с вязанием, это выглядело бы нелепо. Оживленные крики о том, что нужно учиться программированию, стали столь быстро распространяющимися, что это стало практически эпидемией: и вот мы уже сталкиваемся с такими ситуациями, что разработчик ПО из Нью-Йорка принимает участие в получившей широкую огласку попытке обучить бомжа навыкам программирования. Мэр Нью-Йорка Майкл Блумберг лихо заявил прессе в прошлом году, что запланировал пройти обучающие курсы в Codecademy; к тому же вы можете отыскать руководства по программированию от Билла Гейтса и Марка Цукерберга на Code.org. Странно, но даже такие далекие от технических знаний люди, как инвесторы, призывают людей обучаться программированию.

Я – программист. Считаю ли я, что все должны обучаться программированию? Нет. И вот, почему я так думаю.

Удовольствие от своего дела

coding1

Классическая книга, описывающее управление проектами «The Mythical Man-Month» начинается описанием радостей и невзгод программирования:

«Почему программирование приносит удовольствие? Что может получить практикующий его человек в качестве отдачи?

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

Я не помню, что вбирали в себя те первые программы, которые я написал; знаю лишь, что получал от этого удовольствие. В один из рождественских праздников 80-годов мои сестры и я получили в подарок персональный компьютер Sharp. В основном мы использовали его, чтобы играть в Pac-Man (который был сохранен на кассетной ленте), однако машина также шла вместе с BASIC-компилятором, и именно тогда я впервые научился программировать. Кодирование показалось мне простым, и выступало для меня тем, чем я мог заниматься несколько часов подряд. Как и игры, кодирование постоянно связано с вами, и по этой причине оно может стать очень затягивающим, отнимая много времени и зачастую сводя с ума. При описании невзгод программирования Брукс указывает на «безотрадные часы утомительного, кропотливого труда» и идеальную точность, требуемую при взаимодействии с машиной. «Если один пасс, одно действие в заклинании не будет стоять в жестко зафиксированной форме, магия не сработает».

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

Почему вы хотите программировать?

coding2

Программирование – это не цель. Это инструмент для решения проблем. Даже профессиональные разработчики порой забывают про это, увязая в деталях нового языка или дотошных спорах по поводу идеальной IDE (IDE — интегрированная среда разработки). Самые лучшие кандидаты на «обучение программированию» зачастую являются учеными или профессионалами в других областях, которые могут использовать код для решения встающих перед ними проблем. Подумайте о том, что способен извлечь для себя социолог из данных с Facebook или Twitter. Нобелевская премия по химии была присуждена за компьютерное моделирование химических реакций. Большая часть кодирования, выполненного исследователями, не выдержала бы никакой критики в профессиональной команде разработчиков ПО, и зачастую была бы отнесена к категории скриптинга; однако это не означает, что некоторые навыки программирования не способны улучшить результаты в других научных областях.

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

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

Код не может решить все проблемы

coding3

То время, которое программисты тратят на сражение с проблемами, зачастую придуманными самими программистами, приводит людей к мысли, что любая сложность может быть решена написанием кода – более или менее качественного. Это не так. Самые масштабные проблемы всегда связаны с людьми, а люди раздражающе неряшливы и непредсказуемы. Одно из удовольствий кодирования состоит в том, что когда вы разыскиваете идеальное заклинание, машина обязательно выполнит то, что вы просите, раз за разом, в надежном режиме. Люди редко поступают так, и системы, которые опираются на людей, не справляются с этим тоже. Данное заблуждение отлично иллюстрируется историей с разработчиком Патриком Макконлогом, который попытался научить бомжа по имени Лео основам программирования. Проблема не в том, что Лео не способен учиться, нет; она состоит в том, что есть очень много иных ресурсов, которые требуются для того, чтобы стать программистом. Несколько дней назад Лео был арестован за проникновение на территорию городского парка, и его ноутбук был конфискован. Бездомность – это комплексная проблема, и одно лишь программирование ее не решит.

Учимся программировать… за 10 лет

coding4

Питер Норвиг, директор по исследованиям в Google, написал, что превалирующая тенденция такова: «плохое программирование – это просто. Даже идиоты смогут обучиться ему за 21 день, не имея никаких знаний». Тот факт, что вы можете извлечь звук из флейты, не означает, что вы можете сочинить концерт для флейты. Аналогично, написание нескольких JavaScript-файлов не говорит о том, что вы можете построить сложные, масштабируемые системы.

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

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

Вместо этого научитесь понимать программистов!

coding6

Если вы все еще хотите работать в техническом мире, но уже пересмотрели свой взгляд на программирование, дизайнер Ник Марш предлагает делать то, что программисты считают полезным. Какими бы крутыми не были разработчики, есть много вещей, которые они ненавидят делать или в которых они недостаточно преуспели. Программирование требует определенного уровня внимательности, которое граничит с трубчатым зрением, и если и существует такая вещь, которую ненавидят разработчики, то это – отвлекающие факторы. Для программиста «отвлекающим фактором» является работа с бизнесменами, обслуживающим персоналом, клиентами или, фактически, любыми людьми вне технической команды. Если вы хотите понравиться разработчикам, скиньте с них бремя некоторых операций, которые они зачастую рассматривают как пустую трату своего времени. Умелый менеджер по продукту, к примеру, так же важен для успеха, как и компетентный кодер. Не важно, насколько чист код, если никто не хочет купить продукт. Переведите язык разработчиков в то, что понятно пользователям, и наоборот. Рекламируйте продукт. Все создатели креативных решений хотят, чтобы их труды использовались. Марш пришел к заключению, что гораздо важнее понять кодеров, чем понять код.

Изучите работу привычных программ

coding7

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

Научитесь чему-то совершенно иному

coding8

Греческий врач Гиппократ сказал: «Ars longa, vita brevis», что означает: «жизнь коротка, наука обширна». Поэтому выбирайте свое ремесло с умом. То время, которое вы сохранили, отказавшись от изучения кода, потратьте на что-то иное, от чего вы получаете гораздо большее удовольствие. Игра на музыкальном инструменте, как было доказано, улучшает различные умственные функции, включая креативность, принося удовольствие играющему. Йога расширяет ваше мировосприятие, делая ваше тело более гибким. Чтобы получать удовольствие каждый день, не изучайте программирование; научитесь лучше приготовлению пищи. Наконец, технический руководитель Rands In Repose предлагает научиться вашему же родному языку.

«Ваши читатели настроены более критически, нежели интерпретаторы Python. Мало того, что они заботятся о синтаксисе – они также хотят чему-то обучиться, и, возможно, даже развлечься, пока идет ваше обучение. Успех означает, что они будут возвращаться к вам. Неудача – одинокая тишина. Теперь Python кажется довольно безобидным, верно?»

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

Источник: www.fastcolabs.com

Поделиться

4 комментария

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

    • Architect Of Ruin says:

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

  2. Безусловно, уже давно прошли те времена, когда для того чтобы выполнить какое-нибудь простенькое вычисление на компьютере, необходимо было долгое время работать над программой, которая это вычисление сделает. Сейчас вся электронно-вычислительная техника повернулась лицом к конечному пользователю, и стремится сделать его жизнь максимально простой.
    Действительно, зачем мне учиться программировать если мне это просто не нужно. Что мне нужно? Чтобы программа выполняла свою работу, а если она с ней не справляется, то в сети можно спокойно скачать ее аналог, ну или вызвать специалиста для ее настройки :)

  3. Советую бесплатный курс «Программировать может каждый» http://pmok.ru

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.