Menu

Nakov.com logo

Thoughts on Software Engineering

Професия C# / .NET Developer: как се става .NET програмист? Как да науча C#? От къде да започна с .NET?

Днес ще разкажа подробно за професията “.NET Developer” и как се става C# програмист, с какви езици за програмиране и софтуерни технологии работят .NET разработчиците на софтуер и как можем да ги научим, от къде да стартираме, през какви стъпки да трябва да преминем по време на .NET обучението си.

Ще обясня за различните видове .NET програмиране: сървърна back-end разработка със C#, уеб разработка със C# и ASP.NET MVC, разработка на уеб услуги с ASP.NET Web API, разработка на мобилни приложения със C# и Xamarin, разработка на embedded приложения със C# за платформа Windows 10 IoT, desktop разработката с C#, XAML и WPF и full-stack .NEТ разработката с ASP.NET MVC, Entity Framework, HTML, CSS, JavaScript и Bootstrap.

Ще разкажа за стъпките през които минава всеки един начинаещ програмист, за да овладее професията “.NET developer” и защо няма особена разлика дали учиш Java или C# или друг език за програмиране, както и кои са фундаменталните умения на софтуерните разработчици, които не зависят от конкретните езици и технологии за разработка. Ще изясня защо трябва да преминем през основните етапи от изучаването на професията C# Developer: овладяване на програмирането (без значение от езика), развиване на алгоритмично мислене, натрупване на базови познания по компютърни науки и софтуерно инженерство, развиване на технологични умения със C# и .NET технологиите и трупане на опит с .NET програмирането.

Професия “C# програмист” – видео

Гледайте запис от видеото на живо със Светлин Наков за професията “C# програмист”:

Какво всъщност правят .NET програмистите?

.NET програмистите разработват софтуер (пишат програми и софтуерни системи) с езика C# и .NET платформата и средата за разработка Visual Studio, създават ASP.NET MVC уеб приложения, ползват бази данни и MS SQL Server, разработват back-end с ASP.NET и front-end с HTML, CSS и JavaScript или изграждат мобилни приложения с Xamarin.

Програмистите пишат програмен код, измислят алгоритми, подбират структури данни, създават класове, пишат методи, създават библиотеки и програмни интерфейси, проектират модели за съхранение на данни, проектират и изграждат потребителски интерфейси, имплементират комуникация между системи, реализират бизнес процеси, тестват създадения софтуер, поправят грешки, комуникират с клиентите и приоритизират задачите според нуждите им, пишат спецификации, документация, архитектурни планове, разучават и ползват различни работни рамки (frameworks) и софтуерни библиотеки, за да улеснят и организират по-добре работата си, гонят срокове, за да доставят работещ софтуер навреме и всъщност работят здраво. Да, програмирането означава яко бачкане и не е за мързеливци, но пък е интересна умствена работа.

Ученето на C# и .NET чрез става “чрез правене”

Програмирането се учи с правене. Трябват ви поне 70% практическа работа и писане на код всеки ден в продължение на поне година. Само с четене или гледане на видео не става. Трябва да решавате много, много задачи, да правите проекти и да трупате опит, хиляди часове. Ученето на C# и .NET технологиите става по същия начин: с много писане на код, решаване на задачи и създаване на практически проекти, години наред. Точно такъв е подходът за преподаване на .NET технологии в Софтуерния университет (СофтУни):

  • Стартът е с навлизане в писането на код. След това се изучават сериозно основите на програмирането и се развива алгоритмично мислене, с много практика, решаване на задачи и писане на проекти.
  • Продължението включва изучаване на базови принципи от софтуерното инженерство и компютърните науки, изучаване на концепции като процедурно програмиране, ООП, функционално програмиране, структури от данни и алгоритми, бази данни, уеб технологии и модели за комуникация от компютърния и софтуерния свят.
  • Всичко това се преплита с изучаване на конкретни езици за програмиране (като C# и JavaScript) и технологии за разработка (като .NET, ASP.NET и Entity Framework).

Практически проекти

За да станеш .NET програмист, трябва да се научиш да пишеш код (да кодиш), да развиеш алгоритмично мислене, да понатрупаш знания за компютърните науки и софтуерната разработка и да овладееш на добро ниво езика C# и .NET технологиите. В СофтУни преминаваме през всичко това за около 2 години.

  • Учим сериозно програмиране и решаваме много, много практически задачи (няколко ститици), за да развием алгоритмично мислене и problem solving skills.
  • Изучаваме в дълбочина фундаменталните принципи на програмирането, софтуерната разработка и комппютърните науки, обектно-ориентираното програмиране, функционалното програмиране, структурите от данни, принципите на базите данни, концепциите на уеб технологиите, основите на софтуерните архитектури и много други фундаментални знания за професията.
  • Работим по практически проекти със C#, .NET, JavaScript и SQL Server, където разработваме истински софтуер, който тръгва в ръцете ни.
  • При изучване на .NET професията тренираме сериозно уменията си по програмиране със C# и Visual Studio, ООП, SQL Server, ASP.NET MVC, Entity Framework, HTML5 и JavaScript.
  • Трупаме практически опит чрез работа в екип в GitHub среда.

Кариерен старт в топ фирми от бранша

Учим програмиране, за да придобием добра професия и да стартираме работа в добра фирма, при приятни условия, с добро заплащане и добри перспективи за растеж и професионално развитие, нали така?

Точно такова е и моето разбиране и това мое разбиране съм го пренесъл в СофтУни и затова даваме кариерен старт на студентите в края на обученията, а понякога и по-рано, преди да са завършили. Статистиката ни е следната: 92% от завършилите започват работа, но пък не всички започнали обучението си, завършват.

Всички студенти, които имат успех поне много добър (4.50) получават достъп до кариерния център на СофтУни (т.е. им търсим работа). За целта работим с топ работодатели от софтуерната и ИТ индустрията, които са упомонети на страницата “партньори”.

Философията на СофтУни за обучение на .NET инженери

Философията на СофтУни за обучение по професия “C# / .NET разработчик” комбинира умения по програмиране, базови структури от данни и развиване на алгоритмично мислене с фундаментални знания от компютърните науки и софтуерното инженерство и съвременни .NET и уеб технологии за изграждане на модерни софтуерни приложения. Учебният план за C# програмисти обхваща:

  • Фундаментални софтуерни умения: отлично ниво на програмиране, работа със сорс контрол системи, владеене на базови структури от данни, обектно-ориентирано програмиране (ООП), качествен код и функционално програмиране, автоматизирано тестване с unit testing и mocking, работа с бази данни, познаване на съвременните уеб стандарти, работа в екип с Git и GitHub;
  • Практически технологии за уеб разработка със C# и .NET: DB сървър MS SQL Server и език SQL, ORM технологии и Entity Framework, back-end технологии и платформа ASP.NET, framework за уеб разработка ASP.NET MVC, уеб сървър IIS, платформа .NET Core;
  • Уеб front-end технологии: HTML, CSS, JavaScript и jQuery, използване на AJAX, REST, JSON и JavaScript SPA приложения.

Обучението по C# и .NET разработка в СофтУни е много сериозно и задълбочено и формира всички базови познания и практически умения за успешен кариерен старт за junior позиции в софтуерната индустрия.

Факти за C# и .NET платформата. Знаете ли, че?

  • Стартовата заплата на един C# .NET developer е 800-1000 лв. чисто.
  • .NET и C# са в топ 5 на най-търсените технологии в софтуерната индустрия в България.
  • Отвореният код е в основата на платформата .NET Core, която е публичен проект в GitHub.
  • Езикът C# е разработен от Microsoft и е международен ISO стандарт.
  • .NET технологиите се ползват за разработка на всякакъв вид приложен софтуер: уеб приложения, мобилни приложения, 3D графика, игри, сървърни приложения.

Защо да уча C# и .NET?

Ако искате да се захванете с програмирането сериозно и да го направите своя професия, трябва да положите доста труд: да овладеете умението да пишете програмен код и да понатрупате опит с програмирането, да развиете алгоритмично мислене чрез решаване на стотици практически задачи и да изучите поне една платформа за разработка (например .NET, PHP, Java или HTML5).

Защо да се захващате точно с .NET платформата, езикът C# и сродните му технологии (като релационната база данни SQL Server, технологията за обектно-релационен достъп до данни Entity Framework, библиотеката за създаване на уеб приложения ASP.NET и други), а не с някоя друга платформа за софтуерна разработка?

  • Езикът C# е един от най-приятните съвременни езици за програмиране. Той комбинира процедурно, обектно-ориентирано и функционално програмиране, с изчистен и кратък синтаксис. C# е изключително е лесен за учене и постоянно се обновява с нови версии и подобрения, вече близо две десетилетия.
  • .NET платформата (и двете й разновидности .NET Framework и .NET Core) са съвременни софтуерни платформи за разработка, много богати като функционалност и възможности, като технология сред най-добре развитите, предпочитани от милиони разработчици по целия свят. С .NET технологиите се разработват най-разнообразни приложения.
    • С .NET можете да изграждате съвременни уеб приложения (Web applications) и уеб услуги (RESTful Web Services), използвайки езика C# и технологичните рамки (frameworks) ASP.NET MVC, ASP.NET WebAPI и ASP.NET Core заедно с технологиите за интеграция с бази данни ADO.NET и работната рамка Entity Framework (EF). С програмния модел MVC (model-view-controller) уеб разработката в ASP.NET се разделя на модели (POCO класове), контролери (System.Web.Mvc.Controller и System.Web.Http.ApiController класове) и изгледи (с Razor view engine).
    • На C# можете да пишете мобилни приложения за iOS, Android и Windows Phone, използвайки мобилната платформа Xamarin. Тя позволява създаване на native mobile apps с езика C# в средата Visual Studio, без да се налага да учите Java, Swift и Objective-C. С библиотеката Xamarin Forms с езика C# можете да изграждате естествен потребителски интерфейс (native mobile UI).
    • Със C# можете да изграждате сървърни (back-end) приложения с технологията ASP.NET за изработка на уеб приложения и REST услуги. С ASP.NET се създават уеб контролери и действия, които обработват HTTP заявки и връщат HTML, JSON или XML отговор. За интеграция с бази данни C# уеб приложенията използват Entity Framework за ORM-базиран достъп до таблиците в базата, RDBMS система Microsoft SQL Server за съхранение на данните и T-SQL за съхранени процедури. C# backend приложенията се тестват с технологии за unit testing и като MSTest (Visual Studio Team Test) и mocking като Moq.
    • С .NET технологиите разработвате с лекота приложения с бази данни, използвайки ORM библиотеката Entity Framework (EF) и програмния модел ADO.NET, сървъри за релационни бази данни (като MS SQL Server, MySQL / MariaDB и Azure SQL) и библиотеки за работа с XML (парсери), JSON и други формати за данни.
    • Езикът C# е сред най-използваните за създаване на настолни приложения (desktop apps) с Universal Windows Platform (UWP), езикът за описание на потребителски интерфейси XAML, системата за XAML базирани Windows UI приложения WPF и други съвременни UI технологии.
    • .NET е водеща технология и при разработката на приложения за cloud среда (cloud apps), където интеграцията с Microsoft Azure е много развита. В Azure с езика C# можете да използвате десетки съвременни cloud технологии, като Azure Web Apps и Azure Web Sites за хостинг на облачни приложения, cloud SQL база данни, документна база данни (NoSQL), machine learning услуги, big data решения и много други.
    • На езика C# можете да разработвате и компютърни игри с Unity game engine, от който получавате наготово съвременна платформа за 2D и 3D компютърна графика и анимация, с физика, обекти, движения, колизии и т.н. Със C# и Unity можете да създавате графични и гейминг приложения за desktop, Web и мобилни устройства.
  • Голямо търсене на C# / .NET програмисти. Поради доброто технологично ниво на .NET платформата и нейната отвореност, предлагането на работа за .NET developers е сред топ 5 на най-използваните и най-търсените в софтуерната индустрия в България. Погледнете в сайтовете за обяви за работа за C# и .NET специалисти, за да се уверите колко много отворени позиции има за .NET developers.

Как се става C# програмист?

Да станеш C# програмист означава да изучиш C# програмирането и .NET технологиите и да натрупаш практически опит с тях. Това включва следните няколко стъпки:

  1. Натрупване на умения по програмиране.
  2. Развиване на алгоритмично мислене.
  3. Овладяване на основите на компютърните науки и софтуерното инженерство.
  4. Овладяване на .NET технологиите за разработка на софтуер.
  5. Трупане на практически опит с .NET технологиите.

Натрупване на умения по програмиране

Първата стъпка, за да станеш програмист е да се научиш да пишеш код и да овладееш основите на програмирането, без значение от езика за програмиране. Понеже в тази статия става дума, че интересите са ви насочени към C# програмирането и .NET разработката, имам следния съвет като за старт:

Научете се да програмирате (натрупайте coding skills) с езика C# и средата за разработка Visual Studio. Това включва работа с променливи и данни, писане на условни конструкции (проверки) и цикли, работа с масиви и списъци, обработка на символни низове (стрингове), работа с класове и обекти, работа със среда за разработка (IDE) и други базови програмни умения.

Можете да започнете безплатно с курсовете по основи на програмирането в СофтУни. Те са изключително подходящи за напълно начинаещи, както и за по-напреднали, защото систематично поднасят знанията и ви въвличат в много практика.

Развиване на алгоритмично мислене

Научете се да мислите алгоритмично (развийте логическо / инженерно мислене). Научете се да решавате задачи по програмиране, да търсите информация, да мислите, да пишете код, да проучвате, да търсите решения. Алгоритмичното мислене е способността да изграждаш решения чрез разбиване на проблема на последователност от стъпки (алгоритъм). То е в основата на всяка компютърна програма и е неделима част от писането на код. Алгоритмичното мислене включва измисляне на стъпки за решаване на даден проблем и намиране на решения за отделните стъпки чрез търсене в Интернет, пробване, писане на код, дебъгване, отстраняване на грешки и последващо подобрение.

Най-добрият начин да се развие алгоритмично мислене е чрез решаване на стотици задачи по програмиране, особено ако имат алгоритмичен характер. В СофтУни алгоритмичното мислене се изгражда за няколко месеца чрез поредица от задълбочени курсове като Programming Fundamentals, в които се решават голям брой практически задачи по програмиране с нарастваща сложност.

Овладяване на основите на компютърните науки и софтуерното инженерство

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

Ето някои от по-важните области от софтуерното инженерство, които са необходими за да започнеш работа в областта на компютърното програмиране със C# и .NET:

  • Базови познания по структури от данни и алгоритми: сложност на алгоритъм, работа с линейни структури данни (списък, стек, опашка), дървовидни структури (дървета  графи) и хеш-таблици (речници), алгоритми за търсене и сортиране, рекурсия, комбинаторика, графи, динамично оптимиране и други. Изучават се подробно в курсовете по структури от данни и алгоритми.
  • Работа със сорс контрол системи (хранилища за сорс код) като Git, SVN и платформи за колаборация като GitHub, клониране на repository, промяна, commit и push на промените, решаване на конфликти и merge, работа със задачи (issue tracking). Изучават се в курса по фундаментални основи и принципи на програмирането.
  • Обектно-ориентирано програмиране (ООП) и шаблони за дизайн, работа с класове и интерфейси, капсулация на данни (encapsulation), наследяване на класове и имплементация на интерфейси, абстракция и полиморфизъм, хвърляне и хващане на изключения, работа с OO design patterns. Изучават се в курсовете по C# OOP Basics и C# Advanced OOP.
  • Компонентно тестване (unit testing), mocking (подпъхване на функционалност) и работа с инструменти за unit testing като NUnit и MSTest. Изучават се в курса по ООП за напреднали и качествен код.
  • Функционално програмиране, работа с функции, функционални изрази, ламбда функции, функции от по-висок ред, функции, връщащи функция, затваряне на състояния с closure, IIFE и други. Изучават се в курсовете по JavaScript за напреднали и C# за напреднали.
  • Бази от данни и SQL, създаване на релационна схема чрез моделиране на таблици и връзки (E/R diagram), писане на SQL заявки за CRUD операции чрез DML заявките, извличане на данни с SQL SELECT, селекция, съединения на таблици (joins), филтриране с WHERE, сортиране, групиране, обединения, вмъкване на данни с SQL INSERT, изтриване на данни с SQL DELETE, модификация на данни с SQL UPDATE, работа с DDL заявки, съхранени процедури и функции на ниво база. Базите данни се изучават в курса по бази данни. Фокусът е върху MS SQL Server – релационната база данни на Microsoft (създаделите на C# и .NET технологиите).
  • ORM технологии, чрез които таблиците от релационната база данни се прехвърлят в C# класове и се управляват чрез DbContext класа, който предоставя CRUD функционалност в обектно-ориентиран стил. Работата с ORM технологии в C# се практикува в курса по бази от данни за напреднали.
  • Уеб приложния и HTTP – познания в тази област са необходими на всеки съвременен софтуерен разработчик, тъй като болшинството от мрежовата комуникация между приложенията работи с HTTP протокола. Концепциите за изграждане на уеб приложения и REST услуги са също основополагащи за практическата софтуерна разработка. Такива фундаментални знания и умения за уеб разработка се изграждат в курса по основи на уеб разработката.
  • Софтуерни архитектури, client-server, MVC – това са концептуални познания от софтуерното инженерство. Те се изучават на начално ниво в курса “Софтуерни технологии” и се развиват чрез много практика.
  • Front-end разработка, работа с HTML, CSS и JavaScript са сред редовните изисквания в обявите за работа за софтуерни инженери, програмисти и разработчици. Тези умения се развиват в курса по HTML и CSS и в курсовете за JavaScript front-end разработка.
  • За развитието на един софтуерен инженер, от плюс са уменията за работа с операционни системи и мрежи, познаване на хардуера, уменията за мрежово програмиране, разбиране на парадигмите на конкурентно (паралелно) програмиране, използване на процеси и методологии за разработка на софтуер (например Scrum и agile development), разбиране на концепции и инструменти за софтуерно тестване, разбиране на принципи и инструменти за софтуерен дизайн и много други. Такива знания и умения се развиват с изборните курсове в СофтУни.

Овладяване на .NET технологиите за разработка на софтуер

Освен фундаменталните знания за програмирането и софтуерното инженерство, един .NET разработчик трябва да научи на добро ниво и най-използваните .NET технологии:

  • Достъп до бази данни с Entity Framework (EF) и Entity Framework Core, дефиниране на entity класове, мапинг на класовете към database таблици, работа с DbContext, database-first техниката, code-first подхода, конфигурация на code first database миграции, работа с unit of work шаблона, реализация на CRUD операции през DbContext, работа с транзакции и други.
  • Създаване на уеб приложения с ASP.NET MVC и ASP.NET Core, дефиниране на MVC контролери (наследяване на Controller класа) и обработка на HTTP GET действия, които рендират данни във вид на HTML, рендиране на HTML форми за Razor view engine, обработка на HTTP POST заявки от HTML форми с MVC контролер, работа с ViewBag и view models, мапинг към database модели от EF, интеграция на MVC контролер с Entity Framework и бази от данни, работа с partial views, имплементация на login / logout и автентикация, scaffolding на CRUD заявки с MVC контролери, действия и модели и други ASP.NET тънкости.
  • Създаване на REST услуги с ASP.NET Web API и ASP.NET Core, разработка на REST service endpoints с наследяване на ApiControler класа, дефиниране на действия (controller actions), мапинг на входните параметри от URL заявката или от тялото на POST заявката, обработване на заявката (синхронна и асинхронна), достъп до SQL Serrver през Entity Framework чрез наследника на DbContext класа и връщане на отговор (JSON, XHML, HTTP error code или друг).
  • Мобилна разработка със C# и Xamarin – създаване на native C# mobile apps за телефони и таблети, iPhone, Android и други мобилни платформи.

Освен добро владеене на програмирането и .NET технологиите, съвременните софтуерни разработчици трябва да имат и умения по уеб front-end технологии:

  • Изграждане на уеб сайтове и уеб-базиран потребителски интерфейс с HTML и CSS, основни HTML тагове, структура на HTML документ, семaнтичен HTML, работа с HTML елементи и атрибути, div, span, параграфи, таблици, форми и контроли, CSS селектори и правила за разположение (layout) и стилизиране.
  • JavaScript, jQuery и JS библиотеки за front-end JS разработка, работа с JavaScript езика, ООП в JavaScript, closures, шаблони за модул и revealing module, библиотеки за JS-базиран user interface като React и AngularJS.

Трупане на практически опит с .NET технологиите

Трупането на опит става най-вече след започване на работа в софтуерна или ИТ фирма. Опит се трупа с бачкане, с много години бачкане, с много правене, бъркане, поправяне, писане, пренаписване и т.н.

Поради недостиг на време в университета се правят малки проекти с учебна цел и това е съвсем нормално, защото никой не иска да учи 10 години, за да излезе с 10-годишен опит от университета. Учебните проекти дават начален опит, но не могат да ви направят опитни .NET инженери. Колкото и да се стараете, след едно добро обучение можете да излезете на ниво програмист-стажант или най-много junior developer.

Какви умения ще добия от .NET курсовете в СофтУни?

Обучението по специализация “C# / .NET разработчик” в СофтУни дава практически умения за .NET разработка – такива, каквито се търсят от софтуерните фирми в обявите за работа за junior .NET developer:

  • Програмиране на езика C#, работа с Visual Studio, използване на колекции, ООП, класове и обекти, работа с Git и GitHub
  • Познания на базови структури от данни и алгоритми, умения за решаване на проблеми със C# и Visual Studio
  • Разработване на уеб приложения с ASP.NET MVC, Entity Framework и SQL Server
  • Разработване на DB приложения с Entity Framework, T-SQL и SQL Server
  • Разработване на back-end приложения с ASP.NET WebAPI, Entity Framework и SQL Server
  • Разработване на front-end приложения с HTML, CSS, JavaScript, AJAX и REST

Кои технологии се изучават в СофтУни за професия “.NET Developer”?

СофтУни предлага професията C# / .NET разработчик, в която се изучават следните 15 курса по програмиране и софтуерни технологии:

  • Programming Basics – обхваща основи на програмирането с езика C# и средата за разработка Visual Studio, работа с променливи, използване на проверки (if-else) и цикли за повтаряне на блокове код.
  • Programming Fundamentals – развива алгоритмично мислене и умения за решаване на задачи по програмиране с използване на колекции (масиви, списъци, речници и множества и операции върху тях: добавяне, търсене, промяна, вмъкване, изтриване, сортиране, въвеждане и отпечатване), текстообработка със стрингове и регулярни изрази и задачи върху символни низове, работа със сорс контрол системи, Git хранилища и колаборация в GitHub, използване на C# методи и инструменти за дебъгване (трасиране на кода, breakpoints, инспектиране на променливите), четене и писане на текстови и бинарни файлове, достъп до директории, обработка на изключения (хвърляне и хващане на exception), работа с обекти и класове на начално ниво, ползване на съществуващи .NET библиотеки и APIs.
  • Software Technologies – запознава навлизащите в софтуерното инженерство с най-използваните технологии за софтуерна разработка на начално ниво, от front-end с HTML, CSS и JavaScript до уеб сървърни приложения с MVC frameworks и бази данни. Прави се преглед на JavaScript сървърни технологии (Node.js, Express и MongoDB), PHP уеб разработка (PHP + MySQL), C# уеб разработка (ASP.NET MVC + Entity Framework + SQL Server) и Java уеб разработка (Java + Spring MVC + Hibernate + MySQL). Като практически проект се изгражда блог система от нулата, включваща преглед на блог статии и коментарите по тях, login и logout, административна част с добавяне на ново съдържание и промяна на съществуващото. Блогът се реализира по подобен начин с уеб приложения, базирано на сървърен MVC framework на четири различни езика: JavaScript, PHP, C# и Java.
  • C# Advanced – запознава с програмни техники за напреднали, базови структури от данни (като стек, опашка, списък, множество и речник и операциите върху тях – добавяне, търсене, изтриване, промяна, въвеждане и отпечатване), концепции от C# функционалното програмиране, работа със C# заявки и LINQ и ползване на LINQ API с ламбда изрази, асинхронно програмиране с async и await.
  • C# OOP Basics – дава базово разбиране на парадигмата обектно-ориентирано програмиране (ООП) в света на C#, умения за работа с класове и обекти, дефиниране на класове в C# и техните членове (полета, свойства, методи, конструктори, събития), работа със статични членове, капсулация на данни чрез private поле + getter + setter, наследяване и изграждане на прости обектно-ориентирани йерархии от класове, полиморфизъм и използване на абстрактни действия с подмяна на поведението в класа наследник.
  • C# OOP Advanced – задълбочава познанията по ООП в контекста на C# програмирането и въвежда техники за писане на качествен програмен код, задълбочава знанията по абстракция и уменията по изграждане на ОО йерархии чрез наследяване на класове и имплементиране на интерфейси, въвежда програмните техники “unit testing” и “mocking” и преработка на лош код (refactoring), запознава с писането на итератори и компаратори, работата с изброен тип (enum) и .NET атрибути, използването на шаблонни типове (generic types) и комуникацията между обекти с делегати и събития, както използване на Reflection API (отражение на типовете).
  • Databases Basics & MS SQL Server – дава солидни основи за работа с релационни бази от данни и database сървъри, използване на езика SQL в контекста на RDBMS системата Microsoft SQL Server, дизайн на бази данни и създаване на E/R диаграми, работа с SQL DML командите (CRUD операции), SELECT заявки, проекция, селекция, съединение на таблици, филтриране, сортиране, групиране, SQL функции, работа с SQL DDL командите (CREATE, ALTER, DROP), писане на подзаявки, писане на съхранени процедури, функции и тригери, управление на транзакции, работа с индекси и оптимизации на бързодействието.
    • Databases Advanced & Entity Framework – поставя сериозен фундамент и стабилни технически умения за работа с данни в C# среда – от ADO.NET и изпращане на SQL заявки към база данни до работа с ORM технологии и парсване на XML; започва се от ADO.NET, настройка на connection string, работа с DbCommand и ResultSet класовете, през параметрични SQL заявки (prepared statement), продължава се с ORM системите и по-конкретно Entity Framework (EF), инсталация на EF през NuGet, конфигурация на EF, seed методи за пълнене на начални данни, концепция за миграции, продължава се с DB first mapping на съществуваща база от данни, CRUD заявки през DbContext класа (LINQ заявки за извличане на данни от базата, добавяне на записи, изтриване на записи и промяна на съществуващи записи), работа с code first mappings, по-сложни ORM техники като използване на транзакции, inverse mappings, fluent API, lazy loading, N+1 query проблемът и неговото решение, include в EF и други EF техники; работа с JSON данни, JSON парсери в .NET и JSON сериализация, XML парсери в .NET и обработка на XML данни.
  • C# Web Development Basics – дава стабилни базови познания по уеб програмиране и протокола HTTP и позволява задълбочено усвояване на концепциите на съвременното сървърно уеб програмиране; започва с езика HTML, концепцията за уеб сървър и CGI комуникация, работа с уеб форми и предаване на данни с HTTP GET и POST заявки, продължава с детайлите около HTTP протокола, работа с HTTP сесии, cookies в уеб браузъра и state management, базова работа с Bootstrap, писане на собствен уеб сървър на C# с комуникация по сокет с multi-threaded модел на обработка на HTTP заявките, парсване и рутиране на заявките, създаване на проста MVC архитектура и мини MVC framework на C#, изграждане на persistence layer с Entity Framework и писане на data-driven Web приложение на C# от нулата, без ASP.NET или друг framework.
  • C# MVC Frameworks & ASP.NET – навлиза в дълбочина в сървърното уеб програмиране със C# чрез технологията ASP.NET MVC: от създаване на MVC проект, включване на необходимите NuGet пакети, създаване на MVC контролери и действия, които хващат HTTP GET и POST заявки, създаване на Razor изгледи за визуализация на данни (cshtml синтаксис), конфигурация на рутирането на заявките, до по-сложни изгледи, работа с layouts и секции, view helpers за рендиране на форми и контроли за вход, частични изгледи (partial views), области от уеб приложението (MVC areas), работа с Entity Framework и достъп до база данни от ASP.NET MVC приложение, генериране на контролери, view модели и изгледи за CRUD операциите по даден entity клас с техниката “scaffolding”, валидация на данните от HTML форма, работа с model binders, шаблони за визуализация и редакция на данни (view & editor templates), използване на Session, TempData и Cache обектите, използване на inversion of control контейнер “Ninject” за dependency injection в контролерите и auto-mapper за автоматично прехвърляне на данни между domain model и view model класовете, работа с ASP.NET Identity системата и имплементация на login / logout / регистрация на потребител и подобни функционалности, защита на достъпа чрез автентикация и оторизация, работа с AJAX заявки, използване на уеб сокети (web sockets) и SignalR технологията, използване на библиотеки с MVC контроли.
  • JavaScript Fundamentals – поставя основите на JavaScript програмирането с много практически занимания, като се използват съвременните JS стандартни (modern JavaScript), от работа с променливи и данни, смесване на HTML и JavaScript код, през условни конструкции и цикли, до функции (параметри, извикване, връщане на резултат, вложени функции) и използване на lambda изрази, работа с масиви и многомерни масиви и особеностите им в JS, обработка на текст (стрингове) и използване на регулярни изрази в JavaScript, работа с обекти, асоциативни масиви, множества и речници със средствата на JavaScript езика.
  • JavaScript Advanced – продължава по-задълбочено навлизането в концепциите на JavaScript програмирането и писането на обектно-ориентиран JS код; обхваща се работата с DOM дървото на HTML документа и обработка на DOM събития (във front-end среда), използване на jQuery библиотеката, работа с JS функции и IIFE изрази, затваряне на състояние във функция (концепция за closure), концепция за композиране на обекти като опростен подход към ООП (обединяване на данни и действия е JS обект), използване на шаблоните “module” и “revealing module” за създаване на stateful обекти с капсулирани private данни с тях, прототипно наследяване на обекти, концепцията за класове, обекти и наследяване в стила на ООП езиците, използване на конструктори, свойства и методи, наследяване на класове с прототипни вериги, unit testing с инструментите за JS тестинг Mocha и Chai, работа с транспилатори и Babel, управление на изключенията и обработка на грешки в JS среда, генератор функции и асинхронно изпълнение.
  • JavaScript Applications – фокусира върху приложната част на JavaScript front-end програмирането и изграждането на цялостни single-page приложения, които визуализират и обработват данни от REST услуги с AJAX; започва се от работа с HTTP и BaaS услуги за съхранение на данни с RESTful API, ползване на Postman за изпращане на HTTP REST заявки, извикване на REST услуги с jQuery AJAX, достъп до GitHub API, Firebase и Kinvey mBaaS през REST интерфейс с HTTP заявки, и се продължава с концепциите на promises за асинхронно изпълнение на поредица от действия, обяснява се работата със localStorage и sessionStorage, и накрая се изграждат цялостни front-end JS приложения (SPA apps) с JS базирана MVC архитектура (от страна на клиента), която използва рутинг библиотеки като Sammy.js и templating библиотеки като Mustache.js и REST-базиран back-end; изучава се още работата с React и JSX компонентите, както и класически инструменти за JS разработка като webpack, grunt, gulp, ESLint и други.
  • Web Fundamentals & HTML5 – поставя основите на изграждането на уеб сайтове с HTML и CSS, основни HTML тагове (div, span, параграф, линкове, картинки, списъци), работа със CSS (включване на CSS от HTML документ, селектори и правила), работа със структурата на HTML документа, ползване на семантични тагове, създаване на HTML таблици, ползване на по-сложни CSS селектори (nested selectors и pseudo selectors), работа със CSS стойности и мерни единици, приоритет на селекторите, концепции за CSS позициониране и разположение на елементите (layout), настройка на шрифтове, цветове, контур, отмествания (margin & padding), плаващи елементи (CSS floating), блокови и inline-block елементи и подреждането им, работа с HTML форми и различните видове контроли (текст, падащ списък, дата и други) и стилизиране на HTML формуляри със CSS, изграждане на адаптивен дизайн за различни устройства с media queries и flexbox, техники за responsive images, tables, forms и други адаптивни елементи, работа с Bootstrap, използване на плавни премествания (transitions) и анимации и използване на популярни HTML front-end библиотеки като Font Awesome, слайдери, нотификации и други.
  • WordPress Basics – дава базови практически умения за изграждане на WordPress сайтове, инсталиране и настройка на WordPress, настройка на хостинг среда и домейн, инсталиране на теми (WP themes) и добавки (WP plugins), създаване и редакция на уеб съдържание, създаване на форма за контакт, галерия, слайдер, създаване на собствена WP тема и изграждане на цялостен WordPrress сайт от нулата, с използване на готова WordPress тема, безплатни плъгини и инструменти за визуално редактиране на съдържание.

Успешно усвоилите учебния материал от изброените курсове от C# професията в СофтУни с лекота си намират работа като .NET софтуерни инженери през кариерния център на СофтУни или самостоятелно.

Безплатни C# курсове и уроци по .NET програмиране и C# видео уроци

СофтУни предоставя безплатен достъп до всички видео уроци, презентации, постъпкови ръководства и учебни материали от C# и .NET обученията за професия .NET Developer. Достатъчно е да се регистрирате като потребител в сайта и получавате C# видео уроците безплатно през посочените курсове от професия “.NET разработчик”.

Гледайте нашите безплатни C# уроци по .NET програмиране. Тъй като уроците по C# програмиране са огромен брой (няколко хиляди!), трябва да си изберете някои от курсовете в СофтУни и след това някоя от инстанциите на съответния курс и след това да си изберете някоя от темите от курса. Изберете безплатен курс от .NET програмата на СофтУни:

Сайтът на СофтУни наистина предоставя безплатни видео уроци по C# и .NET разработка и това важи за материалите от всички изброени по-горе учебни курсове по .NET програмиране. Материалите и видео курсовете са с отворен лиценз Creative Commons.

Как да уча безплатно C# и .NET?

Вземете си безплатен курс по C# програмиране, в няколко части (цяла поредица видео обучения за C#, която представлява доста задълбочен безплатен C# курс с над 100 часа видео): Programming Basics, Programming Fundamentals, C# Advanced, C# OOP Basics.

Продължете след това да изучавате и практикувате .NET програмирането с нашите безплатни .NET курсове и безплатни видео обучения за .NET разработка. Ето списък с курсовете за .NET програмисти, които са достъпни за всички регистрирани в сайта на СофтУни потребители под формата на безплатни .NET видео уроци и .NET tutorials: Databases Basics & MS SQL Server, Databases Advanced & Entity Framework, C# Web Development Basics, C# MVC Frameworks & ASP.NET.

Допълнете знанията си за .NET и C# програмирането с front-end обучения, които получавате от нас под формата на безплатни видео уроци за HTML, CSS, WordPress и JavaScript програмиране: Web Fundamentals & HTML5, WordPress Basics, JavaScript Fundamentals, JavaScript Advanced, JavaScript Applications.

Инвестирайте в своето образование! От вас зависи да вземете добра професия и да работите добра работа! Учете, вместо да се оплаквате. Образовайте се и си осигурете добро бъдеще. От вас зависи, наистина!

Previews (35,839), Views (223), Comments (6)

6 Responses to “Професия C# / .NET Developer: как се става .NET програмист? Как да науча C#? От къде да започна с .NET?”

  1. Veliko Kosev says:

    Направих простичък уебсайт със логин/регистър форма и след влизане в сайта показва данни от MySQL базаданни в HTML таблица, като таблицата се ъпдейтва динамично при нови данни в БД(без да се налага потребителя да рефрешва сайта) и input-и за въвеждане на данни в БД.

    Използвах HTML CSS PHP JS, JQuery AJAX, Bootstrap.

    Достатъчно ли е за Junior PHP developer позиция или да се стремя, към още по-сериозни проекти?

    • nakov says:

      Ами може да се пробваш и така. Ако искаш прати ми го това на мейла и ще пробвам да ти намеря работодател. Има доста глад за PHP developers.

  2. c# подходящ ли е за embedded програмиране, микроконтролери…? подходящо ли е за навлизане в тази област? Ако не – от къде се започва в тази насока ?

    • nakov says:

      Препоръчвам с Arduino да започнеш. За Arduino има най-много материали, видеа, tutorials, кво ли не: https://www.arduino.cc. Правим курсове за Ардуино 2-3 пъти в годината в СофтУни, може да се запишеш и на тях за по-лесен старт.

      C# става и за embedded, но не е най-типичното му приложение. Аз лично съм ползвал Windows 10 IoT и съм писал за него на C#. Много приятно се пише.

  3. ivan0v says:

    Каква е цялостната идея на Arduino ? Не е ли просто микро компютър ? Каква е разликата да си пиша програми на персоналния компютър и на Arduino ? Съжалавям ако въпросите са ми прекалено глупави.

    • nakov says:

      Arduino е специализиран микроконтролер, насочен към хардуера. Там няма Linux или Windows (за разлика от мини-компютрите). Програмираш програма, качваш я и тя се изпълнява върху микроконтролера. Имаш налични GPIO (каквито нямаш на лаптопа) – цифрови и аналогови портове, с които управляваш външна перифесия (примерно светваш лампичка или завърташ електормоторче).

RSS feed for comments on this post. TrackBack URL

LEAVE A COMMENT