Мы продолжаем знакомить вас с различными профессиями в рубрике «Гид абитуриента» и стараемся вместе ответить на вопрос, как стать востребованным специалистом.
Хадиша Акаева, Семей
Программист — специалист, который занимается разработкой компьютерных программ на основе специальных математических моделей. Самые богатые компании мира – Microsoft, Amazon, Facebook – так или иначе связаны с IT.
Мы выяснили, что нужно делать казахстанским парням и девушкам, заинтересованными миром IT-технологий, чтобы стать востребованным программистом – человеком, пишущем код или другими словами инструкции, на одном из языков программирования, чтобы их понимали машины (компьютеры, телефоны, роботы или что-то другое – не имеет значения). Таким образом пишутся программы – их великое множество: калькуляторы, игры, сложнейшие системы и многое другое.
Если вы испугались монотонной работы, то не стоит: программирование – это не механический процесс, а скорее творческий. Это умение абстрагировать, мыслить виртуальными образами.
Программисты бывают разными. Существует деление на прикладных, системных и веб-программистов. Прикладные пишут программное обеспечение (ПО) для решения прикладных задач: бухгалтерские программы, игры, редакторы (видео, фотографий, текстов и другого) и так далее. Системные занимаются разработкой ПО для операционных систем (всем известные операционные системы – это, например,Windows, Android и IOS). А веб-программисты делают сайты, веб-приложения, онлайн-игры и так далее.
Разобраться в сложном мире программирования помог нам Ербол Копжасар – 22-летний казахстанец, один из 12 разработчиков крупнейшего в арабском мире мессенджера Palringo. После окончания университета в Нью-Касле в Великобритании Ербол вернулся в Казахстан и вместе с другими молодыми коллегами открыл амбициозную IT-компанию Tinker Tech. «По знакомству программистов не берут. С этим все честно. Коммерция всегда заинтересована в том, чтобы найти самые лучшие варианты», - уверен наш собеседник.
– Когда вы поняли, что хотите связать свою жизнь с IT?
– На самом деле достаточно забавная история: в детстве очень много играл в компьютерные игры, так вот однажды я взломал игру и у персонажа появилось не двести "капсул здоровья", а две тысячи. С того момента начал смотреть детальнее на то, как работает игра. После этого в школе были олимпиады по информатике, решение задач, которые ставились в рамках спортивного программирования, доставляло мне огромное удовольствие.
– Раз вы поняли, что вам нравится, вы уже знали куда поступать после школы?
– Понятия не имел, что делать. Родственники твердили одно, другие – другое. Но получилось так, что я вообще пошел учиться на инженера-электрика. Специальность называлась «Computer and electrical engineering» в университете Нью-Касла. Но инженерия – это образ мышления, всегда так говорю, этот курс не дает профессионального образования, там человека учат мыслить, правильно формировать логические цепочки. Я думаю, это самое важное, чему я научился за все время в университете. То есть не каким-то теоретическим, математическим вещам, а то каким образом мне давали данные, то, как я понимал, как могу получить информацию в правильном виде. Сначала думал поступить на факультет «Computer Science или Electricalengineering» (электротехники – прим. авт.), пришел в кампус Computer Science, увидел только компьютеры и подумал, что это скучно. На факультете электротехники я увидел электрокары, электрические велосипеды и подумал, что этому никогда не смогу научиться дома, в отличии от программирования. Я выбрал то, к чему у меня не было доступа. На самом деле, мне кажется, я поступил правильно, потому что на данный момент имею определенные компетенции в программировании, потому что обучился этому самостоятельно, а также более-менее разбираюсь в электротехнике. По приезду меня даже приняли на один из нефтеперерабатывающих заводов в качестве инженера. Вот такой широкий спектр возможностей дает эта специальность. Вообще программирование – это больше самообучение всегда.
– Что вас привело в IT-индустрию после окончания университета?
– На самом деле во время обучения в университете мне не хватало денег, я искал разные виды заработка. Как всякий студент, наверное, я поработал в кофейне, но потом мне очень повезло – нашел работу разработчика в одной британской компании в мессенджере Palringo. Я был интерном, грубо говоря, в большей степени обучался, но при этом приносил пользу компании. В тот момент я решил стать программистом, потому что во время обучения в университете в свободное время посвящал тому, что постоянно пытался что-то свое создать, решить какие-то свои маленькие задачи с помощью программирования, обучался мобильной разработке.
– Как теперь проходит ваш день?
– Давайте я разделю свою жизнь на два периода: первый - когда был разработчиком, второй – сейчас предприниматель.
Когда был разработчиком, мог прийти на работу и в 10, и в 11 утра. Самое главное – выполнить поставленные задачи. Приходил на работу, открывал Scrumboard – это доска, где мы выбираем себе задачи на сегодня, выбирал себе задачи и выполнял их до конца дня.
В конце дня спорили друг с другом о методологиях, фреймворках (простыми словами это набор инструментов, которые упрощают разработку программы – прим. авт.), играли в игры. Никто не смотрел на время, ни у кого не было цели уйти пораньше домой.
Были, конечно, экстренные дни. Был день, когда была дикая перегрузка на серверах, когда люди спали в офисе.
Здесь, в Казахстане, у меня немного другой путь. Мы занимаемся разработкой программного обеспечения для продуктов, которые помогают людям. Я, как руководитель, думаю об определенных ценностях, которые несет продукт. Зачастую, программисты не замечают того, чего делают - они могут делать идеальный код, оптимизацию, но при этом продукт может быть никому не нужен.
Теперь я встаю в 9 утра, звоню всем, кому обещал позвонить, планирую день, потом еду к ребятам, либо работаю в обычном ритме программиста, либо встречаюсь с людьми. Все очень вариативно.
– Обучение в Казахстане может дать возможность молодому человек стать хорошим программистом?
– Я думаю, что обучение не сделает из человека хорошего программиста. Хорошим программистом сделает сам себя человек. У нас есть хорошие университеты, которые позволяют расти человеку как личность. Это звучит немного высокопарно, но, если у человека формируется его личность, определённые принципы, например, не бросать незаконченное дело на полпути. Я помню, у меня была проблема, она мне даже снилась. Целую неделю ходил и думал, как решить этот кусок кода. Я не понимал, спрашивал специалистов, а потом нашел человека, который мне помог решить эту задачу. Тогда я испытал облегчение, но почувствовал себя глупо, потому что сам до этого дойти не смог. И еще много факторов самообучения. Говорят, что все программисты интроверты. На самом деле нет, очень важно обмениваться друг с другом информацией, формировать социальные группы для обмена опытом.
В Казахстане есть 3-4 университета, в которых неплохо формируется личность. Это Назарбаев университет – материал, который там дается, достаточно релевантный, также есть КБТУ, IT-университет. Но я опять же говорю, что лучшие разработчики из Казахстана, работающие в крупных компаниях говорят, что в университете тебя не научат разработке программ. Там научат базовым принципам, основываясь на которых можно стать разработчиком, дата-аналитиком и еще кем-нибудь.
– Получается, и в Казахстане, и за рубежом специальность очень хорошо котируется?
– За рубежом – да, это очень востребовано. У нас есть проблемы с кадрами – их не хватает, они недостаточно квалифицированы, что связано с проблемами в образовании, самообучении. И есть проблема в том, что очень мало практиков и много теоретиков. Если вы хотите стать разработчиком, просто работайте на свое портфолио. Вы, придя в компанию, чтобы начать работать, скажете: «Смотрите, я сам пытался, у меня не так классно выходило, как у вас, но я способен к обучению, мотивирован. Пожалуйста, помогите». В таком случае любая компания оторвет вас с руками и ногами.
Когда в человеке видят желание развиваться, никто от него не откажется. По знакомству программистов не берут. С этим все честно. Коммерция всегда заинтересована в том, чтобы найти самые лучшие варианты.
– Чтобы быть программистом нужны ли знания в смежных областях – знание алгебры, языков?
– Чтобы стать обычным разработчиком, нужно уметь прибавлять, умножать и делить. Здесь важна когнитивная логика – как вы подходите к решению проблем и насколько вы не можете бросить дело на полпути. Нужно развить в себе чувство доделанной работы. В школе я не отличался особым умом, мог решать одну задачу в полтора раза дольше, чем ее решает способный ученик, но никогда не закрывал тетрадь, пока не решу ее. Я сидел и меня бесило то, что я не могу что-то сделать, это чувство в программировании проявляется ежеминутно. Это серия задач за задачами. Эта профессия – решение паззлов. Если вы никогда не отступите – это ваше.
– И, наверное, самый популярный вопрос, который задают программистам люди, хоть немного интересующиеся программированием: есть ли разница какой язык программирования учить?
– Это все зависит от задач. Каждый язык хорош. О каждом языке нужно думать, как о творении инженера. Он создавал язык, чтобы решать определенные задачи. Я люблю говорить, что С++ (один из самых популярных языков программирования – прим. авт.) – это как швейцарский нож. Это плохой нож, плохие ножницы, плохая пилочка, но там все есть. Есть специализированные языки, которые хороши для анализа данных, для того, чтобы работать с большим объемом информации.
Вам нужно определиться: зачем вам нужно научиться программированию – если для того, чтобы заработать денег, вы заходите на сайт, где публикуются работы, смотрите сколько платят начинающему программисту и где легче будет начать. Сейчас востребованы JavaScrip (это тоже популярный язык программирования, прим.авт.). С++ фундаментален, но его сложно учить. Если бы я начинал учить программирование, начинал бы с Python – это такой хороший язык, который прост в чтении, прост в запуске, часто используется на рынке. Но здесь опять же дело не в языке. Вам нравится веб-сайты делать, вы хотите создать самый быстрый и мощный веб-сайт, то вам нужно выучить JavaScrip-ты Angular, React и так далее (это фреймворки, которые предназначены для созданий одностраничных приложений и пользовательских интерфейсов – того, что человек видит на экране, например, компьютера, прим.авт.). Если вы хотите создавать мобильные приложения – выучите нативные языки, которые сейчас популярны.
– На какой доход могут рассчитывать IT-специалисты? Понятно, что доходы сильно разнятся, но если специалист начинающий, на сколько можно рассчитывать?
– Я работал за 0 тенге. Если вы программист, который просто выучил алгоритмы, можете написать пару алгоритмов сортировки – это не значит, что вы принесете коммерческую прибыль. Вы должны думать о себе, как об инструменте компании, который она использует, чтобы создать классный продукт для людей. Молодому разработчику в Казахстане можно рассчитывать на бесплатное обучение, а обучение человека – это уже затрата компании. Компания может платить вам 100 тысяч тенге и заставить делать «обезьянью работу», а может не платить вообще ничего, но при этом тот объем знаний, который вы получите там, вы не получите нигде. В общем, если вы чувствуете, что команда крутая и вы ничего не умеете – это будет большой удачей, что вы у этих людей чему-нибудь научитесь. Но если вы понимаете, что вы начинаете приносить пользу, то вы можете рассчитывать тысяч на 150-200. Это начинающим разработчикам.
А дальше уже зависит от пользы человека. Я знаю разработчика, который имеет очень большой опыт, он очень умный человек и просто работает там, где ему нравится, получает 400 тысяч тенге. Я знаю его коллегу, который зарабатывает больше него, но он делает нудную работу. «Какую пользу я приношу компании?» - если вы зададите себе этот вопрос, вы поймете сколько должны зарабатывать.
Конечно, прежде чем думать о заработке нужно подумать об учебе. Для начала запишитесь на профессиональные курсы. О том, какие курсы лучше, вам объяснят специализированные сайты. Например, на известном в своем кругу сайте habr есть много статей, которые помогут сориентироваться: «Почему научиться программировать так чертовски тяжело?», «Как я сам научился программировать за 8 недель»,«Codecademy. Учимся программировать», «Программировать с нуля. «Сейчас» — самое подходящее время, чтобы начать», «90+ бесплатных ресурсов для самостоятельного обучения онлайн» и другие. Можно искать по тегу «программирование», «обучение программированию», «программирование с нуля».
Немаловажно выбрать язык программирования – то есть определиться с целью. Если хочется написать приложение для продукции Apple, учите язык Swift, а если ваша цель в другом, то, соответственно, нужно обратить внимание на другие языки. Не стоит забывать, что после изучения одного языка (например, не очень сложного Python) можно будет выучить второй язык. Для более быстрого обучения ставьте перед собой какие-нибудь небольшие вдохновляющие задачи.
Найдите человека, который тоже только учится программировать – это вам поможет.
Не забывайте, что программирование – это образ мышления. Настройтесь на эту волну.