Ответ на пост «Фронтендер Гриша»
data:text/html;base64,PGJ1dHRvbj5IZWxsbzwvYnV0dG9uPg==
data:text/html;base64,PGJ1dHRvbj5IZWxsbzwvYnV0dG9uPg==
Эм. Это собеседование! В голове у соискателя появляется простой вопрос: "А зачем на собесе это спрашивать?" Нет ни одной причины такое спрашивать даже у джуна. Да даже блин у школьника.
В этом как бы и суть технических собесов. Задаём простой вопрос и даём человеку раскрыть тему в меру своих знаний.
Устанавливает nvm, через него ставит node.js, потом через yarn ставит vite, создаёт новый проект на React + TypeScript...
Показал что знает ноду, nvm, реакт. Пишет не на js, а на TypeScript - значит понимает что это и зачем. Кучу инфы дал на простом вопросе.
И что ему в ответ? Надо <button>Кнопка</button>? Если собеседующий задаёт такой вопрос и хочет получить на него ответ html <button>Кнопка</button> - он идиот. Надо заканчивать собеседование и делать оттуда ноги.
PS: Идея поста понятна, а вот ситуация с собесом - в корне не верный для неё контекст)
Сделал пост с этой же картинкой, т.к. не знал что ТС есть и на Пикабу.
@imctobitch, прошу прощения больше не повториться.
К картинке я добавил текст "И не только Гриша, И не только фронтэнд... И даже не только программисты..." потому что выдалось 5 минут на одну очень важную тему.
Причины, почему в 99,9 % случаев всё происходит через жопу.
Для почти всех разработчиков будет открытием, что помимо классической классификации софта есть ещё и производственно-эксплуатационная. Есть 4 крайне важные градации:
Штат специалистов
Крупная команда (> 7 человек)
Обычная команда ( 2 - 7 человек)
Один исполнитель
Масштабная:
Крупный проект
Мелкий проект
Разовая задача
Нагрузочная:
Очень много пользователей одновременно (> 10 тысяч)
Нормальная нагрузка (100 - 10к)
Незначительная нагрузка. (< 100)
Периодичность:
Постоянная работа
Работа периодами (например, в рабочее время)
Разовая задача
Так вот - все "как надо" в ИТ сфере обычно подразумевают крупную команду, крупный проект, нормальную нагрузку и постоянную работу.
При этих вводных все эти "чистые коды" работают и иногда даже хорошо...
!!! НО ТОЛЬКО В ЭТИХ УСЛОВИЯХ !!! Во всех остальных условиях следование этим принципам является идиотизмом. Правда этот идиотизм настолько врос в профессию, что многими он воспринимается как должное и естественное.
Пятница, писать лень, так что 3 примера:
Разовая задача. Эта задача которая по тем или иным причинам либо не возникнет снова, или ТЗ будет изменено настолько, что проще написать снова. Тут нужно говнокодить по страшному.
Пример - бывает, что госорганы для своих каких-то целей запрашивают данные. Эти данные могут быть довольно сложно структурированы в БД т.е. руками и простым запросом не решить. Такие запросы НИКОГДА не повторяются. Написали код, выполнили и забыли. Все проектирования классов, тесты и прочая шняга - это время потраченное абсолютно впустую.
Крупный хайлоад. Вы должны писать код так, чтобы он работал быстро. В коде 100 if подряд? если это конкретно здесь работает быстрее - делайте именно так. Потому что от качества работы приложения напрямую зависит количество серверов на котором это всё будет работать. Серверов стоимость которых зачастую примерно равна квартире в каком-нибудь региональном центре.
Менеджеры "от бизнеса" эти нюансы очень остро чувствуют. И 90 % неприязни к ИТ как раз и заключается в том, что у них есть понимание, что эта задача должна стоить Х и делаться за У времени, а по факту бюджеты и сроки перекрываются в разы. И в качестве ответа на вопрос "какого хера?" им рассказывают про SOLID, Agile и далее по списку.
Я не раз наблюдал, когда гендир спокойно подписывает увольнение сеньору, (да ещё и предварительно его спровоцировав на это самое увольнение), но умоляет остаться джуна.
Просто потому что конкретно этот джун понимает что не все задачи нужно делать "по канону".
Разработчики часто не видят ситуацию "в целом". У бизнеса совершенно другие ценности. Бизнесу нужно прежде всего решать свои задачи. И решать их экономически целесообразно.
И в 99 из 100 проектов "каноны" и "мастхэв" ИТ-индустрии для бизнеса это - полный пиздец, которым пользуются исключительно потому, что нет более подходящего предложения.
Могу проиллюстрировать простым примером. Есть "джуновская" булка хлеба, которая "здесь и сейчас" стоит 20 рублей. Купил-съел. Есть "мидловская" хлебопечка, которая делает хлеб получше, но дороже и 4 часа. А есть хлебзавод "сеньора", который хер знает когда построят, стоит дохера и может давать продукт только тоннами.
Так вот, если компания планирует продавать хлеб тоннами, то хлебзавод рулит.
Если компания хочет разок выебнуться, то хлебопечка рулит.
Если нужно просто пожрать, то просто покупается булка хлеба.
А когда "канон должен быть везде", то получается, что в 90 % случаев вы голодный приходите за хлебом, а с вами начинают согласовывать проект хлебзавода...
И менеджер понимает, что ему продают булку хлеба по цене хлебзавода. И самая главная проблема для него в том, что ВСЕ ДОСТУПНЫЕ КАНДИДАТЫ продают именно это. За специалистов, которые могут сопоставлять задачи и способы их решения грамотные HR войны ведут. Потому что найти 50 сеньоров проще, чем 1 такого.
И самое главное - это не уникальная для ИТ ситуация. В других отраслях всё абсолютно то же самое.
Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi
Всем привет! Как насчет того чтоб перенять мой опыт?
Сегодня я хочу затронуть две темы, о одной из них мало информации в открытых источниках. Первое - это как я реализовал защиту в Telegram на REST API. Второе - это какие дыры есть в Mini App Telegram.
Я разрабатываю Mini App в Telegram, это такая штука открывающаяся внутри бота и есть внутрение приложение Telegram.
Стояла задача разработать приложение с админкой, тратить время на развертывание сервера, налаживание и его защиту не было времени. Нужна оперативная работа.
Изучив возможные варианты, выбрал Strapi - это OpenSource проект написанный на Node.js. Развернуть можно как в облаке так и локально. Имеет поддержку русского языка.
Так выглядит админка Strapi
Если в общем, то мой стек используемых инструментов выглядит следующим образом:
Telegram App ( Библиотека )
Strapi ( Админ панель + REST API )
PostgreSQL ( База данных )
Next.js ( Само приложение )
Стек технологий
Решение с защитой что я предлагаю подойдет каждому. Главное понять его принцип.
Когда пользователь открывает веб-приложение через Telegram, ваше приложение получает начальные данные от самого Telegram, такие как идентификатор пользователя и его имя. Чтобы убедиться, что эти данные подлинные и не были изменены, используется специальный процесс проверки.
Преобразование данных: Приложение преобразует начальные данные в удобный формат.
Создание строки для проверки: Из всех параметров (кроме специального hash) создается отсортированная строка.
Создание секретного ключа: С помощью токена вашего бота создается секретный ключ.
Создание цифровой подписи: Используя секретный ключ и строку параметров, создается цифровая подпись.
Сравнение подписей: Приложение сравнивает созданную подпись с полученной от Telegram. Если они совпадают, данные подлинные.
Этот процесс помогает убедиться, что данные, полученные от Telegram, не были изменены, обеспечивая безопасность вашего приложения и его пользователей.
После успешной валидации я генерировал JWT токен для пользователя и он становился полноценным пользователем в моей системе.
Далее можно с ним делать что угодно 😏 - ну допустим заблокировать его, дать права админа и т.д.
А сам пользователь имеет полный доступ к возможностям приложения. Но вне телеграма он ничего не сделает.
Не буду показывать на конкретном примере, но большинство разработчиков не умеют или не хотят защищать свои приложения, а чисто привязывают все к Telegram ID ( ID вашего аккаунта ) и так и живут.
Telegram ID состоит из цифр и перебрать его методом подбора не составит труда и получить доступ к аккаунту в Mini App.
Зачастую этим грешат новые приложения или не опытные разработчики, например в Telegram Apps Store ваше приложение проверяют на наличие этой защиты.
Кроме того нужно учесть что само приложение не должно никоем образом отображаться в поисковиках, если все взаимодействие выстроено на основе телегерама. Приложения же имеют свой адрес и могут индексироваться, не забывайте выключать!
Кроме всего этого можно запретить вне телеграма заходить в ваше приложение тем же способом что описан выше.
Не важно на каком языке вы пишите, телеграм уже сделал для вас подсказку, осталось ей воспользоваться.
Оставлю ссылку здесь на данный раздел - Документация Telegram
Я надеюсь эта статья поможет тем кто хочет или уже занимается разработкой WebApp на Telegram. Если все еще осталось что-то не понятно, то пишите смело - будем вместе разбираться:)
Если у вас так же останутся вопросы или предложения или вы просто захотите поделиться своим приложением, то пишите! Всегда рад пообщаться с читателями 😁
Из кого состоит команда разработки, кто в нее входит кроме программистов, за какие области отвечает каждый из участников и по каким поводам стучаться к ним в личку
Меня зовут Сергей Горшунов. Я веду блог о финансах
Однажды в жизни каждого человека наступает момент знакомства с такой сферой, как разработка. Причины могут быть совершенно разными: реклама во время подкаста на YouTube, устройство на работу в компанию, где есть IT-отдел, чтение новостей, приход нового человека в компанию друзей и так далее.
Не всем нужно знать, кто такие эти разработчики и чем они занимаются, но для тех, кому все-таки понадобилось понимание специфики работы этих людей, мы подготовили гайд. В нем расскажем об участниках команды разработки, их задачах, по каким поводам к ним обращаться и как понять, о чем они говорят.
К счастью, у большинства проектов за все не отвечает один единственный человек, похожий на Шиву. Команда разработки на то и команда, что в ее состав входит целый коллектив.
Владелец продукта или PO (Product Owner) — это тот, кто занимается управлением продукта. Он является связующим звеном между заказчиком и командой, выступая за интересы первого. На нем лежит подготовка требований по функционалу, постановка задач в бэклог, определение приоритетности выполнения и так далее.
Проектный менеджер или PM (Project Manager) — это управляющий проекта, а не продукта, в отличии от РО. Он координирует действия команды, следит за сроками и контролирует выполнение проекта. РМ дает РО данные о проекте, а РО ему о продукте.
Тимлид — это руководитель команды разработчиков. Его задача в организации работы и контроле за происходящим. Так как он курирует процесс разработки, принимает ключевые решения и помогает подчиненным, то ему нужно понимать во всем. В его компетенции входит как фронт, так и бэк.
Фронтенд разработчик или фронтендер (frontend developer) — это тот, кто наводит красоту и делает нашу с вами жизнь лучше. Он отвечает за части сайта или приложения, с которыми взаимодействует пользователь. Фронтендер берет за основу работу дизайнера и превращает ее в визуальную часть сайта. Правильность отображения кнопок, текста, картинок и других элементов — ответственность фронтенд разработчика.
Бэкенд разработчик или бэкендер (backend developer) — это боец невидимого фронта, работающий над внутренней частью сайта или приложения. Он обеспечивает правильное выполнение команд от пользователя. Если фронт отвечает за правильное подсвечивание и отображение кнопки, то бэк за действие, которое произойдет при нажатии.
UI/UX дизайнер — это создатель плана сайта или приложения с точки зрения визуального наполнения. Дизайнер продумывает логику взаимодействия пользователя с продуктом, размещает контент и после передает свое творение разработчикам.
QA-инженер или тестировщик — это ответственный за проверку работы. Он ищет всевозможные ошибки и сообщает о них. Так как проблемы могут касаться разных частей сайта или приложения, то взаимодействует тестировщик практически со всей командой. Он даже может предложить новое решение для улучшения клиентского опыта или повышения продаж.
DevOps-инженер — это тот, кто упрощает взаимодействие между разработчиками, тестировщиками и менеджерами, ускоряет разработку за счет автоматизации части процессов. Девопс также отвечает за работу сервера и должен гарантировать непрерывность работы. Задача у него непростая, поэтому для понимания сути его работы желательно иметь базовые знания в программировании.
Этот список профессий далеко не исчерпывающий и может включать себя и других сотрудников, но мы остановимся на наиболее популярных и известных, ведь именно с ними проще всего столкнуться в реальной жизни.
Первое знакомство с командой прошло успешно, так что самое время посмотреть на ее жизнь в естественной среде.
Не вникая в процесс разработки, может показаться, что создание ПО происходит по единому скрипту. Однако все не так просто — методологий и принципов разработки существует достаточно много. Чтобы не углубляться в эти нюансы, мы пройдемся по верхам, сформируем общее понимание этапов разработки ПО и расскажем, кто и когда вступает в игру.
Подготовка и планирование
Владелец продукта:
собирает данные о клиентах, рынке и конкурентах;
получает информацию от заказчика;
готовит список целей и определяет задачи;
согласует план проекта с РМ.
Проектный менеджер:
систематизирует собранные данные;
фиксирует задачи и требования от РО и совместно с РО расставляет приоритеты;
согласовывает техническое задание;
готовит план проекта.
Тимлид:
консультирует РО и РМ по технической части;
определяет, что можно реализовать, а что нет;
участвует в формировании задач с точки зрения технической реализации;
определяет технологии и инструменты;
оценивает необходимые ресурсы и время для выполнения поставленных задач;
проверяет и утверждает техническое задание.
Проектирование
Тимлид:
определяет основу архитектуры;
консультирует других участников команды;
принимает ключевые решения по части разработки.
UI/UX дизайнер:
формирует прототип сайта;
готовит основные части;
наращивает дополнительные по мере внесения правок;
финализирует дизайн интерфейса.
Проектный менеджер:
следит за выполнением работ командой и соответствием установленным требованиям.
Разработчики:
помогают дизайнеру с подготовкой прототипа;
вносят правки с точки зрения возможности реализации прототипа.
Разработка
Фронтенд разработчик:
создает внешние части сайта по прототипу от дизайнера.
Бэкенд разработчик:
создает внутреннюю (серверную) часть сайта и работает с базами данных (БД).
Тимлид:
координирует работу разработчиков и помогает со сложными задачами.
DevOps-инженер:
работает над автоматизацией части процессов разработки и обеспечением ее непрерывности.
Тестирование
QA-инженер:
ищет ошибки и передает данные о них разработчикам.
Разработчики:
воспроизводят найденные тестировщиком баги;
исправляют ошибки.
Тимлид:
координирует работу разработчиков и тестировщиков;
помогает со сложными проблемами.
Развертывание
DevOps-инженер:
развертывает приложения на сервере — вывод ПО на сервер с локального хранения (без этого пользователи не смогут взаимодействовать с ПО);
настраивает инфраструктуру — подготовка к началу работы серверов и других технических компонентов;
управляет CI/CD процессами — обеспечение непрерывного процесса разработки, тестирования и развертывания.
Бэкенд разработчик:
принимает участие в настройке серверной части и настройке взаимодействия с базами данных.
Проектный менеджер:
контролирует работу команды и следит за процессами.
Тимлид:
следит за развертыванием, обеспечивает его корректность и помогает другим членам команды.
Поддержка и обновление
Разработчики:
исправляют баги;
разрабатывают и внедряют новые функции.
QA-инженер:
ищет ошибки и передает их разработчикам.
Тимлид:
помогает в решении сложных проблем, которые не удалось разрешить на уровне разработчиков и тестировщиков.
Владелец продукта:
дает обратную связь от заказчика и пользователей;
формирует задачи по новому функционалу;
определяет приоритетность задач.
Проектный менеджер:
организует работы по поддержке и обновлению ПО командой.
Документация
Тимлид:
создает и обновляет техническую документацию кода с описанием технологий, инструментов и библиотек.
Разработчики:
комментируют код и обновляют данные при изменениях.
Проектный менеджер:
следит за актуальностью документации и своевременным обновлением.
Владелец продукта:
готовит документацию для пользователей.
Если в вашем проекте вы не состоите в команде разработки, но вам нужно коммуницировать с ней, то вы можете воспользоваться нашей шпаргалкой с темами и примерами вопросов, которые можно задать.
Тимлид
По техническим возможностям и ограничениям.
«Какие новые функции будут реализованы в будущем?»
«Какие метрики используются для оценки стабильности работы ПО?»
«Есть ли ограничения, которые нужно учитывать при планировании нового функционала?»
Владелец продукта
По функциям, приоритетам задач, дорожной карте и обратной связи от пользователей.
«Можно ли добавить функцию N?»
«Какие функции будут запущены в следующем квартале?»
«Когда будет реализована функция N»?
«Какой план развития у проекта?»
«Развитие каких функций сейчас в приоритете?»
Проектный менеджер
По срокам, графикам, обновлениям, статусам, координации задач и сотрудников.
«Какой сейчас график релизов?»
«Есть ли сейчас задержки по задачам и будет ли реализован новый функционал в срок?»
«Какой сейчас статус у разработки?»
Фронтенд разработчик
По изменениям визуала и интерактивных элементов.
«Можем ли мы поменять фото на главной на анимацию?»
«Как лучше реализовать всплывающие окна?»
«Насколько сложно будет поменять дизайн на сайте?»
«Сильно ли скажется на скорости загрузки внедрение новых анимированных блоков?»
Бэкенд разработчик
По новому функционалу и получению данных.
«Можем ли мы подключить новую аналитику?»
«Можно ли настроить выгрузку определенных данных о действиях пользователей?»
«Как долго будет устраняться баг?»
UI/UX дизайнер
По дизайну, брендингу и улучшению пользовательского опыта.
«Нужно ли нам адаптировать дизайн страницы для повышения конверсий?»
«Как нам оформить новые функции для выделения их среди старых?»
«Мы хотим добавить новый блок, будет ли он удобен для пользователей или нужно подкорректировать?»
QA-инженер
По тестированию новых функций, ошибкам, стабильности и качеству работы ПО.
«У нас запланирована рекламная кампания на следующей неделе, есть ли баги, которые еще не исправлены?»
«Есть ли ошибки, о которых нужно знать?»
«Сколько времени уйдет на тестирование новой версии сайта?»
DevOps-инженер
По стабильности работы сервера, мониторингу производительности системы.
«Выдержит ли сайт повышенную нагрузку при проведении маркетинговой кампании?»
«Можем ли мы настроить мониторинг для отслеживания производительности системы?»
«Что нужно сделать для повышения устойчивости к нагрузке при наплыве пользователей?»
Если вы раньше не общались с представителями IT-сообщества в разрезе работы, то в ходе беседы можете почувствовать себя иностранцем. IT-сфера наполнена собственной терминологией, которую сложно понять без надлежащего опыта. Для вас мы собрали краткий список с популярными словами, которые помогут не потерять нить разговора и стать своим хотя бы на базовом уровне.
Прод — рабочая версия продукта.
Релиз (залить на прод) — выпустить рабочую версию продукта.
Стейдж — среда для тестирования, которая полностью копирует прод.
Баг-репорт — отчет об ошибке.
Проджект — менеджер проекта.
Мок — имитация реального объекта при проведении тестирования.
Спека/дока — документ с техническими требованиями для разработки и тестирования.
Ассайнить — поручить задачу.
Аттач — файл, который прилагается к сообщению.
Грумить — приводить в порядок.
Деплой (развертывание) — совокупность действий, которые делают ПО готовым к использованию на сервере.
Коммит, коммитить — фиксация изменений кода в системе контроля версии (git).
Комплитить — завершить задачу.
Мерджить — объединять изменения от разных программистов в одном проекте.
Патч — временное дополнение к коду.
Пушить — загрузить код в git.
Ребут — перезагрузка.
Темплейт — шаблон.
Фича — функция.
Футер, подвал — элемент сайта в его нижней части.
Хедер — элемент сайта в верхней части.
Бэклог — список задач, которые нужно сделать в будущем.
Спринт — интервал времени, за который нужно выполнить определенный список задач.
Сторя — корневая задача.
Таск, таска — задача.
Апрув, апрувить — согласовать.
Пинговать — напоминать.
В этой статье сравниваем ТОП-15 лучших онлайн-курсов по обучению C# (СиШарп) по рейтингу + рассматриваем бесплатные курсы.
C# (C Sharp) — это программный язык, созданный Microsoft. Он является современным, многофункциональным и объектно-ориентированным языком, работающим на платформе .NET. C# активно используется для создания приложений под Windows, игр, веб-сервисов и мобильных приложений. Благодаря своей надежности, эффективности и богатому набору возможностей, C# стал одним из самых популярных языков программирования.
1. Курс «C#-разработчик» [SkillFactory] — 427 отзывов
Информация о курсе: стоимость — от 3 108 руб. / мес. в рассрочку на 36 месяцев, длительность - 1 год
Особенности: После завершения обучения получите сертификат. Центр карьеры работает со студентами с первого дня обучения - много практики, реальные проекты для портфолио, помощь с резюме и знакомство с будущими работодателями.
Научитесь создавать веб-сайты, серверные, настольные и мобильные приложения с помощью языка программирования C# от Microsoft.
Программа обучения:
Основы программирования на C#
Введение в учебный процесс: знакомство с форматом курса, командой и менторами. Начало изучения C# — создание телеграм-бота и первого проекта — текстовой версии социальной сети. Обязательно освоите объектно-ориентированное программирование на C#, важное для крупных проектов. Начнете работать с GitHub и сохранять свои проекты.
Backend-разработка на C#
Понимание основ бекенда, главной программы, работающей на сервере. Изучение баз данных SQL и разработка бекенда на ADO.NET. Начнете разработку полноценного проекта социальной сети с серверной логикой и базой данных.
Веб-разработка на ASP.NET Core
Веб-сайт состоит из фронтенда и бекенда. Изучите HTML, CSS и основы JavaScript для создания страниц сайта. Основная практика — создание веб-приложения на ASP.NET Core. Освоите основы веб-разработки, создадите свою первую интерактивную веб-страницу и полноценное веб-приложение.
Десктоп и мобильная разработка
C# и .NET Core позволяют разрабатывать кроссплатформенные приложения. Изучите Windows Presentation Foundation для разработки настольных приложений. Освоите платформу Xamarin для создания приложений для Android и iOS, становясь универсальным C#-разработчиком.
Итоговый проект в формате виртуальной стажировки
Готовы к самостоятельной разработке серьезного проекта. Создадите движок блога с комментариями и регистрацией пользователей в формате виртуальной стажировки: получите задания, правки, обратную связь от менторов, а затем защитите свой проект, демонстрируя свои знания.
Бонус: основы DevOps
Знание основ DevOps ценится в компаниях, так как разработчики с этими навыками работают быстрее и эффективнее. Узнаете, что такое DevOps, как оптимизировать процесс программирования и тестирования. Научитесь разворачивать свои проекты на сервере.
2. Курс «C#» [Skillbox] — 826 отзывов
Информация о курсе: стоимость — разная, длительность - от 1 месяца до 1 года
Курсы:
Разработчик игр на Unity с нуля
Научитесь создавать игры с нуля: от генерации идеи до концепции, работы с 3D-моделями и графикой, а также программирования на C# в Unity. Практические навыки помогут собрать портфолио и войти в игровую индустрию.
Алгоритмы и структуры данных для разработчиков
Овладеете фундаментальными знаниями по алгоритмам и научитесь решать реальные задачи. Это позволит устроиться в любую компанию и участвовать в сложных и высокооплачиваемых проектах.
Введение в игровую индустрию
Поймете, какие специальности существуют в игровой индустрии. Узнаете, чего ожидать на начальном этапе и сможете определить, чем именно хотите заниматься. Познакомитесь с полным циклом разработки игр: от создания хай-концепта до выпуска и продвижения.
Профессии:
Разработчик игр на Unity от новичка до Middle
Овладеете разработкой игр на Unity, приобретете необходимые навыки для работы в студии или на фрилансе.
Разработчик VR от новичка до PRO
Освоите разработку проектов виртуальной реальности, научитесь создавать игры и приложения. Сформируете портфолио и сможете начать работу в VR-студии или на фрилансе.
Информация о курсе: стоимость — 71 100 ₽ или рассрочка - от 7 110 ₽ / мес., длительность - 6 месяцев
Особенности: разработаете собственный проект для портфолио, получите сертификат о прохождении курса.
Курс для начинающих C#-разработчиков, стремящихся освоить серверную разработку, создание приложений и микросервисов.
Программа курса:
Архитектура проекта и базы данных
Клиент-серверная архитектура и микросервисы
Продвинутый курс по C#
Многопоточность и паттерны проектирования
Процессы и методологии разработки
Проектная работа.
4. Курс «C# базовый (ООП)» [ITVDN] — 42 отзыва
Информация о курсе: стоимость — от 59.99 $, длительность - 18 уроков (31 ч. 26 мин.)
Этот видеокурс включает 18 последовательных уроков, которые помогут вам глубоко разобраться с синтаксисом и семантикой языка C#, а также освоить объектно-ориентированное программирование (ООП). Вы изучите событийно-ориентированный, структурный, функциональный и аспектно-ориентированный подходы в программировании на C#.
Содержание курса:
Введение в основные концепции и парадигмы ООП на C#.
Подробное рассмотрение понятий классов и особенностей языка C#.
Завершение курса базовыми понятиями технологий LINQ и архитектуры .NET Framework.
Курс обеспечит вас необходимыми знаниями и навыками для дальнейшего изучения более сложных технологий, необходимых .NET разработчику.
Информация о курсе: стоимость — 36 400 ₽ - 44 990 ₽, длительность - 40 ак. ч. + 8 ак. ч. самостоятельно
Чему вы научитесь:
Понимать технологии .NET.
Работать с различными структурными типами данных.
Применять ветвление и циклы в коде.
Создавать и использовать методы на C#.
Работать с массивами и строками.
Разрабатывать классы на C#.
Использовать наследование и полиморфизм.
Создавать абстрактные классы и интерфейсы.
Обрабатывать ошибки, возникающие в программе.
Работать с файловой системой.
Использовать коллекции .NET.
Применять параметризованные типы в программе.
Работать с событиями, делегатами и лямбда-выражениями.
Применять перегрузку операций и расширяющие методы.
Получить представление о LINQ.
Программа курса:
Введение в платформу .NET
Основы языка программирования C#
Методы и операторы C#
Работа с массивами и строками
Разработка классов на C#
Наследование и полиморфизм
Иерархия классов в .NET Framework
Обработка ошибок
Интерфейсы в C#
Потоки данных в .NET Framework
Коллекции в .NET Framework
Перегрузка операций в C#
Делегаты и события
Расширенные возможности C#.
6. Курс «C# для продвинутых» [Stepik] — 28 отзывов
Информация о курсе: стоимость — 14 990 ₽, длительность - 82 урока
Программа курса:
Введение в курс
Модель выполнения программ на C#
Типы данных
Работа со строками
Использование Visual Studio
Классы и объекты
Конструкторы
Закрепление материала
Инкапсуляция и целостность данных
Наследование
Полиморфизм
Перегрузка методов
Использование Random
Статические и динамические члены
Упрощения и сокращения в коде
Структуры данных
Обобщения (Generics)
Делегаты и события
Интерфейсы
Абстракция
Перечисления (Enums)
Кортежи (Tuples)
Обработка ошибок
Заключение курса.
7. Курс «C# /.NET Pro» [ITEA] — 25 отзывов
Информация о курсе: стоимость — 380 EUR, длительность - 27 занятий / 3 месяца
Этот курс поможет вам научиться писать десктопные, мобильные и консольные приложения, серверные программы и веб-сайты, а также разрабатывать проекты для планшетов и смартфонов.
На курсе вы научитесь:
Ориентироваться в синтаксисе языка C#
Создавать простые приложения на C# /.NET
Понимать и изменять чужой код
Создавать и реализовывать интерфейсы
Ориентироваться в основных понятиях ООП
Создавать приложения на C#, используя все возможности языка, обработку исключений, делегаты, работу с потоками.
План обучения:
Знакомство с платформой .NET и языком программирования C#
Типы данных
Условные конструкции
Основы работы с системой контроля версий
Циклические конструкции
Методы
Массивы
Введение в объектно-ориентированное программирование: понятия классов и объектов
Наследование и полиморфизм
Абстракция и интерфейсы
Статические классы и методы
Структуры и перечисления
Исключительные ситуации
Сборщик мусора
Коллекции
Обобщения
Делегаты, события и лямбда-выражения
LINQ
EntityFramework
Ввод-вывод, сериализация и XML
Сборки, пространства имен, атрибуты, директивы препроцессора и рефлексия
Потоки, задачи и синхронизация
.NET Core
Unit-тестирование
Сдача проектов
Как составить резюме и пройти собеседование.
8. Курс «C# разработчик» [Nordic IT School] — 13 отзывов
Информация о курсе: стоимость — 74 200 руб., длительность - 4 месяца (144 ак. час.)
На этом курсе вы научитесь разрабатывать мощные программы, игры и приложения с использованием этого универсального языка программирования.
Программа курса:
Основные конструкции языка
Структуры данных
Объектно-ориентированное программирование (ООП)
Архитектура приложений
Тестирование приложений
Работа с данными
MS Azure.
9. Курс «C#» [ВИШ СПбПУ] — 11 отзывов
Информация о курсе: стоимость — 18 700 ₽, длительность - 2 месяца (60 ак. часов)
После завершения курса вы сможете:
Эффективно управлять данными в памяти, применять допустимые операции к переменным стандартных типов данных и выполнять преобразование данных различных типов.
Использовать основные операторы высокоуровневого языка программирования.
Организовывать сложные типы данных в программе, такие как одномерные и многомерные массивы, структуры, строки и списки.
Работать в интегрированной среде разработки и реализовывать алгоритмы на языке программирования.
Пользоваться справочной документацией и средствами отладки, а также понимать структуру проекта.
Знания, которые вы приобретете:
Основные понятия информатики: алгоритмы, программы, исполнители алгоритмов, информация, данные, системы счисления и другие.
Принципы построения компьютеров с архитектурой фон Неймана, выполнение программ и обработка данных на таких машинах, а также парадигму машины Тьюринга.
Основные понятия программирования: формальные языки, языки программирования, их классификация и характеристики, этапы разработки программного обеспечения и жизненный цикл программного продукта.
Представление данных различных типов в памяти компьютера и обработка этих данных в программе.
Информация о курсе: стоимость — 20 000 ₽, длительность - 23 видеоурока + 23 задания
Содержание курса:
Вводная информация о языке программирования C#
Создание первой программы на C#
Освоение условных операторов
Понимание операторов циклов
Изучение работы с массивами
Обработка строковых данных
Освоение методов программирования
Работа с файловой системой компьютера
Понимание и обработка исключительных ситуаций
Введение в концепцию объектно-ориентированного программирования
Изучение модификаторов доступа
Работа со статическими членами и ключевым словом "static"
Понимание наследования в программировании
Изучение виртуальных методов и свойств, а также абстрактных классов
Обучение работе с интерфейсами
Практические занятия по работе с JSON
Понимание обобщенных типов (generics)
Изучение коллекций в языке программирования
Обучение использованию LINQ
Понимание работы с делегатами, событиями и лямбда-выражениями
Изучение концепции многопоточности с использованием класса Thread
Обучение параллельному программированию и использованию библиотеки TPL
Освоение асинхронного программирования.
11. Курс «Разработка на C#» [ФПМИ МФТИ] — 8 отзывов
Информация о курсе: стоимость — 80 400 руб., длительность - 4,5 месяца
В течение 4 месяцев вы освоите следующие навыки:
Применение основ объектно-ориентированного программирования на практике, таких как абстракция, инкапсуляция, наследование и полиморфизм.
Проектирование классов и установление взаимодействия между объектами.
Понимание процессов, происходящих в оперативной памяти во время выполнения кода.
Работу с базами данных с использованием ORM-инструментов.
Проектирование приложений в соответствии с методологией MV-паттернов.
Создание клиент-серверных приложений на языке программирования C#.
Программа включает в себя следующие этапы:
Освоение основ программирования на языке C#.
Практическое применение концепций объектно-ориентированного проектирования программных систем.
Проектирование архитектуры программного обеспечения.
Разработка клиент-серверных приложений под платформу .Net, используя язык C#.
Завершающий проект.
12. Курс «Программирование на C# – от новичка до специалиста» [beONmax] — 2 отзыва
Информация о курсе: стоимость — нет информации, длительность - ~22 часа
Что вы изучите:
Внутреннее устройство платформы .NET и .NET Core
Основные типы данных, используемые в языке C#
Управление последовательностью выполнения программы: циклы, условные операторы
Работа с массивами и коллекциями: Array, List, Dictionary, Stack, Queue
Понимание различий между классами и структурами, особенно в контексте управления памятью
Применение принципов объектно-ориентированного программирования в C#: наследование, полиморфизм, инкапсуляция
Использование интерфейсов, абстрактных классов и модификаторов доступа в ООП на C#
Работа с методами и их различными атрибутами: params, out, ref, static, перегрузка методов, необязательные параметры
Основы отладки программ
Управление памятью: процесс сборки мусора, преобразование типов данных (boxing\unboxing)
Использование перечислений и обобщений
Написание простых программ и игр на C#, таких как "крестики-нолики"
И многое другое, что касается изучения и применения языка программирования C# на практике.
13. Курс «Основы программирования на C#» [academ it school]
Информация о курсе: стоимость — 26 200 руб., длительность - ~2.5 месяца
Базовый уровень этого курса позволит вам освоить следующие навыки:
Навыки работы в среде разработки Visual Studio и создание приложений на языке C# (C Sharp) для платформы .NET от Microsoft.
Понимание основных классов, которые послужат вам фундаментом для дальнейшего изучения платформы .NET и разработки ваших собственных приложений.
Умение использовать встроенные инструменты среды Visual Studio для отладки приложений.
Умение анализировать код и понимать структуру программ, написанных на языках с синтаксисом, аналогичным языку C# (например, Java, C++, C, PHP, JavaScript).
1. Курс «C# с нуля до профи» [Роман Сакутин]
Содержание видеоурока:
Введение в программирование
Установка Visual Studio бесплатно
Переменные в языке программирования C#
Правильное именование переменных в C#
Арифметические операции в C#
Логические операции в C#
Сцепление строк в C#
Интерполяция строк в C#
Преобразование типов данных в C#
Работа с консолью в C#
Инкремент и декремент в C#
Практическое применение: "Система урона" в C#
Условный оператор If в C#
Логические операторы И и ИЛИ в C#
Оператор Switch в C#
Практическое использование условных операторов в C#
Циклы while в C#
Циклы for в C#
Практическое применение циклов в C#
Генерация случайных чисел (Random) в C#
Создание игры "Угадай число"
Создание игры "Гладиаторские бои"
Полезные приемы работы с консолью
Одномерные массивы в C#
Практическое применение работы с массивами в C#
Многомерные массивы в C#
Практическое использование многомерных массивов в C#
Ссылочные типы данных в C#
Увеличение массива в C#
Создание консольной игры "Бродилка" на C#
Работа со строками: это массивы?
Цикл Foreach в C#
Функции в C#
Возврат значений и оператор return в C#
Необязательные параметры функций
Передача параметров по ссылке и по значению в C#
Перегрузка функций
Практическое применение: "Healthbar"
Роман Сакутин: "Разработка Pacman в консоли на C#"
Коллекция List в C#
Очередь (Queue): первым пришёл, первым вышел (FIFO) в C#
Стек (Stack): последним пришёл, первым вышел (FILO) в C#
Словарь (Dictionary) в C#
Основы объектно-ориентированного программирования (ООП)
Виды отношений в объектно-ориентированном программировании
Типизация в объектно-ориентированном программировании
Абстракция (Полиморфизм) в C#
Классы и объекты в C#
Поля и модификаторы доступа в C#
Методы в C#
Конструкторы в C#
Практическое применение ООП: "Программа для администратора кафе"
Связь "имеет" в объектно-ориентированном программировании
Связь "является" в объектно-ориентированном программировании
Свойства в C#
Проблемы, связанные со статическими членами и классами
Статический конструктор в C#
Проблемы, связанные со статикой
Структуры vs. Классы в C#
Ошибки при работе со структурами
Практическое применение ООП: "Симулятор компьютерного клуба"
Роман Сакутин: "Явное и неявное преобразование типов в C#"
Приведение типов и обратное приведение типов в C#
Преобразование объектов с помощью операторов is и as
Pattern Matching в C#
Перечисления (enum) в C#
Введение в LINQ (Language Integrated Query)
Методы расширения LINQ.
2. Курс «C# для начинающих» [Hexlet]
Материалы обучения:
Приветствие, Мир!
Замечания
Выражения (Statements)
Проверка ваших решений
Ошибки форматирования (синтаксиса)
Арифметические действия
Операции
Переместительная операция
Комбинация операций
Приоритетность операций
и так далее.
3. Курс «C#» [itProger]
Содержание учебного курса:
Основы языка C# с нуля
Основная структура. Вывод информации
Переменные и разновидности данных в языке C#
Арифметические действия в C#
Условные выражения (if-else)
Оператор переключения «Switch-case»
Циклы for, while и do while. Управляющие операторы циклов
Массивы данных. Одномерные и многомерные
Цикл «foreach» для работы с массивами. Обобщенные типы
Создание функций (методов класса)
Работа с файлами и строками
Обработка исключений. Оператор try-catch
Основы создания классов. Введение в объектно-ориентированное программирование на C#
Создание классов и экземпляров объектов
Конструкторы классов. Статический модификатор
Использование указателя «this» в классах
Аксессоры «get» и «set»
Наследование классов
Операторы is и as. Массивы указателей
Виртуальные методы
Абстрактные классы. Абстрактные методы
Создание интерфейсов
Перегрузка методов в языке C#
Перечисления (enum)
Структуры данных (struct)
Заключительный урок по C#
4. Курс «C#» [ULearn me]
Содержание обучения:
Основные концепции программирования на примере языка C#
Проектирование программ на языке C#
Основы безопасности компьютера
Практические занятия по использованию языка запросов LINQ
Тестирование программного обеспечения
Оценка сложности алгоритмов
Введение в функциональное программирование
Основы компьютерных сетей
Введение в математику
Игра "Чистый код".
5. Курс «Программирование на C#» [Открытое образование]
Программа обучения предоставляет студентам возможность освоить ключевые знания и умения, необходимые для создания приложений на языке C# для платформы Microsoft .NET Framework 4.0, а также базовый синтаксис языка C#. В рамках данного курса рассматриваются принципы, позволяющие использовать особенности языка C# как объектно-ориентированного языка программирования.
Время, необходимое для изучения C#, зависит от нескольких факторов, таких как:
Предыдущий опыт программирования:
Новичок: если у вас нет опыта программирования, вам потребуется больше времени для освоения базовых концепций.
Опытный программист: если у вас уже есть опыт в других языках программирования, процесс обучения будет быстрее.
Цель обучения:
Основы языка: если ваша цель — освоить базовые концепции C# (синтаксис, типы данных, управление потоками и т.д.), это может занять от нескольких недель до пары месяцев.
Разработка приложений: для того чтобы научиться разрабатывать полноценные приложения на C# с использованием .NET, потребуется больше времени, возможно, от 3 до 6 месяцев.
Профессиональный уровень: чтобы стать профессионалом в C#, возможно, потребуется год или более, включая работу над реальными проектами и изучение продвинутых тем.
Режим обучения:
Интенсивные курсы: если вы посещаете интенсивные курсы или bootcamp, вы можете освоить язык быстрее, чем при самостоятельном обучении.
Самостоятельное обучение: если вы учитесь самостоятельно в свободное время, процесс может занять больше времени.
Время, выделяемое на обучение:
Полный рабочий день: если вы учитесь полный рабочий день, процесс будет быстрее.
Частичная занятость: если у вас есть другие обязательства и вы учитесь по несколько часов в день, процесс займет больше времени.
Примерные сроки обучения:
Новичок: 3-6 месяцев для базового понимания языка.
Опытный программист: 1-3 месяца для освоения основ и перехода к более сложным аспектам.
Профессиональный уровень: 1-2 года с учетом реального опыта работы.
Конечно, это усредненные данные, и фактическое время может варьироваться в зависимости от индивидуальных обстоятельств и методов обучения.
Да, новичок может учить C#. Хотя C# является достаточно мощным и богатым функционалом языком, его синтаксис и структура довольно удобны для понимания. Вот несколько причин, почему C# подходит для новичков:
Понятный синтаксис: C# имеет ясный и четкий синтаксис, который помогает новичкам быстро освоить основные концепции программирования.
Хорошая документация и ресурсы: Существует множество учебных материалов, включая книги, онлайн-курсы, видеоуроки и документацию, которые помогают новичкам учиться.
Интегрированная среда разработки (IDE): Visual Studio, одна из самых популярных IDE для C#, предлагает множество инструментов, которые помогают писать, отлаживать и тестировать код. Visual Studio также имеет бесплатную версию (Visual Studio Community), доступную для студентов и индивидуальных разработчиков.
Сообщество и поддержка: У C# большое сообщество разработчиков, готовых помочь новичкам через форумы, группы в социальных сетях и другие ресурсы.
Применимость в реальных проектах: C# используется для создания разнообразных приложений, включая настольные, мобильные и веб-приложения, что дает новичкам возможность быстро применить свои знания на практике.
Рекомендации по обучению C# для новичков
Основы программирования:
Начните с изучения базовых понятий программирования: переменные, типы данных, операторы, циклы и условные конструкции.
Понимание этих основ поможет вам лучше понять, как работать с любым языком программирования, включая C#.
Онлайн-курсы и книги:
Курсы на платформах предлагают структурированные учебные программы.
Книги, такие как "C# 9.0 in a Nutshell" или "Head First C#", могут быть полезными для глубокого понимания языка.
Практика, практика и еще раз практика:
Работайте над небольшими проектами и упражнениями, чтобы закрепить знания.
Используйте онлайн-платформы для решения задач, такие как LeetCode, HackerRank или Codewars.
Работа с реальными проектами:
Попробуйте создать небольшие приложения, такие как калькулятор, заметки или игра.
Это поможет вам понять, как применять теорию на практике.
Обратная связь и улучшение:
Делитесь своим кодом с другими, получайте обратную связь и улучшайте свои навыки.
Участвуйте в сообществах разработчиков, таких как Stack Overflow, GitHub или Reddit.
Рекомендуемые ресурсы
Документация:
Microsoft Docs — официальная документация по C# от Microsoft.
Онлайн-курсы
Книги:
"Head First C#" — отличный выбор для начинающих.
"C# 9.0 in a Nutshell" — подробный справочник для всех уровней.
С этими ресурсами и рекомендациями новичок может успешно освоить C# и начать разрабатывать свои первые приложения.
C# является одним из самых популярных языков программирования и востребован в различных областях разработки. Вот несколько ключевых областей, где используется C#:
1. Разработка настольных приложений
C# широко используется для создания настольных приложений под Windows с помощью платформы .NET Framework или .NET Core. Такие приложения могут включать в себя все, от простых утилит до сложных программных систем для бизнеса.
2. Веб-разработка
C# вместе с ASP.NET используется для создания веб-приложений и веб-сервисов. ASP.NET Core, кросс-платформенный фреймворк с открытым исходным кодом, позволяет разрабатывать высокопроизводительные и масштабируемые веб-приложения, которые могут работать на различных операционных системах.
3. Мобильная разработка
С помощью Xamarin, платформы, основанной на .NET, разработчики могут создавать кросс-платформенные мобильные приложения для iOS и Android на C#. Это позволяет использовать общий код для разных платформ, что ускоряет процесс разработки.
4. Игровая индустрия
C# является основным языком программирования для разработки игр на платформе Unity, одной из самых популярных игровых движков. Unity позволяет создавать 2D и 3D игры для различных платформ, включая ПК, консоли и мобильные устройства.
5. Облачные решения
C# используется для разработки облачных приложений и сервисов с использованием Microsoft Azure. Он поддерживает создание микросервисов, серверных приложений и различных облачных служб.
6. Интернет вещей (IoT)
С помощью .NET и C# можно разрабатывать приложения для устройств IoT. Это включает в себя создание программного обеспечения для управления и взаимодействия с подключенными устройствами.
7. Финансовые и корпоративные приложения
C# часто используется для разработки корпоративных систем, CRM, ERP, а также финансовых приложений. Это связано с его производительностью, надежностью и поддержкой широкого спектра бизнес-функций.
8. Научные и инженерные приложения
C# применяется для создания научных, инженерных и аналитических приложений благодаря своей производительности и возможности интеграции с другими языками и платформами, такими как Python и R.
Востребованность на рынке труда
C# остается одним из самых востребованных языков программирования на рынке труда. Компании различных отраслей ищут разработчиков с опытом работы в C#, особенно в тех сферах, которые были перечислены выше. Программисты C# могут найти работу как в крупных корпорациях, так и в стартапах.
Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.
Постараюсь ужать многолетний опыт изучения навыков в одну малюсенькую статейку. Расскажу , как на практике освоить набор навыков любого размера, включая все необходимое, чтобы получить первую работу в IT. Объясню пошагово, как создать и придерживаться очень практичного и эффективного индивидуального плана обучения, по которому я сам занимался, в результате чего из полного чайника без диплома и платных курсов за пол года смог влететь в разработку на высококонкурентном рынке с 1000+ откликов на вакансию во времена массовых увольнений сразу в топовую IT‑компанию без связей, накрутки опыта и ментора и даже успешно пройти там испыталку, ведь план обучения позволил накопить багаж полезных знаний.
Правильный план обучения — это 70% получения работы. По этому плану ты сможешь освоить программирование без покупки курсов, то есть стать программистом бесплатно. Да и любой другой скилл или профессию тоже сможешь быстро и бесплатно получить, что сейчас особенно актуально с этим ИИ. Гарантирую, что по этому плану за короткий срок ты добьёшься больших результатов, а это автоматически значит, что потребуется тяжелая работа с твоей стороны. В конце статьи также будет секретный ингредиент, о котором никто не говорит и который может сделать процесс твоего обучения чуть ли не вдвое более эффективным. Ещё я приведу пример реального плана обучения и объясню, почему каждый его пункт настолько логичен, что ты просто не сможешь ему не придерживаться. Цель плана ‑получить максимальный результат при минимальных затратах времени и сил.
Почему вообще нужно составлять план обучения самому? Нельзя что ли чей‑то готовый роудмап найти или курс купить, где план уже есть? Составлять план самому — суперважно, потому что когда ты понимаешь, что и зачем в нём делается и насколько это действительно эффективно, то и придерживаться этого плана становится гораздо проще, так как мотивация просто не пропадает. Да и если что‑то в плане не работает, можно всегда его подкорректировать, это же твой собственный план. Поняв, что работает, а что нет, ты в будущем сможешь создавать эффективные планы для освоения любых навыков, в том числе для выхода в синьеры‑помидоры, т.к. одного волшебного курса по становлению синьером вроде еще никто не запилил. Единственный доступный вариант — самому грамотно выстроить процесс обучения, чтобы результат был максимальным.
Самое простое в создании плана обучения — определить, какие именно навыки нужно приобрести. Для этого можно провести небольшое исследование и посмотреть требования к кандидатам на вакансии твоей будущей специализации. Учти, что учить стоит только то, что так или иначе повышает твой доход. Это значит, что стоит фокусироваться только на необходимых для получения работы знаниях и навыках, отметая все лишнее, в обратном случае будет сложно конкурировать с другими челами. Отметать, нужно, например, ассемблер или внутреннее устройство ОС, которые знать не обязательно и даже вредно. Некоторые говорят, что нужно же знать эту «базу», но объяснить зачем толком не могут. Выбрав необходимые для работы скиллы, нужно понять самое главное — как эффективно учиться. Это будет основой твоего плана обучения. Многим кажется, что они и так умеют учиться, но, если бы все это умели, никто бы не мучился с получением первой работы в IT, так как количество твоих навыков прямо пропорционально шансу получения работы. Основы обучения, о которых пойдет речь, очень практичны и я их сам уже много лет использую:
Практика — это самое важное. Хорошее соотношение практики и теории при обучении для новичков — 80% на 20%. То есть, если ты посмотрел 8-минутное видео, например, про декораторы в Python, то в IDE надо потом не меньше получаса с ними поиграться. Большинство людей практику скипают, потому что это гораздо сложнее, чем видосы смотреть. В итоге они застревают в так называемом «tutorial hell», то есть смотрят много контента, но на практике ничего сделать не могут, поэтому их навыки не развиваются.
Непонимание интервальных повторений — причина, по которой 95% вкатунов сливаются в первые месяцы. Работает это так: когда ты что‑то учишь впервые,то это запоминается на пару дней. Если тему повторить через 2 дня после изучения, то запомнится она уже на 4 дня. Повторишь еще раз к концу четвертого дня — тема запомнится уже на целых 8 дней. Потом на 16, 32 и так далее. Бытует мнение, что в итоге доходишь до момента, где выученное запоминаешь на вечно, так, что повторять тему больше не надо. Хоть это и кажется нереальным, это действительно так работает, однако тому есть научное объяснение: допустим, ты повторяешь тему в девятый раз и теперь будешь помнить её ещё целый год. Если вовсе перестать ее повторять, то всё равно имеется почти 100% шанс того, что за этот год в работе ты случайно столкнёшься с этой темой и тебе придётся естественным образом достать информацию из мозга, просто чтобы совершить намеченное действие. Таким образом тема повторится сама по себе и еще лучше закрепится в голове. Затем вероятность того, чтобы ты случайно встретишь эту тему в работе за следующие 2 года возрастает еще сильнее и тем самым цикл замыкается, в результате чего ты запоминаешь тему как бы «на вечно»
Вот что происходит с теми, кто не применяет интервальные повторения: Допустим, им нужно выучить 15 ключевых навыков или больших тем для получения работы. Большинство новичков учат первые 9 навыков, потом приступают к 10-му, одновременно забывая первый. Потом учат 11-й, параллельно забывая второй и так далее. Они застревают на 9 из 15 необходимых тем или навыков и несмотря на все усилия, не могут преодолеть этот барьер, ведь скорость забывания слишком высока. Причина в том, что они не используют интервальные повторения. Они учат что‑то один раз и двигаются дальше, поэтому постоянно забывают то, что учили ранее. Но если использовать интервальные повторения и регулярно повторять пройденные темы, то можно выучить бесконечное количество навыков и тем, не забывая их. Самое важное в том, что интервальные повторения буквально гарантируют, что ты найдешь работу, потому что они обеспечивают постоянное расширение твоего набора навыков без его уменьшения. Это продолжается вплоть до момента, когда твой набор навыков достигает критической массы и ты становишься настолько хорош, что твой будущий работодатель уже просто не в состоянии игнорировать тебя (естественно надо еще получить навык поиска работы, но это уже отдельная тема).
Для внедрения интервальных повторений можно использовать карточки Anki. Карточки Anki — это приложение, используемое для обучения и запоминания. На лицевой стороне каждой карточки находится вопрос, на оборотной стороне — ответ. Карточки становятся доступны ровно в тот момент времени, в который это необходимо для наилучшего применения принципа интервальных повторений. Эти же карточки включают в себя и не менее важный принцип — принцип активного вспоминания.
Активное вспоминание сводится к следующему высказыванию: твой мозг запоминает информацию не когда ты её откуда‑то получаешь, а именно когда извлекаешь её из мозга. Если, ты, например, прочтешь эту статью и сразу переключишься на следующую, то будешь что‑то помнить из этой статьи еще в течение примерно одного часа. Но если при прочтении статьи периодически останавливаться и объяснять себе концепции своими словами, то можно будет запомнить чуть ли не 100% информации статьи чуть ли не на целую неделю. Тот же результат можно достичь, если прочитать статью и в конце всю ее себе пересказать. Вот почему во время интервальных повторений необходимо как можно больше фокусироваться на активном вспоминании. Кстати, когда человек выполняет практические задания, это тоже автоматически является формой активного вспоминания, ведь ты работаешь с ранее изученной информацией и это является частью причины того, почему практические упражнения так эффективны.
Ты, наверное, задаешься вопросом, зачем запоминать что‑то, если можно просто использовать ChatGPT для получения быстрого ответа.
Чем больше полезной информации ты усвоишь и запомнишь, тем легче тебе будет понимать ответы ChatGPT и, что самое важное, сохранять эти ответы в краткосрочной памяти в виде части решения задачи, над которой сейчас работаешь. Ты также будешь глубже понимать ответы ChatGPT и даже вспоминать идеи, которые не были упомянуты в ответе.
Лучше работать над изучением одних и тех же трех навыков каждый день по часу и сосредотачиваться на них пару недель подряд, чем уделять по 3 часа в день одному навыку в течение нескольких дней и затем переходить к следующему. Это один из важнейших принципов. Я понятия не имею, почему он работает, но не обязательно понимать, как что‑то работает, чтобы это делать и получать ощутимый результат. Попробуй поучиться так и будешь поражен скоростью освоения навыков.
В чем заключается разница между профессионалом и любителем? Профессионал очень хорошо знает основы. Основы служат фундаментом для последующих тем, изучаемых в будущем. Например, чтобы быстрее освоить React, нужно знать JavaScript, и чем лучше ты знаешь этот язык, тем легче будет разобраться в React. Поэтому не торопись и досконально изучи компетенции, служащие основой для других компетенций.
После месяца обучения результаты будут намного лучше, если учить предмет по часу каждый день, нежели чем если учить его 7 часов в день раз в неделю. Это банально объясняется принципом работы интервальных повторений.
Утром, перед началом нового дня, удели 10 минут, чтобы вспомнить все, что учил вчера. Это очень эффективно, так как первое повторение в течение первых 24 часов после изучения темы имеет огромный эффект на запоминание.
Теперь у тебя есть основные принципы создания плана обучения, но что насчет секретного ингредиента? Хотя все вышеперечисленные пункты идеально подходят для эффективного долгосрочного обучения, если ты стремишься получить работу, твоя цель не в том, чтобы изучить как можно больше всего, а в том, чтобы достичь уровня, где у тебя есть крутые проекты и ты можешь успешно пройти собеседование. В этом случае секретный ингредиент — интенсивность. Например: чтобы достичь такого же уровня навыков в программировании, который тебе нужен для успешного прохождения собеса, ты можешь либо потратить 1000 часов за полгода, либо 1500 часов за год. Заметили разницу? За 1000 часов достигается тот же результат, что и за 1500 часов. Это объясняется принципом работы интервальных повторений: чем больше проходит дней, тем больше времени нужно тратить на интервальные повторения, в обратном случае информация просто забудется. Поэтому если сжать временное окно, в которое ты достигаешь необходимого уровня навыков, скажем, с года до полу года, то таким образом можно значительно уменьшить общее количество часов, необходимых для достижения цели, и, следовательно, работать меньше, получая бОльшие результаты. Теперь ты знаешь, что должен включать твой план обучения.
Давай теперь посмотрим, как может выглядеть такой план на примере реального плана становления python backend разработчиком:
Пример плана изучения python backend
Каждая колонка — это день, а каждая синяя ячейка — это как минимум 1 час сфокусированного базированного на практике обучения. Первый месяц ты параллельно учишь Python, SQL и алгосы (алгосы не в смысле заучки конкретных алгоритмов, а в смысле умения структурно думать и решать логичские задачки кодом, как, например, на codewars). Это то, что создает основу для всего остального, что ты будешь изучать. После этого добавляешь дни для вспоминания изученного, чтобы ничего не забыть. Далее начинаешь создавать проекты с использованием Django и подучивать немного фронтенд‑технологий, чтобы можно было потом показать рекрутеру хороший и красивый проект (хочешь работать беком? Учи фронтенд, чтоб тебя рекрутер не скипнул с твоими уродливыми проектами, понял да). Все это делаешь параллельно, а также учишь git для развития своего GitHub. Фокусируешься на создании проектов с Django до тех пор, пока не найдешь работу. Дополнительно добавляешь дни, в которые будешь повторять, что учил, чтобы ничего не забыть. Затем учишь параллельно Linux, PostgreSQL и Docker, завершая процесс изучением Django Rest Framework, одновременно повторяя все, что учил ранее. Как видишь, этот план включает в себя много практики, интервальных повторений и активного вспоминания. Ты учишь по нескольку предметов параллельно и сначала фокусируешься на основах. Ты учишься каждый день, начиная каждый день с 10 минут повторения того, что выучил вчера, что еще сильнее оптимизирует твое обучение. А занятия как минимум по 4 сфокусированных часа (а лучше — по 10) в день обеспечивают интенсивность, которая в полтора раза сокращает общее количество часов, необходимых на получение всех этих навыков.
Короткий ответ состоит в том, что можно просто найти бесплатный курс и следовать ему, лично я предпочитаю использовать для этого YouTube. Бесплатные курсы обычно не содержат практических упражнений, являющихся самой важной частью обучения, поэтому упражнения на определенную тему придется отдельно искать в интернете. Или можно даже поступить еще лучше: когда смотришь курс и видишь пример кода, решающего конкретную проблему, попробуй придумать похожий код, решающий аналогичную проблему и поиграться с этим кодом в среде разработки. Это один из самых эффективных способов практики, который мне удалось найти.
Гарантирую, что, прочитав эту статью, ты потратил своё время зря, если не применил к ней вышеупомянутые принципы, так как забудешь все о чем я тут написал. Давай теперь объясню, как применить основные из этих принципов к любой статье или обучающему видео. Возьмем эту статью, например. Если ты проследуешь следующим нескольким шагам в течение следующих 5 минут, то это будут одни из самых полезных 5 минут в твоей жизни. Во‑первых, возьми свой телефон и скачай приложение под названием Anki Cards. Я не спонсирован этим приложением и не имею к нему никакого финансового отношения, поэтому у меня нет ссылки и тебе придется найти его самому. Шаг 2 — Перестань читать и прямо сейчас и попробуй вспомнить все, о чем я говорил. Объясни себе своими словами все, что удается вспомнить (да, прямо сейчас, я жду). Шаг 3. В зависимости от того, что удалось вспомнить, открой приложение Anki и создай несколько карточек об этой статье. Например: что такое интервальные повторения и как их применять? Что такое активное вспоминание? Какое лучшее соотношение между практикой и теорией для начинающих? Шаг 4. Сформируй привычку открывать это приложение время от времени, повторять карточки и добавлять новые о всем важном, что ты изучаешь в программировании. Лично я таким образом не только запомнил всё, что учил, но и ответил на 98% вопросов на своем первом в жизни собеседовании.