Image may be NSFW. Clik here to view.СофтУни организира за пети пореден път конференция за стартиращи в програмирането, този път в Чепеларе. Запазете си уикенда 30 октомври – 1 ноември 2015 г. за да научите новостите от света на програмирането и разработката на софтуер и да се позабавлявате здраво. Участието е почти безплатно (събираме по “20 лв. такса ангажимент”).
Конференцията “СофтУни Палатка Конф – 30 октомври – 1 ноември 2015” е технологично събитие за програмиране и софтуерни технологии, ориентирано към начинаещи. Всеки участник сам избира дали да къмпира в палатковия лагер или да се настани на хотел.
Този път освен техническите лекции с топ специалисти от общността на разработчиците, сме подготвили стабилна спортно-развлекателна програма с много спортни игри, състезания и групови забавления.
За любителите на състезателното програмиране правим поредното тренировъчно състезание и обучение за подготовка за националните и международните състезания и олимпиади по информатика и програмиране: Алго академия за структури от данни и библиотеката STL в C++ платформата. Безплатното обучение и тренировъчното състезание към него ще се проведат в София на 20 и 21 ноември 2012 г. в софтуерната академия.
Учебна програма по структури от данни и STL
Ще изучаваме базовите структури от данни в програмирането:
Списъци, стекове, опашки, свързани, статични, саморазтягащ се масив, вектор
Дървовидни структури от данни, дървета, балансирани дървета за търсене, графи
Хеш-таблици, речници и множества
Библиотеката STL, която имплементира всички тези структури от данни в C++
В школата могат да участват ученици от цялата страна на възраст от четвърти до седми клас. Ще има група за напълно начинаещи и група за напреднали.
Програма на лятната школа по програмиране в Китен
Учебната програма включва основи на програмирането и подготовка за националните състезания по информатика и програмиране:
Езикът C++ – основни конструкции
Алгоритми за решаване на задачи по програмиране
Подготовка за състезания по програмиране
Тъй като разходите по настаняването на учениците са значителни, този път школата не е безплатна. Участниците заплащат цена от 375 лв. която включва всички разходи: път, настаняване, храна, обучение, застраховка и други.
Приближава новата учебна година (2012-2013) в софтуерната академия – образователен център #1 в България за безплатно обучение на софтуерни инженери, в който учат над 4000 души (към юли 2012 г). Предстоящото издание на академията за софтуерни инженери ще бъде много по-мащабно, по-интересно и ще дава повече възможности от от предходните издания.
Очаквайте скоро официалните учебни планове и новата образователна концепция на Академията. За сега ще разкрия само няколко ключови нововъведения за идната учебна година (септември 2012 – август 2013):
Ще приемем минимум 700 души и няма да поставяме ограничение за броя участници в безплатната образователна програма “софтуерна академия”. Всички, които преминат входния си изпит (IQ тест, тест по английски и ИТ тест), ще бъдат приети за безплатно обучение за софтуерни инженери. Това може да са 1000, 2000, дори повече студенти – колкото издържат приемните изпити.
Ще открием нови специалности. Към съществуващите специалности “.NET разработчик”, “QA инженер” и “Софтуерен инженер по поддръжката на клиенти” добавяме още няколко: “Уеб front-end разработчик”, “XAML front-end разработчик”, “Разработчик на сървърни услуги”, “ASP.NET уеб разработчик”, “Разработчик на мобилни приложения”, “Windows 8 разработчик”, “Специалист по дигитален маркетинг” и други.
Ще разбием учебната програма до много на брой малки курсове. Всички курсове ще са малки (под 1 месец обучение, следвано от практически изпит или практически курсов проект). За различните специалности ще има поредица задължителни курсове (learning track) + изборни дисциплини за свободно записване. Предвиждаме около 20 различни курса: фундаментални и технологични, както и много практически проекти в екип.
Повечето курсове в академията ще могат да се записват свободно извън програмата “софтуерна академия”. Ще може да се участва онлайн и присъствено (със задължително присъствени изпити и защити на проекти). Ще могат да се записват и гимназиални ученици. Академията ще може да се кара и за повече от една година, т.е. ако закъсате с някой от курсовете и не ги преминете от първи опит, ще може да ги вземете следващата година и да продължите образованието си за специалността, за която се борите.
Обучението преминава на 3 семестъра:
Първи семестър (септември 2012 – януари 2013): ще се изучават основи на програмирането и на уеб технологиите + изграждане на инженерно мислене (обучението ще е публично и достъпно за всички желаещи)
Втори семестър (февруари 2013 – юни 2013): ще се изучават по-задълбочено програмиране, уеб технологии и бази данни (обучението ще е публично и достъпно за всички желаещи)
Трети семестър (юни 2013 – септември 2013): ще се изучават .NET разработка, QA инженерство, работа с клиенти, уеб програмиране, ASP.NET, XAML, мобилни технологии, Windows 8 разработка (обучението ще е само за участниците в академията с достатъчно високи резултати до момента)
Ще въведем практическа работа в екипи по проекти на академията още от началните месеци на обучението. Участниците в академията ще трупат практически опит и ще работят в екипи по различни направления месеци наред, за да натрупат работен опит и умения да се сработват със своите колеги. Студентите ще участват в инициативи за свободно споделяне и разпространение на знания, организирани от академията.
Отпечатахме 1000 учебника по основи на програмирането
Безплатният учебник по основи на програмирането, по който вече 3 години студентите в софтуерната академия учат фундаменталните принципи на програмирането, алгоритмите и структурите от данни, беше преиздаден за пореден път. Този път отпечатахме 1000 нови бройки за да посрещнем нуждите на новите студенти на есен.
Регистрацията за безплатно участие в новия сезон на софтуерната академия е достъпна от сайта на инициативата: http://academy.telerik.com/academy/. В момента тече предварителна регистрация, така че имате време да подготвите старателно своите документи за кандидатстване (CV + cover leter) и да се подготвите за приемните изпити (IQ, English и IT test).
История на софтуерната академия
Image may be NSFW. Clik here to view.Предстои 4-тото издание на програмата “софтуерна академия”, която предоставя качествено практическо обучение за софтуерни специалисти и работа на най-добрите от тях в Телерик (работодател #1 на България за 2010 г.). Академията на Телерик започна през 2009 г. с обучения на няколко десетки студента и достигна многохилядни безплатни обучения през 2012 г.
Telerik Academy 2009-2010 – бяха приети за безплатно обучение 96 участника и от тях около 25 започнаха работа в Телерик след успешно завършване на програмата “софтуерна академия” на длъжност “Junior .NET Developer” и “Junior Developer Support Engineer”.
Telerik Academy 2010-2011– бяха приети за безплатно обучение 115 участника, които намаляха на 66 след първия изпит и от тях накрая около 40 завършиха успешно и започнаха работа в Телерик с придобитата квалификация на длъжности “програмист”, “инженер по осигуряване на качеството на софтуер” и “софтуерен инженер по поддръжката”, след успешно завършване на програмата “софтуерна академия”.
Telerik School Academy – през октомври 2010 г. започнаха безплатните обучения по разработка а софтуер за гимназиални ученици за подготовка за националната олимпиада по информационни технологии. В инициативата се обучават стотици ученици от цялата страна и на практика всички първенци от Националната ИТ олимпиада.
Telerik Academy 2011-2012– бяха приети за безплатно обучение 300 участника, след първия изпит продължиха 195, след втория изпит – 137 и от тях успешно завършиха около 80 души, които започнаха работа в Телерик след успешно завършване на програмата “софтуерна академия” по направления “.NET developer”, “QA Engineer”, “Developer Support Engineer” и “Front-End Developer”.
Telerik Kids Academy– през септември 2011 г. стартира инициативата Кидс академия по програмиране за деца (4-6 клас) с школи по програмиране в цялата страна. В академията учат над 400 деца от цялата страна, които формират над 70% от състезателите по програмиране във възраст 4-6 клас (статистиката е от юни 2012 г.).
Telerik Algo Academy– през февруари 2012 г. започна инициативата “алго академия” за тренировки и обучения по състезателно програмиране и подготовка на национални и международни състезания и олимпиади по информатика. В инициативата участват стотици ученици, сред които и шампионите по програмиране от националния отбор на България, които се състезават по международните олимпиади.
Telerik Academy 2012-2013 ще бъде най-мащабният сезон на академията. Очаква се над 700 души да започнат безплатно обучение за софтуерни инженери по програмата “софтуерна академия”, от които над 100 да започнат работа в Телерик като .NET програмисти, C# разработчици, сървърни разработчици, QA инженери, софтуерни разработчици по поддръжката на клиенти, front-end специалисти, уеб разработчици, Windows 8 разработчици, разработчици на мобилни приложения, SEO специалисти и други.
На къде отива софтуерната академия?
Image may be NSFW. Clik here to view.Предстоят ни много позитивни промени в посока трансформация към “софтуерен университет” – посока, в която се движим лека полека от години. Надяваме през 2014 г. да успеем да направим съвместна университетска програма с водещ български или чуждестранан ВУЗ или да успеем да се трансформираме в колеж като запазим обучението безплатно и с високо качество.
Ще запазим всички обучения в академията безплатни, както са били и до момента. Ще продължим да приемаме участници за присъствено и онлайн обучение. Ще продължим да записваме всички учебни занятия като видеа, които ще продължават да са свободно достъпни.
Ще продължаваме да се развиваме и да се разширяваме, да добавяме нови безплатни курсове по фундаментални дисциплини, свързани със софтуерното инженерство и технологични курсове по практическа разработка на софтуер.
В дългосрочен план ще работим за добавяне на диплома за висше образование (професионален бакалавър) към добитата професионална квалификация и професия. Ще търсим начини да организираме и бакалавърски и магистърски програми по специалности, свързани с практическо софтуерно инженерство, продуктов мениджмънт, управление на софтуерни проекти и технологично предприемачество. Надяваме се да успеем да ги направим достъпни за всички.
В още по-дългосрочен план ще продължаваме да подпомагаме българското образование по софтуерни технологии на ученическо и студентско ниво в още по-големи мащаби и ще продължим да развиваме софтуерната индустрия като цяло, за да направим някой ден България силициевата долина на Европа.
На 12, 13 и 14 ноември 2012 г. организираме поредния безплатен курс за млади софтуерни инженери в училищната софтуерна академия. Този път темата е “Програмиране на C# 4.5”.
Учебна програма на C# курса
Курсът обхваща основите на програмирането с езика C# и платформата .NET Framework 4.5 и Visual Studio 2012 и е началото на поредица курсове за разработка на приложения за Windows 8 със C# и XAML. Учебната програма обхваща съвсем базови, начални познания.
Ден 1 (12 ноември)
Примерен ИТ Тест за подготовка за НОИТ
Въведение в C# и .NET
Основи на C#
Масиви
Ден 2 (13 ноември)
Многомерни масиви
Ползване на обекти
Линейни структури данни в C#
Речници, хеш-таблици и множества в C#
Основи на обектно-ориентираното програмиране в C#
Ден 3 (14 ноември)
Делегати
LINQ и ламбда изрази
Принципи в обектно-ориентирането програмиране
Асинхронно изпълнение и C# 4.5
Регистрация за C# курса
За безплатно участие в курса по C# програмиране (14-14 ноември 2012) трябва да се регистрирате на сайта на инициативата: C# курс 12-14 ноември, София.
Albeit left behind to a certain extent, the good old turtle is still an excellent way to introduce people to the world of programming. “Turtle graphics” has implementations in a variety of languages with Logo being the trendsetter for the older school of programmers and survives to this day with a very beginner friendly and popular Python turtle module. Unfortunately, there is no official turtle graphics solution for one of the most popular languages for beginners today – C#. This makes people miss out on the fun factor of a simple, interactive introduction to coding.
Available as package from NuGet (and as open-source project in GitHub), the Nakov.TurtleGraphics library is a simple, straight to the point solution designed for C# but it is easily transposable into any .NET language or environment you might choose to use. It presents a captivating way of introducing children or absolute newcomers to the way a programmer instructs machines. It comes with a concise instruction set, it is ready to use out of the box (using Windows Forms) and utilizes colorful visual feedback which is what makes it a perfect beginner solution.
Drawing with the Turtle in C#
For the uninitiated, the way Turtle Graphics works is very simple. You have your turtle and a set of simple instructions such as:
Which respectively instructs the turtle to either rotate to a certain angle degree and advance with the specified distance, leaving a line behind when the “pen” is down, meaning that you can point and move the turtle without drawing a line when needed. Generally, the turtle adheres to the well known Cartesian coordinate system (having an X and Y axis, positive numbers being right/up and negatives being left/down). This is the simplest way to use the library, although it allows for more advanced use, which with a certain amount of creativity and determination, can leave you with a complete artwork!
How to Start with the Turtle in C# and Visual Studio?
First create an empty Windows Forms application in Visual Studio (yes, Windows Forms is more simple than WFP and is better for beginners):
Start the application by pressing [Ctrl+F5], then click the [Draw] button:
Image may be NSFW. Clik here to view.
You can play a bit more, e.g. add the following code:
private void buttonDraw_Click(object sender, EventArgs e)
{
// Assign a delay to visualize the drawing process
Turtle.Delay = 200;
// Draw a equilateral triangle
Turtle.Rotate(30);
Turtle.Forward(200);
Turtle.Rotate(120);
Turtle.Forward(200);
Turtle.Rotate(120);
Turtle.Forward(200);
// Draw a line in the triangle
Turtle.Rotate(-30);
Turtle.PenUp();
Turtle.Backward(50);
Turtle.PenDown();
Turtle.Backward(100);
Turtle.PenUp();
Turtle.Forward(150);
Turtle.PenDown();
Turtle.Rotate(30);
}
private void buttonReset_Click(object sender, EventArgs e)
{
Turtle.Reset();
}
private void buttonShowHideTurtle_Click(object sender, EventArgs e)
{
if (Turtle.ShowTurtle)
{
Turtle.ShowTurtle = false;
this.buttonShowHideTurtle.Text = "Show Turtle";
}
else
{
Turtle.ShowTurtle = true;
this.buttonShowHideTurtle.Text = "Hide Turtle";
}
}
More Turtle Graphics Examples
Playing a bit more could uncover beautiful turtle-drawn images: hexagons, spirals, stars, others.
To draw a hexagone:Image may be NSFW. Clik here to view.
Turtle.Delay = 100;
for (int i = 0; i < 6; i++)
{
Turtle.Forward(100);
Turtle.Rotate(60);
}
To draw a green star:Image may be NSFW. Clik here to view.
Turtle.Delay = 200;
Turtle.PenColor = Color.Green;
for (int i = 0; i < 5; i++)
{
Turtle.Forward(200);
Turtle.Rotate(144);
}
To draw a spiral:Image may be NSFW. Clik here to view.
Turtle.Delay = 100;
Turtle.PenColor = Color.DarkGreen;
for (int i = 0; i < 20; i++)
{
Turtle.Forward(i * 10);
Turtle.Rotate(60);
}
To draw a sun:Image may be NSFW. Clik here to view.
Turtle.Delay = 50;
Turtle.PenColor = Color.Yellow;
for (int i = 0; i < 36; i++)
{
Turtle.Forward(250);
Turtle.Rotate(170);
}
To draw a triangle spiral:Image may be NSFW. Clik here to view.
Turtle.Delay = 100;
Turtle.PenColor = Color.Red;
for (int i = 0; i < 6; i++)
{
Turtle.Forward(100);
Turtle.Rotate(60);
}
Turtle Commands
You can use one of the following commands to allow learners to start creating with no more than a few clicks. Although this doesn’t employ the utmost correct object-oriented practices (for the purpose of simplicity), these all are static methods of a single class Turtle:
Init() – initializes the turtle graphics system. Callers can specify the target Windows Forms control to hold the drawing surface (e.g. a Panel). If not specified, the currently active form is used as a drawing surface. If not called, it will be called on demand with the first turtle move / draw command. Initially the turtle location is {0, 0} (the screen center) and the direction (angle) is 0 degrees (up).
Dispose() / Reset() – destroys the turtle graphics system and deallocates all resources, associated with it.
Forward(distance) – moves the turtle forward in the current direction by the specified distance. If the pen is down, the turtle draws a line from the current to the new position, otherwise it just moves without leaving a track.
Backward(distance) – moves the turtle in backward direction and draws a line if the pen is down.
MoveTo(x, y) – moves the turtle to the specified position and draws a line if the pen is down.
Rotate(angle) – rotates the turtle relatively to the current direction. The rotation angle is given in degrees (e.g. 45, -30, 315, …).
RotateTo(angle) – rotates the turtle to the specified angle in degrees (e.g. 0, 45, 180, 315, …).
PenUp() – takes the pen off the drawing surface (makes the turtle move without drawing a line). Further calls to Forward(distance) / Backward(distance) /MoveTo(x, y) will move the turtle without drawing a line.
PenDown() – puts the pen back on the drawing surface (makes further moves drawn lines). Further calls to Forward(distance) /Backward(distance) / MoveTo(x, y) will draw a line from the current to the new position.
X – gets / sets the current turtle horizontal position. The initial turtle position is the screen center {0, 0}. Increasing X will move the turtle right.
Y – gets / sets the current turtle vertical position. The initial turtle position is the screen center {0, 0}. Increasing Y will move the turtle up.
Angle – gets / sets the current turtle direction (angle in degrees). The value of 0 means up, 90 means right, 180 means down and 270 means left. The Angle is always kept in the range [0…360). Initially the angle is 0.
PenColor – gets / sets the color of the pen. The default pen color is “blue”.
PenSize – gets / sets the size of the pen (in pixels). The default pen size is 7.
PenVisible – gets / sets the visibility of the pen. The default pen size is true. True means the pen is down (drawing a line when the turtle moves). False means the pen is up (no line is drawn when the turtle moves).
ShowTurtle – gets / sets whether the turtle is visible. By default it is visible.
Delay – gets / sets the turtle delay in milliseconds after moving / rotating. By default the delay is 0 (no delay). Setting it between 200 and 300 will give you enough delay to simulate a visually pleasant animation effect.
Nakov.TurtleGraphics Library at the Software Euniversity (SoftUni)
Whereas the aforementioned describes this excellent library in a solely technical manner, you can observe for yourself the way TurtleGraphics.NET works in a living, breathing learning environment in Software University’s Programming Basics course – an ever evolving solution to the lack of software developers which is currently taking education by storm and revolutionizing the way future developers start walking the path towards innovation.
Наскоро разписах за моите студенти един постъпков самоучител (tutorial) как да си направят уеб базирана игра със C#, Visual Studio и ASP.NET MVC. Споделям, защото се получи доста приятна игричка. Самоучителят е подходящ за начинаещи с базови умения по C#. Не са необходими предварителни познания по уеб технологии, единствено начални познания по писане на код – променливи, проверки, цикли, C#, HTML. Този самоучител отнема половин-един час.
Целта е да се разработи ASP.NET MVC уеб приложение – игра, в която играчът стреля по плодове, подредени в таблица. Успешно уцелените плодове изчезват, а играчът получава точки за всеки уцелен плод. При уцелване на динамит, плодовете се взривяват и играта свършва (като във Fruit Ninja).
Стрелбата се извършва по колони, отгоре надолу или отдолу нагоре, а местоположението на удара (колоната под обстрел) се задава чрез скролер (scroll bar). Заради неточността на скролера, играчът не е съвсем сигурен по коя колона ще стреля. Така при всеки изстрел има шанс да не улучи и това прави играта по-интересна (подобно на прашката в Angry Birds).
Image may be NSFW. Clik here to view. Image may be NSFW. Clik here to view.
Следват стъпките за създаване на играта, започвайки от нулата.
Създайте уеб приложение във Visual Studio
Във Visual Studio създайте ново ASP.NET MVC уеб приложение с език C#. Добавете нов проект от [Solution Explorer] à [Add] à [New Project…] . Дайте смислено име, например “Fruits-Web-Game“:
Image may be NSFW. Clik here to view.
Изберете тип на уеб приложението “MVC“:
Image may be NSFW. Clik here to view.
Създайте контролите за играта
Целта е да добавите скролиращи ленти (scroll bars), с които се играчът се прицелва, и бутон за старт на нова игра. Редактирайте файла Views/Home/Index.cshtml. Изтрийте всичко и въведете кода от картинката:
Image may be NSFW. Clik here to view.
Този код създава уеб форма <form> със скролер (поле) “position” за задаване на число в интервала [0…100] и бутон [Fire Top] за изпращане на данните от формата към сървъра. Действието, което ще обработи данните, се казва “/Home/FireTop“, което означава метод “FireTop” в контролер “Home“, който се намира във файла “HomeController.cs“. Следват още две подобни форми с бутони [Fire Bottom] и [New Game].
Подготвяне на плодовете
Сега трябва да подготвите плодовете за рисуване в изгледа. Добавете кода от картинката в контролера Controllers/HomeController.cs:
Image may be NSFW. Clik here to view.
Горният код дефинира полета за брой редове, брой колони, за таблицата с плодовете (игралното поле), за натрупаните от играча точки и информация дали играта е активна или е свършила (поле gameOver). Игралното поле е с рамери 9 колони на 3 реда и съдържа за всяко поле текст какво има в него: apple, banana, orange, kiwi, empty или dynamite.
Главното действие Index() подготвя игралното поле за чертане като записва във ViewBag структурата елементите на играта и извиква изгледа, който ги чертае в страницата на играта в уеб браузъра като HTML.
Генерирайте случайни плодове
За да генерирате случайни плодове, трябва да напишете метод GenerateRandomFruits() с кода от картинката по-долу. Този код записва в таблицата (матрицата) fruits имена на различни картинки и така изгражда игралното поле. Във всяка клетка от таблицата се записва една от следните стойности: apple, banana, orange, kiwi, empty или dynamite. След това, за да се нарисува съответното изображение в изгледа, към текста от таблицата ще се долепи “.png” и така ще се получи името на файла с картинката, която да се вмъкне в HTML страницата като част от игралното поле. Попълването на игралното поле (9 колони с по 3 реда) става в изгледа Index.cshtml с два вложени for-цикъла (за ред и за колона).
За да се генерират случайни плодове за всяка клетка се генерира случайно число между 0 и 8 (вж. класа Random() в .NET). Ако числото e 0 или 1, се слага apple, ако е между 2 и 3, се слага banana и т.н. Ако числото е 8, се поставя dynamite. Така плодовете се появяват 2 пъти по-често отколкото динамита. Ето и кода:
Image may be NSFW. Clik here to view.
Добавяне на картинките за играта
От [Solution Explorer] направете папка “images” в коренната директория на проекта. Използвайте менюто [Add] à [New Folder].
Сега добавете картинките за играта (те са предоставени в архива Fruit-Game-WebApp-Images.zip). Копирайте ги от Windows Explorer и ги поставете в папката “images” в [Solution Explorer] във Visual Studio с copy / paste.
Image may be NSFW. Clik here to view.
Чертане на плодовете в Index.cshtml
За да начертаете игралното поле с подовете, трябва да завъртите два вложени цикъла (за редовете и за колоните). Всеки ред се състои от 9 на брой картинки, всяка от които съдържа apple, banana или друг плод или празно (empty) или динамит (dynamite). Картинките се чертаят като се отпечата HTML таг за вмъкване на картинка от вида на <img src=”/images/apple.png” />. Девет картинки се подреждат една след друга на всеки от редовете, а след тях се преминава на нов ред с <br />. Това се повтаря три пъти за трите реда. Накрая се отпечатват точките на играча. Ето как изглежда кодът за чертане на игралното поле и точките:
Image may be NSFW. Clik here to view.
Обърнете внимание на жълтите символи @ – те служат за превключване между езика C# и езика HTML и идват от Razor синтаксиса за рисуване на динамични уеб страници.
Промяна на текстовете в _Layout.cshtml
Нагласете текстовете във файла /Views/Shared/_Layout.cshtml. Заменете “My ASP.NET Application” с по-подходящи текстове, например “Fruits“:
Image may be NSFW. Clik here to view.
Стартиране и тестване на играта
Стартирайте проекта с [Ctrl+F5] и му се порадвайте. Очаква се да бъде генерирано случайно игрово поле с плодове с размери 9 на 3 и да се визуализира в уеб страницата чрез поредица картинки:
Image may be NSFW. Clik here to view.
Сега играта е донякъде направена: игралното поле се генерира случайни и се визуализира успешно (ако не сте допуснали грешка някъде). Остава да се реализира същината на играта: стрелянето по плодовете.
Имплементиране на действията: нова игра, стрелба отгоре, стрелба отдолу
Добавете действията [New Game] и [Fire Top] / [Fire Top] в контролера “HomeController.cs“:
Image may be NSFW. Clik here to view.
Горният код дефинира три действия:
Reset() – стартира нова игра, като генерира новo случайно игрално поле с плодове и експлозиви, нулира точките на играча и прави играта валидна (gameOver = false). Това действие е доста просто и може да се тества веднага с [Ctrl+F5], преди да се напишат другите.
FireTop(position) – стреля по ред 0 на позиция position (число от 0 до 100). Извиква се стреляне в посока надолу (+1) от ред 0 (най-горния). Самото стреляне е по-сложно като логика и ще бъде разгледано след малко.
FireBottom(position) – стреля по ред 2 на позиция position (число от 0 до 100). Извиква се стреляне в посока нагоре (-1) от ред 2 (най-долния).
Имплементирайте “стрелянето” – метода Fire(position, startRow, step):
Image may be NSFW. Clik here to view.
Стрелянето работи по следния начин: първо се изчислява номера на колоната col, към която играчът се е прицелил. Входното число от скролера (между 0 и 100) се намалява до число между 0 и 8 (за всяка от 9-те колони). Номерът на реда row е или 0 (ако изстрелът е отгоре) или броят редове минус едно (ако изстрелът е отдолу). Съответно посоката на стрелба (стъпката) е 1 (надолу) или -1 (нагоре).
За да се намери къде изстрелът поразява плод или динамит, се преминава в цикъл през всички клетки от игралното в прицелената колона и от първия до последния атакуван ред. Ако се срещне плод, той изчезва (замества се с empty) и се дават точки на играча. Ако се срещне dynamite, играта се отбелязва като свършила.
Оставаме на по-запалените да имплементират по-сложно поведение, например да се дават различни точки при уцелване на различен плод, да се реализира анимация с експлозия (това не е твърде лесно), да се взимат точки при излишно стреляне в празна колона и подобни.
Тествайте играта
Тествайте какво работи до момента като стартирате с [Ctrl+F5]:
Нова игра à бутонът за нова игра трябва да генерира ново игрално поле със случайно разположени плодове и експлозиви и да нулира точките на играча.
Стреляне отгоре à стрелянето отгоре трябва да премахва най-горният плод в уцелената колона или да предизвиква край на играта при динамит. Всъщност при край на играта все още нищо няма да се случва, защото в изгледа този случай още не се разглежда.
Стреляне отдолу à стрелянето отдолу трябва да премахва най-долния плод в уцелената колона или да прекратява играта при уцелване на динамит.
Image may be NSFW. Clik here to view.
Край на играта – имплементация
Имплементирайте “Край на играта“. За момента при край на играта нищо не се случа. Ако играчът уцели динамит, в контролера се отбелязва, че играта е свършила (gameOver = true), но този факт не се визуализира по никакъв начин. За да заработи свършването на играта, е необходимо да добавим няколко проверки в изгледа:
Image may be NSFW. Clik here to view.
Image may be NSFW. Clik here to view.
Кодът по-горе проверява дали е свършила играта и показва съответно контролите за стреляне и игралното поле (при активна игра) или картинка с експлодирали плодове при край на играта.
Тестване отново
След промяната в кода на изгледа стартирайте с [Ctrl+F5] и тествайте играта отново:
Image may be NSFW. Clik here to view.
Този път при уцелване на динамит, трябва да се появи дясната картинка и да се позволява единствено действието “нова игра” (бутонът [New Game]).
Изтеглете сорс кода на играта
Ако сте нетърпеливи, може да изтеглите наготово цялата игра и да я стартирате с [Ctrl+F5]. Изтеглете сорс кода: Fruits-Web-Game.zip.
СофтУни 3.0 вече е факт. Разгледай новата образователна концепция на Софтуерния университет: softuni.bg/curriculum. Това е най-голямата (и дори преобразяваща) промяна в СофтУни от създаването му през 2013 г.
СофтУни 3.0 накратко
Избираш измежду 4 специалности (специализации на професията софтуерен инженер): JavaScript, PHP, Java и .NET разработка
Започваш работа след 1-2 години (според напредъка и резултатите)
СофтУни ти намира работа, ако научиш поне 70% от изучавания материал
Ако учиш бързо, може да започнеш работа за по-малко от година
Завършваш СофтУни и се дипломираш за 2-3 години (според специалността и според колко бързо учиш)
Домашните се заменят с работа в клас, за да се гарантира научаване на материала
Удвояваме учебните занятия: 4-5 дни в седмицата по 4 часа присъствено или онлайн
Image may be NSFW. Clik here to view.
Как работи новият Софтуерен университет 3.0?
Новият учебен план в СофтУни работи по следния начин:
Само практическо програмиране, почти без теория, с много кодене в клас
Курсът е за абсолютно начинаещи (става дори за деца 4-5 клас)
Учиш по 4 часа седмично в продължение на 2 месеца, почти без домашни
Приемен изпит
В края на безплатния курс по основи на програмирането полагаш приемен изпит за СофтУни (6 практически задачи за 4 часа)
Влизаш в СофтУни при резултат поне 50% решени задачи на приемния изпит
Ако не се справиш с приемния изпит, можеш да се явяваш отново или да учиш за ИТ специалист (информационни технологии, мрежи, мултимедия и офис приложения, изграждане на уеб сайтове, хардуер и други технологични предмети)
Приетите за студенти продължават с опознавателен модул “Software Technologies”
За 4 месеца се запознаваш практически с HTML5, JavaScript, PHP, Java Web и .NET Web разработката, за да можеш да си избереш специалност
Интензивността е 4 пъти седмично по 4 часа, почти без домашни
Ако си ултра, мега добър, може да получиш предложение за работа още след този модул
Избираш си специалност (професия) измежду следните:
.NET разработка
Java разработка
JavaScript разработка
PHP разработка
Обучаваш се в избраната специалност (година-две)
Продължителност: 2-6 модула по 4 месеца (задължителни, препоръчителни и изборни модули)
Интензивност: 5 пъти седмичнопо 4 часа (всеки работен ден, почти без домашни)
Реално няма промяна в седмичното натоварване, само прехвърляме работата по домашните в клас, за да осигурим по-ефективна работа и да гарантираме достъп до помощ на живо от асистенти и преподаватели
Двойно повече учебни занятия с по-малко материал на едно занятие
Всички учебни предмети се изучават на избрания език за програмиране и платформа за разработка
Започваш работа след 1-2 години (ако учиш сериозно)
СофтУни ти предлага работа при усвояване на 70% от изучавания материал
Ако напредваш супер бързо, започваш работа още след първите няколко месеца
Ако напредваш нормално -> започваш работа след 1-2 години
Ако си много слаб или несериозен, СофтУни няма да ти предложи работа
Image may be NSFW. Clik here to view.
Новата образователна концепция “СофтУни 3.0” влиза в сила от май 2016 г. с първия прием в модул “Software Technologies“.
Упражнения в клас вместо домашни
Махаме домашните и удвояваме учебните занятия (практика на живо в клас). Защо ли? Ами повечето студенти не пишат домашни и се провалят заради несериозно отношение към домашните. Затова пренасяме домашните в клас и осигуряваме помощ на живо.
Прехвърляме работата по домашните като практика в клас – решаване на задачи и здраво писане на код под наставленията на преподаватели, асистенти и ментори
Онлайн студентите гледат видео с обяснения как да си направят домашните
Планираме 75% практика (студентите пишат код в клас) и 25% преподаване, обяснения на учебния материал и демонстрации (трейнърите пишат код на живо)
Image may be NSFW. Clik here to view.
Нова кредитна система – кредитите измерват уменията
Въвеждаме нова кредитна система, която отразява напредъка в професията
Всеки курс дава учебни кредити според трудността, продължителността и според реално наученото в него (изкараната оценка накрая)
Всеки курс дава определен брой максимални кредити (между 4 и 12). По-трудните и по-обемните курсове дават повече кредити.
Кредитите се разпределят пропорционално на оценката: при нисък резултат (курс взет едвам-едвам с тройка) се получават 1/3 от кредитите за курса; при висок резултат (курс взет с петица или повече) се получават всички кредити.
Кредитите измерват колко си близко до усвояване на професията “софтуерен инженер”. Повече кредити означава, че си по-добър програмист. Фактически СофтУни кредитите стават мерна единица за владеене на програмирането.
При натрупване на достатъчно кредити ⇒ предлагаме работа
Диплома се взима при покриване на задължителните модули и натрупване на достатъчно кредити (според специалността)
Предлагаме ти работа, ако научиш поне 70% от изучавания материал (70-100 кредита от 130-170 общо според специалността)
Image may be NSFW. Clik here to view.
Такси по-ниски от СУ и стипендии за най-силните
СофтУни е лидер не само в качеството на практическото образование и реалната подготовка за работа в софтуерната индустрия, но и предлага безплатно обучение за най-добрите и по-ниски такси за обучение от Софийски университет (СУ).
СофтУни предлага безплатно обучение за топ 10% от студентите. Най-добрите 10% от студентите в присъствена форма на обучение стават стипендианти и се освобождават от такси за обучение.
Таксите в СофтУни са 360 лв. на семестър за редовно (присъствено) обучение и 180 лв. на семестър за онлайн обучение (по 90 лв. на месец присъствено и по 45 лв. на месец онлайн)
За сравнение семестрите по специалност “софтуерно инженерство” във ФМИ на Софийски университет по държавна поръчка към май 2016 г. са 375 лв. на семестър, а от септември 2016 г. се вдигат на 400 лв. на семестър.
Image may be NSFW. Clik here to view.
Историята на СофтУни
Image may be NSFW. Clik here to view.
СофтУни беше създаден на 5.11.2013 г. когато Наков измести фокуса и енергията си от софтуерната академия на Телерик към своя много по-мащабен образователен проект – Софтуерният университет. Идеята е да се провеждат масирани (но качествени) обучения на софтуерни инженери (десетки хиляди на година, в 20 града, не само по програмиране, но и в други ИТ специалности), за да се направи България “силициевата долина на Европа“.
На 24.01.2014 е обявена концепцията на СофтУни 1.0 – първият учебен план. Предлагат се няколко професии, свързани със C# / .NET Web и JavaScript front-end разработка. Семестрите са по 4 месеца на цена 480 лв. (390 лв. за първия прием) и включват 3-4 курса, по 2 пъти седмично по 4 часа. Основната програма е 1 година (3 семестъра по 4 месеца) и е планирана още 1 година специализация чрез изборни курсове.
На 5.03.2014 г. се провежда първото учебно занятие в СофтУни в курса “Основи на програмирането” (ниво #0), в учебна зала “Ballistic” в кв. Хаджи Димитър (предоставена от колегите от Ballistic Cell), която събираше 215 студента.
Докато тече СофтУни 1.0 постепенно натрупва обратна връзка от студентите, че за толкова малко време планираният учебен материал не може да бъде усвоен и малцина успяват да следват темпото (само около 150 студента завършват СофтУни 1.0 от първия випуск). Почти липсват упражнения в клас, разчита се много на домашни и самодисциплина. Не може да се ореже учебният материал, защото фирмите се оплакват, че обхватът на обученията е недостатъчен, а студентите се оплакват, че повсеместно не им стига времето. Трябва или да се увеличи времето за обучение, или да се увеличи интензивността. Налага се неизбежна промяна.
На 9.04.2015 г. идва СофтУни 2.0, за да предложи решение на проблемите с недостига на време за усвояване на учебния материал. Въвеждат се 3 нива (Fundamentals, Front-End, Back-End) по 6 месеца по 3 пъти седмично по 4 часа с по 4 курса в ниво. Разширяват се обхвата на изучавания учебен материал. Добавят се упражнения на живо (лабове). Подобрява се качеството на учебния процес, с повече кодене в клас, workshops, подготовки за изпитите и други занимания. Въвеждат се team buildings за студентите.
Лека полека, обаче, се оказва, че СофтУни 2.0 също има проблеми: отново на студентите не им стига времето да научат планирания учебен материал. Не достига времето за упражнения в клас. Стълбицата на покачване на трудността е много рязка. Приемът е с 20% решени задачи на входа и това води до закъсали студенти в ниво #1, #2 и #3. Необходимо е ново реструктуриране на учебния план: по-дълго време на обучение (3 години вместо 1.5 години), по-интензивно обучение (5 пъти в седмицата вместо 3 пъти), наблягана на упражнения и лабове (поне 50% упражнения на живо в клас), прием с по-висок успех (поне 50% решени задачи на входа), разкриване на нови професии, които да се избират в началото, …
И така се стига до разработката на СофтУни 3.0 през януари-февруари 2016. Правят се проучвания сред 840 студента и се събира обратна връзка. Анализират се 400 обяви за работа, анкетират се 180 софтуерни фирми. цялата събрана обратна връзка от студенти (успешни и неуспешни) и фирми (партньори и други) се обобщава, за да се изгради концепцията на СофтУни 3.0. Това е огромна промяна, базирана най-вече на на обратна връзка.
На 16.05.2016 г. стартира първият опознавателен модул “Software Technologies” (всичкология за програмисти) от учебния план “СофтУни 3.0”, базиран на нови учебни материали и модела “учене чрез примери” с по-малко теория и много, много писане на код на живо в клас (или по видеата вкъщи за онлайн студентите).
Как да се запиша?
Всеки може да се запише да пробва безплатно програмирането в СофтУни (ученици, студенти, работещи, безработни). Уводните курсове по програмиране (ниво #0) започват всеки месец и се провеждат безплатно в присъствена и онлайн форма по веднъж седмично. Кандидатствай от сайта на СофтУни: https://softuni.bg/apply.
На летния лагер на Софтуерния университет (СофтУни) в Хисаря направих еднодневно практическо обучение за запознаване с Oracle Database. Участниците в залата успяха да си инсталират и подкарат Oracle 12 Enterprise, заедно с инструмента Oracle SQL Developer, направиха си няколко таблици с връзки между тях (foreign key constraints), наляха в тях данни, написаха по някоя и друга PL/SQL процедура и след това се свързаха към базата данни от Java с JDBC и от C# с Oracle .NET Data provider. Ако някой се сблъсква за първи път с Oracle, ще си спести много време, ако прегледа слайдовете и видеото.
Image may be NSFW. Clik here to view.Софтуерният университет (СофтУни) организира безплатни курсове по програмиране за напълно начинаещи в 28 града из цяла България от януари 2017 г. Целта е всеки, който има интерес към програмиране и технологии, да опита програмирането и се увери сам дали е за него и дали иска да се занимава сериозно. Повече програмисти и ИТ специалисти означава по-силна икономика и по-добър стандарт на живот в България, не само за ИТ специалистите, но и за всички останали.
Кои са градовете с безплатни курсове по програмиране?
Image may be NSFW. Clik here to view.В безплатните обучения могат да се включат ученици, студенти и работещи, присъствено в следните градове: София, Пловдив, Варна, Бургас, Русе, Стара Загора, Плевен, Добрич, Шумен, Сливен, Ямбол, Хасково, Велико Търново, Горна Оряховица, Благоевград, Перник, Казанлък, Пазарджик, Враца, Видин, Кърджали, Габрово, Кюстендил, Гоце Делчев, Търговище, Раковски, Белоградчик, Карнобат. Присъствените места са ограничени според капацитета на учебните зали.
Какво е да си програмист?
Ако се чудите дали програмирането е за вас, най-добре го пробвайте. Едно е да четеш и слушаш разкази за програмисти и ИТ специалисти, друго е да се потопиш директно и практически в програмирането, да да решаваш проблеми, пишеш код, да дебъгваш, да създаваш софтуер с ръцете си и с ума си. СофтУни предлага да опиташ на практика безплатно какво е да програмираш и след това да вземеш решение дали искаш да станеш програмист, ИТ специалист или дигитален експерт или пък искаш да учиш и работиш нещо съвсем друго.
Image may be NSFW. Clik here to view.Ако все пак искате да прочетете повече за програмистите и софтуерните инженери, за езиците за програмиране и технологиите, които се използват в практиката, за професиите в софтуерната индустрия и как е става софтуерен инженер, имаме много добър наръчник за начинаещия в програмирането, създаден лично от д-р Светлин Наков:
Image may be NSFW. Clik here to view.Софтуерният университет (СофтУни) е най-голямата и най-значимата образователна организация в сферата на програмирането, ИТ професиите и дигиталните компетенции в България. В обученията на СофтУни се включат между 2000 и 3000 души на месец и голяма част от тях трайно се захващат с дигитални професии. СофтУни организира над 100 учебни курса на година, включващи програмиране, софтуерни технологии, компютърна графика и дизайн, дигитален маркетинг,информационни технологии и развиване на практически дигитални компетенции.
СофтУни е иновативен и модерен образователен център, който създава истински професионалисти в света на програмирането. Обучението в СофтУни е по модела „учене чрез правене“, при което чрез практически занимания се предават фундаменталния знания от компютърните науки и софтуерното инженерство (30%) и се натрупва реален практически опит в най-търсените и съвременни езици за програмиране и софтуерни технологии (70%), а след завършване (и понякога още в средата на обучението) студентите са готови да стартират своята кариера като успешни софтуерни инженери. Образованието в СофтУни обхваща 20-25 учебни курса, организирани в систематичен учебен план по софтуерно инженерство с продължителност 1-3 години (според избраната професия).
Обучението по програмиране – важна национална кауза
Image may be NSFW. Clik here to view.Безплатните обучения по програмиране в цялата страна са вероятно най-значимият и най-мащабният образователен проект за софтуерната индустрия, който се е случвал в последните години. Очаква се в обученията да се включат над 5000 ученици, студенти и работещи, които ще опитат програмирането (присъствено или онлайн) и много от тях ще се запалят по ИТ професиите. Това е важна национална кауза: да дадем знания, умения, професия, работа и бъдеще на хиляди млади хора от всички краища на България, и да задвижим икономиката на страната, за да се вдигне жизненият стандарт.
ИТ секторът е сред най-добре платените в България, в него работят много от най-будните, най-умните, най-интелигентните, най-трудолюбивите, най-амбициозните и най-прогресивните. Софтуерната индустрия дава хляб директно на около 25 000 души (по данни на софтуерната асоциация БАСКОМ) и индиректно на поне още 3 пъти по толкова. ИТ специалистите плащат огромни данъци и индиректно задвижват и други сектори на икономиката. С 18 000 програмисти (по официални данни) към 2016 г. се произвеждат близо 2% от брутния вътрешен продукт (БВП) на страната. Ако броят на заетите в ИТ сектора значително се увеличи, това ще доведе до значим икономически ефект и по-висок жизнен стандарт в България.
Моята лична кауза и каузата на #СофтУни е да създадем 100 000 работещи в ИТ сектора в България до 2025 г. и да се приближим към голямата цел: България – силициева долина на Европа, център за високи технологии, иновации и предприемачество.
Присъствено и онлайн (дистанционно) обучение
Image may be NSFW. Clik here to view.Безплатните обучения по програмиране за начинаещи в цялата страна включват присъствени и онлайн занятия (според избраната форма на обучение).
На присъствените занятия се обяснява нов материал и се решават практически задачи под надзора на преподаватели, асистенти и ментори. Участниците в София получават безплатно и личен ментор, който им помага персонално за задачите (в лична среща, по FB, Skype и други канали).
Онлайн участниците получават видео-уроци и наставления за самостоятелна практическа работа вкъщи, съчетани с непрестанна помощ онлайн. Те получават обратна връзка (оценка) за решенията на задачите си чрез автоматизирана системата за проверка (online judge).
За кого е безплатният курс по програмиране?
Image may be NSFW. Clik here to view.Курсът по програмиране за абсолютно начинаещи е изключително практически, с много писане на код и решаване на задачи по програмиране от практиката. Всяка решена задача се оценява автоматично от онлайн системата “SoftUni Judge” и резултатите излизат на момента (в реално време). Курсът е изключително старателно подготвен лично от Светлин Наков и в него е натрупан опит от вече над 70 учебни групи за последните 3 години.
Целият начален курс по програмиране се провежда на български език. Учебните занятия, учебните материали (презентации, задачи, решения, инструкции, видео), учебната система, форумът и всички останали ресурси са на български език.
Курсът по програмиране е подходящ за ученици от 4 клас нагоре, както и за студенти, работещи друга професия, безработни и всички желаещи (дори пенсионери).
Какво обхващат безплатните уроци програмиране за начинаещи?
Използва се езикът C# и средата за разработка Visual Studio, но езикът няма съществено значение в толкова начален етап от навлизането в програмирането.
Чрез голямо количество практика курсът развива мисленето, което всеки един програмист трябва да притежава (алгоритмично мислене) и способността да решаваш задачи и да търсиш решения на проблеми, които възникват докато пишеш код, да търсиш информация и да се справяш.
Курсът се състои от 8 учебни занятия по 4 часа + незадължителен изпит накрая.
Ето ги и учебните теми, разработени лично от Светлин Наков:
Кодиране за начинаещи – представяне на курса
Първи стъпки в програмирането – писане на прости програми
Прости пресмятания с числа – променливи и данни
Логически проверки – if-else конструкция
По-сложни логически проверки – вложени проверки, по-сложни логически условия
Повторения (цикли) – повтаряне на блок от команди многократно
Чертане на фигурки с цикли – вложени цикли и пресмятания
По-сложни цикли – алгоритмични задачи с цикли, условни конструкции и пресмятания
Подготовка за практически изпит по програмиране (приемен изпит в СофтУни)
Практически изпит по програмиране (незадължителен, за който иска сертификат или да продължи да учи)
Image may be NSFW. Clik here to view.Обученията по основи на програмирането, организирани от СофтУни, завършват с незадължителен изпит по практическо програмиране, върху изучавания в курса учебен материал, който служи за прием в Софтуерния университет. Който се запали по програмирането и усети, че му харесва да се занимава с писане на код, може да продължи образованието си в СофтУни, където го очаква задълбочена 2-3-годишна програма, която завършва с професия и работна позиция в софтуерна фирма. Може да учите за няколко професии, сред които основните са C#/.NET софтуерен инженер, Java софтуерен инженер, JavaScript програмист или PHP уеб програмист.
При постигнат резултат от курс понеМного добър (5.00), участникът получава и сертификат от СофтУни за начални умения в програмирането.
Записването за безплатните уроци по програмиране (за всички градове, присъствено и онлайн) става от сайта на СофтУни. Попълнете формата за кандидатстване в срок до 5 януари 2017 г. от сайта на СофтУни ии се запишете за безплатно обучение по програмиране във вашия град:
Днес направих 4-часово живо видео включване по Facebook на тема “езици за програмиране и от кой език да започна?“. Показах набързо 6 от най-използваните езици за програмиране (към април 2017 г.) и обясних за техните приложения, силни и слаби страни. Поствам ви видеото + малко записки от дискусията.
Топ 6 най-използвани езици за програмиране към 2017 г.
C# – супер използван, съвременен статично-типизиран, обектно-ориентиран език, търси се много, супер удобен за писане, с по-малко излишен код (boilerplate), позволява процедурно, обектно-ориентирано и функционално програмиране
Java – супер използван, съвременен статично-типизиран, обектно-ориентиран език, търси се много, пишеш доста излишен код (boilerplate), за големи корпоративни, скъпи и тежки проекти
JavaScript– супер използван, съвременен динамичен (скриптов), гъвкав, функционално-ориентиран език, с много малко излишен код (boilerplate), ползва се от почти всички Java, C#, PHP и Python програмисти за уеб front-end
PHP – много полулярен и използван език за уеб програмиране (не е универсален), задвижва половината Интернет, лесен, може да се пише процедурно и обектно-ориентирано, динамичен (скриптов) език, предимно за по-малки проекти
Python – супер лесен език, подходящ за старт, пише се лесно, без излишен код (кратки, но разбираеми програми), супер популярен, процедурно и обектно-ориентирано програмиране, динамичен (скриптов език)
C++ – труден език, статично-типизиран, относително по-стар, за професионалисти, които пипат на по-ниско ниво, мощен, но сложен, подходящ за състезателно програмиране, обектно-ориентиран, кодът става супер бърз, подходящ за 3D игри
Как се става програмист?
По обсъжданата концепция “Как се става програмист“, аз смятам, че има 4 основни групи умения, които всички програмисти имат и трябва да имат (сега и в бъдеще):
Умение #1 – да кодиш (20%)
Да се научиш да кодиш. Формира около 20% от минималните умения на програмиста.
работа с променливи, проверки, цикли
ползване на функции / методи / обекти
работа с данни: масиви, списъци, хешове / dictionary / associative arrays
Езикът за програмиране няма значение за това умение!
Умение #2 – алгоритмично мислене (30%)
Алгоритмичното (логическо, инженерно, математическо) мислене формира около 30% от минималните умения на програмиста.
развива се за половин-една година чрез решаване на 1000+ задачи по програмиране
помага физика, математика и подобни (но не са задължителни!)
способността да решаваш задачи е супер важна за програмистите
Това умение се придобива на 60-70% от необходимото за старт в професията в курса Programming Fundamentals в СофтУни (или негов еквивалент в друго учебно заведение).
Езикът за програмиране няма значение за това умение!
Фундаментални знания за професията (25%)
Фундаментални знания и умения за програмирането и разработката на софтуер и компютърните науки формират около 25% от минималните умения на програмиста.
Езикът за програмиране няма значение и за това умение!
Езици за програмиране и софтуерни технологии (25%)
Езиците за програмиране и технологиите за софтуерна разработка формират 25% от минималните умения на програмиста.
За тези умения вече езикът за програмиране има значение.
Обърнете внимание: само за тези 25% от професията има значение езикът за програмиране!
За останалите 75% от уменията няма значение езикът и тези умения са устойчиви във времето и преносими между различните езици и технологии.
Примерни често използвани езици и технологии (software development stacks):
език C# + ООП, ФП, класовете от .NET + база данни SQL Server, Entity Framework, ASP.NET MVC, HTTP + HTML + CSS + JS + DOM + jQuеry
език Java + Java API classes + ООП + ФП + бази данни + MySQL + HTTP, уеб програмиране + HTML + CSS + JS + DOM + jQuery + JSP/Servlets + Spring MVC или Java EE / JSF
език PHP + ООП + бази данни + MySQL + HTTP, уеб програмиране + HTML + CSS + JS + DOM + jQuery + Laravel / Symfony / друг MVC framework за PHP
език JavaScript (JS) + ООП + ФП + бази данни + MongoDB, MySQL + HTTP, уеб програмиране + HTML + CSS + JS + DOM + jQuery + Node.js + Express + Angular + React
език Python + ООП + ФП + бази данни + MongoDB, MySQL + HTTP, уеб програмиране + HTML + CSS + JS + DOM + jQuery + Django
език C++, ООП + STL + Boost + native development + бази данни + HTTP + други езици
език Swift + MacOS + iOS, Cocoa + Cocoa Touch + XCode + HTTP + REST + други езици
Изводи: има ли значение езикът за програмиране?
Разликата между езиците за програмиране и по-точно в уменията на програмистите на различните езици и технологиите от тяхната екосистема, е в около 10-20% от уменията.
Всички програмисти имат около 80-90% еднакви умения, които не зависят от езика!
Колкото повече езици и технологии владееш, толкова по-бързо учиш нови и толкова по-малко усещаш разлика между тях.
Глобален извод: езикът за програмиране почти няма значение!!!
Има значение да се научиш да кодиш (20%), да се научиш да мислиш алгоритмично и да решаваш проблеми (30%), да имаш фундаментални знания по програмиране и компютърни науки (25%) и да владееш конкретен език за програмиране и технологиите около него (25%).
И все пак: от кой програмен език да започна?
Ще дам субективни и не напълно основателни препоръки, мое виждане, което е много спорно, от кой език за програмиране да започна да уча в началото:
Избор #1: C# – най-лесен като език, много масово се изпозлва, пише се супер приятно, съвременен език, пълно е с материали, лесно се учи и е направен добре.
Избор #2: Java – по-подробен език, масов език, използва се много, пълно е с материали, добра перспектива, лесно се учи.
Избор #3: Python – супер лесен език, супер масов, много материали, лесно се учи, няма излишен код – пишеш много малко
По-малко подходящи езици за старт, но са подходящи все пак:
JavaScript – лесен език, супер масов, пълно с материали, ползва се много, ориентиран към уеб разработка главно, но се ползва и за mobile и embedded, малко е спорно дали е добър за първи език, защото насочва предимно към уеб front-end разработка
PHP – лесен език, става за старт, но не е супер препоръчително, защото е само за уеб, добър избор за HTML-аджии / сайтаджии, които искат да надградят над HTML & CSS
Езици, които по-скоро не са за старт:
C++ – защото е труден, препоръчва се за старт за състезатели по олимпиадите, по-малко се търси в практиката, но пък дава хубава основа
Swift – защото е предимно за iOS и заключва програмиста към определена технология
C – защото е остарял език, труден, пише се супер много код за прости неша, и малко се ползва, подходящ е за микроконтролери, ако стартираме от тях
Други – не се зачуквайте в специфични и малко използвани езици, поне не за старт
Извод: не тръгвайте напред с технологията първо (примерно от PHP & MySQL или от JavaScript и React)! Първо научете основите (да кодите, да решавате задачи, да мислите алгоритмично), след това се хванете с технологиите.
Търсене на езиците за програмиране в България
Тази класация на най-търсените езици за програмиране е правена през 2016 г. от екип на СофтУни. Изследвахме пазара на работни позиции за програмисти. Анализирахме представително извадени 800 обяви за работа за програмисти и ги класифицирахме в групи според основното изискване в обявата: Java, C#, PHP, JavaScript, C++, Python, Android, iOS, други. Анкетирахме 150 софтуерни фирми за техните нужди от софтуерни инженери според технологиите и обединихме резултатите с техните отговори.
Някои езици и технологии се търсят в болшинството обяви и фирми, но най-често не са основни, примерно HTML, CSS, JavaScript, SQL, Git, ООП, algorithms и т.н. Затова класирахме всички отворени работни позиции за разработчици в няколко основни групи. Ето нашите очаквания за шансове да си намерите работа в България според езика за програмиране според извършеното проучване:
Mobile development (iOS / Andorid) – търси се доста, но по-малко от C++ – 6-7%
Python – търси се умерено – 4-5%
Други – общо около 20%
Посочената класация е ориентировъчна. Не претендираме за научен подход при изследването, нито някой твърди, че това е абсолютната истина. Възможно е някъде да сме се подвели, да сме пренебрегнали някои фактори, да сме изкривили неволно информацията, но смятаме, че цялостната картинка прилича на горната (с +/ – 5-10% за всяка позиция).
Не се доверявайте на следните източници: TIOBE и StackOverflow. Те изследват други характеристики на популярност на езиците за програмиране (не търсене на пазара на труда, нито пък на българския пазар).
Гледайте цялото видео (4 часа с въпросите от публиката):
Днес ще разкажа подробно за професията “.NET Developer” и как се става C# програмист, с какви езици за програмиране и софтуерни технологии работят .NET разработчиците на софтуер и как можем да ги научим, от къде да стартираме и какво да учим. Гледайте запис от видеото на живо със Светлин Наков за професията “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 чрез става “чрез правене”
Image may be NSFW. Clik here to view. Програмирането се учи с правене. Трябват ви поне 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 и 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 технологиите и да натрупаш практически опит с тях. Това включва следните няколко стъпки:
Натрупване на умения по програмиране.
Развиване на алгоритмично мислене.
Овладяване на основите на компютърните науки и софтуерното инженерство.
Овладяване на .NET технологиите за разработка на софтуер.
Трупане на практически опит с .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# за напълно начинаещи, която аз заедно с широк екип от доброволци и приятели на СофтУни разработваме през последните 3 месеца:
Книгата е официален учебник за безплатните курсове по програмиране за начинаещи, които СофтУни провежда вече над 100 пъти присъствено в 28 български града и онлайн. Тя е учебно пособие, което може да се ползва като допълнение към курса за старт в програмирането в Софтуерния университет. В безплатната книга за програмиране са обяснени учебният материал от СофтУни курса за навлизане в програмирането (работа с данни, проверки и цикли) и всички задачи от упражненията.
Книгата е безплатна!
Книгата “Основи на програмирането със C#” е безплатна и се разпространява свободно под лиценз CC-BY-NC-SA. Тя е разработена със системата за документация GitBook, като проект с отворен код в GitHub, използвайки единствено Markdown форматиране (.md страници, сорс код, таблици и картинки). Разпространява се свободно в следните формати:
Книгата е написана от широк състав от доброволци автори и редактори, които дариха своето време и труд, за да създадат един прекрасен безплатен учебник по програмиране за начаинаещи. Болшинството от авторите са бивши или настоящи топ студенти от СофтУни, които са минали през основите на програмирането, решавали са задачите от настоящата книга (и курса към нея) и знаят много добре какво затруднява начинаещите. Сега повечето от тях работят като професионалисти в софтуерната индустрия и желаят да помагат на навлизащите в професията. Ето имената на нашите герои – автори и редактори на книгата “Основи на програмирането със C#” (по азбучен ред):
Aлександър Кръстев, Александър Кирилов, Ангел Димитриев, Васко Викторов, Венцислав Петров, Даниел Цветков, Димитър Татарски, Димо Димов, Диян Тончев, Елена Роглева, Жулиета Атанасова, Захария Пехливанова, Искра Николова, Калин Примов, Кристиян Памидов, Любослав Любенов, Николай Банкин, Николай Димов, Павлин Петков, Петър Иванов, Росица Ненова, Руслан Филипов, Светлин Наков, Стефка Василева, Теодор Куртев, Тоньо Желев, Християн Христов, Христо Христов, Цветан Илиев, Юлиан Линев, Яница Вълева.
Инициатор на създаването на книгата е д-р Светлин Наков, който от повече от 15 години насам обучава начинаещи програмисти и е систематизирал своя опит в обученията на напълно начинаещи в курса “Основи на програмирането” в СофтУни. Той е главен автор на съдържането и учебните материали към курса, а те са използвани като основа за съдържанието на настоящата книга.
Книгата е спонсорирана от Фондация “Софтуерен университет”, която предоставя безплатно образование за софтуерни инженери, разработва учебно съдържание с отворен лиценз, обучава учители, провежда практически курсове по програмиране и технологии, разработва книги и учебници и подкрепя свободното образование като цяло.
Бета версия – търсете грешки!
Настоящото издание на книгата е бета версия. Това означава, че все още съдържанието не е финализирано и може да се променя. Книгат ае пусната публично, за да може всеки читател да изпраща грешки и коментари, които на които се е натъкнал докато чете. За да докладвате проблеми, използвайте официалния тракер в GitHub:
Не обещаваме, че ще поправим всичко, което докладвате, но ще се постараем да вземем предвид всички ваши препоръки, коментари и да изичстим докладваните проблеми.
Плановете за напред
Имаме амбициозни планове за идните няколко месеца: 6 книги на 6 различни програмни езика, английска версия, отпечатване на хартия, продължение на книгата и т.н.
Печат на хартия?
Планираме отпечатване на хартия на книгата “Основи на програмирането със C#” през есента (септември-октомври 2017 г.) и разпространение по книжарниците и в СофтУни. Отнема време, защото трябва първо да минат редакциите, да оправим бъговете, които открием, и да я подготвим за печат, след което да я изпратим на издателството и да изчакаме 1-2 месеца за отпечатването. Имайте търпение!
Варианти с Java, JavaScript, Python, PHP и C++
Екипът на книгата с подкрепата на Фондация “Софтуерен университет” и под наставленията на Светлин Наков работим и върху адаптирането на книгата “Основи на програмирането” за още няколко програмни езици: Java, JavaScript, Python, PHP и C++. Планираме да преведем книгата на тези езици, като ще се стремим да направим почти огледално копие със сменен синтаксис и адаптации, където е необходимо. Можете да следите за проектите за новите книги в GitHub:
За новите книги за Java, JavaScript, Python, C++ и PHP търсим съавтори, редактори и съмишленици, които да ни помогнат с превода към другите езици. Изискванията са:
Доказан опит с програмирането, поне на начално ниво (година работа в софтуерна фирма или 600/ 600 точки на изпита по основи на програмирането в СофтУни + топ резултати в другите курсове)
Добро ниво на владеене на съответния програмен език (Java, JavaScript, Python, C++ или PHP)
Желание да помогнеш за каузата доброволно, без заплащане, за доброто на навлизащите в програмирането (около 20-30 часа работа)
Форма за записване на кандидат-автори за превод на C# книгата по основи на програмирането към други езици за програмиране (Java, JavaScript, Python, C++ или PHP):
Благодаря на всички, които повярваха в този проект и участваха доброволно в него! Благодаря ви колеги, че направихте над 2000 промени (Git commits), с които създадохте 20 глави и около 400 страници качествено учебно съдържание. Благодаря специално на Венци Петров и Росица Ненова, които редактираха старателно всяка страничка, всяка табличка, всяко парченце код и всяко едно изречение, за да уеднакват стиловете и да изчистят грешките. Очаквайте шумно парти, като излезе хартиената версия на книгата и се надявам да се включите и за другите книги в плана.
Наскоро завърши годишното технологично проучване на СофтУни сред софтуерните фирми, което правим всяка година с цел адаптиране на нашите учебни планове и програми спрямо актуалните нужди на софтуерната индустрия. Проучването беше проведено в периода април-май 2017 г. в България и е актуално към средата на 2017 г. Валидно е само за българския пазар на софтуерна разработка.
За мен е нормално всяко читаво учебно заведение да провежда регулярно подобни проучвания и да адаптира обученията си спрямо локалните и глобалните трендове и нужди. Дали традиционните университети, училищата, частните обучителни организации, академии и школи правят такива проучвания не знам, но мога да споделя, че от създаването на СофтУни през 2014 г. до момента редовно събираме по систематичен начин мнението на софтуерните и ИТ фирмите и адаптираме учебния план, учебните курсове и учебния процес към нуждите на бизнеса.
Целта на проучването е да се оцени кои езици за програмиране, софтуерни технологии, инструменти и методологии се търсят най-много на пазара на труда в ИТ сектора в България към средата на 2017 г.
За използваната методология
Методологията, която ползваме за проучването, е стандартна:
Проверяваме сайтовете за работа в България и събираме най-търсените езици и технологии от софтуерния свят и изисквания към търсещите работа към май 2017 г.
Разделяме използваните технологии в категории (примерно езици за програмиране, уеб технологии, front-end технологии, back-end технологии, технологии от света на базите данни, нетехнологични умения и други).
Отсяваме тези от категориите, които имат пряко отношение към софтуерната индустрия в България и обученията на софтуерни инженери.
Въз основа на събраните данни изграждаме анкета с въпроси, включваща серия въпроси, разделени на групи.
Повечето въпроси са в стил “Кой front-end framework ползвате във вашата фирма?”
Отговорите са измежду най-популярните на пазара технологии + празно поле за дописване (ако сме изпуснали даден отговор).
На всички въпроси може да се посочи повече от един отговор и затова сборът от процентите надвишавт 100%.
Анкетата е изпратена на около 200 фирми от партньорската мрежа на СофтУни и външни компании (предимно на технически ръководители), с молба да бъде попълнена старателно.
Анкетата е попълнена успешно от около 90 фирми, с най-разнообразен профил: продуктови и аутсорсинг компании, софтуерни фирми, ИТ фирми, ползващи всякакви технологии.
Обхванати са болшинството от по-големи софтуерни фирми (над 100 души), както и редица средни и мини-фирми.
Резултатите са събрани, внимателно обобщени и визуализирани като диаграми от техническия експерти от СофтУни.
За автентичността на изследването
Внимание: по никакъв начин не гарантираме за автентичност, научен подход, статистическа значимост и подобни, нито за посочените отговори, нито за направените изводи. Публикувам резултатите с идеята, че може да са полезни и на други фирми и организации от софтуерната индустрия. Вложихме доста усилия и старание, за да съберем тези резултати, но в духа на отворения код и култура, решихме да ги споделим.
Използвайте резултатите от настоящото проучване на свой собствен риск!
Да преминем и към самите резултати.
Област на разработка
Image may be NSFW. Clik here to view.
Изглежда болшинството от анкетираните фирми разработват уеб-базиран софтуер. Някои разработват уеб и мобилен едновременно.
Половината фирми имат QA позиции в екипите си.
Половината фирми разработват мобилни приложения.
Уеб разработка
Image may be NSFW. Clik here to view.
Масово уеб разработчиците пишат full-stack.
Web Front-End технологии
Image may be NSFW. Clik here to view.
Изглежда Angular е победител във front-end web frameworks категорията, но React е плътно зад него. Останалите участници са с много малко влияние.
Web Back-End езици
Image may be NSFW. Clik here to view.
Лидери в back-end програмирането в България са C#, Java и PHP с много малка разлика.
Python и Ruby в БГ се ползват много по-малко от C#, Java, PHP и JS.
Web Frameworks за C#, Java и PHP
Image may be NSFW. Clik here to view.
От лидерите в Web back-end програмирането сме извадили водещите технологични рамки (frameworks) за езиците C#, Java и PHP.
В C# света ASP.NET MVC и остарялата технология Web Forms се ползват почти еднакво! .NET Core все още навлиза на пазара и изостава от утвърдените по-стари технологии.
В Java света Spring Framework води пред Java EE с малка преднина.
В PHP света най-използваният framework е Symfony, следван от Laravel.
ORM Frameworks за C#, Java и PHP
Image may be NSFW. Clik here to view.
В C# света болшинството разработчици ползват Entity Framework (EF).
В Java света болшинството разработчици ползват Hibernate и Spring Data.
В PHP света всеки ползва каквото си иска за достъп до данните – няма технология победител.
Databases
Image may be NSFW. Clik here to view.
В базите данни в българската софтуерна индустрия най-използваната база е MS SQL Server, следвана от MySQL.
В C# света се ползва предимно SQL Server.
В PHP света се ползва предимно MySQL.
В Java света се ползват най-вече MySQL и MS SQL Server (леко съм изненадан).
Web and Front-End Templating Engines / Frameworks
Image may be NSFW. Clik here to view.
Във всички технологии за уеб разработка (PHP, Java, C#, JS) се наблюдава предпочитанието потребителският интерфейс да се рендира с JS front-end framework (като React или Angular) вместо със сървърен templating engine.
При C# уеб разработката най-използвана е комбинацията ASP.NET MVC + Angular.
При Java уеб разработката най-използвана е комбинацията Spring + React.
При PHP уеб разработката най-използвана е комбинацията PHP + React (не съм убеден, че това е вярно).
От всички технологии за JS front-end templating се ползват най-много React и Angular.
jQuery се ползва най-често съвместно с други JS frameworks, а не самостоятелно и затова делът му в статистиката е толкова голям.
Технологии за разработка на мобилни приложения
Image may be NSFW. Clik here to view.
Android има лека преднина пред iOS, а другите мобилни платформи практически са извън надпреварата.
Болшинството Android developers използват Java.
Болшинството iOS developers използват Swift. Най-сетне Swift изпревари застаряващият вече език Objective C.
Технологии като JS hybrid apps, JS native apps, Xamarin mobile apps и Unity for mobile се ползват рядко при мобилната разработка.
Езици при обработката на данни
Image may be NSFW. Clik here to view.
C# води с малко пред Java и Python при сървърната обработка на данни. Други сериозни участници в тази надпревара не се забелязват.
Вероятно въпросът не е бил добре разбран от анкетираните, защото идеята беше “какво ползвате за big data / data science и подобни“, но отговорите са в стил “с какво си обработвате данните от страна на сървъра“. Отговори като R и Scala отстъстваха.
Framework Development езици
Image may be NSFW. Clik here to view.
При програмистите с профил framework developer разнообразието от езици и технологии е огромно и нямаме категорични победители.
QA, ръчно тестване и автоматизация
Image may be NSFW. Clik here to view.
Времето на QA автоматизацията дойде. Болшинството от QA инженерите в българската софтуерна индустрия се занимават с QA automation.
При автоматизираното тестване най-предпочитаният инструмент е Selenium.
Използвана от програмистите операционна система
Image may be NSFW. Clik here to view.
Имаме категоричен победител при операционните системи, използвани при разработката на софтуер (desktop средата на програмистите) и това е Microsoft Windows!
Тип бизнес: продуктови и аутсорсинг фирми
Image may be NSFW. Clik here to view.
Повечето софтуерни инженери в България разработват продукт или услуга. Това може да е проект на фирмата-работодател (разработка на български продукт / услуга или чужд / услуга продукт от фирмата-майка) или като част от аутсорснат екип (разработка на чужд продукт или услуга с български dev екип).
По-малко от половината програмисти в България работят в аутсорсинг сценарий (като екип или човек под наем на чужда фирма).
Глобални изводи от проучването
Приблизителна класация на топ 10 на най-търсените езици за програмиране в България (към май 2017 г.):
C#
Java
JavaScript
PHP
C++
Swift
Python
Ruby
Objective-C
Go
Класацията на езиците за програмиране е ориентировъчна.
Първите 4 езика се търсят долу-горе еднакво, така че C# не е победител, нито Java. Спорно е дали C# или JavaScript се търси повече.
След 5-та позиция класацията също е дискусионна. Спорно е дали Swift или Python се търси повече.
За първите 5 езика, обаче сме сигурни кои са и те са C#, Java, JS, PHP и C++.
Имайте предвид, че да се правят класации е много трудна работа, защото в обявите за работа езиците и технологиите винаги се търсят заедно. Затова много не вярвайте на горната подредба. Тя е само за ориентация!
Най-търсените езици за програмиране в България са C#, Java, PHP и JavaScript.
JavaScript се търси най-много, защото е част от професията на C#, Java и PHP разработчиците, но самостоятелно не се търси повече от C# или Java.
След първите четири места (където няма категоричен победител измежду C#, Java, JavaScript и PHP), по търсене следват C++, Python, Swift и Ruby.
Езици като Ruby, Go, Kotlin, Scala, Erlang, Haskell се считат за екзотични и се търсят слабо в България. Слабо е търсенето и на езици като чисто C, VB.NET, Objective-C, Perl, R, assembler, Delphi.
В списъка не сме включили помощни езици от разработката на софтуер като HTML, CSS и SQL, защото те не са езици за програмиране.
Не е редно да се сравнява Java с SQL или HTML, все едно да сравняваш ягоди с мобилни телефони.
Болшинството софтуерни проекти в България са за разработка на уеб и мобилни приложения.
Най-използваните технологии в C# / .NET екосистемата са ASP.NET, Entity Framework и SQL Server + Angular / React.
Най-използваните технологии от Java екосистемата са Spring Framework, Java EE, Hibernate, MySQL и Android + React / Angular.
Най-използваните технологии от PHP екосистемата са Symfony, Laravel и MySQL + React / Angular.
Най-използваните технологии от JavaScript екосистемата са React, Angular и Node.js.
Най-използваните бази данни в българската софтуерна индустрия са MySQL и MS SQL Server.
Над половината софтуерни екипи имат QA инженер в състава си и той се занимава с test automation и с много голяма вероятност ползва Selenium.
При уеб разработката front-end частта се пише предимно на Angular или React (с JavaScript). Отмина времето на server-side HTML rendering.
Мобилните приложения се пишат предимно на Java и Swift. Все още JS не е навлязъл масово.
Да не би да има някаква грешка?
Ако ви се струва, че в някоя от анкетите резултатите са странни, или някой от изводите не ви допада, спокойно. Никой не претендира нито, че проучването е направено достатъчно автентично, честно, безпристрастно и коректно, нито, че изводите и разсъжденията са непременно правилни. Ползвайте си данните както намерите за добре и не забравяйте да ползвате задклавиатурното си устройство. Мислете! Търсете фактите и доказателствата, разсъждавайте, проверявайте информацията, агрегирайте мнения!
Възможна причина за потенциално изкривяване на резултатите от настоящото проучване е, че е правено предимно сред фирмите от екосистемата на СофтУни. Сред тях рядко ще срещнете хардуерни фирми, фирми с профил IoT, system integrators или call centers, така че най-вероятно извадката от фирми не е съвсем представителна. И затова ползвайте информацията с внимание и размисъл! Успех на всички!
С голяма радост обявявам на всички навлизащи в програмирането, че през март 2018 г. излезе от печат безплатнатакнига “Основи на програмирането със C#”, която повежда читателя към първите стъпки в програмирането, усвояването на умения за писане на код и организиране на програмна логика, използвайки данни, проверки, цикли и методи.
За книгата “Основи на програмирането със C#”
C# Basics книгата е оригинално българско творение, събрало опита на десетки млади програмисти и преподаватели от СофтУни, начело с д-р Светлин Наков, които споделят доброволно, без възнаграждение, своя опит с навлизането в програмиране и обучението на начинаещи програмисти.
Книгата се използва като основен учебник от десетки хиляди ученици и студенти, които стартират своето обучение по програмиране с безплатния курс “Основи на програмирането” в СофтУни, който се провежда безплатно (присъствено и онлайн) в десетки български градове, редовно и постоянно. Нова група започва почти всеки месец.
Какво обхваща тази книга за напълно начинаещи в програмирането?
Книгата “Основи на програмирането със C#” обхваща най-базовите умения за писане на код, компилация и работа със среда за разработка, основите на писането на програмна логика, типовете данни в програмирането, работата с изрази и конструкции за управление, организиране на проверки (прости и вложени) и цикли (повторения на код определен брой пъти или с входно или изходно условие и вложени цикли), работа с входно-изходни операции, четене и писане от конзолата, използване на подпрограми (методи и функции).
Настоящата книга обхваща езика C# и платформата .NET Core, но фокусът е върху уменията за писане на код, а не върху конкретен език или технологии. Същата книга се разработва и в други варианти:
Съдържание на безплатната книга “Основи на програмирането със C#”
Учебното съдържание от книгата “Основи на програмирането със C#” е структурирано в 21 глави, които последователно надграждат уменията ви от нулата до едно много добро ниво на писане на програмен код:
Книгата започва своята история още през 2016 г. с първия курс “Основи на програмирането” в СофтУни, разработен и преподаван лично от д-р Светлин Наков. До тогава “Основи на програмирането” се изучава в СофтУни в друг формат, по много по-труден за участниците начин на поднасяне на информацията.
Учебното съдържание в основната си част е изготвено лично от Светлин Наков, като част от образователната концепция за софтуерни инженери “СофтУни 3.0“. По учебното съдържание (презентационни слайдове и задачи за упражнения и изпити) Наков събира авторски колектив (предимно преподаватели и студенти от СофтУни), които доброволно описват в книга (учебник) цялото учебно съдържание, което се изучава в безплатните обучения за напълно начинаещи в СофтУни. След няколко месеца усърдна работа излиза първото предварително издание, а по-късно след изчистване на грешки и проблеми, книгата се отпечатва и на хартия.
Две книги за C# програмиране, които взаимно се допълват
Някои колеги са объркани и се питат: защо има две книги за програмиране за начинаещи със C# от Светлин Наков какво е различното между тях?
Настоящата книга “Основи на програмирането със C#” (https://csharp-book.softuni.bg) се препоръчва за старт, като начални стъпки при навлизане в програмирането. Тя формира базови умения за писане на програмен код (basic coding skills), като се движи през учебния материал бавно, с много обяснения и примери и с много, много практика.
След нея, ви препоръчваме и нейното продължение “Принципи на програмирането със C#” (http://www.introprogramming.info/intro-csharp-book), която дава задълбочено познание за програмирането, решаването на задачи, развиване на алгоритмично мислене, писане на ефективен код с правилно използване на основните структури от данни и формиране на добър стил на програмиране, базиран на утвърдени техники за изграждане на качествен код.
Препоръчваме ви да четете тези две книги една след друга в следния ред:
Книга “C# основи” – тя дава начални знания и умения за писане на код (данни, проверки, цикли). Тази книга е много, много подробна, обхваща много малка част от програмирането (писане на програмна логика), но в много голяма дълбочина и с много, много примери, задачи и решения, разписани стъпка по стъпка. Препоръчва се за напълни начинаещи.
Книга “C# принципи” – тя дава много по-дълбоки знания и умения и като обхват и като ниво на детайли. В нея се обхващат фундаменталните принципи на програмирането, които не са се променили съществено през последните 15-20 години, макар и през призмата на съвременния език за програмиране C# (последна версия). Тази книга обхваща 5 пъти повече концепции и принципи на програмирането от първата и се препоръчва като втора стъпка след предходната книга.
Секция “Благодарности”
Благодаря на всички колеги, които се включиха доброволно и без заплащане в екипа по проекта за създаването и развитието на тази фундаментална книга по програмиране, за да споделят опит и да помогнат на навлизащите в програмирането (по азбучен ред):
Aлександър Кръстев, Александър Лазаров, Ангел Димитриев, Васко Викторов, Венцислав Петров, Даниел Цветков, Димитър Татарски, Димо Димов, Диян Тончев, Елена Роглева, Живко Недялков, Жулиета Атанасова, Захария Пехливанова, Ивелин Кирилов, Искра Николова, Калин Примов, Кристиян Памидов, Любослав Любенов, Николай Банкин, Николай Димов, Павлин Петков, Петър Иванов, Росица Ненова, Руслан Филипов, Светлин Наков, Стефка Василева, Теодор Куртев, Тоньо Желев, Християн Христов, Христо Христов, Цветан Илиев, Юлиан Линев, Яница Вълева
Благодарим и на всички останали, които допринесоха за този проект: Марина Шидерова, екипът на СофтУни, екипът на “Programming Basics” обученията и СофтУни стажантите (Иван Иванов и Симона Симеонова).
Image may be NSFW. Clik here to view.
От къде да се сдобия с книгата?
Книгата “Основи на C# програмирането” се разпространява безплатно в електронен формат (PDF, DOCX и други формати) и може да се закупи на хартия от книжния пазар, както и от СофтУни. Книгата излезе от печат през март 2018:
Image may be NSFW. Clik here to view.С голяма радост обявявам на всички, които се интересуват сериозно от програмиране, че през юли 2018 г. излезе трето, обновено издание на добре известната безплатнакнига “Въведение в програмирането със C#”, която учи на основи и принципи на програмирането, на алгоритмично мислене и решаване на задачи, структури от данни и алгоритми, редом с концепции от обектно-ориентираното програмиране (ООП) и с фундаментални принципи на качествения програмен код. Книгата е с променено заглавие, което по-точно съответства на нейното съдържание – “Принципи на програмирането със C#”. Каузата на книгата е да учи на алгоритмично мислене и на непреходните принципи на програмирането, които всеки кадърен програмист трябва да разбира в дълбочина и да прилага ежедневно в работата си. Книгата е задълбочено и изчерпателно ръководство по програмиране от ниво съвсем начинаещ до експерт и ви повежда от първите стъпки в писане на код и изпълнение на програми към по-сложни концепции като обектно-ориентирано програмиране и структури от данни.
За книгата “Въведение в програмирането със C#”
Intro C# книгата е оригинално българско творение, събрало опита на десетки доказани софтуерни инженери, начело с д-р Светлин Наков и Веско Колев, които споделят доброволно, без възнаграждение натрупаните през годините инженерна и преподавателска работа знания, умения и техники за програмиране с мисъл и с дълбоко разбиране на материята.
Историята на “Въведение в програмирането”
Image may be NSFW. Clik here to view.Книгата започва своята история още през 2008 г. Първоначално излиза като безплатен учебник за програмиране с езика Java, а през 2011 г. е адаптирана за C# и програмиране за .NET платформата.
Години наред тази книга е използвана като основен учебник за навлизащите в програмирането в Национална академия по разработка на софтуер (НАРС), в Софтуерната академия на Телерик (Telerik Academy) и в Софтуерния университет (СофтУни), и върху нея са изградени различни учебни курсове: от съвсем начинаещи до по-напреднали. Учебните програми в тези академии от тогава се промениха и еволюираха по свой път и вече не следват стриктно този учебник, но той си остана едно от най-важните учебни пособия за българския кандидат-програмист (на училищно, любителско и университетско ниво) и продължава да поднася в дълбочина основните непреходни принципи на програмирането. Макар и образованието да става по-интерактивно, с видео-уроци и интерактивни учебни платформи, книгите все още имат важно място в образованието, и особено книги като тази, които дават фундаментални знания и изграждат трайни умения.
Image may be NSFW. Clik here to view.През 2015 г. книгата “основи на програмирането със C#” беше леко обновена (второ издание, версия 2.0), но по същина си остана актуална към вече остарелите C# 4 и Visual Studio 2010. Нямахме сили и ресурс за по-сериозна преработка.
През 2017 г. дойде време да издадем нова версия (трето издание, версия 3.0) на тази ценна компилация от знания и техники за начинаещи и средно ниво програмисти. Решихме да вложим по-сериозни усилия и да направим истинско обновяване и адаптация на цялото съдържание (над 1100 страници) за новостите в програмирането и езика C# от последните години: повече функционално програмиране, адаптация към .NET Core и C# 7, с използване на Visual Studio 2017. Поправихме и много грешки и недобре написани части от съдържанието, добавихме и някои допълнения. Променихме и заглавието на книгата, за да съответства по-добре на нейното съдържание и образователна кауза. Работата отне повече от половин година и сме радостни, че през юли 2018 г. проектът завършва успешно: излезе “Принципи на програмирането със C#” (версия 3.0).
Какво обхваща тази ценна, фундаментална за програмирането, книга?
Книгата “Принципи на програмирането със C#” обхваща всички фундаментални умения и принципи, които един програмист трябва да владее, за да бъде добър в професията си. Книгата учи на концепции, принципи и начин на мислене и подход към програмирането, без да навлиза в конкретни софтуерни технологии (като уеб и мобилна разработка), които се променят ежедневно.
Тя започва от най-базовите понятия за писане на код, компилация и работа със среда за разработка, преминава през основите на писането на програмна логика, типовете данни в програмирането, бройни системи и представяне на числата, работата с изрази и конструкции за управление, проверки и цикли, работа с входно-изходни операция, четене и писане от конзолата, използване на подпрограми (методи и функции).
След най-базовите понятия книгата обръща внимание на по-сложни концепцииот програмирането като работа с линейни структури от данни, масиви, матрици и списъци, работа с текст и стрингообработка, създаване и използване на обекти, рекурсия и рекурсивни алгоритми, работа с текстови файлове и потоци, обработка на изключения и защитно програмиране.
Следва сериозно задълбочено навлизане в обектно-ориентираното програмиране (ООП), дефиниране на класове, конструктори, свойства, методи, абстракция, интерфейси, наследяване и полиморфизъм, обектно-ориентирано моделиране и шаблони за дизайн.
След въведение в ООП, следва въведение в структурите от данни: от теория и имплементация на линейни структури като свързан списък, списък, базиран на масив, стек и опашка, до дървета, наредени двоични дървета за претърсване, балансирани дървета и графи, стигайки до хеш-таблици, имплементации на речници и множества, заедно с инструменти за оценяване на сложност на алгоритми и асимптотична нотация.
Книгата завършва с практически техники и утвърдена методика за ефективно решаване на задачи по програмиране, развита детайлно като теория и демонстрирана многократно на практика с десетки практически задачи, които показват силата на показания подход.
Книгата дава задълбочено знание
Книгата “Принципи на програмирането със C#” дава задълбочено познание за програмирането, изгражда начин на работа и стабилен подход към решаване на проблеми от програмирането чрез алгоритмично мислене, писане на ефективен код с правилно използване на основните структури от данни и формиране на добър стил на програмиране, базиран на утвърдени техники за изграждане на качествен код, който лесно се четен, разбира и поддържа.
Две книги, които взаимно се допълват
Някои колеги са объркани и се питат: защо има две книги за програмиране за начинаещи със C#, от един и същ автори и какво е различното между тях?
Тази книга се явява естествено продължение на книгата по кодене за начинаещи “Основи на програмирането със C#” – https://csharp-book.softuni.bg. Препоръчваме ви да четете тези две книги една след друга в следния ред:
Книга “C# основи” – тя дава начални знания и умения за писане на код (данни, проверки, цикли). Тази книга е много, много подробна, обхваща много малка част от програмирането (писане на програмна логика), но в много голяма дълбочина и с много, много примери, задачи и решения, разписани стъпка по стъпка. Препоръчва се за напълни начинаещи.
Книга “C# принципи” – тя дава много по-дълбоки знания и умения и като обхват и като ниво на детайли. В нея се обхващат фундаменталните принципи на програмирането, които не са се променили съществено през последните 15-20 години, макар и през призмата на съвременния език за програмиране C# (последна версия). Тази книга обхваща 5 пъти повече концепции и принципи на програмирането от първата и се препоръчва като втора стъпка след предходната книга.
Секция “Благодарности”
Благодаря на всички колеги, които се включиха доброволно и без заплащане в екипа по проекта за създаването и развитието на тази фундаментална книга по програмиране, за да споделят опит и да помогнат на навлизащите в програмирането (по азбучен ред): Веселин Георгиев, Веселин Колев, Дилян Димитров, Илиян Мурданлиев, Йосиф Йосифов, Йордан Павлов, Мира Бивас, Михаил Вълков, Михаил Стойнов, Николай Василев, Николай Костов, Николай Недялков, Павел Дончев, Павлина Хаджиева, Радослав Иванов, Радослав Кирилов, Радослав Тодоров, Светлин Наков, Станислав Златинов, Стефан Стаев, Теодор Божиков, Теодор Стоев, Христо Германов, Цвятко Конов. Благодарим и на всички останали, които допринесоха за този проект: Венцислав Петров, Росица Ненова, Марина Шидерова.
Книгата “Принципи на C# програмирането” се разпространява безплатно в електронен формат (PDF, DOCX и други формати) и ще може да се закупи на хартия от книжния пазар, както и от СофтУни. Книгата ще излезе от печат септември 2018:
Днес направих едно живо включване във FB, за да разкажа за професията на софтуерния инженер, как да стартираме с програмирането, как се става програмист, колко време отнема от старта до започване на работа в софтуерната индустрия, с кои езици за програмиране и софтуерни технологии да се захванем, защо е важно да се научим да кодим добре, да си развием алгоритмично мислене и умения за решаване на задачи, да овладеем фундаменталните знания за професията (концепциите от компютърните науки, софтуерните технологии и софтуерното инженерство), редом с конкретни езици за програмиране, софтуерни технологии, технологични рамки и инструменти за разработка.
Как се става програмист – Видео
Д-р Светлин Наков разказва как се става софтуерен инженер: от нулата до започване на работа като junior developer за 1-2 години.
Как да стана програмист – слайдове
Презентация на тема “Как се става софтуерен разработчик?”
Запомнете, че програмистът владее 4 основни групи умения, които са разпределени процентно както следва:
Писане на код (coding skills) – 20%
Алгоритмично мислене и решаване на задачи – 30%
Фундаментални знания за професията (компютърни науки, и софтуерно инженерство) – 25%
Езици за програмиране и софтуерни технологии – 25%
Топ 5 на най-търсените езици и технологии за разработка през 2019 г.
През 2019 г. най-търсените технологични стекове за разработка са свързани с езиците JavaScript, C#, Java, Python и PHP. Това са топ 5 (не непременно в този ред) на най-търсените езици за програмиране в България и глобално в технологичната индустрия. С тези езици и прилежащите им технологии са 90% от обявите за работа в софтуерния бранш.
Това са петте най-търсени групи технологични умения (в допълнение с уменията да пишеш код и да мислиш алгоритмично и да разбираш фундамента на компютърните науки), които се търсят при стартиране на работа като програмист:
C# + .NET + ASP.NET MVC
C#, .NET Core, ASP.NET MVC, Entity Framework, SQL Server
Такова портфолио се равнява на близо година работен стаж във фирма.
За работодателите такива практически проекти са доказателство, че можеш да програмираш.
Изгради впечатляващо CV, напиши мотивационно писмо, кандидатствай по обяви и други канали, подготви се за интервю, премини го успешно и започни работа в ИТ индустрията.
Най-бързият път до кариера на софтуерен разработчик
Ако искаш някой да те поведе за ръка през всичко описано в тази статия, да се интегрираш в учебна група, да станеш част от голяма и задружна общност на бъдещи програмисти и софтуерни инженери, ела в семейството на СофтУни.
Започни с безплатния курс по “Основи на програмирането“, който се провежда присъствено и онлайн всеки месец. Инвестирай в себе си: научи се да програмираш, стани софтуерен разработчик, започни работа, наслаждавай се на елитна професия с добри доходи и огромна перспектива за развитие!
Споделям презентация и видео на тема “Работа с масиви и списъци в C#, Java, JavaScript и Python” от вчерашното включване на живо, в което обясних какво представляват списъчните структури, за какво се ползват и демонстрирах с код на живо на няколко езика за програмиране (C#, Java, Python и JS) основни операции със списъците и масивите: създаване, добавяне на елементи, обхождане, изтриване на елементи, промяна на елементи.
СофтУни продължава да се разраства и да надгражда своите практически образователни програми по софтуерно инженерство, дигитален маркетинг и графичен дизайн и визуализация, в които всяка година се обучават десетки хиляди студенти.
Да си безапелационен лидер в дигиталното и технологичното образование и да държиш топ ниво години наредизисква непрестанно развитие, надграждане и усъвършенстване на образователното съдържание и образователния процес според нуждите на работодателите и учащите, и в СофтУни отлично разбираме това и регулярно въвеждаме подобрения.
Ето, че дойде време да обявим поредната еволюционна стъпка в развитието на цялостната обучителна програма за софтуерни инженери на СофтУни, (известна още с названието “Софтуерен университет”). Това е “СофтУни 5.0“: петата версия на най-сериозната и задълбочена програма за практическа подготовка на софтуерни инженери в България, която развива солидни практически умения по програмиране, алгоритмично мислене и решаване на задачи, съчетани със задълбочени фундаментални познания по компютърни науки, разработка на софтуер и софтуерно инженерство и съвременни софтуерни платформи и технологии за разработка.
Image may be NSFW. Clik here to view.Основните 5 професии за софтуерни инженери в СофтУни
На базата на обратната връзка от работодателите в СофтУни регулярно обновяваме учебните планове, програми и учебното съдържание, за да сме в крак с нуждите на софтуерната индустрия. Обновяването се случва регулярно 3 пъти в годината (преди старта на всеки семестър), а средно веднъж годишно правим по-задълбочено проучване на пазара на труда и извършваме по-значима актуализация на предлаганите професии и специализации, за да осигурим на нашите студенти възможно най-адекватното практическо обучение за стартиране на работа в софтуерната индустрия според това, което ИТ бизнесът търси.
До скоро (с програмите на СофтУни 4.0) практическата подготовка на софтуерни инженери беше фокусиранa основно върху развитие на умения за уеб разработка със C#, Java, JavaScript и Python. Дойде време да разширим и надградим предлаганите възможности за практическо обучение и развитие за софтуерни разработчици.
В СофтУни 5.0 вече предлагаме 5 професии за софтуерни инженери + 3 технологични специализации:
Да овладееш технологична професия от софтуерната индустрия до достатъчно ниво, за да стартираш работа е сериозно предизвикателство и не става за месец или два. В СофтУни подхождаме изключително сериозно и задълбочено и нашите обучителни програми продължават 1.5 – 2 години в силно практически формат и с интензивност, която позволява съчетаване с целодневна работа или обучение във ВУЗ. Ние произвеждаме добре подготвени професионалисти на junior ниво в топ 5 на най-търсените технологични направления според пазара на труда в ИТ индустрията.
Професиите C# Web Developer, JavaScript Web Developer, Java Web Developer и Python Web Developer и QA Engineer към юни 2020 г. (когато пиша тази блог статия) са топ 5 на най-търсените в софтуерната индустрия в България. Това е причината да добавим отдавна планираната нова професия в СофтУни – инженер по качеството на софтуера (Software Quality Assurance Engineer).
За професията “QA Engineer”
В софтуерната индустрия разработването на софтуер е съпътствано от непрестанно управление, проследяване и осигуряване на качеството. За качеството на софтуера в софтуерната индустрия се грижат QA специалистите (QA specialists, QA engineers). Във всеки по-сериозен екип по софтуерна разработка и към всеки по-сериозен софтуерен проект съществува роля “осигуряване на качеството“, което се изпълнява от QA инженерите, които по същество представляват софтуерни инженери, които тестват софтуера (в повечето случаи автоматизирано) и се грижат за качеството.
Професията на инженера по качеството на софтуера (software quality assurance – QA) е неразделна част от софтуерната разработка. QA инженерите се грижат за качеството на софтуера и организацията на софтуерното производство: тестват софтуера, докладват и описват грешките в специализирани системи (тракери) и проследяват работата по тях, подпомагат организационно процеса на разработка, извършват инспекции на кода, създават и изпълняват ръчни тест процедури, програмират и изпълняват автоматизирани тестове (роботизирано тестване на функционалности чрез програмен код), тестват скоростта на софтуера, издръжливостта на натоварване, информационната сигурност и потенциални уязвимости, тестват ползваемостта и удобството на работа със софтуера, проследяват работата по отстраняване на грешките и потвърждават, когато са поправени, и като цяло се грижат се за качеството на разработвания софтуерен продукт, система или компонент. Те задължително имат добри умения по програмиране и софтуерни технологии и пишат код, за да автоматизират тестовете в процеса на непрекъсната интеграция.
Новата професия “QA Engineer” в СофтУни
QA инженер е търсена професия в софтуерната индустрия, за която се изискват програмиране, технически умения (писане на код, дебъгване, тестване, познания по софтуерни технологии и софтуерна разработка), познания по осигуряване на качеството на софтуера, търпеливост, старание, постоянство, дисциплина, организация и внимание към детайлите. Именно тези умения изгражда новата специалност “QA инженер” в СофтУни, която стартира първия си прием от есента на 2020 г.
Обучението за QA инженер в СофтУни продължава около 1.5 години и обхваща фундамента на програмирането, алгоритмично мислене и решаване на задачи, ООП, бази данни, основи на уеб разработката, софтуерни технологии, фундаментални принципи и концепции за софтуерна разработка, софтуерно тестване, осигуряване на качеството на софтуера, автоматизирано тестване, QA технологии и инструменти, процеси и практики в софтуерната разработка.
Image may be NSFW. Clik here to view.
В СофтУни при обучението на QA инженери поставяне солидна основа от програмиране и софтуерни технологии, с последваща специализация в QA професията и овладяване на QA концепциите и инструментите. Запомнете, че без сериозна основа по програмиране, никой не може да стане добър QA! Затова в СофтУни учим за QA толкова продължително и задълбочено: около 1.5 години.
Full-Stack Developer специализациите в СофтУни
Втората голяма добавка към цялостната програма за софтуерни инженери в СофтУни 5.0 след QA професията е възможността за придобиване на full stack development умения за цялостна разработка на софтуер, което съчетава задълбочени умения по изграждане на потребителски интерфейси (front-end разработка и UI технологии) и задълбочени умения по сървърно програмиране (back-end разработка и технологии за работа с данни).
Image may be NSFW. Clik here to view.
Професията “full stack developer” е комбинация от “front-end developer” и “back-end developer“, която е следващо ниво в професионалното развитие на повечето софтуерни разработчици след първоначалната специализация във front-end или back-end. Тази професия е по-комплексна и по-предизвикателна от професията “уеб разработчик” и е подходяща за по-амбициозните студенти, които търсят по-бързо кариерно израстване.
От есента на 2020 г. в СофтУни стартират 3 специализации за full-stack developer, които са разширения на професията “уеб разработчик” съответно с езиците C#, Java и Python и платформите и технологиите около тях:
Специализация C# Full Stack Developer: добавя съвременни умения по уеб front-end разработка с JavaScript и front-end frameworks към вече натрупаните умения за сървърна разработка със C# и .NET Core
Специализация Java Full Stack Developer: добавя съвременни умения по уеб front-end разработка с JavaScript и front-end frameworks към вече натрупаните умения за сървърна разработка с Java и Spring
Специализация Python Full Stack Developer: добавя съвременни умения по уеб front-end разработка с JavaScript и front-end frameworks към вече натрупаните умения за сървърна разработка с Python и Django
Топ преподаватели, качествено учебно съдържание, силна общност и много, много практика
Кое прави СофтУни най-големият и най-предпочитаният учебен център за практическа подготовка на софтуерни инженери в България? Това са топ преподавателите, съвременната практическа обучителна програма, качественото учебно съдържание, изпитаната методика на обучение с плавна крива на учене, силната студентска общност и изключително прагматичният фокус към практиката с модела “учене чрез правене“.
Топ преподаватели и асистенти
В СофтУни 5.0, както и до сега, преподават топ преподаватели със значителен практически опит (5-10 или повече години) – практици от софтуерните фирми, които работят ежедневно това, на което учат студентите, но същевременно имат и много силни преподавателски умения, обясняват старателно, разбираемо и с много желание и вдъхновение. Сред преподавателския състав се открояват имена като Светлин Наков, Николай Костов, Дончо Минков, Йордан Джамбазов, Виктор Даков, Илия Идакиев, Ивайло Папазов, Мартин Паунов, Виктор Костадинов и Инес Иванова.
Редом с тях е армията от асистенти, които се грижат за непрестанната комуникация със студентската общност към всеки учебен курс и съдействат на преподавателите за отговаряне на всички въпроси от учащите, за подготовка и подобряване на учебното съдържание, изпитните теми и проекти, домашните, упражненията и цялостното протичане на учебния процес.
Качествено учебно съдържание с плавна крива на учене
В СофтУни учебните планове (модулите във всяка професия и разпределението им във времето), учебните програми (темите за всеки учебен курс) и учебното съдържание (презентации, видео уроци, упражнения, домашни, лабораторни занятия, изпити, проекти, judge система и други учебни ресурси) и учебната методика (методи и форми на преподаване, начини на комбиниране на концепции с практика, начини на провеждане на учебните занятия, събиране на обратна връзка, провеждане на изпити, работа с общността и всичко останало около начина на обучение), са плод на дългогодишна работа на образователния екип на СофтУни и д-р Светлин Наков.
В годините от 2014 насам учебните планове, програми и съдържание на СофтУни са претърпели десетки промени, надграждане, адаптации и подобрения, за да достигнат сегашния си вид, водени от най-важната цел: максимално високо ниво на усвояване на практическите умения за избраната професия от максимален брой участници в обученията. С множество експерименти и проверка на различни подходи, и с натрупване и анализиране на огромно количество данни, в последните 7 години беше изградена цялостната програма за софтуерни инженери “СофтУни 5.0”, в която кривата на учене е много плавна, което означава, че трудността се вдига бавно и постепенно и всеки урок е внимателно създаден и преценен да надгражда и развива уменията стъпка по стъпка, с невисока интензивност и с достатъчно упражнения и практика, за да е максимална успеваемостта от обучителния процес. Когато учим програмиране, концепции от компютърните науки или софтуерни технологии и дадем много материал наведнъж или рязко въведем нови концепции или дадем твърде трудни упражнения, домашни или изпити, много курсисти не успяват да се справят и се отказват от обучението си. За да мотивираме студентите да се справят с учебния процес и големия обхват на обученията, в СофтУни внимаваме много как поднасяме учебния материал, с каква скорост, в каква последователност и след колко упражнения по текущия материал преминаваме към следващия. Това всичко е част от нашата успешна образователна методика, която е изграждана, тествана и подобрявана в продължение на 15 години (още от първите софтуерни академии на д-р Светлин Наков, много преди старта СофтУни, през Телерик академията, до програмата “Софтуерен университет”, СофтУни 2.0, 3.0, 4.0 и 5.0).
Благодарение на качественото учебно съдържание, плавната крива на учене и доказаната учебна методика СофтУни се радва на високо ниво на успеваемост в усвояването на уменията. Ние не обещаваме, че ще направим от всеки програмист за 6 месеца (защото това е невъзможно), но се стараем да дадем безплатен старт, солидно и задълбочено практическо образование на топ ниво и силна подкрепа на всеки, тръгнал към професията “софтуерен инженер” с огромен шанс за успешно придобиване на най-търсените практически умения в софтуерната индустрия и започване на работа.
Силна общност
СофтУни има най-голямата и най-силната общност от обучаващи се в сферата на програмирането и софтуерните технологии в България, с десетки хиляди участници. Ние влагаме много време, усилия, енергия и вдъхновение в изграждането и развитието на студентските общности около СофтУни, около всяка от специалностите, всеки от випуските и всеки от обучителните модули и курсове като изграждаме активни дискусионни групи, отговаряме бързо и компетентно на всички технически и организационни въпроси и насърчаваме споделянето на знания и умения между студентите и тяхното социално взаимодействие.
В СофтУни учащите получават не само супер силни практически обучителни програми, курсове и уроци от топ преподаватели по качествено учебно съдържание и доказана методика. В СофтУни студентите стават част от голяма и активна общност, изграждат приятелства, подкрепят се, споделят и учат един от друг, заедно, в група, задружно и вдъхновено. Да учиш с колеги, в постоянна подкрепата от преподавателския екип, не е като да учиш сам. Какъвто и въпрос или трудност да имаш, споделяш го и получаваш отговори, съвети и решения. Общността е голяма сила!
Много, много практика
От както има СофтУни, та дори и от много преди това в академиите на д-р Светлин Наков винаги практиката е на първо място. Каквото и да учим, крайната цел е практически умения. Всеки учебен курс съдържа определено количество нов учебен материал и много голяма доза практическа работа по упражнения, домашни и проекти. Всеки курс завършва с изцяло практически изпит или проект: писане на код на живо или разработка на практически проект и защита на живо. Така гарантираме, че студентите усвояват практически умения, не само знания.
“Учене чрез правене” е водещ принцип в СофтУни. Ние изграждаме практически умения, точно каквито търсят работодателите. Каквото и да преподаваме, се стараем да го практикуваме по много. Така учим чрез правене. Практикуваме, правим, действаме, пишем код, дебъгваме, правим проекти и трупаме опит всеки ден и за около 2 години изграждаме солидно портфолио от мини проекти, с които демонстрираме опита и уменията си пред работодателите. Фирмите търсят умения, а умения се изграждат чрез практика. Затова в СофтУни даваме много, много, много практика.
Защо СофтУни 5.0?
СофтУни 5.0добавя нова професия QA инженер и full-stack development специализации към цялостната програма за обучение на софтуерни инженери и затвърждава славата на СофтУни на топ образователен център за технологично и дигитални специалисти. Петата версия на програмата по софтуерна разработка (СофтУни 5.0) е една значима стъпка напред в мисията на СофтУни да предоставя качествено и достъпно технологично образование за всеки, който има желание да учи и да се развива в дигиталните професии.