Магистратура Georgia Tech по специальности Computer science. Опыт выпускника / Хабр

Без рубрики


Немножко о себе

Я закончил сельскохозяйственный институт по инженерной специальности совершенно никак не связанной с ИТ индустрией. Попал в индустрию через тестирование (как и многие), начинал с позиции джуниора в одной очень известной и тогда еще не отчалившей из России галере. Дорос до сениор позиции примерно за 2-3 года и все это время старался принимать участие в доступных мне кампаниях по улучшению навыков в качестве менти. Потом мне предложили попробовать себя в автоматизации, в компании как раз начинался один из пилотных проектов по переподготовке специалистов из ручного тестирования в автоматизацию. Я, конечно же, немедленно согласился и успешно ее закончил. Через некоторое время полностью перешел на позицию инженера по автоматизации тестирования. Далее мне предоставился шанс переехать в англо говорящую страну, где я на данный момент и нахожусь уже почти 9 лет. За это время в качестве инженера по автоматизации я дорос до позиции ведущего инженера, во время нахождения на бенче оброс некоторыми сертификатами (ISTQB, Java programmer), а потом ушел на позицию программиста в тестировании (Software engineer in test).

Почему я решил поступить в магистратуру

Думаю причины несколько очевидны: У меня нет профессионального образования и это усугубляет синдром самозванца 😅. Стоит заметить, что отсутствие образования как таковое было проблемой только на одном интервью, на котором рекрутер все пытался выяснить как же это я так без образования и работаю в ИТ. В большинстве случаев это не имеет значения, особенно если у кандидата есть опыт за плечами. Хотя я не исключаю того фактора, что меня отсеивали на более ранних этапах из-за этого. Магистратура в Georgia Tech была моим 3-м подходом к снаряду. Я пытался получить магистерское образование в своем родном городе и у меня это получалось ровно до того момента как мне предложили переехать, переезд очевидным образом стал приоритетом и я бросил университет. Сейчас мне трудно сказать было ли это правильным решением, мне предлагали варианты в которых я бы мог продолжать обучение, но, вспоминая уровень стресса после переезда, я не уверен, что мог бы доучиться достойно. Так же я пытался пройти в магистратуру Arizona State University (ASU) и прошел, но, чтобы полноправно участвовать в ней надо было подтвердить знания путем сдачи 3-х курсов. Один из них был весьма среднего качества, но дался мне без проблем, второй был отлично подготовлен и так же не вызвал никаких проблем, а вот третий был просто аховый. Видео лекции были подготовлены весьма ужасно, профессор никогда не использовал слайды, а просто все время рисовал на доске, тесты, которые по идее должны были бы меня подготовить к экзамену, покрывали совершенно нерелевантные знания. Я обратился с вопросом о качестве курсов к своему научному руководителю (academic advisor), на что получил ответ, что стоит ожидать, что все курсы в программе будут примерно такого же качества. Я приуныл и уже готов был поставить крест на профессиональном высшем образование, но потом узнал на Хабре о существовании прекрасной (и доступной 😉) программы от Georgia Tech.

Процесс подачи документов и поступление

Подал я документы примерно в конце 19-го года и наивно полагал, что если все пройдет удачно то успею начать с весеннего семестра 20-го. Теперь то, в основном из тредов на reddit, Я знаю сколько студентов пытается попасть в программу (очень много 😬) каждый семестр. Сам процесс подачи документов не вызвал у меня никаких особых проблем, (кроме, пожалуй перевода диплома, об этом я расскажу чуть дальше) я быстренько сдал TOEFL (благо центр был рядом с домом), попросил 2х бывших и своего текущего руководителя написать мне recommendation letter, написал письмо (purpose of statement), где в красках рассказал о том, как всегда мечтал заниматься компьютерами, но в образовании сбился с праведного пути 😅 и приправил все это резюме. На тот момент у меня было уже 9 лет опыта за плечами и, примерно, 6 из них включали опыт программирования. Первый ответ я получил через несколько месяцев где мне сообщили, что мою кандидатуру рассматривают как «сильного» кандидата и требуется перевод диплома. Я до этого делал education evaluation и подумал, что это тоже подойдет, на что мне ответили, что это немного другое и нужен ТОЛЬКО перевод. Этим занимается несколько контор, я им отправил свой диплом и они его перевели и заверили. И вот 14го мая 2020-го года я получил письмо о том, что меня допустили в программу.

Стоимость обучения

До осеннего семестра 22-го года стоимость складывалась из следующего:  

Special Institutional Fee — $194  

Technology Fee — $107  

Tuition(стоимость одного предмета) — $540  

Итого, если вы планируете изучать один предмет за семестр вам это обошлось бы в $841, два $1381 (два раза по 540, остальные fee не увеличиваются в зависимости от выбранного количества предметов). Как видите выгоднее учиться больше 😁. Однако, как я заметил выше, с осеннего семестра 2022-го эта стоимость сократится, институт больше не будет брать Special Institutional Fee. К счастью или к сожалению я уже не смогу воспользоваться данным предложением по понятным причинам.

Сколько надо учиться, чтобы получить степень

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

Сложность программы

Если мы абстрагируемся от сложности конкретных предметов (я расскажу о том как выбирал предметы ниже), то я бы определил уровни сложности участия в программе следующим образом:

I’m too young to die(Easy) — Вы уверенно используете как минимум один язык программирования в повседневной работе, вы можете решать задачи среднего уровня сложности на Leetcode.com без особых проблем. Вы уверенно читаете, пишите и излагаете свои мысли по-английски. Написание сочинения на заданную тему на английском языке на 4-5 страниц не вызывает у вас панического ужаса 😅. Вы отлично способны к самообучению и можете самостоятельно изучить математические концепты.  

Hey, not too rough(Medium) — Вы начинающий (но уверенный 😉) специалист в ИТ, можете решить простейшие задачи по программированию, не лезете в гугл, чтобы посмотреть как написать цикл, разбираетесь чем массив отличается от словаря и на используемом в работе языке можете работать с ними без подсказок IDE и гугла. Вы можете решать задачи легкого уровня сложности на leetcode.com. Вы понимаете базовые принципы ООП и используете их в работе. Вы читаете и пишете по-английски в основном без ошибок и можете донести информацию до собеседника, чтобы у него не осталось вопросов. Вы достаточно легко обучаетесь самостоятельно.  

Hurt me plenty(Hard) — Вы программируете в свое удовольствие, возможно, работает на должности близко связанной с индустрией и/или программированием(например, вы занимаетесь ручным тестировщик). Вы читаете по-английски, возможно понимаете сразу не все, но общий смысл текста для вас всегда ясен. Вы можете ответить примитивными фразами на вопрос собеседника как дела. Вы способны к обучению, вам необходима незначительная поддержка.

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

Как построен процесс обучения

В общем случае на протяжении семестра надо выполнить n количество проектов и сдать до 2-х экзаменов. Проекты, как правило, слабо связаны друг с другом, хотя в одном из предметов помимо таких несвязных проектов имелся магистральный, большой проект, который имел несколько контрольных точек в которых надо было продемонстрировать проект и отчитаться о прогрессе. Проекты обычно идут последовательно и вы не можете работать более чем над одним, но бывают и исключения. Сложность проектов так же может быть разной и занимать от нескольких часов до нескольких дней. В некоторых предметах помимо непосредственно проекта надо было так же написать отчет о проделанной работе и выполнить peer review других студентов. Как правило результатом выполненного проекта у вас будет код написанный на одном из популярных ЯП(python встречался в большинстве проектов), который выбрал основатель курса при его созданиимодификации или сотрудники, добавляющие новые проекты (почти во всех курсах каждый семестр проекты претерпевают изменения от минорных (чтобы поймать читеров) до кардинальных изменений и полной смены проектов). В лучшем случае при отправке задания вы отправляете его в Gradescope, систему, которая может автоматически проверит ваш код тестами и выставить оценку на этой основе. В худшем случае вы просто отправляете задание в Canvas и ждете пока его проверят (это в среднем занимаете от недели до нескольких недель). Если во время выполнения проектов у вас возникают сложности вы можете обратиться за помощью, для этого есть форумы на которых вам могут помочь как и студенты вашего набора так и помощники преподавателя(Teaching assistants(TA’s)), так же многие предметы проводят office hours раз в неделю, на которых можно задавать вопросы. Также у программы есть официальный slack, но не стоит ожидать официального ответа от TA там. Экзаменов в семестре как правило 2: mid-term и final. Они как правило не связаны друг с другом и могут иметь закрытый и открытый формат. В закрытом формате перед выполнением экзамена вам надо подтвердить личность, сделать фотографию и провести полное сканирование своего окружения, чтобы продемонстрировать, что вы не мошенничаете и не списываете, на протяжении всего экзамена за вами следит камера и ваш экран записывается. Такие экзамены как правило имеют single/multi choice формат. В открытом формате экзамена вам предоставляется набор заданий и вы можете использовать все доступные вам средства решения, как правило такие экзамены проверяют сильно углубленные знания и длятся несколько дней. В летних семестрах проектов может быть меньше и экзамен может быть всего один, т.к. семестр короче.

Какие предметы я изучал и краткие рецензии на них

Я не буду рассказывать обо всех предметах, т.к. некоторые были филлерами, чтобы набрать кредиты, но были и предметы, которые приятно и неприятно меня удивили.  

  • CS    7637    Knowledge-Based AI  — очень приятный курс созданный основателем программы, мое первое погружение в AI в котором я подтвердил, что можно написать AI-like приложение используя в основном if statements 😅. В этом предмете имелся магистральный проект, который должен был решать Raven matrices проблемы и несколько побочных проектов. Побочные проекты были тесно связаны с лекциями по расписанию и проверяли конкретные участки знаний (прим. был проект в котором надо было написать алгоритм ответа на простые вопросы исходя из предложения. Например Jane and Mary are going to meet tomorrow at the city center at 2pm. И вопросы: At what time Jane and Mary are going to meet tomorrow?).

  • CS    6601    Artificial Intelligence — лично для меня худший предмет в программе. Покрывает очень интересные топики вроде продвинутого поиска (multi-directional A star search и др.), Bayes nets, Decision tress, Hidden Markov models. Проблем у предмета было ровно 2: TA’s были абсолютно бесполезны в своих ответах, в основном суть их ответов сводилась к тому, что, мол, почитайте в книжке. А при вопросе где в книжке про это почитать отвечали: Это покрыто в несколько главах. Thanks for nothing, I guess. В открытом формате экзамена было несколько вопросов, которые совершенно никак не соотносились с изученным материалом. Если бы это был мой первый предмет в программе я бы, наверное, очень сильно остался демотивирован.

  • CS    7646    Mach Learn For Trading — когда я изучал этот предмет, то работал в финансовой сфере и полученные знания очень сильно мне помогли разобраться в том, что у нас там на работе делается за кодом 😬. Если вы заинтересованы в авто трейдинге и алгоритмах используемых для этого — то предмет может быть хорошим стартом для этого.

  • CS    7632    Game AI — пожалуй, мой самый любимый предмет. Видео игры — одно из моих главных хобби. Мне очень понравилось изучать как работают внутренние механики, например, поиск пути и как AI алгоритмы могут быть использованы в видео играх. Один из самых интересных проектов был Finite-state machines в котором надо было написать логику для командной игры в вышибалы. В последствии был турнир в котором победители получили дополнительные баллы, видео боев профессор тоже выложил 😁

  • CS    6603    AI Ethics Society — простенький, но весьма интересный и актуальный курс который затрагивает проблемы предубеждения в AI (вы, наверное, слышали про проблемы рекрутингового бота Amazon). Несколько проектов затрагивали распространенные AI’s в которых изучая работу библиотек можно было выявить предубеждения (например, высокая связность слов Muslim и Terrorist в одной из библиотек). Проблема курса в том, что в нем почти нет неправильных ответов и легко получить пятерку мало что понимая.

Как я выбирал предметы

В основном, я базировался на отзывах оставленных на OMSCentral (теперь заменен OMSHub), старался подобрать 2 курса, которые мне были бы интересны и при этом суммарный workload у них был бы в пределах 20-25 часов. Читая обзоры на предметы стоит иметь в виду следующее: Каким бы сложным не был предмет, всегда найдутся люди, которые в отзывах напишут, что он слишком простой и ему не место в программе и в тоже самое время каким бы легким не был предмет всегда будут студенты, которые будут жаловаться на то, что предмет сложный и им не хватило времени.

Какие советы я мог бы дать начинающим студентам 

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

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

  3. Начинайте заранее. Если предмет открывает доступ к проектам сильно заранее (ML4T и Game AI с момента старта имели несколько открытых проектов), то я бы рекомендовал делать их последовательно, но сразу все не дожидаясь дедлайнов. Если у вас возникнут проблемы, не стоит ожидать, что на них резко начнут отвечать в воскресенье ночью за 5 минут до дедлайна (обычно дедлайн для сдачи проектов в воскресенье в 23:59 ET).

  4. B — тоже хорошая оценка. Несмотря на то, что необходимо поддерживать GPA выше 3.0 (эквивалент оценки B), не стоит расстраиваться если по итогу вы получаете B. Тут еще хотелось бы заметить, что минимально возможная оценка для того, чтобы она пошла в зачет C — для electives и B для core requirements(core — обязательные курсы для выбранной вами специальности, electives — соответственно выбранные вами).

  5. RTFM. Большинство вопросов, которые у вас появляются во время выполнения проектов уже отвечены или описании проекта или в FAQ, который обычно постят рядом.

  6. Начинайте заранее. Да, этот пункт продублирован, потому что большинство студентов не начинают заранее.

  7. Не бойтесь брать 2 предмета сразу, если вы можете грамотно распределять время. Если ваши планы поменялись или вы чувствуете, что не вывозите — вы можете отказаться от предмета в первую неделю без последствий и до Withdrawal deadline с оценкой W(Все еще лучше чем F и, насколько я в курсе, потом предмет можно повторить, чтобы получить другую оценку).

  8. Если проект подразумевает написание отчета — не оставляйте это на потом и пишите отчет в несколько проходов. В первый проход напишите все «мясо» отчета. Во второй уберите лишнее, добавьте деталей и удостоверьтесь, что вы точно ответили на все вопросы. Не стоит думать что если есть вопрос: Как вы сделали Х — а вы уже на него ответили в своем отчете ранее вы его можете просто пропустить.

Итог

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

P.S. Моя первая статья на Хабре, старался как мог 😅. Если у вас есть какие-то вопросы — задавайте их в комментариях, я с радостью на них отвечу.



Source link

Добавить комментарий