Статья удалена
На днях я получил оффер и скоро выхожу на работу в качестве Junior C# Unity программиста (порадуйтесь за меня). Так сказать, вошёл в IT, и теперь IT будет регулярно входить в меня)
Поэтому я решил написать этот пост как сборник полезных материалов и советов, которые я хотел бы сразу найти в сети год назад, когда только начинал учиться. Короче, инфа от новичка ещё более зелёным новичкам)
Пост рассчитан на совсем неопытных людей, которые решили попробовать найти работу программистом. Если тебе нужно просто переучиться с другого языка или стека, то читай по диагонали. Это ни в коем случае не исчерпывающая инструкция к применению, я буду рад дополнить и исправить материал согласно советам бородатых сеньоров)
0. Лучшее время начать учиться — прямо сегодня
Банально, но правда. Лучше учиться хоть по 15 минут в день, чем ждать волшебного подходящего момента.
1. У Unity есть отличные обучающие материалы
Начни с основ:
Тут тебе подробно и доступно объяснят, какие роли существуют в командах разработки, что такое движок Unity и где его применяют, как не теряться в миллионах панелек и менюшек и т.д.
Как ты заметил, все материалы Unity Learn на английском, но это не беда.
Во-первых, рано или поздно тебе всё равно придётся подтянуть язык хотя бы до уровня 9 класса.
Во-вторых, гуглить решение проблем гораздо лучше на английском, так у тебя будет доступ к гораздо большему объёму информации.
В-третьих, умение читать техническую литературу и документацию на английском будет хорошим пунктом в твоём будущем резюме.
В-четвёртых, весь материал написан очень простым и живым языком с обилием шутеек. Почти ко всем видео доступны субтитры.
Наконец, Гугл довольно сносно переводит содержимое страничек.
Когда освоишься, самое время переходить к более практическим навыкам:
Тут тебя за ручку, по пунктам, от А до Я проведут по всем основным возможностям движка, объяснят ключевые понятия и полезные практики, расскажут про основы программирования на C# и ООП. В процессе обучения будет предложено решить пару десятков задач разной степени сложности: имплементации фич, дебаг проектов, элементарный рефакторинг и оптимизация, работа с отзывами игроков — скучно не будет.
Хорошим дополнением будут мини-курсы:
В принципе, если стоит задача писать простенькие гиперказуалки а-ля Flappy Bird, полученных знаний уже будет достаточно. Можно смело приступать к изучению рынка труда или написанию домашнего проекта.
2. metanit.com
Этот сайт будет тебе надёжным другом и товарищем в деле освоения кодинга. Помимо объёмного, весьма подробного, отлично структурированного и понятного Руководства по C# на сайте есть примеры тестовых вопросов, очень ценная секция комментариев и сопровождающие видео почти к каждой теме.
В целом, ничего сложного в программировании нет. Если какая-то тема туго идёт, попробуй немного отдохнуть, проверить комменты (там, скорее всего, все вопросы разжевали уже годы назад), поискать материал по теме самостоятельно.
Лично я рекомендую к изучению главы Руководства с 1 по 6 и 9. Для джуна хватит на первое время, но лучше хотя бы ознакомиться с полным оглавлением для того, чтобы быть хотя бы в курсе о существовании некоторых фишек.
Также, очень рекомендую проработать разделы, посвящённые относительной сложности алгоритмов и принципам SOLID.
3. RTFM
Хихоньки, конечно, хахоньки, но официальный мануал действительно очень полезный и к тому же содержит неплохие примеры практик и кода. Не ленись почитать его, а не просто первую ссылку на stackoverflow в гугле.
То же самое касается и Scripting API
4. Код стайл
Достаточно горячая тема, включающая в себя рекомендации по наименованиям, стилю и оформлению кода. Кто-то уповает на официальный C# Coding Conventions, кто-то считает, что стиль не бывает неправильным, а лишь непринятым в данной конкретной команде. Короче, это как вопрос этикета — лучше изучить и намотать на ус, но применять к месту и не холиварить по пустякам.
5. Паттерны, рефакторинг и прочие умные слова
Шаблоны игрового программирования помогут тебе использовать типовые архитектурные решения, а не изобретать велосипед в сотый раз. Знать всё не обязательно, но ознакомиться советую.
К тому же существует неофициальный перевод на русский.
Рефакторинг поможет тебе держать свой код в относительной чистоте и порядке. На мой взгляд, тема неплохо раскрыта тут:
6. Дополнительная инфа
Не стесняйся рыться в как можно большем количестве источников информации. Тут я перечислю только некоторые места, которые мне понравились.
Каналы с видеоуроками и примерами реализаций фич из различных игр на Unity:
Блог с переводами различных статей от разработчиков и не только:
Если сильно соскучился по универским лекциям или хочешь закопаться в тему поглубже, тебе на Лекториум. Там какое-то совершенно неприличное количество видео лекций на самые разные темы в свободном доступе:
Онлайн книга на случай, если хочешь поподробнее узнать про системы контроля версий, а точнее про git:
Онлайн книга на случай, если хочешь как следует обмазаться матчастью, а именно мат аппаратом 3D графики и аналитической геометрии:
Сайт с огромным количеством задачек по программированию разного уровня сложности. Представляют больше спортивный интерес, чем практический, но могут неплохо разбавить процесс обучения и развлечь:
Отличный пост-подборка про Computer Science, которую опубликовал товарищ Sam Tokov
7. Собеседования
То, ради чего всё и затевалось. Не скажу, что у меня большой опыт в прохождении собеседований, поэтому просто оставлю ссылки на чужие материалы.
Самый полный и полезный гайд, что я встречал. Хотя половина вопросов на моих собесах были не из представленного списка, но понимание общего процесса сильно помогло не растеряться:
Ещё немного вопросов по разным темам:
Вопросы по C# и .NET
8. Книги
Как ты мог заметить, все материалы, на которые я уже оставил ссылки, были бесплатными и общедоступными. Теперь же поговорим о книгах, каким бы путём ты их не получил
Эта книга подробно описывает внутреннее устройство и функционирование общеязыковой исполняющей среды (CLR) Microsoft .NET Framework версии 4.5. Книга научит вас создавать по-настоящему надежные приложения любого вида, в том числе с использованием Microsoft Silverlight, ASP.NET, Windows Presentation Foundation и т.д.
Четвертое издание полностью обновлено в соответствии со спецификацией платформы .NET Framework 4.5, а также среды Visual Studio 2012 и C# 5.0.Из аннотации
Обо всём понемногу, хорошо подходит как обзорный материал для новичков.
Хорошо структурированный материал с обилием листингов (иногда встречаются опечатки) и описанием некоторых алгоритмов и приёмов проектирования игр. Не подходит для полных новичков в программировании. Подходит для вкатывания в Unity, если ты уже умеешь писать хоть какой-то код.
Отличный справочник по введению в базовые алгоритмы. Не все темы релевантны в геймдеве, но фундамент закладывается неплохой.
Отличный научпоп с описанием работы систем кодирования, электрических устройств, прообразов современных ПК, историческими экскурсами и просто интересными сведениями. Настоятельно рекомендую к прочтению в свободное время.
Нетленка об истории развития индустрии разработки ПО, организации и управлении рабочего процесса.
Ещё можно почитать что-нибудь из следующего списка (сам не проверял, но люди рекомендуют):
В заключение
Я оставил множество ссылок, информации в интернете колоссальное количество. Не пугайся, учить всё это от корки до корки не обязательно)
Никто на свете не знает всего о программировании и уж точно всего о геймдеве. Сеньорами не за пару месяцев становятся, тебе предстоит ещё много лет учиться, набираться опыта и набивать шишки.
Суть в том, чтобы знать достаточно для выполнения поставленной задачи, а если не знаешь — найди нужную информацию. Не теряйся, сохраняй мотивацию и будь лучшим спецом, чем был полгода назад.
Надеюсь, текст получился не слишком затянутым и не вносящим дезинфы. Свои мысли и замечания оставляйте в комментах — те, кто найдут пост позже, будут весьма благодарны)