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 програмист. Успех!

Comments (1)

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

  1. Review Trust review comparison says:

    Review Trust review comparison

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

RSS feed for comments on this post. TrackBack URL

LEAVE A COMMENT