Работа программистом — не волк, работа — work, а walk — это прогулка (с) Джейсон Стейтем
Всем привет! Задумал статью о том, что я использую во время работы, на что опираюсь, и где ищу информацию для развития. Сначала я думал, что статья получится маленькой и не особо интересной, но потом вспомнил, что таких ресурсов, в принципе, не мало, и мне есть что рассказать о них. Кроме того, вы всегда можете поделиться в комментариях, что используете вы, подняв ценность данной статьи для всего коммьюнити.
Книги
Когда я начинал изучать C#, мой друг подарил мне на день рождения книгу об основах C#. К сожалению, у нас отложилась встреча на пару недель, и вскоре я просто сам всё изучил в интернете, а книга мне особо и не пригодилась. Но в программировании есть книги, которые не теряют актуальность ни со временем, ни с ростом вашего уровня.
1. Чистый код, Роберт Мартин
Эта книга входит вообще во все подборки книг по программированию. Книга очень интересная, написана живым языком и с примерами, которые легко читать (правда, они не на C#, но там всё понятно). Некоторые принципы из неё я использую каждый раз, когда пишу код:
- Писать сразу чистый и качественный код, а не "сначала напишем, а потом поправим, чтобы было чисто". Нет, сразу пишем так хорошо, как только можем.
- Давать переменным понятные и содержательные имена
- Не перегружать методы (метод должен быть не более 50 строк, иначе его следует разделить)
- Не перегружать функции аргументами. Если у вас более 3 аргументов у функции, стоит задуматься о том, как это уменьшить. На практике некоторые приватные методы у меня имеют до 5 аргументов, но минус в большом числе аргументов компенсируется тем, что методы становятся короче
Однозначно рекомендую к прочтению всем
2. Конрад Кокоса, Управление памятью в .NET для профессионалов
Это довольно сложная книга, которая довольно сильно напрягает мозг. Из неё вы узнаете в самых мелких подробностях много интересного:
- как работает память на современных компьютерах
- как реализовано управление памятью в .Net
- что, как, когда, зачем и почему делает сборщик мусора
- как избежать утечек памяти и какие тут есть секреты и частые ошибки
- что ответить на собеседовании на вопрос: "в чём разница между ссылочным и значимым типом?", кроме "значимые хранятся в стеке, а ссылочные в куче" (вообще, это не так).
Книга довольно сложная, не рекомендую, если вы новичок, или если вы не профессионал (например, считаете, что в коде никогда не следует использовать ключевое слово static)
3. Приёмы объектно-ориентированного проектирования. Паттерны проектирования
Эту книгу я читаю прямо сейчас. В ней рассказывается о подходах к разработке и структурированию кода, которые стоит использовать в своей работе, с подробными примерами и границами применимости. Возможно, часть паттернов вы уже применяли на практике, только не задумывались (например, Строитель или Абстрактная фабрика).
Я весьма рекомендую эту книгу всем, кто программирует, потому что помимо важных базовых вещей она ещё и учит подходить к своему коду более структурно и осмысленно. Сначала думаем, что и как мы делаем, а потом делаем, а не "сделаем, потом разберёмся, если что переделаем".
Обучающие ресурсы
1. Stepik
Это очень крутая платформа с курсами на русском языке. Многие из них бесплатны, а другие — не очень дороги. Именно здесь я сделал свои первые шаги в SQL и в JavaScript, а так же нашёл 2 потрясающих курса про алгоритмы. Ещё тут есть практический тренажёр по C# (подойдёт начинающим, остальным будет скучно), и всякие вещи по питону. Мне очень нравится, что там есть практические задачи, и вы не просто смотрите видео, а ещё и закрепляете материал, где строгая система не даст вам профилонить.
Бесплатные курсы:
2. Udemy
Это платформа для курсов, гораздо более наполненная, чем Stepik. Там постоянно есть скидки, можно за 10-12 долларов купить хороший курс по множеству интересных тем.
Я изучаю там вещи, связанные с веб-разработкой, но в принципе там есть и курсы по Revit, и Revit API, и вообще всё что угодно.
Российские карты на платформе не работают — покупайте билет на aviasales.ru до Тбилиси, там можно оформить карту без особых сложностей.
3. Leetcode
Это тренажёр с задачами по множеству тем. Вы можете практиковаться в решении задач на разных языках, читать подсказки и решения других участников, если столкнулись с трудностями, а так же публиковать свои решения. Это хороший ресурсов для улучшения своих практических знаний по работе с алгоритмами. Он на английском языке, зато бесплатно, и заодно и английский подтянете.
Там есть несколько обучающих курсов для новичков, и я очень рекомендую этот ресурс всем.
Поиск ответов на вопросы
Эта часть будет самой банальной, но честной. Последнее время я использую только 2 ресурса.
1. Google
Ссылку на гугл прикладывать не буду, загуглите сами.
Если я чего-то не знаю, я гуглю это. Если ответ найден, то хорошо. Если нет, то переформулирую запрос или гуглю на английском. Далее либо ответ найден, либо найдена подсказка, чтобы найти ответ, либо надо править запрос дальше, либо разбираться самостоятельно. Вот примерно такой у меня алгоритм работы с гуглом (делитесь своим в комментариях)
2. ChatGPT
Я использую этот инструмент в 2 случаях:
1. Когда я забыл ответ на какой-то простой вопрос, но мне лень гуглить или искать в старых проектах. Например, я прошу его написать пример WPF-конвертёра или IComparer для строк. Да, я знаю как это делать, просто не наизусть, а чат напишет быстрее.
2. Если я что-то не знаю, как правило, по WPF. Я формулирую запрос (простой на русском, если сложный, то на английском), и пытаюсь из его ответа понять, то это, не то, подойдёт мне или нет, и если подойдёт, то что именно надо поменять. Обычно он просто наталкивает меня к решению, а само решение приходится искать самостоятельно.
Youtube-каналы
Тут на самом деле небольшой список, всего из двух пунктов. Мне очень нравится канал Ника Чапсаса: у него отличный английский, который я успеваю понимать на скорости 1х, и он рассказывает интересные темы, которые подойдут для C#-разработчиков всех отраслей.
Второй — канал Сергея Немчинского. Там в основном видео не про код, а про сферу IT, но иногда попадаются и интересные технические видео (например, про нормализацию баз данных).
Заключение
Ну, в принципе, и всё. Я не ставил перед собой цель поделиться с вами как можно большим числом ресурсов — я хотел рассказать о тех, которые актуальны для меня сейчас. Так что добро пожаловать в комментарии — делитесь вашими источниками информации со мной и с другими читателями.
И не забывайте подписаться на мой телеграм-канал о Revit API. До новых встреч!