Программирование для гуманитариев
6.69K subscribers
67 photos
5 videos
219 links
Личный опыт того, как скипнуть в IT с гуманитарным образованием. Что для этого делать, чего стоит бояться (спойлер: ничего!) и чего ожидать. Рассею мифы о программировании и мире IT.
Бот для вопросов об IT: @hum_it_bot
Download Telegram
Всем привет!

Когда-то я закончила гуманитарный вуз, где изучала историю и иностранные языки.
После окончания ВУЗа и долгих попыток искать работу в близких к моему образованию и привычным скиллам сферах, я случайно попробовала пройти курс по программированию.
С тех пор прошло 7 лет (а на 2023 год уже и все 11). Сейчас я ведущий разработчик ПО в крупной компании.

В этом канале я рассказываю, как стать программистом, если IT - это совсем не про вас.
И почему бояться здесь нечего.
Разбираю вопросы новичков, развенчиваю мифы и оказываю моральную поддержку.

FAQ:
Хочу в IT. С чего начать?

Нужно ли мне знать английский язык?

Мне больше 30-40 лет. Не поздно ли начинать?

Я не знаю математики. Можно мне в IT?

Если у вас есть вопрос, задавайте его в бота: @hum_it_bot. А так же делитесь впечатлениями от курсов, которые вы проходили.
👍3
Программирование для гуманитариев pinned «Всем привет! Когда-то я закончила гуманитарный вуз, где изучала историю и иностранные языки. После окончания ВУЗа и долгих попыток искать работу в близких к моему образованию и привычным скиллам сферах, я случайно попробовала пройти курс по программированию.…»
«Математика - это не моё»

Математика - это не всегда must have. Про себя я не могу сказать, что хорошо помню хоть что-то из курсов математики. Я честно пыталась проходить онлайн-курсы по матанализу, комбинаторике, теории вероятностей, но после получения сертификатов почти сразу всё забыла. Об дискретную математику, кажется, сломала себе мозги, а на математической статистике - сразу сдалась (очень неудачный преподаватель попался).

Незнание математики не закрывает путь в IT, но есть профессии, где матан прямо нужен - например, data science. Дата-саентисты могут очень плохо писать код, вообще не знать что такое ssh, и быть никакими айтишниками (таких встречаю сплошь и рядом) - там главное матан. Также матан нужен для программирования сложных вещей, где он действительно используется - например, в компьютерной графике.

Но многие легко обходятся без него.

А вообще я за матан. «Это не моё» скорее всего значит, что школьные учителя отбили всякий интерес к предмету. А развивать мозг, строить новые нейронные связи - это очень круто. Особенно нейронные связи там, где их недостаёт. С возрастом пластичность мозга падает, но именно обучение новым непривычным вещам - замедляет этот процесс. По некоторым данным это может даже противостоять нейро-дегенеративным заболеваниям, например, тому же Альцгеймеру (но это не точно).

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

Всё очень зависит от подачи.
Нужно ли высшее образование?

Это очень популярных холивар среди айтишников - некоторые самоучки любят топить за то, что высшее образование никому не нужно. Другие разработчики наоборот считают, что фундаментальные основы computer science закладываются именно в ВУЗе.

Лично у меня нет второго высшего (технического) образования. Мне не хотелось идти еще на 3 года в университет и писать очередной диплом (мне до сих пор снятся сны о том, что надо писать диплом). Я прошла очень много онлайн-курсов, но отсутствие корочки сильно подпитывало мой синдром самозванца. Поэтому, уже работая программистом, я всё же получила диплом - о профессиональной переподготовке по специальности Информационные технологии. Для этого я прошла годовой курс из 12 предметов на онлайн-платформе stepik, сдала все экзамены там и мне почтой выслали мою корочку - из Санкт-Петербургского Академического университета. Есть ли польза от этой корочки? Не от знаний и навыков, а именно от самой картонки и вкладыша? - Да не особо, разве что психологическая чисто для меня. А по сути это ровно такие же онлайн-курсы, как и все остальные, хоть и с дипломом гос-образца.

Моё убеждение состоит в том, что качественно полученное высшее (техническое) образование в крутом ВУЗе - это жирный плюс. Со мной работают ребята, которые недавно закончили Бауманку, а к ней в придачу еще и курсы Технопарк (совместный проект mail.ru и Бауманки). И это невероятно крутые люди - в свои 22-25 лет это уже полноценные зрелые специалисты, а знают они побольше иных «бывалых» с 10-летним опытом. Говорят, Технопарк - это прямо топчик, оттуда выходят не студенты, а специалисты с опытом продуктовой разработки.

С другой стороны - сама по себе учеба в ВУЗе не гарантирует того, что перед вами хороший специалист. И даже научная степень и наличие диссертаций. Я сталкивалась со вчерашними выпускниками (вроде бы неплохих) ВУЗов, которые приходили на работу как студенты на скучные лекции - витали где-то в облаках на совещаниях, а когда к ним обращались - делали круглые глаза и удивленно лепетали что-то из серии «это мы не проходили, это нам не задавали». Часто вчерашние студенты - это очень инфантильные ребята, которые не готовы самостоятельно искать информацию и разбираться в своих задачах - им нужно, чтобы их водили за ручку и «вытирали слюни», по выражению моего начальника. А знания, которые гипотетически у них должны быть - часто уже забыты, и про них они говорят «да, что-то такое было на 2м курсе, но я уже ничего не помню».

Причем, тут проблема не столько в уровне подготовки, сколько в психологии. Человек еще не научился брать на себя ответственность, он не умеет работать, не умеет коммуницировать с коллегами, принимать активное участие в решении задач. Возможно, проблема тут в формате самого образования - где у учащихся очень пассивная роль, это становится их зоной комфорта, и её же они приносят с собой на работу. Я начала работать программистом в 25 лет - и, казалось, бы с нулевым опытом в этой сфере, казалось бы - все знания получены из обрывочных источников - онлайн-курсов да книжек - но таких проблем как эти студенты не испытывала. Потому что это была далеко не первая (и даже не 5я) моя работа, и в этом смысле я была уже достаточно зрелым специалистом. Тот случай, когда возраст магическим образом оказывается плюсом, а не минусом, как ожидаешь.

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

Или вообще социофобы.

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

Но, с другой стороны, всё больше компаний приходят к выводу, что коммуникационные навыки - это первое, на что нужно обращать внимание, когда нанимаешь айтишника. Умение общаться, доступно излагать информацию, проявлять эмпатию и понимать интересы собеседника, разрешать конфликтные ситуации - всё это принято сейчас называть soft skills в противовес hard skills - собственно техническим навыкам и знаниям.

Человек может быть гением программирования, но если проседает общение - вполне вероятно, что работодатель предпочтёт ему кандидата со средней квалификацией, но хорошо идущего на контакт. Разработка - это часто прежде всего работа в команде, над общим продуктом. Здесь нужно уметь договариваться, обосновывать свои решения. Человек из разряда «я всегда прав» и «я самый умный» - это плохой коллега, даже если он действительно умный. Человек «не от мира сего», который привык всё делать сам и ни с кем не синхронизироваться - очень вероятно, будет делать совсем не то, что от него требуется - ну я художник, я так вижу. Есть масса примеров, как именно может проявляться недостаток софт скиллов - например, быть недружелюбным и создавать напряженную, конфликтную атмосферу в коллективе.

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

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

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

По крайней мере в том случае, если это окружение не мотивирует вас развиваться.

Вон у Маши зарплата 20 тысяч, у Ирки - 15. Значит - все столько получают.

- Да, мой муж алкоголик, но зато хоть не дерется. А у кого лучше? Мой-то хоть работает - а у Ленки вообще весь день на диване лежит, только за водкой и выходит.

- Да, у меня не интересная работа, но разве кто-то любит свою работу? Хоть на выходных выходить не заставляют - а вот Васе приходится и по субботам часто смены брать - и то без доплаты, иначе сократят. Это у меня еще хорошая работа. На меня там хоть не орут - а вон у Кати начальница такая мегера - мозг чайной ложечкой выедает. Лучше сидеть на попе ровно

Вот примерно так многие и рассуждают.

Я это к чему? То, что в вашем окружении у всех дела не очень, не значит, что так же должно быть и у вас. Я за то, чтобы не отказывать себе в лучшей жизни - почему не найти себе профессию поинтереснее, работу более высокооплачиваемую, достойного партнера? Зачем довольствоваться малым и всю жизнь проводить в условной нищете? Почти всегда можно найти пути, как вкладываться в себя и развиваться.
1
Программирование - это не моё

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

Откуда тут взяться программированию?

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

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

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

На тот момент моя должность формально называлась контент-менеджер и я зарабатывала 35 тысяч рублей - но и доллар тогда стоил 30. Однажды мне не спалось, я думала о своих карьерных планах и перспективах. Я встала с кровати - и пошла изучать сайт hh. Стала искать, сколько может зарабатывать контент-менеджер. Максимальная цена вакансии на hh была 50 тысяч, дальше всё - потолок, по крайней мере из того, что там было. А сколько зарабатывает Python-разработчик - подумала я? У меня за плечами уже была парочка необременительных онлайн-курсов по питону. Для питон-разработчиков минимальная зарплата была 60 тысяч, а для не новичков - уже 80, 100, 120 итд. И это было до 2014 года - нефть еще стоила 100, а доллар - 30 - так что те 100 тысяч рублей были совсем не той цифрой, что сейчас. Хмм… - подумала я. И с этого момента решила заняться программированием вплотную, серьезно и с полным погружением.

Заодно это был эксперимент - можно ли выучиться на новую профессию только с помощью онлайн-курсов? Спойлер: можно.

Кстати, по поводу того, как прийти в IT - гарвардский преподаватель курса CS50 - (computer science) - рассказывал, что когда-то давно он записался на этот курс просто так - случайно, из любопытсва. Его в то время интересовали история, литература, и тому подобные предметы. Но он решил попробовать что-то необычное - и вот теперь он уже сам преподает computer science. Так что изначальный бэкграунд - может быть совсем другим.

С другой стороны, я знаю людей, которые учились на программистов в ВУЗе, но поняли, что им не нравится эта профессия и ушли в другие сферы.

Не бойтесь пробовать новое. У вас всё получится!
👍31
Можно ли учиться и работать одновременно?

Мой ответ, наверно, разочарует читателей. Но скорее нет, чем да. При условии, что работа full-time и требует внимания, концентрации и интеллектуальных усилий.

Для того, чтобы много и полноценно учиться гораздо лучше подойдёт part-time подработка или какая-то халтурка.

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

2я «итерация» совмещения учебы с работой была, когда я уже год как устроилась работать программистом, и начинала скучать - нового и интересного становилось всё меньше, задачи стали скатываться в рутину, а я сама - покрываться мхом. Тогда-то я подумала, что мне не хватает какого-то официального диплома - а то люди догадаются, что я «не настоящий» программист. Тогда мне попалась годовая онлайн-программа из 12 курсов, по завершению которой давали диплом о профессиональной переподготовке - не второе высшее, но уже что-то.

И скажу я вам, это был очень непростой год. Всё, что было в этой учебной программе связано с программированием - не особенно обременяло, так как было более или менее знакомым. Но матан… Приходилось вставать через день в 5 утра, чтобы решать этот страшный матан. Через день - потому что нужно было всё-таки отсыпаться. В дни утреннего матана я была нервной и злой до чертиков. В дни досыпа - чувствовала себя гораздо счастливее.

Почему утром, а не вечером? Вечером тоже приходилось учиться, куда ж без этого. Но после рабочего дня производительность мозга уже совсем не та. И то, что утром можно сделать за полчаса, вечером потребовало бы несколько часов. Так что на вечер лучше оставлять задания попроще.

Проходить по 3 курса в месяц при full-time работе, где тоже нужно думать - это уже слишком много, хотя казалось бы. Не потому что материал сложный (не особо он сложный), а потому что там дедлайны на задания, зачёты, экзамены - и катастрофически не хватало времени, чтобы к ним успевать - всё приходилось делать галопом.

А вообще дедлайны - это хорошо. Без дедлайнов очень сложно что-либо довести до разумной стадии и когда-либо закончить. Тянуть и делать всё «в своем темпе» можно бесконечно, как и «доводить до совершенства».

Стоит ли говорить, что все хобби и развлечения на время летят в трубу? Чтение (не технической литературы), гитарка, тусовки (ладно, тусовки - это не про меня) - всё это можно смело отложить до лучших времен. Время - беспощадная сука. Времени никогда не хватает.

Не слишком обнадеживающе звучит? Но ведь успех в любой профессиональной деятельности требует усилий и времени. Лично мне понадобилось 2 года разных онлайн курсов, чтобы найти первую работу в качестве айтишника - и возможно, это можно было сделать и раньше (если бы не синдром самозванца). 2 года - это не так уж и много, если подумать. А дальше рельсы были уже смазаны.
- Сложно разные технологии в одно время читать. Может есть лайфхак как можно 2 языка учить? Основной у меня Ruby, но нужен JS/jQuery ещё.

Если честно, я не вижу особой проблемы в том, чтобы изучать одновременно 2 (или более) языков программирования. Это проще, чем с иностранными языками.

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

Что касается javascript - тут я могу дать вам «вредный» совет: для начала не стремитесь сильно углубляться в «чистый» javascript. Совет вредный, потому что вообще учение свет, неучение тьма, и глубокие знания всегда предпочтительнее поверхностных, итд итп. Но тем не менее, чистым или «ванильным» javascript сейчас пользуются мало - больше востребованы разные библиотеки и фреймворки: упомянутый вами jquery, angular, react, vue и прочая и прочая.

Я подчеркиваю - для начала - разберитесь с элементарными азами и основами синтаксиса javascript (синтаксис достаточно стандартный для си-подобных языков), потом - сразу переходите к jquery - это не сложно, по сути это просто библиотека, которая предоставляет удобный доступ к элементам HTML DOM. Для первых шагов и первых несложных действий этого будет достаточно - гугл в помощь, как говорится. Вообще, чтобы начать использовать новый язык/инструмент, и делать на нем простые вещи, его не обязательно знать.

Разумеется, такой подход не сделает вас хорошим специалистом. Так, что в дальнейшем, конечно - изучайте глубже. Вот например, в этой статье дают совершенно противоположные моим рекомендации - изучайте в первую очередь «чистый» javascript, а не фреймворки: https://www.cat-in-web.ru/vanilla-js/. И они правы. Так и нужно.

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

Да, нужно. На каком уровне? - В совершенстве не обязательно. Но чем выше уровень, тем легче получать информацию.
Свободный английский позволит без проблем слушать любые курсы по IT на английском языке и не задумываться о том, есть ли к ним русские субтитры. То же касается докладов на конференциях от иностранных спикеров. И если речь идёт о видеозаписях - то хороший английский позволит их слушать даже на скорости 2х, без потери информации (время - дорогой ресурс, а темп речи у спикеров часто слишком медленный).

Но у меня есть хорошая новость - технический английский гораздо легче литературного. Набор терминов, которые нужно запомнить - относительно небольшой, и часто это интернациональные слова, которые по русски звучат почти так же (ну те же coding, number, compute). Технические тексты проще, чем художественная литература и проще, чем газетные статьи - в них нет такого объема лексики, метафор, архаизмов и фразеологических оборотов. А лекции и доклады слушать проще, чем смотреть сериалы в оригинале - в них нет сленга, разных отсылок и контекстно-зависимых шуток.

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

Кроме того, гуглить, как правило, эффективнее на английском языке. На английком языке вы загуглите любой самый дурацкий вопрос, и найдёте десяток ответов и советов на stackoverflow. На русском языке - нагуглится какой-то форум, обитатели которого ответят вам «ты что, дебил? иди читай документацию». Я не знаю, почему так. ¯\_(ツ)_/¯

Книги по IT довольно медленно переводят на русский язык (и далеко не всегда переводят) - пока книгу переведут, отредактируют и опубликуют, информация в ней уже устареет - выйдет несколько новых версий инструмента, которому посвящена книга - технологии эволюционируют очень быстро.

И да, большая часть всей информации по IT написана на английском языке.