Обучение — Нету ли професионального курса C#


Содержание

Please verify you are a human

Access to this page has been denied because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

Please make sure that Javascript and cookies are enabled on your browser and that you are not blocking them from loading.

Reference ID: #22ec9e00-0728-11ea-aab8-fd824c771c62

Курсы C#

Созданный корпорацией Microsoft объектно-ориентированный язык программирования C# служит идеальным инструментом для написания компонентов и приложений, работающих в среде .NET Framework под управлением операционной системы Windows. Программирование на платформе Microsoft .NET Framework – это «передний край» теории и практики разработки современного программного обеспечения на языках, производных от классического языка C.

На курсах C# в Центре «Специалист» Вы научитесь использовать все возможности этого языка, в том числе создавать приложения для Windows Store. Сегодня разработчики мобильных приложений занимают привилегированное положение на рынке труда, их работа оплачивается очень высоко. Научившись создавать приложения для Windows Store, Вы обеспечите себе престижную и высокооплачиваемую работу с перспективой открыть собственное прибыльное дело!

Центр «Специалист» – лучший авторизованный учебный центр Microsoft в России, Центральной и Восточной Европе! Каждый третий в России программист Microsoft Visual Studio – среды программирования, в которой выполняется разработка на C# – выпускник Центра «Специалист»!

На курсах C# в нашем Центре преподают сертифицированные специалисты Microsoft, настоящие профессионалы-эксперты Александр Игоревич Кораблин и Сергей Юрьевич Шуйков. Их личный вклад в развитие авторизованного обучения Microsoft по технологиям Microsoft Visual Studio для разработчиков под Windows и веб-разработчиков отмечен наградами Microsoft.

Обучение на курсах C# даст Вам подготовку к успешной сдаче сертификационных экзаменов Microsoft и получению статуса Microsoft Certified Solutions Developer (MCSD): Windows Store Apps – C#.

Программирование на C#

4 зачётных единицы

для зачета в своем вузе

О курсе

Курс позволяет студентам овладеть основными знаниями и навыками, необходимыми для разработки приложений C# для Microsoft .NET Framework 4.0, а также синтаксисом простых конструкций языка C#.
На данном курсе рассматриваются принципы, позволяющие использовать специфику языка C# как объектно-ориентированного языка.

Формат

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

Информационные ресурсы

Требования

Рассчитан на людей с минимальным опытом программирования.
Для прохождения курса требуется компилятор C#: Microsoft Visual Studio C# 2013 (скачать Visual Studio Express можно здесь).

Программа курса

1. Первое знакомство с C#
Первое знакомство с C#. Типы данных. Методы. Области видимости
2. Ошибки
Ошибки компиляции. Стилистические ошибки
3. Ветвления
Логический тип bool. Оператор if-else. Типичные ошибки ветвлений
4. Циклы
Цикл while. Цикл for
5. Массивы
Одномерные массивы. Сокращенный синтаксис. Типы ссылки и типы значения. Многомерные массивы
6. Коллекции, строки, файлы
Список List. Словарь Dictionary. Строки. Файлы и каталоги
7. Тестирование
Введение в тестирование. Модульные тесты. Продвинутые техники. Внедрение тестирования
8. Сложность алгоритмов
Основные понятия. О-символика. Оценка сложности алгоритмов
9. Рекурсивные алгоритмы
Рекурсия. Перебор подмножеств. Перебор перестановок и размещений
10. Поиск и сортировка
Линейный и бинарный поиск. Сортировка пузырьком. Сортировка слиянием и быстрая сортировка
11. Основы ООП
Классы и объекты. Поля. Методы. Статистические классы
12. Наследование
Наследование. Приведение типов. Интерфейсы. Полиморфизм
13. Целостность данных
Целостность данных. Свойства. Конструкторы
14. Структуры
Структуры. Ключевое слово ref. Boxing/unboxing. Структуры и свойства

Результаты обучения

Студент узнает:
• синтаксис и особенности языка C#;
• основы написания программ на языке C#;
• техники создания «чистого» кода;
Студент сможет:
• применять техники объектно-ориентированного проектирования программного обеспечения;
• эффективно использовать интегрированную среду разработки MicrosoftVisualStudio 2010 для написания, отладки и тестирования программ на языке C#;
• использовать ReSharper в разработке программ любого уровня;
Студент будет владеть:
• навыками написания эффективного, легко читаемого и поддерживаемого программного кода;
• техникой рефакторинга.

Формируемые компетенции

— способность общаться со специалистами из других областей (ОК-2);
— способность порождать новые идеи (ОК-5);
— способностью работать самостоятельно, заботой о качестве, стремлением к успеху (ОК-6);
— владение методами математического моделирования при анализе глобальных проблем на основе глубоких знаний фундаментальных математических дисциплин и компьютерных наук (ПК-1);
— способность к интенсивной научно-исследовательской и научно-изыскательской деятельности (ПК-3);
— умение ориентироваться в современных алгоритмах компьютерной математики, совершенствовать, углублять и развивать математическую теорию, лежащую в их основе (ПК-7);
— способность к творческому применению, развитию и реализации математически сложных алгоритмов в современных программных комплексах (ПК-9);
— определение общих форм, закономерностей, инструментальных средств для групп дисциплин (ПК-10);
— способность к управлению и руководству научной работой коллективов (ПК-13).

Курс «Разработчик C# + .NET»

О КУРСЕ

«Курс программирования на С# и .NET для начинающих.»

Голяков Андрей — преподаватель Nordic IT School

Наш курс предназначен для Junior-разработчиков на языке C# и платформе .NET и будет интересен всем, кто хочет изучить данный стек технологий.
Курс программирования на C# длится 4 месяца — 144 ак. часа. Он разбит на 2 больших блока.
Первый блок посвящен синаксису языка C#, объектно-ориентированному программированию и алгоритмам разработки.
В рамках второго блока мы научимся проектировать архитектуру сложных корпоративных приложений, работать с данными, разрабатывать WEB-сервисы на базе ASP.NET WEB API 2.0, а так же начимся работать с облачной инфраструктурой Microsoft Azure.

Не теряй времени, записывайся уже сегодня!

Какие технологии я освою?

C# — один из самых быстро развивающихся языков программирования в мире, поддерживаемый гигантом IT-индустрии, компанией Microsoft.

C# применяют в проектах разной направленности — десктоп-приложения, веб-сайты, интернет-вещи, корпоративные системы и даже в разработке сервисов на блокчейн.

Это строгий и безопасный объектно-ориентированный язык программирования.

.NET — платформа с открытым исходным кодом для разработки и запуска приложений на языках C#, F# и Visual Basic.

Специализация платформы — обеспечить запуск одного и того же приложения на разных операционных системах.

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

ADO.NET

ADO.NET — часть платформы .NET для доступа к источникам данных, например к базе данных MS SQL или файлам XML.

ADO.NET позволяет организовать согласованный доступ к общим данным.

MS SQL

СУБД (Система управления базами данных) от компании Microsoft. Идеально подходит для использования в стеке технологий .Net

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

Великолепно держит нагрузки. Быстрая и очень надежная.

RESTfull API

RESTfull API — подход для организации взаимодействия приложения и сервера. Разработан на основе HTTP-протокола.

Самый применяемый на сегодня подход, его используют Facebook, Вконтакте, Яндекс и другие гиганты IT-индустрии.

ASP.NET

Платформа для разработки веб-приложений на платформе .NET с использованием языка C#

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

MS Azure

Облачная инфраструктура Microsoft для быстрого запуска приложений и их масштабирования.

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

GIT — система контроля версий. В одном месте хранит все версии вашего кода, позволяя довольно быстро «откатить» ваши изменения. Также обладает большими возможностями для организации командной разработки — это когда много людей работают над одним кодом.

Мы ее используем для совместной работы над нашими сайтами и проектами.

C# один из самых быстро развивающихся языков программирования в мире. Его применяют в проектах самой разной направленности — десктоп-приложения, веб-сайты, корпоративные системы и даже в разработке сервисов на блокчейн.

Это строгий и безопасный объектно-ориентированный язык программирования.

Знания данного стека технологий более чем достаточно для junior-разработчика на языке C# и успешного прохождения собеседования.

Данный курс включает дополнительные темы по Алгоритмам и структурам данных: сортировки, поиску, времени выполнения алгоритмов. Вопросы по ним часто спрашивают на собеседованиях.

Обучение программированию на C# в нашей школе это:

Мини-группы

Обучение OFFLine в мини-группах
8-10 человек

2 собственных проекта

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

Записи занятий

Записи занятий и все материалы курса доступны студентам неограниченное время, в том числе и после окончания курса.


Опытные преподаватели

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

Помощь в трудоустройстве

Мы сотрудничаем с рекрутинговыми IT-агенствами и комьюнити и поможем трудоустроится лучшим студентам.

Сертификат

По окончании курса выдается сертификат Nordic IT School.

ПРОГРАММА КУРСА

  • Переменные
  • Условия
  • Циклы
  • Функции
  • Массивы
  • Кортежи
  • Списки
  • Словарь
  • Объекты
  • Классы
  • Наследование/Инкапсуляция/Полиморфизм
  • Реализация интерфейсов
  • Работа с файлами и потоками
  • Особенности проектирования архитектуры
  • Написание логики приложения
  • Шаблоны проектирования
  • Разработка на основе тестирования
  • Компонентное тестирование
  • Unit-тестирование
  • Веб-приложение, веб-сервисы
  • HTTP, RestFul API
  • Методы GET, POST, PUT, DELETE
  • Web API
  • Реляционные БД
  • SQL Lite
  • MS SQL
  • ADO.NET
  • Развертывание приложений в облаке
  • Сервисы MS Azure
  • Деплоймент
  • Continuous Integration

ПРЕПОДАВАТЕЛИ

15-летний опыт работы в сфере IT и программирования на языках C#, SQL, JavaScript.

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

С 2005 года, после окончания института ИТМО, работал разработчиком на стеке Microsoft: C#, SQL в петербургской компании ООО “НПП “Марс Энерго”.

С 2006 работает разработчиком в компанию CNET Content Solutions – филиал международной компании CBS Interactive, входящей в международный медиа-холдинг CBS. Прошёл карьерный путь в этой компании от обычного разработчика до руководителя сектора разработки. Участвовал в десятке крупных проектов. Сейчас управляет несколькими командами по разработке корпоративных продуктов.

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

Более 4-х лет опыта коммерческой разработки на языках C# (.NET), JavaScript (TypeScript).

В университете изучал различные языки и технологии: С++ (Qt / Boost), PHP, HTML / CSS, позже познакомился с платформой .NET (C#).

На первую работу устроился во время обучения на 3 курсе, с тех пор является разработчиком .NET. Во время обучения в магистратуре преподавал информатику младшим курсам.

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

На текущий момент является старшим разработчиком в компании «Додо Пицца», где занимается разработкой облачной информационной системы DODO-IS, которая обеспечивает работу всех пиццерий, расположенных по всему миру.

Артем активно следит и изучает облачные технологии и инструменты разработки современных веб-приложений.

C# для профессионалов

C# — это мощный и универсальный инструмент создания программного обеспечения, который занимает одно из первых десяти мест в международных рейтингах языков программирования. И это неудивительно, ведь существует множество разнообразных сфер разработки, где он может быть применён: это не только мобильные и настольные (ПК) приложения — приличное количество WEB-решений активно используют фреймворки C#. При такой высокой функциональности он достаточно легкий для изучения и позволяет максимально быстро и с интересом осваивать программирование. Данный видеокурс даст возможность глубже окунуться в технологии .NET, познакомиться с тонкостями языка и особенностями их эффективного использования.

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

Чему Вы научитесь с помощью данного курса:

  1. Понимать и правильно применять важный инструмент программирования — коллекции;
  2. Работать с файловой системой: получать доступ к файлам, каталогам и дискам с целью извлечения либо записи необходимой информации;
  3. Работать с текстами и/или текстовыми файлами, в том числе с XML-файлами;
  4. Эффективно управлять оперативной памятью, используя Garbage Collector;
  5. Использовать двоичную, SOAP и XML технологии сериализации для преобразования состояния объекта в форму, пригодную для сохранения или дальнейшей передачи;
  6. Выполнять контроль версий (Versioning);
  7. Работать с потоками с целью использования преимуществ многопроцессорных или многоядерных систем;
  8. Понимать и использовать фундаментальные вещи функционального программирования: лямбда-выражения, замыкания, мемоизацию, каррирование.


Этот курс входит в специальности:

Тренер-консультант, эксперт по построению сервис-ориентированных и облачных приложений

Программирование на C#: от новичка до специалиста

Программирование на C#: от новичка до специалиста

Изучите C# и платформу .NET, включая .NET Core и начните практиковать объектно-ориентированное программирование (ООП).

C# стабильно входит в ТОП-10 наиболее популярных языков программирования.

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

Цукерберг рекомендует:  Кросс-браузерный заполнитель полей форм на HTML5

Короче говоря, если вы только начинаете своё путешествие в мир программирования, C# станет отличным выбором в качестве вашего первого языка программирования. Популярность C# объясняется не только тем, что его легко изучать, но и реальными преимуществами языка в смысле его профессионального применения для решения сложных проблем автоматизации. C# — кросс-платформенный язык и написанные на нём программы работают под Windows, Linux, Mac OS. Обладает кратким и элегантным синтаксисом. Огромное количество уже готовых библиотек даёт возможность не изобретать велосипеды на каждом шагу.

Этот курс покрывает все основные возможности C# и даёт рекомендации по написанию грамотного, «чистого» кода.

Данный курс покрывает следующие темы:

Введение в .NET: основные понятия, как устроены приложения .NET

Основы C#: обзор типов данных, числа и простая математика, переменные, основы работы со строками, приведение типов, статические члены

Коллекции и массивы в C#: Array, List, Dictionary, Stack, Queue

ООП: классы, структуры, перечисления, обобщения, интерфейсы, абстрактные классы

Работа с файлами

Обработка исключений

Делегаты, события, лямбды

LINQ

Домашние задания с разбором решений

в будущем будут добавлены следующие темы: reflection, dynamic, сериализация и ещё по-мелочи Многопоточности будет посвящён отдельный курс

Программирование на C#: от новичка до специалиста

Курс: «Программирование на C#: от новичка до специалиста» . Материал для тех, кто хочет освоить C#. Отзывы отличные! Не забывайте про практику. Курс полностью на русском языке. Материал прислал анонимный пользователь без комментариев.

Материал может быть удален по запросу правообладателя!

Описание курса:

Если вы хотите начать программировать и выбираете язык с которого начать обучение, то C# это один из лучших вариантов. C# это один из наиболее сбалансированных языков с точки зрения типизации, не говоря уже о лаконичности синтаксиса и отсутствия тяжёлого наследственного багажа как в случае С++. Ещё несколько лет назад споры о том какой язык лучше C# или Java являлись холиварными по своей сути, но на 2020 год таких споров становится всё меньше, ибо C# стал кросс-платформенным, сильно продвинулся в возможностях по достижению высокого уровня производительности, а по типизации и синтаксическим фичам давно уделал Java. Так что если вы выбираете между Java и C#… ну вы поняли.

Короче говоря, если вы только начинаете своё путешествие в мир программирования, C# станет отличным выбором в качестве вашего первого языка программирования. Популярность C# объясняется не только тем, что его легко изучать, но и реальными преимуществами языка в смысле его профессионального применения для решения сложных проблем автоматизации. C# — кросс-платформенный язык и написанные на нём программы работают под Windows, Linux, Mac OS. Обладает кратким и элегантным синтаксисом. Огромное количество уже готовых библиотек даёт возможность не изобретать велосипеды на каждом шагу.

Этот курс покрывает все основные возможности C# и даёт рекомендации по написанию грамотного, «чистого» кода.

Данный курс покрывает следующие темы:

  • Введение в .NET: основные понятия, как устроены приложения .NET
  • Основы C#: обзор типов данных, числа и простая математика, переменные, основы работы со строками, приведение типов, статические члены
  • Коллекции и массивы в C#: Array, List, Dictionary, Stack, Queue
  • ООП: классы, структуры, перечисления, обобщения, интерфейсы, абстрактные классы
  • Работа с файлами
  • Обработка исключений
  • Делегаты, события, лямбды
  • LINQ
  • Домашние задания с разбором решений

Для кого этот курс:

  • Абсолютные новички в программировании, желающие изучить один из лучших объектно-ориентированных языков программирования.
  • Студенты, обладающие познаниями в одном из языков программирования и желающие изучить C#

Чему вы научитесь:

  • Как устроена платформа .NET и .NET Core
  • Основные типы данных в C#
  • Управление потоком исполнения программы: циклы, условия
  • Массивы и коллекции: Array, List, Dictionary, Stack, Queue
  • Классы и структуры: отличия в контексте управления памятью
  • ООП в C#: наследование, полиморфизм, инкапсуляция
  • ООП в С#: интерфейсы, абстрактные классы, модификатора доступа
  • Методы: params, out, ref, static, overloading, optional parameters
  • Основы процесса отладки
  • Управление памятью: сборка мусора, boxing\unboxing
  • Перечисления
  • Обобщения
  • Написание простых программ и игр на C# таких как «крестики-нолики»

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

Записная книжка программиста-новичка, C#, SQL, PHP и все-все-все

Я ведь это уже делал, но хрен теперь найдешь тот кусок кода, гуглим снова… Где бы найти простое и понятное руководство для начинающего, а не тонкости для мега-гуру?

Рубрики

Свежие записи

Свежие комментарии

  • Calator prin Romania к записи Как переименовать проект/каталог проекта в Visual Studio?
  • iukovl к записи Как изменить максимальный размер загружаемого файла в php
  • sdfdsgeg к записи Работа с файлом конфигурации (configuration) в C# — читаем и сохраняем
  • iukovl к записи Как изменить максимальный размер загружаемого файла в php
  • Надежда к записи Ошибка в коде привела к убыткам в 476 миллионов долларов и банкротству компании

Архивы

Самоучитель по C# для начинающих. 01. Основы языка, переменные, логика, циклы.

1.1 Начальные понятия

Данный самоучитель рассчитан на людей, совершенно не знакомых с программированием, но способных скачать, установить и запустить программу — в данном случае Visual Studio 2010 (2008,2012). В первой части я кратко расскажу о основах языка C#. Формат самоучителя подразумевает краткое и упрощенное изложение — за подробностями касательно отдельных функций и классов обращайтесь в гугл и msdn, за продвинутыми методиками программирования в продвинутые книги. В принципе почти всю информацию можно найти в интернете, надо лишь знать что искать, так что в отличие от классических книг на несколько сотен страниц я буду давать ту основу, зная которую вы уже сможете сформулировать поисковый запрос — ни в одном разделе я сознательно не даю полной и исчерпывающей информации, ее место в документации. Крайне желательно знать английский язык хотя бы на уровне чтения со словарем — в англоязычном интернете информации на порядок больше, невероятно полезные сайты вроде StackOverflow не имеют русских аналогов, а русскоязычные форумы и обсуждения чаще всего напоминают знаменитый анекдот (под американским форумом можно смело понимать англоязычный с немцами, индусами и бразильцами):

Чем отличаются русский, американский и еврейский форумы?
— на американском форуме вы задаете вопрос и вам дают ответ
— на еврейском форуме вы задаете вопрос и вам задают встречный вопрос
— на русском форуме вы задаете вопрос и вам долго объясняют почему вы такой мудак.

Современные языки программирования вообще и C# в частности скрывают многие низкоуровневые особенности работы компьютеров, так что детально разбираться в особенностях работы регистров процессора и тому подобной зауми новичку не надо (99% программистов тоже). Но некоторые вещи стоит держать в уме.

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

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

Схема работы .Net и C#

Таким образом мы:

1. Пишем код на языке C# в обычный текстовый файл

2. Компилируем программу в байт-код с помощью компилятора C# (1 и 2 можно делать без Visual Studio, например набрать исходный текст в Блокноте и скомпилировать через командную строку)

3. Запускаем полученную программу на компьютере, где уже установлен .Net Framework соответствующей версии), который переводит программу в двоичный код и собственно запускает, давая доступ к компьютеру. (соответственно на компьютере без Net Framework программа не запустится вообще).

1.2 Привет мир

Перейдем к практике, для создания самой простой программы мы запустим Visual Studio и выполним следующее:

1. Пойдем в меню File-New Project (Файл — Новый проект) или сразу кликнем на Create New Project

2. Выберем шаблон Console Application (Консольное приложение)

3. Выберем каталог на диске, где будет расположен наш проект

4. Добавим две строчки в текст программы, чтобы он выглядел вот так

4. Нажмем F5 (можно выбрать в меню Debug — Start Debugging ) и увидим черное окошко с нашим Привет мир, которое закроется после нажатия Enter.

Что это и зачем оно надо? В теории это программа без кнопок и меню, которой можно управлять через командную строку. В наше время такие программы используются редко, в основном очень продвинутыми сисадминами или в мире Linux (что в принципе одно и то же), но знать об их существовании полезно — программисту может довестись с такой работать или даже писать. Нам она нужна по одной-единственной причине — такая программа меньше всего будет отвлекать от изучения универсальных особенностей языка C#.

В самом простом случае (это про нас) компьютер последовательно выполняет команды программиста — одну за другой:


System.Console.WriteLine(«Привет мир!»); — выводит в консоль (то самое черное окно) строку «Привет мир»»

System.Console.ReadLine(); — читает строку, которую мы вводим (ввод завершается нажатием Enter) и переходит к следующей команде.

Так как следующей команды нет, программа завершает работу и закрывает окно.

1.3 Простые переменные

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

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

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

— int, целое число от -2,147,483,648 до 2,147,483,647
— string, строка
— double, число с дробной частью и переменным количеством знаков после запятой, например 1.38 принимает значения от -1,79769313486232 в 308 степени до 1,79769313486232 в 308 степени. Проще говоря очень большие.
— decimal, число с дробной частью и повышенной точностью рассчетов, специально для финансовых операций — в миллионных и более мелких долях float могут накапливаться мелкие ошибки, банки это не любят
— bool — специальный тип для передачи данных об истинности или ложности, принимает только два значения — true или false. В старых языках вместо него использовали int с значениями 1 и 0, но это было менее наглядно и приводило к ошибкам.

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

Не забудьте запустить по F5 и посмотреть результаты.

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

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

1.4 Арифметические операции

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

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

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

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

1.5 Управление и логика

На данный момент наша программа не отличается умом — Скайнет из нее не получится, уничтожение человечеству не грозит. Мы просто выполняем команды по очереди, одну за другой, а хотелось бы принимать решения в зависимости от внешних условий — например «если есть возможность, уничтожить всех людей, иначе работать над созданием такой возможности». Делается это с с помощью специальной конструкции если-иначе, или, на родном для C# английском if-else и специальных операторов сравнения:

  • — величина слева больше
  • = — меньше либо равно и больше либо равно
  • == — просто равно, обратите внимание, что равенство очень похоже на оператор присваивания, который записывает значение в переменную = — не путайте их, равенство — это двойное «равно»
  • != — не равно
  • и другие

Компьютерная логика проста — высказывание или результат сравнения может быть либо истиной либо ложью, либо true либо flase, либо уничтожать человечество либо нет. Третьего компьютеру не дано. Для хранения таких данных существует специальный тип данных — логический — bool — который может принимать только два значения (догадываетесь какие?). Если вы хотите чего-то посложней и похардкорней — то все вместе это булева алгебра, изучайте и просвещайтесь.

Цукерберг рекомендует:  Бесплатка 4 классных ценовых таблиц

Нам важно понять, что любая операция сравнения, на пример 2

Программирование на C#: от новичка до специалиста

Программирование на C#: от новичка до специалиста

Изучите C# и платформу .NET, включая .NET Core и начните практиковать объектно-ориентированное программирование (ООП).

C# стабильно входит в ТОП-10 наиболее популярных языков программирования.

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

Короче говоря, если вы только начинаете своё путешествие в мир программирования, C# станет отличным выбором в качестве вашего первого языка программирования. Популярность C# объясняется не только тем, что его легко изучать, но и реальными преимуществами языка в смысле его профессионального применения для решения сложных проблем автоматизации. C# — кросс-платформенный язык и написанные на нём программы работают под Windows, Linux, Mac OS. Обладает кратким и элегантным синтаксисом. Огромное количество уже готовых библиотек даёт возможность не изобретать велосипеды на каждом шагу.

Этот курс покрывает все основные возможности C# и даёт рекомендации по написанию грамотного, «чистого» кода.

Данный курс покрывает следующие темы:

Введение в .NET: основные понятия, как устроены приложения .NET

Основы C#: обзор типов данных, числа и простая математика, переменные, основы работы со строками, приведение типов, статические члены

Коллекции и массивы в C#: Array, List, Dictionary, Stack, Queue

ООП: классы, структуры, перечисления, обобщения, интерфейсы, абстрактные классы

Работа с файлами

Обработка исключений

Делегаты, события, лямбды

LINQ

Домашние задания с разбором решений

в будущем будут добавлены следующие темы: reflection, dynamic, сериализация и ещё по-мелочи Многопоточности будет посвящён отдельный курс

Как учить .NET: подробная инструкция для новичков и пару советов для опытных

Всем привет. Меня зовут Влад. Я старший .NET разработчик в компании DataArt. В IT я около семи лет, из них больше пяти работаю c .NET. Хочу дать некоторые советы тем, кто только начинает свой путь в IT как разработчик, а также тем, кто уже имеет пару лет опыта. Надеюсь, мое видение кому-то поможет на пути.

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

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

ВАКАНСИЯ: .NET-ПРАКТИКАНТ.

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

Что хотят от джуниора

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

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

Если человек способен расслабленно вести беседу и проявляет, что называется, аналитические способности, не впадает в ступор от сложностей — это тоже можно отнести в разряд soft skills. Важно то, насколько человек способен доводить работу до результата, а умение общаться, правильно задавать вопросы и давать ответы — очень эффективный для этого инструмент.

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

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

ВАКАНСИЯ: СТАЖЕР .NET.

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

Где выгодны джуниоры

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

Если взять аутсорсинг и аутстаффинг (то есть перепродажу человеко-часов) в той или иной форме, то рейты, по которым продают джуниоров, не намного ниже рейтов миддл-разработчиков. А ЗП начинающих может быть значительно ниже, что делает их привлекательным активом компании, приносящим даже более высокую маржу, нежели более опытные разработчики. Опытных еще и найти гораздо сложнее — нужно платить агентствам или рекрутерам вплоть до одной зарплаты такого человека, чтобы осуществить найм. А маржа при заработке на высококлассных специалистах — низкая, они больше нужны для поддержания бизнеса в рабочем состоянии.

Первые шаги

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

Если с живым человеком-лектором вам проще, то советую курсы с большой длительностью, например от 3 до 6 месяцев. Мне кажется, это либо втянет вас в процесс, либо окончательно вам надоест, и вы поймете, что это не ваше.

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

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

ВАКАНСИЯ: .NET Trainee.

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

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

Далее я распишу свое видение, с чего лучше начинать и как двигаться дальше в мире .NET разработки.

Hard Skills

Я разделю все сферы знаний hard skills на такие части:

  • C# — синтаксис — это база. Нанимаясь на первую работу, вы должны знать хорошо хотя-бы это.
  • LINQ — расширение C#, фактически его очень важная часть. Сейчас большая часть бизнес-логики пишется именно на нем.
  • .NET — платформа, на которой работает все выше описанное. Понимание базовых вещей убережет вас от часов поиска в Гугле и непонятного для вас поведения проекта, если вы что-то сделали не так.
  • Фреймворки — средства поверх C#, с использованием которых и ведется разработка. Для web — это MVC/WebForms/WebAPI/SignalR, для десктоп — WPF/WinForms. Для веба главное — понимать MVC. WebForms используется реже. Можно также добавить ASP.NET Core и Store App, однако проектов по ним не так много, так что начинать учить MVC — беспроигрышный вариант. Cамый популярный фреймворк для работы с данными — Entity Framework. Де-факто стандарт. Также нужно уметь работать хотя бы с одним IoC-контейнером, например Ninject, понимать, как и зачем работает Dependency Injection и почему слабо связанное приложение лучше поддерживается.
  • SQL — очень часто требуется. Знание SQL — для вас огромный плюс. С .NET приложениями чаще всего используют MS SQL Server и язык запросов T-SQL.
  • Шаблоны проектирования и парадигмы — даже если вы их не понимаете — то заучите. С практикой придет понимание. Шаблон сам по себе — наилучшее, найденное в ходе эволюции миллионов человеко-часов решение какой-то общей проблемы.
  • Архитектурные гайды — лезть в вопросы проектирования поначалу глубоко не стоит. Но понимание, что такое SOA, N-layer, Microservices, поможет вам гораздо быстрее въезжать в суть дела.
  • Базовое понимание Front-end — очень часто от бекенд-девелоперов требуют минимальные знания фронта. Возможно, достаточно JQuery, который используется в достаточном количестве проектов, заходящих в наши аутсорс-компании. Если вы человек с чистым бекенд-профилем, то, может быть, будете более интересны продуктовым компаниям, где множество людей делают большие технологические продукты, но, по-моему мнению, попасть в такую компанию новичку сложнее, нежели в аутсорс.
  • Productivity tools — очень полезно приучать себя работать быстро с самого начала. Потом productivity tools сэкономят вам сотни часов времени, воспринимайте это как инвестицию.
  • Системы контроля версий — средства для организации командной работы. Фрилансерам, которые работают над проектами самостоятельно, они могут быть и не нужны, но в компаниях всегда коллективная работа — там без них никак.


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

Советы для интернов/джуниоров

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

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

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

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

Методы стандартных библиотек .NET — это энциклопедические знания, и заучивать их тоже по началу не стоит. Это гуглится за пару секунд, и куда более продуктивно будет это делать уже по мере самой работы (учебной, разумеется) над какими-то своими поделками. Так у методов будет свой «вес», и потребность в них. Следовательно, запомнятся они куда лучше.

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

Книжка дает исчерпывающие понимание средств LINQ в достаточном объеме для уверенной работы с ним, а с LINQ придется работать много. По сути, это огромная часть языка C#, на которой пишется немало логики. Я сам очень люблю использовать LINQ, где только смогу. Писать бизнес-логику (логику программы) в функциональном стиле (используя описательный формат преобразования данных, а не последовательный) куда лаконичнее и понятнее, как по мне. В общем в книге достаточно глубоко показаны все тонкости, рекомендую, не смотря на ее возраст. В LINQ мало что поменялось.

Бонус #1
Даю вам свою классификацию методов LINQ, которая поможет их запомнить куда лучше. Написал ее, когда сам изучал LINQ.

«CLR via C#» by Jeffrey Richter

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

Я бы дал некоторые советы, как читать эту книгу:

Часть 1 — Основы CLR — очень глубоко вникать не нужно, достаточно понять, что такое:

  • строгие и не строгие имена сборок;
  • что такое CLR, по сути, и как устроена сборка, манифест, метаданные;
  • как запускается CLR через исполняемый файл exe и что еще в нем может содержаться кроме кода вызова;
  • JIT-компиляция и IL код;
  • CTS/CLS;
  • версирование сборок.

Часть 2 — Проектирование типов — эту часть нужно хорошо изучить целиком, важная базовая часть C#/.NET.

Часть 3 — Основные типы данных — заучивать функции работы со строками нет смысла, это все легко гуглится. Особое внимание уделите:

  • главе о делегатах — достаточно полная и базовая информация об этой части языка, понимание Func, Action;
  • что такое StringBuilder, как организованы строки в .NET;
  • интерфейсам ICollection, IEnumerable, IList;
  • Nullable-типам.

Часть 4 — Ключевые механизмы — советую очень хорошо разобрать:

  • концептуальный механизм уборки мусора;
  • фундаментальные вещи об исключениях;
  • что такое домен приложения и как он работает;
  • что такое Reflection (рефлексия, отражение);
  • общее понимание сериализации.

Часть 5 — Многопоточность — слишком глубоко вникать, как это работает на уровне ядра ОС, не стоит, но надо понимать общие концепции:

  • про переключения контекста;
  • про то, сколько памяти выделяет поток;
  • что такое Task и как он соотносится с реальным потоком ОС;
  • как работает синхронизация потоков на уровне приложения и ОС.
Цукерберг рекомендует:  Flash - AS3 getEnhancedMicrophone активирует камеру

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

Бонус #2
Дам вам исходный код змейки, которую я написал на T-SQL. Делать такие проекты — очень хороший способ выучить язык лучше.

А теперь челлендж: кто первый напишет тетрис на T-SQL — получит от меня бутылку ирландского виски :)

Frameworks & Tools

Для веб-разработки рекомендую эту книгу. В ней неплохо разобраны базовые возможности ASP.NET MVC, контейнеры управления зависимостями (IoC), основы LINQ, AJAX, JQuery. Есть примеры с кодом, достаточно легко читается.

Также рекомендую очень хорошие сайты-справочники по фреймворкам на платформе .NET — Metanit.com и Professor Web. Есть очень много примеров.

Также неплохой специализированный ресурс по Entity Framework — Entity Framework Tutorial.

Productivity tools

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

Обязательно установите себе ReSharper — лично я не мыслю свою работу без этого дополнения к Visual Studio. Для тех, кто использует Rider, Resharper вообще, как родной.

Если вы используете MS SQL Server Management Studio, то must have расширение — это SQL Hunting Dog. Некое подобие ReSharper’a для более быстрой навигации по сущностям базы и переключения баз.

Если ваша разработка связана с Web — осваивайте Chrome dev tools (F12 tools).

Для 99% случаев отладки кода в браузере их должно хватить. Для более хитрых случаев перехвата и изменения трафика используйте Fiddler.

Шаблоны проектирования и парадигмы

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

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

Также советую ознакомиться с парадигмами SOLID, главная из которых, я считаю «S» — single responsibility principle. Все остальное уже производное от нее.

Front-end

Я не рекомендую читать самую известную ортодоксальную книгу с носорогом, которая называется «JavaScript: The Definitive Guide» (Подробное руководство) by David Flanagan. Очень академичный стиль изложения, очень много воды и несущественных деталей. Конечно, если вы разработчик front-end фреймворков, то эта книга для вас. Но я все же люблю более практичный подход. Самое лучше, что есть в Рунете по Javascript, это JavaScript.ru и Learn Javascript.ru.

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

JQuery.page2page.ru — ресурс, который я рекомендую, если вы столкнулись с JQuery. В наших реалиях достаточно старых проектов — это может быть актуально.

Осваивать Angular, TypeScript или React вполне возможно на сайтах по официальной документации.

Из того, что мне показалось очень хорошим для вникания в React.js и современную инфраструктуру front-end разработки, это книга «Разработка веб-приложений в ReactJS» А. Хортона и Р. Вайса.

Вспомогательные средства

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

Clip2net — утилита, которая позволяет на ходу дорисовать что-то на скриншоте и тут же его сохранить или отправить.

Jing — утилита, позволяющая в два клика записать видео с экрана, загрузить в облако и выдать ссылку на его просмотр.

Также есть онлайн-средства для тестирования небольших кусков кода, например, .NET Fiddle, или для регулярных выражений — RegExr.

Многие любят LINQPad — текстовый редактор, позволяющий тестировать LINQ2SQL или EF LINQ запросы к базе и разные куски кода без перекомпиляции тяжелых громоздких проектов.

Системы контроля версий

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

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

Для начала достаточно понимать, что такое Repository, Branch, Pull, Commit, Push, Merge, Stash. Если хотите создать свой приватный репозиторий — можете использовать BitBucket. Если хотите кому-то показать свой код, то удобно будет создать публичный репозиторий на GitHub.

Stack Overflow

Я очень рекомендую иметь там аккаунт и задавать вопросы, также по возможности давать ответы. Даже заданный вопрос может принести вам рейтинг. Например один из моих вопросов набрал 10 000 просмотров, что дало мне золотую медаль и хороший рейтинг.

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

Методологии разработки

Следует разобраться, что такое Agile-подход, хотя бы в теории, возможно, выучить «артефакты» Scrum.

Недавно IT Ukraine Association выложила документ с набором необходимых навыков для junior-специалистов. В своей учебе можно также ориентироваться на него. Методологии разработки и релиз-менеджмент уже занимают там важное место. Начать изучать Scrum можно прямо с Wiki.

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

Бонус #3
Даю свой список вопросов для подготовки к собеседованиям, который я составил несколько лет назад. Если ответите на все эти вопросы, можно сказать, что вы знаете C#/.NET и Core-библиотеки на уверенном middle-уровне.

Советы для разработчиков Middle/Senior уровня

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

Книга Джона Скита, топового комментатора со Stack Overflow. Джон — профессиональный разработчик на Java в Google, но это не помешало ему написать бестселлер про тонкости синтаксиса C#.

Очень детально разбираются нюансы синтаксиса, разница в поведении в разных версиях .NET фреймворка и просто легко читается. Если Рихтер — больше о .NET, то эта книга именно о тонкостях C# и об эволюции этих языковых средств.

Книга по подготовке к экзамену 70-461 от «Майкрософт». Более структурного и внятного справочника по T-SQL я не находил. Темы очень четко разделены между собой, много наглядных примеров, даются все тонкости синтаксиса T-SQL. По сути, больше, чем в этой книге .NET разработчику, если он не является профессиональным Database developer’ом, знать и не нужно.

Архитектура

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

Книжка дает понимание о современных течениях в архитектурах, раскрывает понятия CQRS, DDD. Полезна для саморазвития. Читать ее или не читать — решать вам. Такие подходы вы увидите не в каждом проекте, но важно уметь оперировать категориями и шаблонами, описанными там.

Книжка Мартина Фаулера. Дается очень глубокий аналитический подход по рефакторингу и улучшению существующего кода.

Фреймворки

Если вас беспокоят вопросы производительности в старом-легаси проекте, а переписывать на чистый SQL вы не хотите — рекомендую гайд «Performance Considerations for EF 4, 5, and 6»

На Entity Framework можно писать достаточно производительный код, не прибегая к помощи Dapper’a или чистого ADO.NET, либо же переписывать уже существующий, оптимизируя его.

Также несколько книжек по более детальному разбору возможностей Entity Framework и производительности:

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

Обзор Open-source проектов

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

И еще можете глянуть самый знаменитый .NET Open-source E-commerce движок.

Нужны ли сертификаты от Microsoft?

Решать вам, в этом вопросе я не специалист. Однако скажу свое мнение.

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

Могу отметить пособие по подготовке к экзамену 70-461 как отличный учебник, да и вообще пособия для сдачи экзаменов по базам данных — чудесные учебные материалы.

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

Куда расти дальше

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

Могу посоветовать читать книги для общего развития, а также развития навыков в смежных специализациях. Например, по методологии проектирования UI можно ознакомиться с книгой проектировщика Apple — Джефа Раскина «Интерфейс. Новые направления в проектировании компьютерных систем».

Или же выбирайте базовые книги по проектному менеджменту: «Мифический человеко-месяц, или Как создаются программные системы» Фредерика Брукса.

Более академическая литература по проектному менеджменту — «Руководство к своду знаний по управлению проектами».

Или же можете записаться на курсы Stratoplan. Сам просмотрел пару штук, улучшил понимание процессов и людей в них. О «Стратоплане» как о курсах для менеджеров слышу только позитивные отзывы.

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

Ответы на популярные вопросы

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

Нужна ли программисту математика и алгоритмы?

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

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

Для входа в IT, думаю, с головой достаточно понимать:

  • алгоритмы сортировки массивов (пузырек, слияние, quicksort);
  • алгоритмы обхода бинарных деревьев в ширину и глубину;
  • «О» большое и «о» малое, или временная сложность алгоритма;
  • базовые структуры данных (стек, очередь, лист, дерево, хештейбл) и временные сложности поиска и добавления новых элементов в них.

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

И несколько холиварных вопросов :)

Что лучше — Java или C#?

В мире разработки есть более или менее уместные средства решить задачу, в том числе важный фактор — возможность найти людей, знающих технологию, и их цена. Однозначного ответа нет. На Java больше open-source, в C# более модерновый синтаксис. Java хостится на Linux, C# требует Windows, хотя .NET Core разворачивается на Linux, что делает его хорошим выбором для микросервисов под бесплатными системами управления базами данных, например PostgreSQL или MongoDB. У всех технологий есть плюсы и минусы. Все зависит от конкретной задачи.

Ставить или нет нижнее подчеркивание для приватных членов класса?

Как хотите :) Однако если весь проект написан в едином стиле, его проще читать, и члены команды привыкают читать код быстрее. «C# Coding Conventions (C# Programming Guide)» — кое-что описано тут. Можно использовать StyleCop и блокировать компиляцию проекта в случае несоответствия форматированию. В целом стандартизация повышает скорость и понятность.

Что лучше — SQL или NoSQL базы данных?

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

Зачем эти вопросы? Своими ответами я хотел показать свое отношение к технологиям и разработке в целом. Не важно, каким молотком ты забьешь гвоздь. Важен факт забития гвоздя под нужды клиента, учитывая его потребности и возможные риски. Остальное — детали, которые ему, по сути, и не нужны.

Вот и все, если захотите со мной связаться, можете писать прямо на Facebook — Vladislav Furdak.

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