Читать нас в Telegram

Слово «гуманитарий» часто используется как своеобразное ругательство или даже уничижительное название болезни — некое редчайшее поражение мозга, мешающее получить работу, за исключением, конечно, воспетого мемами МакДоналдса.

Почти уверена, что большая часть представителей гуманитарных профессий уже стучит пальцами по клавиатуре, собираясь объяснить мне, например, почему лингвистика наука никак не гуманитарная, или рассказать про количество математики, необходимое для постижения философии (Виттгенштейн, в конце концов!).

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

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

Для начала маленький спойлер: сможете.

Страх

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

«Я не занималась(лся) математикой со времен старшей школы и до сих пор, но не могу сдержать глубокого отвращения при любом упоминании…»

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

По своему принципу очень часто программирование напоминает изучение нового иностранного языка: ты просто заучиваешь правила, которым ты должен следовать, чтобы заставить программу делать то, что ты хочешь. (Так что если у вас хорошо с изучением языков, вы уже можете мотать к концу статьи и смотреть на ресурсы для обучения).

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

Преимущества гуманитарного прошлого

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

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

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

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

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

С чего начать?

Многие начинают с Python — с одной стороны, это очень простой язык, с другой — невероятно популярный и потому хорошо описанный, снабженный дополнительными библиотеками на все случаи жизни (мы уже описывали, как с помощью Python собирать данные из ВК или сделать корпус из Twitter’а, как обкачивать HTML… а вообще Python может практически все, что вообще умеют компьютеры). Книг и онлайн-курсов для изучения языка — огромное множество. Но здесь работает та же логика, что и с изучением иностранного языка: лучше всего он учится в практике. Я бы порекомендовала выбрать себе какой-нибудь курс с интерактивными элементами (на Курсере, если вам нравится платить деньги, или на Udacity) и выбрать сайт с программистскими задачками, которые вы сможете постепенно решать по ходу роста вашего уровня.

Где учиться?

1. Какие курсы прослушать?

У Яндекса есть классный исчерпывающий список рекомендаций, что и как учить. Из-за большого объема в нем легко запутаться. Старайтесь выбрать что-то одно, а не пытаться освоить все одновременно (понимаю, это непросто).

2. Где практиковать программирование?

Для начинающих, владеющих английским языком, подойдет, например, Codewars. Можно выбрать язык программирования, уровень владения языка и сферу, в которой задачка будет. Например, если вы хотите заниматься Natural language processing (обработкой естественного языка), то вы можете брать задачи только в этой области и т.д. После того как вы решили одну из «кат» (так на японский манер называются задачки для кодеров), вы можете ознакомиться с альтернативными решениями — это бывает безумно полезно и позволяет найти собственный стиль.

Более высокий уровень требуется для участия и решения задач на Codeforces, на сайте постоянно проходят соревнования.

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