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

6-летние дети пишут приложения для iOS, 45-летние подкачанные мужики-гуманитарии менее чем за полгода становятся junior-разработчиками, а через пару лет — хорошими профессионалами.

Чтобы полностью избавиться от предрассудков, давайте на время отложим скептицизм и открытыми глазами посмотрим на программирование в 2016-м.

Hello World!

Много лет назад программное обеспечение было уделом исследовательских институтов и корпораций. Компьютеры тогда выполняли функцию очень продвинутых калькуляторов — посчитать, рассчитать, обработать данные… Пользователями были инженеры, аналитики, учёные. Поэтому для программиста было важно владеть математикой, физикой и кучей других дисциплин.

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

Вот пример машинного кода, который рассчитывает значение числа-n в ряде Фибоначчи:

А вот популярный язык того времени — Ассемблер. Та же функция на нём:

Тут не только нужно уметь писать код, но и врубаться в задачу. И вот в это мрачное время суровых математиков внезапно приходит эра персональных компьютеров.

Трудности перевода

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

Задачи программистов начали смещаться — если раньше их заказчики хотели рассчитать число Пи с точностью до 10 миллионов знаков, то теперь требовалось сделать просто удобный календарь с заметками.

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

Возьмём ту же историю с рядом Фибоначчи. Вот решение задачи на языке С:

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

А ещё начал расти спрос на программистов. Стало ясно — чтобы затащить специалистов в эту профессию, нужно облегчить им вход. В том числе поэтому новые языки старались сделать максимально удобными.

Джобсконда

Новый этап сближения гуманитариев и программирования произошёл с появлением iPhone. Когда выяснилось, что смартфоны покорят мир, открылся новый рынок сбыта для программистов. Apple, понимая, что приложения для iPhone создают невероятную ценность для компании, направила кучу денег на популяризацию программирования. Одним из шагов этой кампании стало появление языка Swift — очень простого инструмента для создания мобильных приложений.

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

Например, язык Ruby, который стал одним из пионеров доступной разработки, с каждой версией становится всё логичнее и проще для понимания.

Просто посмотрите на кусок кода на Ruby:

Программирование теперь похоже на составление кулинарного рецепта: возьми то, нарежь так, положи туда… Вот мы и дошли до важной точки — рецепт может составить каждый, написать программу — тоже.

Реальный опыт

Смотрите, это Тимофей. Он прошёл курс по Ruby в #tceh. Ему 11 лет. У него нет ни инженерного образования, ни знания вузовской математики. Но зато у него есть большое желание творить. Сейчас Тимофей бегло пишет программы на Ruby.

А это Максим, тоже с курса по Ruby. Он запускает стартапы. Раньше ему требовалось искать программиста, чтобы сделать прототип. Теперь он делает их сам — быстро и качественно. А ещё Максим по образованию руководитель народного хора. Шах и мат, неверующие в гуманитариев.

Примеров много. А вот что говорит Алексей Поимцев — руководитель студии веб-разработки Progress Engine и преподаватель курса по Ruby, который стартует в #tceh в середине мая:

«Когда я нанимаю программиста, мне плевать, что и когда он заканчивал. Хоть виолончелист, хоть сварщик, хоть танкист. Главное — чтобы человек был нормальный, хотел учиться и задачи решал. Поэтому у меня редко возникает негатив от заказчиков — мои люди приходят и делают так, чтобы было хорошо для бизнеса».

Учить программирование в 2016-м, всё равно что учить английский — практика, усердие и всё получится. И неважно, что у вас за плечами.

Критика гуманитариев

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

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

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

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

Третий аргумент я, простите, оставлю без комментариев. Как и все другие, порождённые завистью. «Не технарь — не разработчик» настолько же близко к реальности, насколько близка к ней фраза «не служил в армии — не мужик».

***

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

Никита Широбоков,

Автор #tceh