Как совмещать работу и обучение программированию

Опубликовано: 14.05.2024

С чего начать обучение программированию

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

Но прежде чем начать обучение, подумайте и ответьте на пару вопросов: нравится ли вам программирование, готовы ли вы ежедневно посвящать этому делу время, искренне ли интересуетесь информационными технологиями, нужно ли вам вообще программирование? Если ответ на все вопросы “да”, прошу читать дальше. В противном случае, построить карьеру в IT-сфере будет весьма трудно.

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


Кто такой программист

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

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

Программисты обладают такими качествами, как:

  • стрессоустойчивость,
  • внимательность,
  • усидчивость,
  • ответственность,
  • креативность.

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

Что нужно знать и уметь

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

В остальном же краткий перечень требований выглядит следующим образом:

  1. Уметь писать собственные и читать чужие коды.
  2. Иметь математические способности и логическое, аналитическое мышление.
  3. Интересоваться информационными технологиями, иметь глубокие знания в этой сфере и постоянно их обновлять.
  4. Знать английский язык.
  5. Иметь способности к многозадачности.
  6. Уметь автоматически переводить решения бизнес-задач на машинный язык.
  7. Знать, как вносить, обрабатывать, хранить информацию при помощи разработанных программ.
  8. Создавать, настраивать и внедрять в производство программные продукты.
  9. Уметь автоматизировать повторяющиеся процессы.
  10. Тестировать разработанный продукт и уметь исправлять выявленные ошибки.
  11. Понимать технические задания и самому их составлять.
  12. Уметь пользоваться инструментами программирования, фреймворками и вспомогательными программами.

И это лишь часть того, что должен уметь делать программист.

Как стать программистом с нуля

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

Язык – это просто инструмент для решения бизнес-задач. Поэтому новичку надо определиться с тем, как решать задачу, разбить это решение на этапы, оптимизировать процесс, чтобы не тратить время и ресурсы впустую.

После освоения алгоритмов и структур данных нужно выбрать направление программирования. Лишь потом можно приступить к изучению веб-технологий и инструментов. Это серверные языки и языки разметки, стили CSS и JavaScript, веб-фреймворки, подходящие к выбранному языку программирования.

И напоследок научиться работать с базой данных.

Подбор направления

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

По основной классификации программистов делят на прикладных, системных и веб-разработчиков.

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

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

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

Выбрать направление деятельности можно среди доступных профессий:

    – специалист по работе с большими данными. – программист, отвечающий за лицевую составляющую сайта. – человек, который работает с серверной частью веб-сервиса. совмещает в себе frontend- и backend-разработчика.
  1. Администратор базы данных – человек, разрабатывающий требования к базе данных, которая используется конкретным предприятием, и отвечающий за проектирование и использование хранилища.
  2. Системный инженер настраивает и обслуживает внутренние компьютерные сети, офисную технику и ПК.
  3. Верстальщик работает над оформлением страницы и ее элементами: заголовками и подзаголовками, рамками вокруг картинок, шрифтом, отступами, абзацами.
  4. Архитектор ПО создает сложные IT-системы для решения бизнес-задач. С его помощью организации автоматизируют и упрощают повторяющиеся бизнес-процессы. – это специалист по разработке реалистичных трехмерных макетов зданий, интерьеров, памятников, мебели, одежды, окружающего пространства в компьютерной игре и т. д. занимается созданием удобного и привлекательного интерфейса для веб-платформ.

И это только часть должностей, которые может занимать программист.

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

Выбор языка программирования

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

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

Если же отталкиваться от направления, то надо знать, что веб-разработчик пользуется C++, Python, Java. Системный программист – Assembler, C, C++, Python. Администратор базы данных – SQL.

Ниже приведены самые распространенные и популярные представители языков программирования:

    – это универсальный и распространенный язык программирования. Он популярен во всем мире и используется в большинстве своем в научных проектах, в области разработки ПО и при работе с Big Data.
  1. JavaScript. Этот язык тоже универсальный и часто используемый. С ним работают при разработке игр, интерактивного веб-дизайна интерфейса и в робототехнике.
  2. Java – это один из самых простых в использовании и понимании языков программирования. С ним часто создают различные веб-приложения.
  3. PHP – один из лидеров среди языков программирования, используемых при создании динамических веб-платформ. Часто является инструментом разработки веб-приложений.
  4. Паскаль – известный, но несколько устаревший язык программирования. Тем не менее он является основой для некоторых других языков и до сих пор применяется для обучения программированию в старших классах в школе и на первых курсах в вузе.
  5. Swift – новый язык, созданный компанией Apple. Он легок в использовании и позволяет новичкам разрабатывать мобильные приложения для iOS и macOS.

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

Если к этому времени специалист еще не приступал к изучению фреймворков, структур и баз данных, то сейчас эти знания просто необходимы. Не надо бросаться на все сразу, лучше выбрать что-то из основного: Git, SQL, HTML, CSS, XML, JSP, Maven, Spring, ORM, REST, MySQL, PostgreSQL.

Самообразование

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

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

Онлайн-курсы

Новичку предлагаются курсы от онлайн-платформ GeekBrains, Нетологии, Skillbox, Coursera, beONmax. Постигать азы сферы информационных технологий можно в своем темпе и в домашних условиях. Так цена будет ниже, чем обучение в вузе.

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

Предлагаю ознакомиться со следующими обучающими программами:

Составление резюме и портфолио

Можно начать работать на бирже, чтобы было что написать про свой опыт в резюме и добавить работы в портфолио. Для первого реального опыта подойдут и небольшие проекты. Главное – начать.

Лучше выбирать иностранные биржи, особенно если есть знания английского языка. Там и заказов больше, и доход выше. Подойдут, например, Upwork и YouTeam. Если говорить о русскоязычных биржах, то популярны Kwork, FL.ru и Freelance.ru.

Заполнить портфолио могут помочь и собственные проекты, если есть идеи, возможность и желание.

А дальше можно уже перейти на специализированные сайты с вакансиями только для программистов, например, We Work Remotely и Хабр Карьера. А можно поискать работу на таких ресурсах, как hh.ru или SuperJob.ru.

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

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

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

Советы новичкам

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

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

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

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

Узнайте больше об архитектуре компьютера.

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

Заключение

Подведем итоги. Чтобы начать обучение программированию, надо следовать поэтапно. Сделайте следующее:

Задумывались ли вы о том, чтобы кардинально сменить профессию? Да ещё не выходя из дома? Например, программированию — одной из самых востребованных, хорошо оплачиваемых профессий. Онлайн IT-курсы — та самая золотая середина, когда интересно, полезно и не нужно посвящать учёбе круглые сутки. А по окончании обучения — обязательная стажировка в компаниях-партнерах и трудоустройство со средней зарплатой 90 тысяч рублей. Интересно? Портал GeekBrains поможет стать программистом меньше чем за год и начать карьеру в SuperJob, Mail.ru Group, Тинькофф и других крупных компаниях.

Как организовано обучение в GeekBrains

Для получения Профессии нужно пройти набор курсов, каждый из которых длится 1 или 2 месяца. Все обучение начинается с азов. Профессии длятся от четырёх (системный администратор) до одиннадцати (web-разработчик) месяцев. Разумеется, это не означает, что помещённое в «инкубатор» яйцо через полгода станет взрослой птицей, но вы получите «скелет» из базовых знаний. На который потом, во время стажировки, будете наращивать «мышцы» — тонкие профессиональные навыки и приёмы. Тратить деньги на специализированные программы или покупать мощный компьютер не придётся — достаточно обычного ноутбука со стандартным «железом».

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

Трансляции идут в хорошем качестве, сидеть у монитора с лупой не придётся.

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

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

При единовременной оплате Профессии вам дается скидка. Также можно оформить беспроцентную рассрочку через «Альфа-банк» на весь период обучения.

Расписание занятий

Стандартное время вебинаров — дважды в неделю с 20 до 22 часов (Мск). Кто не успел на онлайн-трансляцию, могут посмотреть запись вебинара в личном кабинете. Если планируете уехать в отпуск, можно приостановить учёбу либо прорабатывать материал, лёжа в шезлонге — сайт доступен из любой точки мира.

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

Нужен ли опыт?

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

Судя по отзывам на сайте IT-портала, большинство студентов раньше не имело серьёзного отношения к программированию, лишь на уровне интереса. Конечно, среди учеников можно найти и тех, кто уже знаком с языками программирования из университетского курса, кто хочет освоить новые, научиться писать приложения для мобильных платформ. И тех, кто получил знания по книгам, а теперь стремится их систематизировать, заиметь сертификат. Девушек среди обучающихся около 20%, но программист — профессия внегендерная, и их становится всё больше.

Стажировка и трудоустройство

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

Существует два вида стажировок после обучения. Первый — непосредственно в самой компании. В течение двух месяцев вы с коллегами применяете полученные знания на практике и создаёте портфолио. Другой вариант — стажировка в компаниях-партнёрах. Сейчас открыто более 350 вакансий. В списке компаний, с которыми сотрудничает GeekBrains — SuperJob, EPAM, «Сбербанк-технологии», Level, «Юзетикс», Geekbit, CloudPayments, «Нетология», Бизнес-инкубатор Финансового университета и многие другие. В этом случае стажировка может быть оплачиваемой, с перспективой дальнейшего трудоустройства.

Можно ли стать программистом после онлайн-курсов?

На сайте публикуются реальные истории людей, которые учились в GeekBrains. Все они сводятся к последующему карьерному росту, повышению амбиций, желанию развиваться дальше и получать всё более интересную работу.

Можно ли стать программистом после онлайн-курсов?

Кроме того, можно почитать немодерируемые отзывы. Обратите внимание на пользовательские оценки курсов и преподавателей: более 71% — пятёрки, еще 21% — четвёрки, то есть более 95% пользователей довольны качеством обучения. А учитывая, что попробовать и начать программировать можно совершенно бесплатно, вы вообще ничем не рискуете. Разве что, успешной карьерой, если откажетесь от учёбы.

Чтобы оценить преимущества онлайн-обучения, можно записаться на двухчасовой бесплатный вебинар по основам программирования. Проходит он по расписанию, обычно, во вторник, пятницу и воскресенье. Уже на пробном уроке вам дадут базу Java: о переменных, ветвлениях и циклах программирования. Этих знаний будет достаточно, чтобы написать первую программу. Так вы на собственном опыте убедитесь, удобно ли организованы онлайн-лекции, понятно ли изложена информация, нравится ли вам выбранная предметная область. На сайте GeekBrains собрано много бесплатных вебинаров и целые мини-курсы.

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

Любопытно? Тогда приглашаем под кат.


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

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

Всем привет! Меня зовут Костя, и в 2020 году я окончил программу “Прикладная математика и информатика” в Питерской Вышке (до 2018 года она реализовывалась в Академическом университете).

Программированием я заинтересовался в старших классах школы. Как и у многих, все началось с увлечения компьютерными играми. После 9-го класса я начал писать простенькие игрушки на флеше. Тогда же мой друг решил научиться 3D моделированию и полез изучать движок UDK — Unreal Development Kit. Мы подумали, что будет круто сделать что-то самим, и стали все свободное время тратить на попытки научиться прогать. Мы с другом успели поработать во флеше, Unity и Unreal Engine 4 за моё время учебы в школе.

Разработка нашей единственной законченной игры на флеше

Разработка нашей единственной законченной игры на флеше

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

Разработка нашей недоделанной игры Low Poly Folly на Unreal Engine 4

Разработка нашей недоделанной игры Low Poly Folly на Unreal Engine 4

Поступление

Я учился в классе с информационно-технологическим профилем в обычной школе в Кронштадте. Мы готовились к ЕГЭ по информатике, но никакого серьезного программирования или олимпиадных кружков у нас не было. Я пытался самостоятельно участвовать в олимпиадах, но моей подготовки не хватало, чтобы добиться каких-то значимых результатов.

Зато я достаточно хорошо сдал ЕГЭ. Насколько помню, у меня было 277 баллов — прилично для 2016 года. Это открыло мне возможность выбирать, в какой вуз пойти. Один мой знакомый в тот год заканчивал профильный бакалавриат и рассказал об Академическом университете — раньше я о нем не слышал. Я погуглил, и мне очень понравилось, что я нашел. Вообще при выборе вуза я ориентировался на программу и преподавательский состав. В АУ меня привлекло и то, и другое: программа была классная, преподы — еще лучше. Там было много молодых специалистов, которые, как я надеялся, должны знать, что прямо сейчас происходит в мире программирования. В итоге я смог поступить в АУ на бюджет: прошел вторым потоком, был где-то в самом конце. Помогло, что в тот год был расширенный набор.

Я первого сентября 2016 года в АУ

Я первого сентября 2016 года в АУ

Учеба в АУ: кровь, пот и слезы

Спустя четыре года могу сказать, что образованием я очень доволен. Безусловно, были некоторые минусы: где-то не нравился преподаватель, где-то не заходили конкретные предметы. Но, как я понял из разговоров с друзьями, этих минусов было сильно меньше, чем во многих универах.

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

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

Учились мы много (очень много!) Самыми интенсивными были первые два курса. Мы с одногруппниками даже спорили, стало на втором курсе проще или сложнее — мне кажется, что сложнее. Но, тем не менее, у меня получилось влиться, понять, выучить ключевые вещи и доучиться до конца.

Вообще кажется, что после второго курса уровень студентов выравнивается, стирается грань, кто олимпиадник, а кто поступал по ЕГЭ. Кто-то в общем понимает чуть больше, но всегда найдутся люди, лучше разбирающиеся в частном. Я рад, что у нас была одна программа, и студентов не делили по уровню подготовки.

В общем, после второго курса стало легче, и у меня появилось время на что-то кроме учебы. Как вы поняли, я не искал легких путей, поэтому устроился на работу.

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

Как я попал в Delightex.

Большинство студентов на моей программе не тратили лето зря, а устраивались на стажировки. Кто-то оставался в России и пробовал свои силы в Яндексе, ВКонтакте или JetBrains, но многие на 2-3 месяца уезжали за границу (например, в этом посте Алина рассказывала, как трижды стажировалась в Google — в Цюрихе, Лондоне и Саннивейле, а тут Андрей поделился впечатлениями после поездки в Лондон в Jump Trading).

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

В предыдущем году моя университетская подруга стажировалась в Delightex и ей очень понравилось. Компания занимается созданием своего игрового движка, а поскольку я всегда интересовался трехмерной графикой, решил попробовать к ним податься.

Delightex основал Евгений Беляев, один из кофаундеров JetBrains. Основной офис находится в Мюнхене, но многие разработчики живут и работают из России. Delightex и JetBrains находятся в одной экосистеме: мы бесплатно пользуемся средами разработки, сидим в офисах JetBrains и ходим на общие корпоративы. За исключением пары небольших моментов я ощущаю себя как сотрудник JetBrains.

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

Собеседование было очень жесткое, мне задавали вопросы, к которым я не был готов. Меня прощупывали со всех сторон, спрашивали сложные моменты из разных областей, в общем, смотрели, о чем я имею представление, а о чем — нет. У меня сложилось впечатление, что это был полный провал, но после встречи один парень сказал, что все было нормально. На собеседовании были два руководителя проектов, через пару дней мне пришли ответы от обоих — они меня брали. В одном проекте нужно было писать игровые прототипы на JavaScript, в другом — разрабатывать визуальные объекты на Java. Я подумал и выбрал второе.

. и чем я там занимаюсь

В Delightex мы занимаемся созданием своего трехмерного движка CoSpaces. Основное его отличие от Unity или Unreal Engine в том, что наш движок кроссплатформенный, его можно запускать в браузерах и на телефонах. Еще с ним очень легко работать, основная целевая аудитория — это дети и взрослые-непрофессионалы, например, учителя. Вообще наш движок активно используют для образовательных целей: с его помощью можно создавать трехмерные объекты или целые сцены, учиться программировать. Еще мы довольно активно внедряем разные технологии, например VR и AR, что также привлекает людей к нашему продукту.

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

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

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

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

Презентация итогов стажировки

Презентация итогов стажировки

Совмещать работу и учебу — реально?

Моя стажировка в Delightex длилась два месяца, после мне предложили остаться. Я долго колебался, но поговорив с третьим курсом успокоился и решил попробовать.

Конечно, было тяжело. Я учился и работал part-time. Повезло еще, что офис компании находился напротив учебного корпуса Вышки, поэтому я мог бегать туда в перерывах или по каким-то срочным делам. Но главное, почему мне вообще удалось совмещать работу и учебу: руководство программы разрешило в качестве НИРа заниматься одним из рабочих проектов.

НИР был большой и важной частью нашего обучения. Со второго курса каждые полгода мы защищали исследовательскую или проектную работу: какие-то задачи нам приносили компании-партнеры или преподаватели, какие-то студенты находили сами (например, как и я, у работодателей). На хороший НИР уходило 8-10 часов в неделю. Мне повезло: я работал по 20 часов, часть из которых посвящал сугубо рабочим задачам, часть — тем проблемам, которые защищал в качестве НИРа. Если бы мне нужно было заниматься сторонним проектом, я бы, наверное, не справился.

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

Команда Delightex в мюнхенском офисе (да, я там тоже есть)

Команда Delightex в мюнхенском офисе (да, я там тоже есть)

Диплом

Мой диплом не был связан с трехмерным моделированием или графикой. В процессе учебы я увлекался не только программной инженерией, также брал курсы по разработке языков программирования, и эти знания помогли мне в написании диплома. Вместе с двумя одногруппниками мы писали порт OpenJDK для нового процессора RISC-V. Это была большая задача. Некоторые части мы делали вместе, какие-то отдельно — их и защищали. Например, я разрабатывал структуры фреймов, основанных на нативном ABI фреймов RISC-V, и проводил исследование по выявлению наиболее и наименее нуждающихся в кэшировании данные. Если интересно, полный текст работы есть вот здесь, за нее я получил 8/10.

Почему я не стал поступать в магистратуру Питерской Вышки

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

Я ни капли не жалею, что попал именно в АУ (а потом и в Вышку), и до сих пор думаю, что из всех имеющихся альтернатив это была самая лучшая. Я получил много знаний, опыта и возможностей — предполагаю, что сильно больше, чем могли предложить другие программы. Нагрузка для меня была невероятная: спать по пять часов в день совершенно не радовало. Но при этом периодически я испытывал чувство эйфории от учебы и коллектива.

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

Нам в редакцию Tproger пришёл вопрос от подписчика, которым мы хотим поделиться с вами:

«Как обучиться программированию, работая в другой сфере?»

Мы обратились за разъяснениями к нашим экспертам, а полученные ответы представляем вашему вниманию.

Евгений Картавец

Евгений Картавец

руководитель отдела обучения GeekBrains, Mail.Ru Group

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

Второе — нужны навыки, практика: решать учебные задачи, писать тренировочный проектик в свободное время.

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

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

Роман Репринцев

Роман Репринцев

разработчик интернет-холдинга Банки.ру

Научиться программированию легко! Как говорил один великий русский певец: «Невозможное — возможно!» Сам я в прошлом так себе звукорежиссёр.

В своё время я скачал книгу по основам программирования, которая помогла мне определиться с направлением — веб-разработка. После этого я просмотрел много различных видеокурсов для «чайников» на темы: как работает сеть, HTML и CSS, JavaScript, PHP и Mysql.

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

Сделав пару сайтов по видеокурсам и несколько различных примеров по статьям, я написал письмо в одну из топовых веб-студий с таким примерно содержанием: «Мне нужна бесплатная стажировка, вам — бесплатная рабочая сила». Мы договорились. Около 3 месяцев я работал там в качестве стажёра, набираясь опыта у коллег. По истечении этого срока я был принят на работу в качестве junior-разработчика на оклад. Я был счастлив!

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

Сергиус Офицеров

Сергиус Офицеров

аналитик в syndicate.one

(Ответ подготовлен совместно с Михаилом Субботиным, преподавателем израильской высшей школы IT и безопасности HackerU)

Изучать книги, смотреть онлайн-курсы, решать задачи и участвовать в open-source projects. Откровенно говоря, либо никак, либо очень сложно. Можно быть управляющим проекта, а по вечерам штудировать его исходники. Конечно же, придётся забыть про сон, потому что у большинства программистов и разработчиков (и, возможно, у всех людей творческих профессий) мозговая деятельность более активна ночью.

Можно также прокачиваться с помощью игр. Это стимулирует и не особенно давит на мозг в процессе обучения. Никогда не стесняйтесь задавать вопросы, какими бы глупыми они вам ни казались. Есть ещё суицидальный метод: резко перейти на Linux без графического интерфейса. Достаточно быстро заставляет разум выйти из зоны комфорта.

Олег Власенко

Олег Власенко

заместитель генерального директора SimbirSoft

Давайте сразу определимся, что, не решая программистские задачи, программированию научиться невозможно. Общепринято считать, что чтобы более-менее уметь программировать, надо написать от 5000 строк кода собственноручно. Желательно, решая разные задачи.

Самый простой способ обучиться программированию, не работая программистом, — учиться в вузе на ИТ-специальности. За 4 года, НЕ РАБОТАЯ ПРОГРАММИСТОМ, можно научиться программированию.

Если вам уже не 18, или вы не попали на ИТ-специальность, то есть другие пути.

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

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

1) Посмотрите на hh.ru, какие вакансии в программировании вам интересны. Выберите специализацию (например, «Веб-разработчик», «Java-программист» и т. п.).
2) Найдите курсы (есть масса бесплатных) по этому направлению. Запишитесь на них. Честно пройдите 1-2-3 таких курса.
3) Если у вас ничего не получается после 2-3 попыток — попробуйте другую специализацию.
4) Если всё ок, значит, у вас уже есть базовые знания (после курсов), теперь надо получить опыт. Для этого найдите интересные вам задачи, которые можно решить при помощи этого языка. Это может быть что-то для вас или вашей семьи. Может быть реальная задача с вашей текущей не-программистской работы. Может быть идея стартапа. Это может быть ЧТО УГОДНО!
5) Делайте эти задачи!
6) Когда вы в общей сумме напишите 2000-3000, а лучше 5000 строк — вы уже что-то будете уметь, и можете претендовать на базовые вакансии программистов.
7) Выбирайте те компании, где есть выстроенная система обучения. Где вами будут заниматься и будут прокачивать.

Рустам Кильдиев

Рустам Кильдиев

руководитель отдела разработки BigData компании «Иннодата»

Сегодня сделать это очень просто. Существует практически бесконечное количество курсов, как онлайн так и офлайн, платных и бесплатных. Правда, есть большой шанс натолкнуться на курс, от которого будет крайне мало эффекта. Очень часто вижу рекламу: «Научим программированию за 21 день», даже видел объявление «за 7 дней». На самом деле, если покопаться в Интернете, поспрашивать у сообществ в профильных чатах, то вы точно найдёте отличный курс и не один. Можно сказать, что универсальная и одна из самых популярных и качественных площадок с курсами — это Coursera.

Артем Литвиненко

Артем Литвиненко

координатор обучения, scrum-мастер REG.RU

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

К основам относится базовый синтаксис языка, конструкции и встроенная библиотека, с которой язык поставляется. Это лучше всего изучать по книгам-учебникам, которые существуют в изобилии для каждого языка. Для быстрого старта рекомендую проходить туториалы с официальных сайтов языков (PHP, Python), online-курсы (pythontutor.ru, coursera.org) или смотреть видео. Понимание базовых конструкций и библиотеки языка обычно приходит на практике. Тут вам помогут задания, которые есть в каждой книге-учебнике, а также отлично помогают сайты-задачники: HackerRank, W3resource, Codewars, Checkio.

Когда вы утолите жажду «начать уже программировать», решая простые задачки, следует приступить к изучению архитектуры ПК. Фаворитом тут является книга Эндрю Таненбаума «Архитектура компьютера». Это поможет понять, что же на самом деле делает язык программирования, когда вы запускаете ваш код. Параллельно надо продолжать практику, переходя к написанию более сложных программ. Например, написать парсер, который конвертирует лекции с вашего любимого Youtube-канала в звуковые файлы для прослушивания с телефона, или парсер погодных сайтов для вычисления наиболее вероятной погоды, или игру «Змейка». В завершении этого этапа будет не лишним получить опыт работы за деньги. На сайтах freelance.com, upwork.com сконцентрировано большое количество задач, преимущественно несложных, за выполнение которых вам заплатят.

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

Такие задачи можно найти в opensource-проектах, которые разрабатываются сообществами программистов во главе с профессионалами. Тут ваш код обязательно будет проходить code review. Более опытные коллеги будут направлять вас на поиск оптимальных решений для поставленной задачи. Обычно у таких проектов есть баг-трекеры, которые содержат перечень проблем, подлежащих решению. Найти такие проекты в интернете несложно, вот например — medium.mybridge.co. Почти всегда они хранятся на github.com, что также способствует изучению систем контроля версий, таких как Git или Mercurial. Этот этап, кстати, наиболее качественно можно пройти на стажировке в крупных компаниях. Мы часто набираем на стажировку тех, кто уже умеет программировать и в дальнейшем хочет получить предложение работать у нас.

Александр Толмачев

Александр Толмачев

специалист группы поддержки мобильного приложения Link компании «Аэроклуб ИТ»

Составляющие успеха можно разбить на 4 блока. Самую важную роль играет мотивация — желание и предрасположенность. На мой взгляд, именно мотивация обеспечивает 40% успеха. Следующий блок — непосредственно работа, а именно ежедневное планирование последующего дня и реализация плана, только таким образом можно приобрести и усвоить новые навыки. Это — второй по значимости блок, и я бы отвёл на него 30% успеха. Немаловажную роль в процессе обучения играют программы самообучения, на них приходится 20% успеха реализации. Причём обязательным критерием в отборе программ должно быть наличие чекпоинтов, контроля и статистики. Ну, и, можно сказать, вишенкой на торте (10%) является tacit knowledge, которое вы приобретаете при взаимодействии с профессионалами ИТ-сферы. Работа в ИТ, причём не важно, какую позицию вы занимаете, обеспечивает возможность учиться изо дня в день различным способам решения задач, а также даёт поддержку и свежий взгляд на вопросы, которые стоят перед вами.

Эльдар Мингалиев

Эльдар Мингалиев

разработчик 1С, компания Neti

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

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

Придумайте какой-то простой, но интересный мини-проект. Тут всё уже зависит от области: мини-браузер, калькулятор, аркадную игру на смартфон и т. д. И дайте себе обещание: ни в коем случае не сворачивать с пути, пока не дошёл до конца своего плана. Это очень важно! Стоит понимать, что мир программирования, каким бы разнообразным он ни был, работает по одним и тем же правилам. Если вы изучите фундаментальные законы на примере одного языка или одной технологии, то понять, как работает другой язык или технология, будет в разы проще. Поэтому так важно не бросать начатое на полпути. Даже если путь в итоге окажется ошибочным, он позволит без проблем в краткий срок изучить что-то другое.

Алена Батицкая

Алена Батицкая

frontend-разработчик, преподаватель курса «Профессия frontend-разработчик» университета онлайн-профессий «Нетология»

Если случилось так, что в один момент вы решили сменить профессию и обучиться программированию, то я советую вам запастись терпением. Несмотря на то, что многие курсы и школы заверяют, что «программирование — это просто», на самом деле это, в некоторой степени, лукавство.

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

Время на учёбу. Для того, чтобы стать востребованным специалистом, вам потребуется уделить ощутимое время на освоение новой профессии. Я не до конца согласна с теорией 10 000 часов, но эта цифра очень удобна для понимания того, сколько времени вам потребуется. Возьмите 10 000 и поделите на то количество часов в день, которое вы готовы уделять изучению программирования. В итоге вы получите количество дней, нужных для освоения профессии. Прибавьте к ним выходные, поделите на количество дней в месяце и перед вашими глазами будет срок, после которого вы сможете конкурировать на рынке трудоустройства. Хотите быстрее? Уделяйте больше времени!

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

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

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

Начало карьеры. Если вы прошли обучение и готовы выйти на рынок труда, то мне хотелось бы вас предостеречь. Интерес к программированию в последние пару лет очень высок, и на рынке прямо сейчас очень много начинающих разработчиков, на профессиональном сленге называемых джуниорами. Это низкоквалифицированные специалисты. Из-за большого предложения и низкого спроса найти первую работу будет не так-то просто. Всё будет решать ваш опыт. Поэтому никогда не останавливайтесь в развитии. Вплоть до первого дня своей первой работы программистом уделяйте свободное время самообучению и пополнению своего портфолио. Читайте webref.ru, learn.javascript.js, документацию на сайте MDN и изучайте веб-стандарты. Если у вас есть финансовые обязательства, то не стоит увольняться с работы сразу после окончания курсов. Хотя кого-то подобные действия стимулируют и заставляют искать работу в 100 раз усерднее.

Юлия Романова

Юлия Романова

head of marketing @ Driveback

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

Во-первых, меняются требования к известным профессиям, и знание программирования становится нормой. Если раньше круто было прочитать в резюме «уверенный пользователь ПК, Microsoft Office», то сегодня мы спокойно реагируем на «опыт программирования на PHP, Python».

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

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

Большинство студентов-айтишников начинают рассылать резюме по HR-отделам на первом-втором курсах, а к третьему – уже трудятся на позиции джуниоров в штате компаний. Как ребята успевают сдавать лабы преподавателям и релизы заказчикам, что по этому поводу думают работодатели и как к «совместителям» относятся в вузе?




Глеб Стрельцов, 3-й курс факультета компьютерных систем и сетей БГУИР:

– Попасть на работу было сложно. Я хотел заниматься разработкой на языке Java. Конкуренция на рынке труда по этому направлению серьезная: только в одном из 20 случаев твое резюме без опыта рассматривали и приглашали на собеседование. Полгода назад меня взяли на должность инженера-программиста в компанию iTechart. К тому, что я еще студент, здесь относятся с пониманием: если ты хорошо выполняешь работу, то тебе всегда пойдут навстречу. Чего скрывать, занятия в универе иногда приходится пропускать. Но нужно четко понимать, когда это делать можно, а когда – нет. На­пример, лекции я изучаю самостоятельно, так как почти всегда есть их электронный вариант. В каких-то ситуациях надо уметь договариваться с преподавателями, однокурсниками. А еще надо очень много самостоятельно заниматься. Идеальный вариант – не менее 20 часов в неделю, не привязываясь к парам в университете.


Анастасия Андрухович, 3-й курс факультета компьютерных систем и сетей БГУИР:

– После 3-го курса у нас будет практика, поэтому все мои однокурсники ищут место, где будут ее проходить. Я – тоже. Конечно, можно подготовиться к собеседованию самостоятельно, но для этого нужна огромная сила воли. Поэтому большинство претендентов в стажеры оканчивают курсы. Бесплатных в Минске немного, и они работают при крупных IT-компаниях. Я прошла отбор на веб-разработку на языке Java в EPAM. Лучше выбирать то направление, с которым ты уже немного знаком, иначе осваивать все с нуля будет сложно. В университете писала курсовой проект на Java. Он уже нашел практическое при­менение в производстве печатных плат – программа помогает систематизировать и перенаправлять данные, которые до этого обрабатывались вручную.

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


Артем Зубель, 3-й курс факультета компьютерных систем и сетей БГУИР:

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

Работу искал, как и многие студенты, для того, чтобы иметь карманные деньги, но потом втянулся. На курсах изучал новые языки программирования и понял, что мне интересен не только результат (то есть зарплата), но и сам процесс. В конце курса мы защищали проект и сдавали экзамен. Примерно через три недели мне позвонили и пригласили на собеседование.

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


Слово работодателю

Сергей Зеневич, заместитель директора ООО «СофтТеко»:


Звонок в вуз

Валерий Прытков, декан факультета компьютерных систем и сетей БГУИР:

– Мы поддерживаем ребят, совмещающих учебу и работу, ведь, с одной стороны, у них появляется возможность применить знания на практике. А с другой – работающие студенты позволяют обеспечить связь науки и производства: знакомят преподавателей с новыми тенденциями в развитии технологий, что позволяет своевременно корректировать учебные программы. На 3-м курсе нашего факультета по специальности работает около 60 процентов студентов, на 4-м – более 80. Ребятам с младших курсов при­сматриваться к вакансиям мы не реко­­мен­дуем – все-таки в первую очередь нужно получить фундаментальную подготовку.

Читайте также: