17 июля

Кто такой геймдизайнер?

Преподаватель курса по Java разработке Павел Тишкевич рассказал нам о том, почему оставил свою 10-летнюю карьеру в менеджменте ради IT-сферы и как теперь помогает изменить жизнь другим людям.
— Расскажи о себе, где ты учился и как пришел к своей профессии, Java-разработчика?

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

Я родился в сельской местности, заканчивал деревенскую школу, 9 классов. Потом совершенно случайно поступил в экономический колледж и стал экономистом-менеджером. Поступая в ВУЗ, решил продлить эту серию. Поэтому выбрал экономический университет, нархоз. И там же закончил магистратуру, так что в сумме у меня три диплома, которые никак не связаны с айтишкой. Был долгий процесс работы на заводе. Я прошел все этапы, начиная от закупок, сбыта, — и дорос до начальника отдела. Затем пошел дальше на повышение, немного поработал в области экономической аналитики. И потом мне это надоело, решил, пора что-то менять, так как уже не видел направления, которое может меня заинтересовать больше, чем на 1-2 месяца. Я понимал — куда я ни пойду, везде я за месяц разберусь, что нужно делать, за второй месяц как-то настрою и доведу до автоматизма все процессы и потом начну скучать.

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


— У тебя были какие-то знакомые в сфере? Как ты пришел к курсам?

— Помогло мое увлечение с детства. Я со школьных времен хорошо ладил с математикой. В школе это было на районном уровне, но когда начался колледж — пошли областные и республиканские олимпиады по математике. Я был на 4-х республиканских олимпиадах. У меня был вариант попробовать себя в математике-информатике, но я все-таки решил пойти по пути экономиста. Как хобби у меня все равно это оставалось, я учил PASCAL в колледже, потом для себя прошел основы C, основы Java.


— Когда ты уже решил переходить окончательно в разработку?

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


— Почему выбрал Java?

— Я начинал в колледже с PASCAL, приблизительно знал, что надо делать там. Когда задумался в первый раз о смене профессии, я взял курсы по основам C. После него было два варианта: или ты идешь на продвинутое изучение C, на С++, или ты пытаешься учить Java. И я решил сравнить языки, увидел плюсы Java, которые мне понравились. И выбрав один раз язык, уже не хотелось искать другое. Перед тем, как окончательно уйти в IT-сферу, я тогда четыре года уже изучал Java как хобби.


— Какие плюсы ты отметил для себя?

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

Когда я изучал C, это было лет семь-восемь назад, не было хороших IDE именно для этой группы языков. И бывали такие ситуации, что ты пишешь программу, собираешь ее и только потом понимаешь, что она не работает. Что-то идет не так, как ты хотел. Тебе нужно лезть и искать, что там могло поломаться. Сейчас уже ситуация не такая, но в момент, когда я учил, с этим была проблема.

В Java такого нет, если ты напишешь неработающее приложение, оно у тебя не запустится. Оно сразу покажет, где у тебя что поломалось. И плюс-минус ты поймешь, как это починить. На момент, когда я начинал изучение, это была очень большая разница. И тебе не хотелось сидеть, тратить час непонятно на что.


— А в каких сферах могут работать Java-разработчики?

— Общепринятое мнение, что джависты могут работать со всем.

Есть программы, которые пишут для чайников, есть сайты, есть большие приложения, Android-разработка — тоже Java. Но по существу сейчас Java сегмент плотно связан с крупными корпоративными приложениями. Потому что язык Java имеет очень много наработок и уже готовых библиотек. Скорее всего, если тебе что-то захочется сделать, тебе это делать не понадобится, — оно уже кем-то написано. Тебе нужно найти и вставить.

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

Раньше, лет пять-семь назад, было больше направлений. Java использовали и для сайтов обычных, и для мобильной разработки. Сейчас чистая Java для этих целей меньше используется, есть язык Kotlin, который занял эту нишу. Он очень похож на Java, перейти на эти языки можно без проблем. Но все-таки это не чистая Java.

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

Так что Java старается изменяться, подстраиваться под новые реалии и укрепляться в своей нише.


— А ты сам в какой нише работаешь?

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

До этого работал в EPAM, как BigData разработчик. Мы работали с компанией, которая занимается перевозками. Там мы организовывали потоки данных из одной области в другую. Еще раньше в туристической сфере.

Считается, что наиболее популярные направления в Java — это FinTech, здоровье — и уже потом все остальное.
— Расскажи, как ты пришел к менторству?

— Менторить я начинал в EPAM, когда увидел объявление о том, что БГУИР ищет среди сотрудников компании менторов на IT-направления, среди которых и Java. Я спросил у своего начальника, можно ли мне пойти туда. Мне сказали, конечно можно, но гораздо приятнее будет, если ты пойдешь менторить наших студентов в Big Data направлении. И я начинал свою менторскую деятельность внутри компании.


— А если брать курсы TeachMeSkills, как много ребят приходят без бэкграунда, прям с нуля?

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


— И как много ребят доходят до конца?

— Зависит от преподавателя, у меня доходят практически все. Главное, на мой взгляд, как сильно ты можешь увлечь своих студентов и зажечь в них огонь и желание изучать программирование :)

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


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

— Честно говоря, сложнее всего даются первые занятия. Это как снежный ком. Когда у тебя ноль знаний и ты берешь 5 единиц какого-то дополнительного знания — это кажется каким-то очень большим куском. Тебе сложно куда-то это устроить. Как только твои знания становятся 100 единиц, ты берешь 5 — и уже гораздо легче это усваивается и применяется.

Людям, которые приходят с нуля, очень тяжело начать решать задачи. А задачи это 2-3 тема любой программы. Человеку, который не имеет какого-то математического бэкграунда и своих каких-то попыток в программировании, сложно перестроить мозг так, чтобы понять, как это работает.

Доходило до забавных ситуаций, когда мне человек говорит о задаче: «Как это сделать? Я глазами понимаю, что нужно, а как объяснить это компьютеру?»

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

Я когда учился Java, у меня тоже такое было. Встретил конструкцию, которой не было в языке C, и у меня тоже был ступор, не понимал, как соединить. Это требует перестройки мышления. И это чаще всего для студентов сложно. Есть дальше, конечно, сложные темы. Но ты стараешься их разбавлять, растягивать за счет более простых тем. Там уже не так все печально.

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


— А что вы делаете в рамках дипломного проекта на курсах?

— Я предлагаю людям сделать то, что для них кажется более интересным. Потому что Java позволяет выбрать направление. Мы проходим по программе все: начиная от фронтенд-разработки, бэкенда, как это все связано. И у тебя есть альтернативы, можешь сделать сайт с картинками, условный онлайнер, где можно по страничкам покликать, — это одно направление. Ты можешь сделать аналог какого-нибудь бэкенд сервиса, у которого не будет сайта. То есть это будет какой-то сервер, который по твоим запросам тебе возвращает данные. Там тоже есть логика. К примеру телеграм-бот, у него нет никакого интернет-отображения, кроме канала, где он используется.

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


— Был ли студент, который тебя особенно впечатлил?

— Был студент, который меня реально мотивировал. Как раз тот, который говорил, что глазами понимает, а как объяснить компьютеру — нет. Он приходил на курсы полностью нулевым, не умел решать задачи. Пришел из менеджеров. И первые занятий 15 было очень тяжело, не всегда понимал, что делалось, а сейчас он делает свой дипломный проект сам. И очень радуется, потому что ему никто не помогает. А он делает довольно серьезный бэкенд сервис. У него голова уже перестроилась. Ходил каждый выходные, собирался с другими студентами, они решали-решали, — вот к концу курса случился момент, когда количество знаний переросло в качество. Он начал понимать, все уложилось — и теперь он готовится без помощи к диплому в очень хорошем настроении :)

Хотя сразу ему казалось, что это прям вообще не его. Андрей, если ты читаешь это интервью — поздравляю тебя с успешной защитой!)


— Это действительно круто, пересилить себя и продолжать ходить, даже когда не получается на старте!

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

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


— А самостоятельность как-то проявилась потом?

— Да, дальше. У них сразу проблема была в том, что мозг еще не перестроился и непонятно, что такое программа. Мы перешли на такой вариант, до 20-го урока делаешь так. Это нормально для джуниор-разработчика уметь писать классы, но они не понимали, как из одного класса может получиться целая программа. Программа это же не один класс, а 10-12 классов. И это самая маленькая. Им вот это было тяжело. Тут нужно, чтобы голова думала образами программирования. Ты можешь уметь писать код, но если ты не понимаешь, что должен написать, чтобы получилась рабочая программа целая, ты сам программу не напишешь.

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

Я думаю, что смогу любого научить программировать. Если есть желание, конечно :)


— Да, желание это основное! Перейдем к теме трудоустройства, какие есть требования по hard-soft-скиллам?

— Сейчас требования стали гораздо больше, чем на момент, когда я приходил на работу. Особенно для Java-разработчиков. Java считается одним из языков с очень высоким порогом входа. Потому что есть определенные базовые дополнения, фреймворки, которые ты должен знать. Обычно голого языка программирования тебе не хватит для того, чтобы устроиться на работу. Это было и в мое время, и сейчас. Но сейчас за счет более высокого конкурса увеличивается значение дополнительных инструментов. Условно тот же Docker, как это все работает, сборка, CI/CD. Раньше такого не требовалось.


— Хватает ли информации на курсах, чтобы закрыть эти требования?

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

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

Примером всегда для меня являются случаи, когда ты приходишь на собеседование и тебе дают решить задачу. Джуниор-разработчик без опыта берет руки в ноги, открывает IDE и начинает делать задачу. Если человек начинает делать задачу сразу, как ее услышал, — 99%, что он без опыта. Потому что человек с опытом задает вопросы, которые помогают ему решить эту задачу. Ты строишь большую систему, а им достаточно было маленькой. То есть не узнав всех условий, ты себе жизнь не упрощаешь. Например, тебя просят прочитать файл, и ты начинаешь перебирать все случаи жизни, что там может быть в том файле. А ты мог спросить, что там лежит. Тебе скажут, там лежит три числа, которые тебе нужно прочитать. И у тебя уже задача не прочитать весь файл с непонятными значениями, а прочитать три числа из файла. То есть это уже более конкретная задача и легко решаемая. Чаще всего такого типа задачи как раз таки и даются с мыслью, что ты будешь задавать вопросы. Ее смогут подстроить под твой уровень, который определится твоими вопросами.

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

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


— А на сколько важен английский язык?

— Очень важен. Если раньше английский был не настолько принципиальной вещью, то сейчас разработчикам с уровнем А2 отказывают. Уровень B1/B2 является минимальным.

Весь язык и документация на английском, и основные клиенты не представители Беларуси или России.

Гораздо проще человека, знающего английский, научить программировать, чем программиста научить английскому языку. Поэтому чаще всего из 3-5 человек, которые сидят с похожим уровнем программирования, возьмут тех, у кого лучше английский. Их легче доучить.


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

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

Большая часть стажировок, о которых я слышал, бесплатные. Из оставшихся 20-30% с минимальной оплатой, около 100-150$ в месяц. Именно сейчас количество желающих попасть на стажировку на столько большое, что находятся люди, готовые работать бесплатно. Здесь рыночные условия, если люди готовы работать бесплатно — никто не будет нанимать за деньги.


— А сколько длится такая стажировка?

— 2-3 месяца, как испытательный срок в твоем контракте.


— И финальный вопрос уже касательно тебя. Какая твоя любимая часть работы? И есть ли какие-то профессиональные мечты?

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

Я начинал как фулстек-разработчик, потом поменял на Big Data Engineer, сейчас ушел в бэкенд и использую тоже совершенно другой стек технологий. Если мне покажется, что я заскучаю, я могу выбрать проекты из FinTech или медицинский проект, — и уйти еще в другую область. Если и это наскучит, могу пойти в менеджеры развиваться.

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

И плюс всякие плюшки — бесплатное печенье, кофе, чай :)
    #Входи в айти вместе с TeachMeSkills. По промокоду "ДЖАВАМАЙ" мы дарим тебе скидку в размере
    100 BYN на курс "JAVA разработчик".


    *бонус будет действовать только при первичном обращении и последующем заключении договора
    Интервью провела Карина Старкова
    Понравился материал? Поделись им с друзьями!

    Стань востребованным IT специалистом

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