1. Базови умения по програмиране (кодиране)
Първата и най-лесна стъпка към програмирането е да се научиш да използваш програмен език (да кодиш / coding skills). Това означава да пишеш поредици от команди (компютърни програми), с които да инструктираш компютъра какво да прави. Командите се пишат на програмен език (например C#, Java или Python), по определен начин, наречен синтаксис.
Командите могат да бъдат от типа "направи това" (действие), "въведи число и го запази в променлива size" (работа с променливи), "провери дали size съдържа четно число" (проверки) или "повтори 10 пъти даден блок команди" (цикли). Кодирането включва още да пишеш функции (или методи), работиш с данни и обекти, да извършваш пресмятания и да ползваш програмни библиотеки с допълнителни функции.
Изграждане на програмна логика е базово умение, което всички програмисти владеят отлично, и използват за основа, върху която надграждат технологични умения (например програмиране за уеб или създаване на мобилни приложения). Писането на код (кодиране) е фундаментално умение, необходимо на всички, които искат да работят в ИТ сферата, дори да не е като програмисти.
В СофтУни това се изучава сериозно, задълбочено, с много примери и с много, много практика с решаване на стотици задачи. Нов безплатен курс по основи на програмирането в СофтУни започва всеки месец.
2. Изграждане на алгоритмично мислене
Добрите програмисти и софтуерни инженери имат силно развито алгоритмично мислене. Това е способността да измислят как да решат даден проблем и да опишат решението като поредица от действия (алгоритъм). Алгоритмичното мислене се нарича още логическо мислене, инженерно мислене, математическо мислене или умение за решаване на проблеми и се придобива с решаване на много практически задачи.
Логическото мислене е необходимо за повечето съвременни професии, и е ключово за ИТ сферата и за съвременния бизнес. То се изгражда с много труд, в продължение на години, още от училище със заниманията по математика, физика, химия, информатика и информационни технологии. В "Софтуерен университет" ЕООД алгоритмичното мислене се изгражда и развива с решаване на хиляди задачи и чрез специализирани практически обучения по структури от данни и алгоритми.
Пример за алгоритмично мислене: ако един програмист трябва да намери най-голямото число от даден списък с числа, той бързо ще измисли алгоритъм: да запомни в променлива “max” първото число, да премине през останалите числа и за всяко от тях да направи проверка дали е по-голямо от “max” и ако е така, да го запомни в нея. Опитният програмист веднага ще се сети и още нещо: че когато нямаме нито едно число, максимум не съществува и ще направи допълнителна проверка за 0 числа.
Способността по даден проблем да измисляш стъпки за решаването му е способността да мислиш като програмист. Върху този фундамент (който се развива в началните курсове в СофтУни) се надграждат знания за конкретни езици, технологии и платформи.
3. Фундаментални знания и умения по разработка на софтуер и компютърни науки
Добрите софтуерни разработчици освен уменията да пишат код, да мислят алгоритмично и да работят с десетки езици, софтуерни технологии, имат дълбоки фундаментални знания в областта на компютърните науки.
Те имат широки базови познания по компютърни науки, които започват от математически фундамент и логическо мислене и продължават с парадигмите на:
- структурното програмиране
- обектно-ориентираното програмиране (ООП)
- функционалното програмиране
- структури от данни и алгоритми
- принципи на компютърния хардуер и вградените системи
- принципи на мобилните технологии и приложения и други
- операционни системи
- компютърни мрежи
- принципи на базите данни и работата с данни
- принципи на Интернет и уеб технологиите
Техните умения започват от работа със сорс контрол системи и GitHub, продължават през принципите на качествения програмен код, концепциите за компонентно тестване (unit testing) и преработка на код (refactoring) и достигат до шаблони за дизайн (design patterns), гъвкави методологии (agile development) и управление на проекти. Това са умения, които се трупат с много практика и се надграждат с годините опит в професията "софтуерен инженер".
В "Софтуерен университет" ЕООД обръщаме сериозно внимание на фундаменталните знания от компютърните науки и базовите умения по разработка на софтуер чрез изучаването им както в началните нива от задължителната подготовка, така и в изборните курсове и специализации след започване на работа по специалността.
За да придобиеш фундаменталните познания по софтуерно инженерство, можеш да кандидатстваш за безплатния курс по Основи на програмирането от ТУК
4. Езици за програмиране и софтуерни технологии
Софтуерните инженери програмират на един или няколко езика,
използвайки комбинация от технологии за разработка. Езикът за програмиране
(например C, C++, C#, Java, PHP, JavaScript, Python) описва формата на командите, които пишем
(дефинира правилата за писане на сорс кода) и е само малка част от знанията.
По-голямата част от знанията, необходими при изграждането на софтуер са технологиите за разработка.
Това са платформи, програмни библиотеки, помощни езици,
технологични рамки (frameworks) и инструменти (tools),
които позволяват създаването на определен тип приложения или системи.
Например, за създаването на компютърни игри се използват така наречените game engines
(като Unity3D и Unreal Engine), които представляват технологични рамки и съвкупност от инструменти за
създаване и контролиране на графика и физика.
Езиците и технологиите се променят и развиват непрекъснато, докато уменията да
създаваш логически инструкции и да мислиш алгоритмично остават
валидни за цял живот.
Нови софтуерни технологии и библиотеки се появяват всеки ден, нови езици и платформи сменят старите на
всеки няколко години, но писането на логически инструкции си остава относително постоянно
като знание през последните 20-30 години.
Езиците и технологиите се използват винаги по няколко заедно,
според софтуера, който се разработва. Съвкупност от взаимосвързани технологии за разработка на софтуер се наричат
технологичен стек (technology stack). Например, един класически уеб разработчик
може да използва технологичен стек LAMP (Linux + Apache + MySQL + PHP), като пише основно на
езика PHP от страна на сървъра, комбиниран с технология за сървърна уеб разработка (като Laravel)
и да използва езиците HTML, CSS и JavaScript от страна на клиента, за да изгради потребителския интерфейс на уеб
приложението. Той използва още бази данни (например MySQL) и езика SQL, за да съхранява, обработва и извлича
данните на потребителите, технология за достъп до базата данни (например Eloquent ORM), среда за програмиране
(например Eclipse или PHP Storm), технологията AJAX за зареждане на динамично съдържание в страниците от
приложението, библиотеките jQuery и Bootstrap за управление на потребителския интерфейс и много други библиотеки,
технологии и инструменти.
Ако отворите една обява за работа за програмист, ще откриете в изискванията няколко езика за програмиране и
голям брой взаимосвързани технологии за разработка. Те винаги се търсят заедно. Един език или технология не
са достатъчни, за да разработваш софтуер. Затова в СофтУни изучаваме най-търсените езици, платформи и комбинации
от технологии (development stacks), които се търсят на пазара на труда, съчетавайки ги с усвояването на фундаментални
знания по създаване на софтуер.
За програмата по софтуерно инженерство на "Софтуерен университет" ЕООД, която обединява 4 специалности с технологиите C#, Java, Python и JavaScript, можеш да кандидатстваш от ТУК.
В "Софтуерен университет" ЕООД в специалността "C# / .NET разработка" се изучават задълбочено всички тези .NET технологии, инструменти и технологични рамки (frameworks), като се набляга на много практическа работа, лабораторни упражнения в клас, домашни, изпити и екипни проекти, без да се пропускат фундаментални предмети като обектно-ориентирано програмиране (ООП) и качествен програмен код.
В "Софтуерен университет" ЕООД в специалността "Java разработка" се изучават задълбочено описаните по-горе Java технологии, библиотеки, инструменти и frameworks с много практическа работа по екипни проекти, упражнения в клас и домашни задания.
В "Софтуерен университет" ЕООД в https://softuni.bg/professions/php се изучават задълбочено описаните по-горе технологии с много практическа работа в клас, по домашни и по практически екипни проекти.
Front-end JavaScript разработчиците изграждат потребителския интерфейс (UI) на уеб приложенията, който се изпълнява в уеб браузъра. Те използват HTML5 технологиите, за да построят външния вид на приложението (използвайки HTML, CSS, графика и мултимедия), JavaScript програмиране и AJAX за интерактивно взаимодействие с потребителя и пишат програмната логика на езика JavaScript като използват много JS библиотеки и технологични рамки за SPA (single-page apps) като jQuery, AngularJS и React. Най-често уеб front-end програмистите разработват с HTML5 и JavaScript видимата за потребителя страна на уеб приложенията (front-end), а сървърната страна (back-end), където се съхраняват и обработват данните и се изпълняват бизнес процесите, се изгражда върху други езици и платформи като Java, .NET и PHP.
Mobile Javascript разработчиците разработват мобилни приложения за Android, iOS и други мобилни платформи с езика JavaScript, използвайки технология за JavaScript mobile приложения като Cordova, Ionic и NativeScript. Мобилните JS разработчици използват HTML, CSS и специализирани компоненти за изграждане на потребителския интерфейс и езика JavaScript заедно с множество JavaScript библиотеки и инструменти за реализация на логиката на приложенията.
Full-Stack JavaScript разработчиците използват езика и на сървърната част, както и на клиента, за изграждане на цялостни (full stack) JS приложения, най-често с т. нар. MEAN стек (MongoDB, Express.js, AngularJS, Node.js). Те построяват потребителския интерфейс на своите приложения (front-end) с HTML5, JavaScript, клиентски JS библиотеки и SPA технологии. За сървърната част (back-end) full-stack JS разработчиците използват Node.js и сървърни JavaScript библиотеки и инструменти като npm, Grunt, gulp и Bower, нерелационни бази данни като MongoDB и JS сървърни технологии за уеб приложения като Express.js.
В "Софтуерен университет" ЕООД в специалността "JavaScript разработка" се изучават цялостно и задълбочено описаните по-горе клиентски и сървърни JavaScript технологии с много практическа работа с лабораторни упражнения в клас, домашни задания и практическа работа по екипни проекти.