Как стать автором
Обновить

План обучения С#

.NET *C# *Машинное обучение *Data Engineering *
Из песочницы

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

Приветствую, Хабрачитатели!

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

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

P.S. это статья для новичков, поэтому много фактов будут банальными для опытных разработчиков. Просьба не бить. Если что-то забыл - пишите в комментариях. Ну а теперь к статье :)

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

Второй вариант заключался в прохождении курса Sololearn. Sololearn оказался действительно намного полнее уроков Дударя, но как говорится - всё познается в сравнении.

И самый нормальный вариант - книга Герберта Шилдта "Полное Руководство по С# 4.0". Действительно, самое полное, что может быть. 1000 страниц, и после этого, ты сможешь выучить язык. Но я вам скажу, этого мало. Кстати, ссылка на скачивание всех книг из этой статьи, находится тут (ссылка на Телеграм).

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

Что кроме языка?

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

Итак, SQL вы, предположим, изучили. Нужно как-то это все дело сортировать, верно? И тут нам помогут механизмы сортировки. Их тоже не помешало бы знать, начав, с самого просто - механизма сортировки пузырьком. Это как раз будет подходить для ваших маленьких массивов, и поможет понять, как оно работает, и как его применять. Далее можно будет перейти к более сложным сортировкам, и опять же практиковаться для закрепления знаний.

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

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

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

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

  3. Не должен выводится null

  4. Проект должен быть потокобезопасным, да и в целом многопоточность- это отдельная тема, которую чтобы понять, недостаточно прочесть главу из книги Герберта Шилдта. Нужно постоянно изучать инструкции от Майкрософт или на Хабре.

  5. Повышайте производительность программы, используйте garbage collector, и постоянно заботьтесь о том, как программа или система будет вести себя на маломощных компьютерах/серверах.

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

Изучайте устройство серверов, и пытайтесь создать свой

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

Изучите нейросети

Но это уже если вы точно уверены в своих навыках и опыте. В создании нейросетей много математики, но не пугайтесь. Если разобраться во всем этом, то создание нейросетей даже будет доставлять вам удовольствие. Я, например, начал изучать нейросети с курсов Анатолия Карпова, даже несмотря на то, что примеры были написаны на Pandas для Пайтона. К тому же, есть мощнейший инструмент для машинного обучения, только на шарпе - ML.Net. И в целом, помимо нейросетей, полезно изучить физику в программировании и технологиях, чтобы понимать процесс программирования более детально.

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

А как же игры?

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

Помните, всё зависит от вас, и программирование - это очень интересно. Так что изучайте, читайте и стремитесь.

Ваш SVPRA.

Теги:
Хабы:
Всего голосов 26: ↑12 и ↓14 -2
Просмотры 6.1K
Комментарии Комментарии 31