Menu

Nakov.com logo

Thoughts on Software Engineering

Професия JavaScript Developer: как се става JS програмист? Как да науча JavaScript? От къде да започна с JS?

Днес ще разкажа подробно за професията “JavaScript Developer” и как се става JS програмист, с какви езици и софтуерни технологии работят JavaScript front-end, JS back-end и full-stack JS разработчиците на софтуер и как можем да се научим на JavaScript програмиранеJavaScript уеб фронт-енд разработка и JavaScript server-side разработка, от къде да стартираме и какво да учим, стъпка по стъпка.

Ще разкажа за различните сценарии и платформи, в които се използват езикът JavaScript (за по-кратко JS) и технологиите от JavaScript екосистемата:

  • JavaScript за уеб front-end разработка – за front-end приложения в браузъра и SPA (single page apps), които взаимодействат с HTML и CSS кода в уеб браузъра и променят динамично DOM дървото чрез JS код
  • JavaScript за back-end разработка – за разработка на сървърни приложения с JS, Node.js и инструменти за JS разработка като Grunt, Babel и Webpack
  • Full-stack JavaScript разработка – за разработка на цялостни end-to-end JavaScript приложения, които имат сървърна част (JS-базиран back-end) и клиентска част (JS-базиран front-end)
  • JavaScript за мобилна разработка – за разработка на iOS / Android / Windows Phone / други мобилни приложения с езика JavaScript и технологиите от JS екосистемата
  • JavaScript за desktop разработка – за разработка на настолни приложения с JavaScript, използвайки уеб технологиите и HTML5 платформата и инструменти и библиотеки от JavaScript екосистемата
  • JavaScript за IoT (Internet of Things) – за разработка на приложения за микроконтролери и вградени системи с езика JavaScript

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

Професия “JavaScript разработчик” – видео

Гледайте видеото от Facebook включването на живо със Светлин Наков по темата “Как се става JS програмист?“, в което всичко описано в тази статия е обяснено в по-големи детайли, с примери от практиката и въпроси на живо:

Какво работят JavaScript програмистите?

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

JavaScript програмистите са програмисти, които използват езика JavaScript и JS технологиите за своята работа. Те пишат софтуер (създават програми и софтуерни системи) на JavaScript:

  • Създават JavaScript front-end: съвременни потребителски интерфейси с HTML, CSS, Angular, React, Meteor, Vue.js, Ember.js или друг JS framework
  • Пишат JavaScript back-end: изграждат сървърна логика за обработка на данни с Node.js, Express.js и други сървърни JS технологии и технологични рамки (frameworks)
  • Използват JavaScript инструменти като npm, Grunt, gulp, Bower, Yeoman, ESLint, Babel и Webpack
  • Използват съвременни JS и уеб технологии като asynchronous programming, web sockets, device APIs, AJAX и REST
  • Използват среди за разработка (IDE) като Sublime Text, Atom, Visual Studio Code и WebStorm
  • Имплементират комуникация между клиентски JS приложения и сървърен JS код с AJAX и REST, по web socket или с друга съвременна технология
  • Ползват бази данни като MongoDB и MySQL през JavaScript интерфейси и работни рамки като Mongoose и Sequelize
  • Изграждат мобилни JS приложения с Cordova, React Native, NativeScript или Ionic, или друг JS mobile framework
  • Разработват desktop приложения с JavaScript с Electron.js, HTML, CSS, JS и други front-end технологии
  • Пишат IoT софтуер за микроконтролери с JavaScript, използвайки технологии като JerryScript и Cyclon.js.

Еволюцията на JavaScript

Езикът JavaScript започва развитието си като прост скриптинг инструмент в уеб браузърите на Netscape, а по-късно е пренесен в Internet Explorer, Mozilla и уеб браузърите от зората на Интернет, а в днешни дни е основна градивна част от съвременните уеб браузъри като Chrome, Firefox, Safari, Edge и Opera.

JavaScript е по начало нестрого типизиран (скриптов, интерпретеруем) език с голяма доза функционален стил на програмиране, но постепенно в JS навлизат парадигми от процедурното програмиране, ООП (обектно-ориентирано програмиране) и други програмни концепции. В по-новите имплементации JS започва да се компилира до известна степен и да се изпълнява в оптимизирани виртуални машини за по-добър performance.

По-късно JS се пренася и от страната на сървъра с платформата Node.js и полека става важна и масово използвана технология при сървърната (back-end) разработка. Постепенно, с развитието на JS екосистемата тя се разширява и обхваща мобилната разработка, десктоп приложенията и микроконтролерите. В днешно време може да се каже, че JS е универсален език за разработка на приложен софтуер.

Големият тласък на развитието на JavaScript идва с навлизането на т.нар. “съвременен JavaScript” (modern JavaScript), стандартите ES6 (ECMAScript 6), ES2015, ES2016 / ES7, ES2017 / ES8, ES2018 и по-новите. Те добавят съвременни техники от другите езици (като класическо ООП с класове и наследяване, ламбда изрази, генератори, подобрен синтаксис за паралелност, асинхронни функции, съвременен синтаксис и други) и отстраняват добре известни проблеми и болки от JS миналото. В днешно време под JavaScript се подразбира “съвременният JS”, т.е. версиите след ES6. С помощта на транспилатори можем спокойно да пишем на съвременен JS и да стартираме кода под стари браузъри и JS среди.

С навлизането на HTML5 платформата в съвременните уеб браузъри се появяват десетки съвременни уеб технологии (като WebSocket API, WebRTC, HTTP/2, SVG, WebGL, geo-location API, local storage APIs, mobile device APIs), които дават възможност за изграждане на иновативни JS технологии и модерни JS технологични рамки (frameworks). JavaScript е основният език за програмиране за HTML5 платформата и без съмнение ще се ползва все повече и ще продължава да се развива бурно и иновативно.

Факти за JavaScript (JS). Знаете ли, че?

  • Стартовата заплата на един junior JavaScript developer е 800-1000 лв. чисто.
  • JavaScript е в топ 5 на най-търсените технологии в софтуерната индустрия в България.
  • JavaScript екосистемата е сред най-бързо развиващите се в софтуерната индустрия.
  • Езикът JavaScript се използва от над 10 милиона софтуерни специалисти в целия свят и в над 50% от проектите в GitHub.
  • JavaScript технологиите се ползват за разработка на front-end приложения, сървърен софтуер, desktop приложения, мобилни приложения и IoT софтуер.

Защо да уча JavaScript, HTML5 и Node.js?

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

Защо да се захващате точно с JavaScript екосистемата (с технологии като Vanilla JS, Angular, React, Meteor, Node.js, MongoDB, Express.js и други JS технологии), а не с някоя друга платформа за софтуерна разработка?

  • Езикът JavaScript е най-използваният съвременен интерпретиран език за програмиране в света, насочен към разработка на front-end и сървърни проекти. Той комбинира функционално, процедурно и обектно-ориентирано програмиране и е асинхронен по природа. JavaScript е лесен за учене и има огромна общност от разработчици около него, а JS технологиите непрестанно се развиват и заменят от нови и по-съвършени.
  • JavaScript технологиите имат много широко предназначение: използват се за изграждане на front-end приложения (потребителски интерфейс), за скалируеми сървърни приложения (back-end), за full-stack (цялостни) JS приложения, за изоморфни JS приложения (isomorphocs JavaScript), за десктоп (настолни) приложения, мобилни апликации, приложения за микроконтролери и cloud-базирани системи.
  • Огромно търсене на JavaScript програмисти. Поради растящите нужди от JS front-end и full-stack JS разработка и разрастващото се приложение на JavaScript технологиите в дигиталните индустрии, предлагането на работа за JavaScript developers е сред топ 5 на най-използваните и най-търсените в софтуерната индустрия в България, а езикът JavaScript стандартно изискване за всички уеб разработчици (PHP, C#, Java и Pythn developers). Погледнете в сайтовете за обяви за работа за JavaScript специалисти, за да се уверите колко много отворени позиции има, свързани с езика JavaScript и JS технологиите.
  • Редом с HTML, CSS и SQL, JavaScript е почти задължителен език за всички софтуерни инженери по целия свят. Малко или много, всеки софтуерен инженер трябва да владее JavaScript и JS технологии, за да ги използва редом с основните езици и платформи, за които програмира. Научете JavaScript, просто се налага!

Front-End JavaScript

В софтуерната индустрия понятията “front-end developer” и “front-end разработка” могат да означават две различни неща:

  • Сайтаджия, който реже Photoshop дизайни към HTML, прави уеб страници и сайтове с HTML и CSS, ползва CSS frameworks като Bootstrap, и по между другито пише и по някой ред елементарен JS код с jQuery за ровичкане в DOM дървото и интегрира JS компоненти и библиотеки за раздвижване на сайтовете (слайдери, popups, JS effects, UI компоненти и други). Това е ниското ниво web front-end developer, който “прави сайтовете красиви и раздвижени”.
  • JavaScript front-end developer, който разработва сериозен уеб потребителски интерфейс (Web front-end UI) със съвременни JS средства (като Vanilla JS) и JS front-end библиотеки (като AngularJS, React + Redux + Flux, Vue.js, Ember.js, Meteor и други), комуникира със сървърна логика с AJAX, web sockets и други технологии, ползва свъременни UI библиотеки и пише големи и сложни JS single page приложения. Това е високото ниво JS front-end developer и изисква много по-високи умения от обикновен “сайтаджия”.

Независимо дали става дума за сайтаджии или корави JS front-end developers, и двете групи фронт-ендъри решават проблеми, свръзани с cross-browser compatibility и поддръжка на остарели браузъри и технологиите около тях (остарял HTML и стари версии на CSS, остарял JavaScript, поддръжка на стария JavaScript стандарт ES5, липса на web sockets, SVG, WebGL и HTTP/2 имплементация и други). За тези цели JS front-end разработчиците ползват библиотеки, техники и инструменти за поддръжка на стари бразуъри, като HTML5 shims и polyfills и разчитат на JS-подобни езици като CoffeeScript, TypeScript и транспилатори като Babel за превеждане между различни версии и варианти на JS езиците като ES6, ES2015, ES2016 и ES2017.

Какво прави един JS front-end developer?

Има няколко вида front-end разработчици:

  • Web front-end специалистите разработват UI с платформата HTML5. Те създават динамични страници с HTML, CSS и JavaScript.
  • JavaScript уеб front-end разработчиците използват JS за работа с DOM, работят с jQuery и други библиотеки, използват UI toolkits като jQuery UI, KendoUI, Webix, JQwidgets, EasyUI и други.
  • JavaScript SPA разработчиците разработват сложни, съвременни потребителски интерфейси с чист JavaScript (Vanilla JS) и JS front-end технологични рамки (frameworks) като AngularJS, React, Vue.js, Ember.js и други JS библиотеки като jQuery.

Всички JS front-end разработчици разработват потребителски интерфейси с HTML, CSS и JavaScript за HTML5 платформата, но го правят с различни технологии и понякога използвайки различна философия и от там и различни нива на умения по програмиране и владеене на front-end JS библиотеки и технологии.

Съвременните течения в JS front-end frameworks следват все повече концепцията “Progressive Web Apps“, която изисква JS приложенията да са безкомпромисно бързи, надеждни и ангажиращи потребителя и взаимодействащи цялостно с неговото работно устройство и работна среда.

JavaScript for Desktop

JavaScript технологи като Electron.js  и NW.js позволяват разработка на JS cross-platform desktop apps, т.е. настолни приложения, преносими към различни платформи (Windows, Mac OS и Linux). Пример за широко-използвани JS desktop приложения, изградени с Electron са средата за разработка Visual Studio Code и чат-системата Slack.

JavaScript for Mobile

JavaScript е широко използвана технология за писане на мобилни приложения за iOS, Android, Windows Phone и други мобилни платформи. Основно предимство при писането на JS за мобилни платформи, е многоплатформеност (write once, run anywhere), ползване на уеб технологиите и езика JavaScript и добре известни JS библиотеки и бягането от неприятни езици като Objective C и C++ for mobile.

Има два вида JS mobile технологии:

  • Web UI-based mobile apps: използват HTML и CSS, изпълнявани в уеб-браузъра на мобилното устройство. Такива приложения обикновено са бавни и не са много гъвкави, понякога изглеждат различно от native приложенията. Създават се с JS технологии за мобилни приложения като:
    • Cordova / PhoneGap + jQuery UI / Mobile Angular UI
    • Ionic (runs over Cordova)
    • Meteor (runs over Cordova)
  • Native mobile apps: използват езика JavaScript, но рисуват потребителския интерфейс на мобилното приложение с комбинация от HTML, CSS и native UI компоненти от съответната мобилна платформа (Android / iOS /друга) и ползват native APIs. По този начин се запазва пълната функционалност на мобилната платформа и натуралния външен вид на приложението, а бързодействието е същото като native mobile app (с Java, Swift, Objective C или XAML). Ето и най-използваните native JS mobile frameworks:
    • React Native
    • NativeScript
    • Titanium / Appcelerator

Back-End JavaScript

Платформата Node.js е задвижващата сила на JS back-end разработката. Тя представлява сървърна JavaScript виртуална машина (Google V8 JS engine), която работи асинхронно, с неблокиращи операции и event-driven workflow, и с това постига невероятна производителност и ефективност при обслужване на голям брой паралелни потребители и задачи. Заедно с модулната система npm (Node package manager), Node.js предоставя богат набор от библиотеки и технологии за сървърна back-end разработка.

От страна на сървъра JavaScript разработката стъпва върху широк набор от JS инструменти за разработка (build tools, transpilers, bundling tools и други) като Grunt, Gulp, Bower, Babel, Browserify, Webpack, Yeoman и ESLint.

Back-end JS разработката разчита сериозно на съвременни JS библиотеки и JS технологични рамки (JS frameworks) като:

  • JS библиотеки за server-side уеб разработка като Express.js (за обслужване на HTTP заявки, уеб сървър функционалност и REST услуги + template engines като Jade, Mustache и Pug) и Socket.io (за real-time комуникация по web socket).
  • Съвърни компоненти от цялостни full-stack JS frameworks като Mojito.js и Meteor.

Full-Stack JavaScript

Концепцията “full-stack JavaScript” и професията “full-stack developer” са свързани с изработка на цялостни JavaScript приложения, в които се използва езикът JavaScript както за клиентската front-end функционалност (потребителски интерфейс, клиентска логика), така и за сървърната back-end функционалност (сървърна логика, данни, бизнес процеси). Думичката “stack” произхожда от съвместното използване на последователно навързани една с друга технологии, които осигуряват:

  • Сървърна, хостинг и мрежова среда (най-често nginx + Node.js + JS библиотеки в Linux, container или cloud среда)
  • Слой за данни (база данни MongoDB, MySQL / MariaDB, Redis или друга + JavaScript обекти и функционалност за достъп до данните)
  • Бизнес логика (JavaScript модули, обекти и класове)
  • API layer (примерно MVC framework с RESTful интерфейс като Express.js или web sockets комуникация като Socket.io или цялостен API layer framework като Total.js)
  • UI framework за уеб или mobile front-end (най-често базиран на HTML + CSS + Vanilla JS + JS библиотеки) или SPA framework като AngularJS, ReactJS, Ember.js, Vue.js, Backbone.js или друга JS front-end библиотека.

Ето и няколко от най-популярните JS full-stack development технологии:

  • MEAN Stack: MongoDB + Express.js + AngularJS + Node.js
  • MERN StackMongoDB + Express.js + React + Redux + Node.js + Webpack
  • Meteor: Node.js + MongoDB + Connect + Distributed Data Protocol (DDP) + jQuery + client-side UI framework +  Cordova + hot code reload + още куп технологии

Isomorphic JavaScript

Изоморфните JS приложения са вариант на full-stack JS приложенията и се изграждат върху цялостен (isomorphic) JS framework, който работи едновременно на сървъра (back-end) и на клиента (front-end). Изоморфните JavaScript технологии и работни рамки предлагат цялостна архитектура, структура и организация на JS приложението (сървърна и клиентска част), като предоставят технологии, които обработват и подават данните от страна на бек-енда и поемат данните и визуализират потребителския интерфейс от страна на фронт-енда. Така един единствен изоморфен JS framework се ползва и като front-end и като back-end технология едновременно, което улеснява поддръжката, позволява споделяне на голямо количество код между клиента и сървъра и улеснява разработката и поддръжката. Например компоненти, технологии за рендиране, templating, data binding, MVC концепции и други framework компоненти се ползват и на сървъра (в Node.js) и на клиента (в уеб браузъра). Пример за такива isomorphic JS frameworks са Meteor, RendrDerbyJS и други. Счита се, че това ново течение JS приложение е бъдещето на full-stack разработката.

Embedded JavaScript

JavaScript за вградени системи (embedded systems) и микроконтролери е технология за изпълнение на JavaScript код с тънък JS engine като JerryScript. С нейна помощ микроконтролери и мини-компютри като Arduino, Raspberry Pi и Tessel се програмират директно с JavaScript, а чрез специализирани библиотеки и API извиквания може да се управляват входове и изходи с общо предназначение (GPIO), да се четат и пишат аналоговите и цифровите входове и изходи на контролера (digital & analog IO pins), и да се взаимодейства със сензори и управлява закачена за контролера периферия.

Как да стана JavaScript Developer?

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

  • Фундаментални софтуерни умения: отлично ниво на програмиране, сорс контрол системи, базови структури от данни, функционално програмиране, ООП, качествен код, бази данни, уеб стандарти, екипно взаимодействие с Git и GitHub, автоматизация на тестването с unit testing и mocking, test-driven development (TDD).
  • Практически технологии за уеб front-end с JavaScript: платформа HTML5, уеб front-end технологии HTML, CSS, JavaScript и jQuery, работа с AJAX и REST базирани услуги с JSON и HTTP и създаване на Single-Page-Apps с JS frameworks като Angular и React.
  • Технологии за JS сървърна разработка (back-end): MEAN стек, MERN стек, програмиране за Node.js, използване на полулярни npm пакети, уеб framework Express.js, използване на нерелационна база данни MongoDB и build на JS проекти с Grunt, Babel и Webpack и други JS server-side frameworks и JS библиотеки.

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

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

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

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

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

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

Научете се да програмирате (натрупайте coding skills) с езика JavaScript и подходяща среда за разработка като WebStormVisual Studio Code, Sublime Text или другo IDE. Това включва работа с променливи и данни, писане на условни конструкции (проверки) и цикли, използване на функции, работа с масиви и списъци, обработка на символни низове (стрингове), работа с обекти, композиция на обекти, работа с модули и класове, работа със среда за разработка (IDE) и други базови програмни умения.

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

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

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

Алгоритмичното мислене, известно още като “математическо мислене” и “инженерно мислене“, е донякъде свързано с овладяване на базови математически концепции, които са мостът между математиката и програмирането: работа с координатни системи, използване на вектори и матрици, разбиране на поведението на дискертни и недискретни математически функции, концепцията “чиста функция”, крайните автомати и state machines, базови понятия от комбинаторика и статистика, понятията “алгоритъм”, “сложност на алгоритъм”, математическо моделиране на проблеми от практиката и други. Всичко това се изучава когато теоретичните постановки, известни от математиката, се използват и приложат на практика чрез решаване на задачи и писане на работещи алгоритми.

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

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

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

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

  • Базови познания по структури от данни и алгоритми: сложност на алгоритъм, работа с линейни структури данни (списък, стек, опашка), дървовидни структури (дървета  графи) и хеш-таблици (речници), алгоритми за търсене и сортиране, рекурсия, комбинаторика, графи, динамично оптимиране и други. Изучават се подробно в курсовете по структури от данни и алгоритми.
  • Работа със сорс контрол системи (хранилища за сорс код) като Git, SVN и платформи за колаборация като GitHub, клониране на repository, промяна, commit и push на промените, решаване на конфликти и merge, работа със задачи (issue tracking), упправление на задачи с инструументи като GitHub Issues и Trello. Изучават се в курса по фундаментални основи и принципи на програмирането.
  • Функционално програмиране, работа с функции, функционални изрази, ламбда функции, функции от по-висок ред, функции, връщащи функция, затваряне на състояния с closure, IIFE, revealing module и други. Изучават се в курсовете по JavaScript основи и JavaScript за напреднали.
  • Обектно-ориентирано програмиране (ООП) и шаблони за дизайн, работа с класове и интерфейси, капсулация на данни (encapsulation), наследяване на класове и имплементация на интерфейси, абстракция и полиморфизъм, хвърляне и хващане на изключения, работа с OO design patterns. Изучават се частично в курса JavaScript за напреднали, тъй като в JavaScript няма пълна имплементация на обектно-ориентирано програмиране и някои ООП техники се нуждаят от адаптация.
  • Компонентно тестване (unit testing), mocking (подпъхване на функционалност) и работа с инструменти за unit testing като Mocha и Chai и концепцията за писане на тестовете преди кода (test-driven development – TDD). Изучават се в курса JavaScript за напреднали.
  • Бази от данни и SQL, създаване на релационна схема чрез моделиране на таблици и връзки (E/R diagram), писане на SQL заявки за CRUD операции чрез DML заявките, извличане на данни с SQL SELECT, селекция, съединения на таблици (joins), филтриране с WHERE, сортиране, групиране, обединения, вмъкване на данни с SQL INSERT, изтриване на данни с SQL DELETE, модификация на данни с SQL UPDATE, работа с DDL заявки, съхранени процедури и функции на ниво база. Релационните бази данни се изучават в курса по бази данни с фокус върху MySQL / MariaDB. Нерелационните бази данни (NoSQL databases) се изучават в курса по сървърно JS програмиране “Node.js & Express.js основи“.
  • Уеб приложния и HTTP – познания в тази област са необходими на всеки съвременен софтуерен разработчик, тъй като болшинството от мрежовата комуникация между приложенията работи с HTTP протокола и web sockets. Концепциите за изграждане на уеб приложения и REST услуги са също основополагащи за практическата софтуерна разработка. Такива фундаментални знания и умения за уеб разработка се изграждат в няколко тренинга в СофтУни: курсът “Софтуерни технологии“, курсът по “Front-End JavaScript разработка” и курса по “сървърно JS програмиране с Node.js и Express.js“.
  • Front-end разработка, работа с HTML, CSS и JavaScript са сред редовните изисквания в обявите за работа за софтуерни инженери, програмисти и разработчици. Тези умения се развиват в курса по HTML и CSS и в курсовете за JavaScript front-end разработка.
  • Софтуерни архитектури, client-server, MVC – това са концептуални познания от софтуерното инженерство. Те се изучават на начално ниво в курса “Софтуерни технологии” и се развиват в технологичните курсове за създаване на single-page apps “Front-End разработка с Angular” и “Front-End приложения с React и Redux” чрез много практика.
  • За развитието на един софтуерен инженер, от плюс са уменията за работа с операционни системи и мрежи, познаване на хардуера, уменията за мрежово програмиране, разбиране на парадигмите на конкурентно (паралелно) програмиране, използване на процеси и методологии за разработка на софтуер (например Scrum и agile development), разбиране на концепции и инструменти за софтуерно тестване, разбиране на принципи и инструменти за софтуерен дизайн и много други. Такива знания и умения се развиват с изборните курсове в СофтУни.

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

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

  • Технологии за Front-End JavaScript разработка: изучават се доста сериозно в СофтУни по време на професионалните модули от професията “JavaScript Developer”. В учебния план са включени задълбочени курсове по уеб сайтове с HTML и CSS, курс по “JavaScript front-end разработка” и курсове по “Single Page Apps разработка с Angular” и “Front-End разработка с React и Redux“.
    • Учи се и се практикува сериозно изграждането на уеб сайтове и уеб-базиран потребителски интерфейс с HTML и CSS, основни HTML тагове, структура на HTML документ, семaнтичен HTML, работа с HTML елементи и атрибути, div, span, параграфи, таблици, форми и контроли, CSS селектори и правила за разположение (layout) и стилизиране, CSS препроцесори Sass и Less и CSS framework Bootstrap, концепции за адаптивен дизайн, progressive enhancement и graceful degradation.
    • Изучава се изграждането на уеб front-end приложения с client-side MVC frameworks, които извличат данни от back-end REST service с AJAX или друга комуникация и рендират Web UI от JSON данни чрез шаблони, компоненти или друга UI технология. Използват се jQuery и JS библиотеки за front-end JS разработка, ООП в JavaScript, closures, шаблони за модул и revealing module и библиотеки за JS-базиран user interface като React и AngularJS.
  • Технологии за Back-End JavaScript разработка: сървърните JS технологии се изучават се доста сериозно в СофтУни. Обученията включват няколко курса за концепциите на JavaScript (JavaScript основи и JavaScript за напреднали) и практически курс по сървърно JS програмиране с Node.js, Express.js и MongoDB“.
    • Изучават се всички по-масово използвани инструменти от сървърната JavaScript разработка (пакетни системи npm и bower, билд системи grunt, gulp и Webpack, транспилация с Babel, unit testing с mocha и chai, TDD, качество на кода и проверка с ESLint, код генерация с Yeoman и други).
    • По време на курсовете студентите създават RESTful back-end APIs и server-side Web apps с JavaScript, Node.js, Express.js и NoSQL база данни MongoDB, ползват template engines като Jade и Mustache, рендират динамичен HTML и подават данни в JSON и други формати.
  • Технологии за Full-Stack JavaScript разработка: при обучението на JS разработчици в СофтУни комбинираме JS front-end с JS-back-end разработка и така се курсистите получават задълбочени познания по MEAN stack и MERN stack за full-stack JS development.

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

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

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

Как да стана JavaScript програмист?

Да се върнем на основния въпрос: “Как да стана JavaScript програмист?“, “Как да науча JavaScript front-end, JS back-end и JS full-stack технологиите и да започна работа като junior JS developer?“, “Как да науча JavaScript програмирането“? Имам кратък и наистина добър отговор:

Запиши JavaScript професията в СофтУни

Не е лесно, нито бързо, нито става без учене, но ако инвестираш в себе си сериозно, за 1-2 години, стъпка по стъпка, ще получиш добро начално JavaScript ниво като за работа като JavaScript програмист. Успех!

Previews (6,790), Views (85), Comments (0)

RSS feed for comments on this post. TrackBack URL

LEAVE A COMMENT