Quantcast
Channel: СофтУни – Svetlin Nakov – Official Web Site and Blog
Viewing all 51 articles
Browse latest View live

Професия “Програмист”…и останалите ИТ професии –Наков @ УНСС

$
0
0

Професия "програмист" ... и останалите ИТ професии - Наков @ УНСС
Днес направих надъхващо представяне на професиите в ИТ сектора пред 150 студента от УНСС, на събитие организирано от Бизнес клуба на УНСС и ERP академията. Пускам видеото, понеже имаше запитвания. Заслушайте се и се запалете по ИТ професиите. Осигурете си едно добро бъдеще!

Видео: Наков за ИТ професиите, програмирането и как да станем ИТ специалисти

Ако още се чудите от къде да започнете своята ИТ подготовка за бъдеща кариера, запишете се в СофтУни! Обучавайте се безплатно, пробвайте програмирането, опитайте правенето на сайтове, поиграйте си с информационните технологии, научете за софтуерното тестване и QA, зарибете се по дигиталните изкуства, заиграйте се с дигиталния маркетинг и други съвременни професии. Стенете ИТ и започнете работа в един от най-перспективните сектори на индустрията.


СофтУни 3.0 –един нов Софтуерен университет

$
0
0

СофтУни 3.0 вече е факт. Разгледай новата образователна концепция на Софтуерния университет: softuni.bg/curriculum. Това е най-голямата (и дори преобразяваща) промяна в СофтУни от създаването му през 2013 г.

СофтУни 3.0 накратко

  • Избираш измежду 4 специалности (специализации на професията софтуерен инженер): JavaScript, PHP, Java и .NET разработка
  • Започваш работа след 1-2 години (според напредъка и резултатите)
    • СофтУни ти намира работа, ако научиш поне 70% от изучавания материал
    • Ако учиш бързо, може да започнеш работа за по-малко от година
  • Завършваш СофтУни и се дипломираш за 2-3 години (според специалността и според колко бързо учиш)
  • Домашните се заменят с работа в клас, за да се гарантира научаване на материала
  • Удвояваме учебните занятия: 4-5 дни в седмицата по 4 часа присъствено или онлайн

Наков представя СофтУни 3.0

Как работи новият Софтуерен университет 3.0?

Новият учебен план в СофтУни работи по следния начин:

  1. Всичко започва с безплатен курсОснови на програмирането
    • Само практическо програмиране, почти без теория, с много кодене в клас
    • Курсът е за абсолютно начинаещи (става дори за деца 4-5 клас)
    • Учиш по 4 часа седмично в продължение на 2 месеца, почти без домашни
  2. Приемен изпит
    • В края на безплатния курс по основи на програмирането полагаш приемен изпит за СофтУни (6 практически задачи за 4 часа)
    • Влизаш в СофтУни при резултат поне 50% решени задачи на приемния изпит
    • Ако не се справиш с приемния изпит, можеш да се явяваш отново или да учиш за ИТ специалист (информационни технологии, мрежи, мултимедия и офис приложения, изграждане на уеб сайтове, хардуер и други технологични предмети)
  3. Приетите за студенти продължават с опознавателен модул “Software Technologies”
    • За 4 месеца се запознаваш практически с HTML5, JavaScript, PHP, Java Web и .NET Web разработката, за да можеш да си избереш специалност
    • Интензивността е 4 пъти седмично по 4 часа, почти без домашни
    • Ако си ултра, мега добър, може да получиш предложение за работа още след този модул
  4. Избираш си специалност (професия) измежду следните:
    • .NET разработка
    • Java разработка
    • JavaScript разработка
    • PHP разработка
  5. Обучаваш се в избраната специалност (година-две)
    • Продължителност: 2-6 модула по 4 месеца (задължителни, препоръчителни и изборни модули)
    • Интензивност: 5 пъти седмично по 4 часа (всеки работен ден, почти без домашни)
    • Реално няма промяна в седмичното натоварване, само прехвърляме работата по домашните в клас, за да осигурим по-ефективна работа и да гарантираме достъп до помощ на живо от асистенти и преподаватели
    • Двойно повече учебни занятия с по-малко материал на едно занятие
    • Всички учебни предмети се изучават на избрания език за програмиране и платформа за разработка
  6. Започваш работа след 1-2 години (ако учиш сериозно)
    • СофтУни ти предлага работа при усвояване на 70% от изучавания материал
    • Ако напредваш супер бързо, започваш работа още след първите няколко месеца
    • Ако напредваш нормално -> започваш работа след 1-2 години
    • Ако си много слаб или несериозен, СофтУни няма да ти предложи работа

SoftUni 3.0 - учебен план

Новата образователна концепция СофтУни 3.0” влиза в сила от май 2016 г. с първия прием в модул “Software Technologies“.

Упражнения в клас вместо домашни

Махаме домашните и удвояваме учебните занятия (практика на живо в клас). Защо ли? Ами повечето студенти не пишат домашни и се провалят заради несериозно отношение към домашните. Затова пренасяме домашните в клас и осигуряваме помощ на живо.

  • Прехвърляме работата по домашните като практика в клас – решаване на задачи и здраво писане на код под наставленията на преподаватели, асистенти и ментори
  • Онлайн студентите гледат видео с обяснения как да си направят домашните
  • Планираме 75% практика (студентите пишат код в клас) и 25% преподаване, обяснения на учебния материал и демонстрации (трейнърите пишат код на живо)

работа на живо в клас

Нова кредитна система – кредитите измерват уменията

  • Въвеждаме нова кредитна система, която отразява напредъка в професията
  • Всеки курс дава учебни кредити според трудността, продължителността и според реално наученото в него (изкараната оценка накрая)
  • Всеки курс дава определен брой максимални кредити (между 4 и 12). По-трудните и по-обемните курсове дават повече кредити.
  • Кредитите се разпределят пропорционално на оценката: при нисък резултат (курс взет едвам-едвам с тройка) се получават 1/3 от кредитите за курса; при висок резултат (курс взет с петица или повече) се получават всички кредити.
  • Кредитите измерват колко си близко до усвояване на професията “софтуерен инженер”. Повече кредити означава, че си по-добър програмист. Фактически СофтУни кредитите стават мерна единица за владеене на програмирането.
  • При натрупване на достатъчно кредити ⇒ предлагаме работа
  • Диплома се взима при покриване на задължителните модули и натрупване на достатъчно кредити (според специалността)
  • Предлагаме ти работа, ако научиш поне 70% от изучавания материал (70-100 кредита от 130-170 общо според специалността)

СофтУни кредити

Такси по-ниски от СУ и стипендии за най-силните

СофтУни е лидер не само в качеството на практическото образование и реалната подготовка за работа в софтуерната индустрия, но и предлага безплатно обучение за най-добрите и по-ниски такси за обучение от Софийски университет (СУ).

  • СофтУни предлага безплатно обучение за топ 10% от студентите. Най-добрите 10% от студентите в присъствена форма на обучение стават стипендианти и се освобождават от такси за обучение.
  • Таксите в СофтУни са 360 лв. на семестър за редовно (присъствено) обучение и 180 лв. на семестър за онлайн обучение (по 90 лв. на месец присъствено и по 45 лв. на месец онлайн)
  • За сравнение семестрите по специалност “софтуерно инженерство” във ФМИ на Софийски университет по държавна поръчка към май 2016 г. са 375 лв. на семестър, а от септември 2016 г. се вдигат на 400 лв. на семестър.

СофтУни 3.0 - такси за обучение

Историята на СофтУни

СофтУни - история

  • СофтУни беше създаден на 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 студента.
  • На 7.05.2014 г. започва обучението на първия випуск на СофтУни с тогавашното ниво #1 и курса “Java Basics” с 550 приети за обучение студенти.
  • От 5.01.2015 г. СофтУни се премества в нов учебен център, на ул. Тинтява, до Интерпред. Започва с 2 големи учебни зали, които лека полека се увеличават.
  • Докато тече СофтУни 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.

Кандидатствай в СофтУни сега

СофтУни тех фест –хакатон за технологии в образованието – 4-5 юни @ СофтУни

$
0
0

Елате на СофтУни тех фестхакатон за технологии в образованието на 4-5 юни 2016 г. в София.

Събитието “SoftUni Tech Fest” ще събере стотици софтуерни разработчици и ИТ специалисти, които ще обединят усилия за решаването на образователен проблем чрез технологии. Събитието ще се проведе на 4-5 юни 2016 г. в София в учебната база на Софтуерен университет (СофтУни). За победителите ви очакват награди на стойност над 10 000 лв.

СофтУни тех фест - 4-5 юни 2016

Категории на SoftUni Tech Fest

Можете да участвате индивидуално или в отбор в следните категории:

  • Софтуерна разработка – уеб, мобилни и софтуерни приложения с образователна цел
  • Уеб сайтове с образователна цел
  • Мултимедийни разработки (филм, анимация, визуализация, …)

Кой може да участва в хакатона на СофтУни?

Могат да участват всички с интерес към информационните технологии: ученици, студенти, работещи и безработни, без ограничение по възраст.

Регистрация за участие

Моля регистрирайте отбора си до 25 май 2016 г. от сайта на хакатона: http://techfest.softuni.bg.

Най-добрите 90 проекта ще бъдат одобрени за участие на финалите.

SoftUni Camp – 14-21 август 2016 –летен лагер за програмисти и фенове на технологиите –за ученици, студенти и работещи

$
0
0

Елате на СофтУни кемпа от 14 до 21 август 2016 в Хисаря!

  • Елате да се разцепим от програмиране и забавления.
  • За абсолютно начинаещи и за напреднали
  • Всеки ден практическо програмиране, спорт, плаж, игри и забавления

Защо да дойда на летния СофтУни лагер по програмиране?

  • За напредналите: всеки ден програмиране до дупка – всеки ден практически упражнения: уеб разработка, бази данни, Linux, гейм разработка, Unity, QA автоматизация, мобилни приложения, .NET, хардуер, запояване, Arduino
  • За начинаещите: обучение по програмиране от абсолютната нула. За 8 дни ще се научите да пишете код и ще положите основите на своя път към програмирането. Започваме от нулата. Изключително подходящо за ученици (от 4 до 12 клас).
  • Богата спортна програма: всеки ден спортни занимания, турнири по футбол, волейбол, народна топка, компютърни игри, електронни спортове, двигателна култура и движение
  • Вечерни забавления: забави, песни, танци – кой каквото харесва
  • Плаж всеки ден – нали август, а Хисаря е известен летен курорт с минерални басейни
  • Общност – намерете приятели с интереси към програмирането и технологиите

softuni-camp-august-2016-hisarya

Цената е символична!

Елате със собствено настаняване и храна на символичната цена от 40 лв. за 8 дни или на палатка за 185 лв. за 8 дни или изберете all inclusive настаняване + храна + учебна програма + спортове и забавления за 200-300 лв. (според пакета) или елате само за 2-3 дни да се разцепим!

Учебна програма

Какво ще учим докато се забавляваме?

За начинаещите – базови умения по програмиране

Ако посетите обученията, гарантирано ще усвоите основите на писането на код. Обучението е 100% на български език. Подходящо е за ученици от 4 клас нагоре. Ето програмата за абсолютно начинаещите (8 дни по 5-6 часа на ден):

  • Първи стъпки в програмирането
  • Прости пресмятания с числа (работа с данни)
  • Логически проверки (if конструкции)
  • По-сложни логически проверки (if-else, or, and, not)
  • Повторения (цикли) – for, while
  • Чертане на фигурки с цикли
  • По-сложни цикли (вложени цикли)
  • Подготовка за практически изпит по програмиране

Носете си лаптоп!

За напредналите – разнообразите от съвременни технологии

Напредналите ще пишат код всеки ден с различна технология. Носете си лаптоп. Ето и програмата по дни:

Разработка за платформа .NET Core
Лектор: Ивайло Кенов (СофтУни)
Дата: 14.08 (неделя)

Angular 2 – разработка на уеб, мобилни и десктоп приложения
Лектор: Ивайло Кенов (СофтУни)
Дата: 15.08 (понеделник)

Linux for Developers
Лектор: Анатолий Димитров (HP)
Дата: 16.08 (вторник)

Запояване и програмиране на Ардуино платки
Лектор: Цветан Узунов (Olimex)
Дата: 17.08 (сряда)

Мобилни приложения с AppInventor
Лектор: Ангел Георгиев (СофтУни)
Дата: 18.08 (четвъртък)

Качество на софтуера и автоматизирано тестване (QA)
Лектор: Иван Йонков (СофтУни)
Дата: 19.08 (петък)

Разработка на игри с Unity 3D
Лектор: Божидар Гевечанов (СофтУни)
Дата: 20.08 (събота)

Oracle Database – първи стъпки
Лектор: Светлин Наков (СофтУни)
Дата: 21.08 (неделя)

Запишете за СофтУни летния лагер сега!

conf.softuni.bg

Podcast за предприемачество, иновации и вдъхновение –Наков @ Wake Up and Stand Up &Свръхчовекът

$
0
0

Наскоро участвах в подкаст за предприемачество, иновации и вдъхновение, записан и подготвен от Wake Up and Start Up. Получи се готино, затова ви го споделям. Може да се слуша в колата при дълги пътувания.

Част I – историята около Светлин Наков и Софтуерния университет (СофтУни)

Слушайте подкаста със Светлин Наков (част I – по пътя към Софтуерния университет): http://wakeupandstartup.com/svetlin-nakov/.

Светлин Наков пред Stand Up and Start Up

Част II – съвети за предприемачи от Светлин Наков

Слушайте подкаста със Светлин Наков (част II – съвети за предприемачи): http://wakeupandstartup.com/svetlin-nakov-chast-2/.

Светлин Наков пред Stand Up and Start Up

Вдъхновение и успехи на всички бъдещи предприемачи!

Действайте, правете, пробвайте, опитвайте, търсете, създавайте, творете!

Стига сте чели статии и слушали подкастове, а започнете да действате!

Свръхчовекът с Жоро Ненов: Наков за вдъхновението, енергията и предприемачеството

Като стана дума за podcasts с мен, наскоро записахме още един вдъхновяващ епизод, в “Свръхчовекът с Жоро Ненов“. Пускам ви линк и към него: https://soundcloud.com/user-144960674/thesuperhumanpodcast-episode003.

Свръхчовекът - Светлин Наков за вдъхновението
И отново припомням на всички: успехът идва с правене, не със слушане на подкастове!

Светлин Наков за ИТ образванието пред ТВ+

$
0
0

Наскоро (септември 2016) участвах в едно предаване в ТВ+ и разказах за моята визия за ИТ образование, за дигиталните професии, за бъдещето на ИТ индустрията, за Софтуерния университет (СофтУни), професиите, преподавателите и подготовката на качествени програмисти, ИТ специалисти и дигитални маркетинг специалисти и пътя към дигитализация на цялото общество, наред с образователните предизвикателства на дигиталния свят.

И понеже не съм блогвал скоро, споделям и още едно телевизионно участие (от юли 2016) – за липсата на ИТ специалисти през телевизия “Европа”.

И като съм почнал да шервам, споделям и едно по-подробно интервю от ИТ конференцията на JobTiger (юли 2016).

Споделям още и един разказ за моя път на ИТ предприемач (юни 2016).

Имах и едно участие в StartUp Grind (август 2016).

И няколко думи за Софтуерния университет (СофтУни) от януари 2016.

За математиката в програмирането и дали ни трябва наистина: математика, статистика, data science и machine learning @ СофтУни

$
0
0

Data Science @ SoftUni

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

СофтУни, математика и програмиране

Трябва ли един програмист да знае математика? Математика и програмиране – свързани ли са? Трябва ли да си добър математик, за да станеш програмист? Ако си добър математик, ще станеш ли добър програмист? Постоянно ме питат такива въпроси и постоянно им отговарям, че не е задължително да си добър математик, за да станеш добър програмист и аз самия съм отлично доказателство за това.

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

В началото СофтУни започна като алтернатива на държавното ИТ образование, изградена върху парадигмата “учене чрез правене“, с много практика и изграждане на реални умения, които работодателите търсят. За повечето фирми по-важни се оказаха конкретни езици за програмиране и софтуерни технологии (като PHP и Java EE), а не толкова математически фундамент. Така математиката си остана на заден план, заради липсата на търсене и заради липсата на желание у студентите да се занимават с математика и теория. С времето СофУни се утвърди като безспорен лидер на пазара на ИТ обучения и започна да подготвя повече софтуерни инженери и ИТ специалисти, отколкото всички останали учебни заведения, взети заедно.

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

Така се стигна и до електроникаструктури от данни, алгоритми, математика, data scienceмашинно обучение и други по-сложни специализации. Такива курсове изграждат едно по-високо ниво, надминаващо обикновения софтуерен разработчик, който пише уеб или мобилни приложения. Такива обучения отговарят на нуждите на вече завършилите от първите випуски наши студенти, които успешно работят в софтуерната индустрия и вече са с няколко години опит и търсят качествено израстване в професията.

Математиката не е за всеки!

Всъщност математика, сложни алгоритми, machine learning и подобни теми не са за всеки. Десетки хиляди работят в софтуерната индустрия на добри позиции в добри фирми, без да имат сериозни математически умения. Защо тогава всички да задълбават в математика, алгоритми, графика или пък машинно обучение? Нека с machine learning и сложни алгоритми се занимават само по-напредналите програмисти, които имат капацитет и желание да усвоят тази материя. Нека който иска да реди сайтове и формички и е доволен от това, да си го работи. Нека който иска да учи алгоритми, да си ги учи. Който има капацитет за self-driving cars, нека с това да се занимава. СофтУни дава избор! СофтУни не задължава всички да учат математика или сложни алгоритми, а само който ги пожелае, който е стигнал ниво на напредък, което му позволява да намери смисъл в тях и да ги изучава с любов и желание.

Обърнат подход: от практика към фундамента

Навремето в математическия факултет ни обясняваха как за да станеш програмист, трябвало да имаш солидна основа от фундаментална математика, всякакви там диференциални уравнения, неевклидови геометрии и незнам си какви пространства и интеграли. Набиваха ни в главите формули и уравнения и всичко това без докосване на компютър, само на дъската. И твърдяха, че така се изгражда основата на добрия програмист. Дрън-дрън. Резултатът от всичко това го знаем: отказваха студентите от математика, отказваха студентите от програмирането, отказваха студентите от ученето въобще. Завършваха много малко хора, масово се преписваше, хиляди се бореха за тройка и много малко хора намираха смисъл в изучавания материал. Липсваше практика и смисъл да учиш всичко това, липсваше мотивация, липсваха резултати. Само единици се запалваха по математиките, но не винаги ставаха добрите програмисти.

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

Аз например, никога не съм бил добър математик, но пък като ученик бях в националния отбор на България по програмиране 5 години поред и печелех медали по международните олимпиади по програмиране. Имах логическо мислене, но не бях математик. Не знаех какво е интеграл и нямах нужда да знам.

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

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

Ако искаш да правиш игри със сложна графика, започваш примерно с Unity или готова библиотека и се запалваш. Стигнеш ли по-напред, извън тривиалните стандартни инструменти, рано или късно се сблъскваш с математика, но тогава знаеш за какво ти е, намираш смисъл и започваш да я учиш с хъс. Източници много: има хиляди курсове в Coursera и световните учебни организации. От практиката към теорията. От конкретния проблем към по-общите принципи. Така се учи по-добре и е по-удачно в съвременни бързо-променящ се свят.

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

Именно затова в СофтУни по-сложните курсове (структури от данни, алгоритми, математика, data science, machine learning, computer graphics, operating systems, project management, agile methodologies и др.) се изучават по желание и към края на учебния план, след година-две навлизане в програмирането и практическата разработка на софтуер, след някоя и друга година реален стаж в софтуерна фирма. Тогава по-надчетените студенти са готови за тези знания и могат да ги поемат. А останалите – те ще намерят своя път и той може да не минава през математика и физика. От практика към фундамент – това е по-добрият път в съвременния дигитален свят!

Първо програмиране, после (евентуално) математика и по-сложни алгоритми

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

Грешно е да се опитваме да научим всеки на сложни алгоритми и математика, особено в началото, преди да сме му запалили интереса и да сме му дали смисъл да учи програмиране и технологии. Така хиляди читави студенти се отказват, не защото са глупави, а защото им е рано. Вижте какво става в Софийски и в Технически университет. Грешно е да учим теорията зад даден проблем, преди да сме се сблъскали с проблема в практиката. Грешно е да учим управление на проекти, преди да сме участвали поне в един проект и да сме разбрали нуждата от планиране и контрол на задачите. Затова съм привърженик на подхода “от практика към фундамент”.

За направлението по Data Science / Machine Learning в СофтУни

Страхотно е да добавим още едно направление от знания за търсещите нещо повече от кодене: data science / machine learning / intelligent systems / robotics. Има огромно бъдеще в тези науки. Идва ерата на роботите. Вече автомобилите без шофьор се движат по улиците. Предстои роботизация в много сфери на икономиката. Ще изчезват професии, ще се появяват нови интелигентни роботизирани устройства – и за ежедневието и за различни индустрии. Трябва да сме готови! Това е нещо повече от поредния маркетинг шум около cloud, IoT и big data. Затова в СофтУни ще развиваме обучения, работни групи и know-how в сферата на интелигентните системи и машинното обучение. Очаквайте още курсове в тази сфера.

Сега стартираме базов курс по Data Science, с повечко математика, статистика и практически занимания, но ще потърсим качествени преподаватели и за machine learning, а някой ден защо не и за self-driving cars като обучения и специализации в #СофтУни.

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

Безплатни курсове по програмиране в 28 града за напълно начинаещи от януари 2017 г.

$
0
0

Софтуерният университет (СофтУни) организира безплатни курсове по програмиране за напълно начинаещи в 28 града из цяла България от януари 2017 г. Целта е всеки, който има интерес към програмиране и технологии, да опита програмирането и се увери сам дали е за него и дали иска да се занимава сериозно. Повече програмисти и ИТ специалисти означава по-силна икономика и по-добър стандарт на живот в България, не само за ИТ специалистите, но и за всички останали.

Кои са градовете с безплатни курсове по програмиране?

В безплатните обучения могат да се включат ученици, студенти и работещи, присъствено в следните градове: София, Пловдив, Варна, Бургас, Русе, Стара Загора, Плевен, Добрич, Шумен, Сливен, Ямбол, Хасково, Велико Търново, Горна Оряховица, Благоевград, Перник, Казанлък, Пазарджик, Враца, Видин, Кърджали, Габрово, Кюстендил, Гоце Делчев, Търговище, Раковски, Белоградчик, Карнобат. Присъствените места са ограничени според капацитета на учебните зали.

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

Ако се чудите дали програмирането е за вас, най-добре го пробвайте. Едно е да четеш и слушаш разкази за програмисти и ИТ специалисти, друго е да се потопиш директно и практически в програмирането, да да решаваш проблеми, пишеш код, да дебъгваш, да създаваш софтуер с ръцете си и с ума си. СофтУни предлага да опиташ на практика безплатно какво е да програмираш и след това да вземеш решение дали искаш да станеш програмист, ИТ специалист или дигитален експерт или пък искаш да учиш и работиш нещо съвсем друго.

Ако все пак искате да прочетете повече за програмистите и софтуерните инженери, за езиците за програмиране и технологиите, които се използват в практиката, за професиите в софтуерната индустрия и как е става софтуерен инженер, имаме много добър наръчник за начинаещия в програмирането, създаден лично от д-р Светлин Наков:

Какво е СофтУни?

Софтуерният университет (СофтУни) е най-голямата и най-значимата образователна организация в сферата на програмирането, ИТ професиите и дигиталните компетенции в България. В обученията на СофтУни се включат между 2000 и 3000 души на месец и голяма част от тях трайно се захващат с дигитални професии. СофтУни организира над 100 учебни курса на година, включващи програмиране, софтуерни технологии, компютърна графика и дизайн, дигитален маркетинг, информационни технологии и развиване на практически дигитални компетенции.

СофтУни е иновативен и модерен образователен център, който създава истински професионалисти в света на програмирането. Обучението в СофтУни е по модела „учене чрез правене“, при което чрез практически занимания се предават фундаменталния знания от компютърните науки и софтуерното инженерство (30%) и се натрупва реален практически опит в най-търсените и съвременни езици за програмиране и софтуерни технологии (70%), а след завършване (и понякога още в средата на обучението) студентите са готови да стартират своята кариера като успешни софтуерни инженери. Образованието в СофтУни обхваща 20-25 учебни курса, организирани в систематичен учебен план по софтуерно инженерство с продължителност 1-3 години (според избраната професия).

Обучението по програмиране – важна национална кауза

Безплатните обучения по програмиране в цялата страна са вероятно най-значимият и най-мащабният образователен проект за софтуерната индустрия, който се е случвал в последните години. Очаква се в обученията да се включат над 5000 ученици, студенти и работещи, които ще опитат програмирането (присъствено или онлайн) и много от тях ще се запалят по ИТ професиите. Това е важна национална кауза: да дадем знания, умения, професия, работа и бъдеще на хиляди млади хора от всички краища на България, и да задвижим икономиката на страната, за да се вдигне жизненият стандарт.

ИТ секторът е сред най-добре платените в България, в него работят много от най-будните, най-умните, най-интелигентните, най-трудолюбивите, най-амбициозните и най-прогресивните. Софтуерната индустрия дава хляб директно на около 25 000 души (по данни на софтуерната асоциация БАСКОМ) и индиректно на поне още 3 пъти по толкова. ИТ специалистите плащат огромни данъци и индиректно задвижват и други сектори на икономиката. С 18 000 програмисти (по официални данни) към 2016 г. се произвеждат близо 2% от брутния вътрешен продукт (БВП) на страната. Ако броят на заетите в ИТ сектора значително се увеличи, това ще доведе до значим икономически ефект и по-висок жизнен стандарт в България.

Моята лична кауза и каузата на #СофтУни е да създадем 100 000 работещи в ИТ сектора в България до 2025 г. и да се приближим към голямата цел: България – силициева долина на Европа, център за високи технологии, иновации и предприемачество.

Присъствено и онлайн (дистанционно) обучение

Безплатните обучения по програмиране за начинаещи в цялата страна включват присъствени и онлайн занятия (според избраната форма на обучение).

На присъствените занятия се обяснява нов материал и се решават практически задачи под надзора на преподаватели, асистенти и ментори. Участниците в София получават безплатно и личен ментор, който им помага персонално за задачите (в лична среща, по FB, Skype и други канали).

Онлайн участниците получават видео-уроци и наставления за самостоятелна практическа работа вкъщи, съчетани с непрестанна помощ онлайн. Те получават обратна връзка (оценка) за решенията на задачите си чрез автоматизирана системата за проверка (online judge).

За кого е безплатният курс по програмиране?

Курсът по програмиране за абсолютно начинаещи е изключително практически, с много писане на код и решаване на задачи по програмиране от практиката. Всяка решена задача се оценява автоматично от онлайн системата “SoftUni Judge” и резултатите излизат на момента (в реално време). Курсът е изключително старателно подготвен лично от Светлин Наков и в него е натрупан опит от вече над 70 учебни групи за последните 3 години.

Целият начален курс по програмиране се провежда на български език. Учебните занятия, учебните материали (презентации, задачи, решения, инструкции, видео), учебната система, форумът и всички останали ресурси са на български език.

Курсът по програмиране е подходящ за ученици от 4 клас нагоре, както и за студенти, работещи друга професия, безработни и всички желаещи (дори пенсионери).

Какво обхващат безплатните уроци програмиране за начинаещи?

В безплатния курс по програмиране за начинаещи се изучават основите на програмирането: работа с данни, проверка на условия, използване на повторения (цикли), като се набляга на развиване на алгоритмично мислене чрез решаване на стотици практически задачи.

Използва се езикът C# и средата за разработка Visual Studio, но езикът няма съществено значение в толкова начален етап от навлизането в програмирането.

Чрез голямо количество практика курсът развива мисленето, което всеки един програмист трябва да притежава (алгоритмично мислене) и способността да решаваш задачи и да търсиш решения на проблеми, които възникват докато пишеш код, да търсиш информация и да се справяш.

Курсът се състои от 8 учебни занятия по 4 часа + незадължителен изпит накрая.

Ето ги и учебните теми, разработени лично от Светлин Наков:

  • Кодиране за начинаещи – представяне на курса
  • Първи стъпки в програмирането – писане на прости програми
  • Прости пресмятания с числа – променливи и данни
  • Логически проверки – if-else конструкция
  • По-сложни логически проверки – вложени проверки, по-сложни логически условия
  • Повторения (цикли) – повтаряне на блок от команди многократно
  • Чертане на фигурки с цикли – вложени цикли и пресмятания
  • По-сложни цикли – алгоритмични задачи с цикли, условни конструкции и пресмятания
  • Подготовка за практически изпит по програмиране (приемен изпит в СофтУни)
  • Практически изпит по програмиране (незадължителен, за който иска сертификат или да продължи да учи)

Можете да надникнете в учебното съдържание чрез безплатните видео уроци от випуск януари 2016: https://softuni.bg/trainings/1297/programming-basics-january-2016.

Изпит и сертификат за завършващите

Обученията по основи на програмирането, организирани от СофтУни, завършват с незадължителен изпит по практическо програмиране, върху изучавания в курса учебен материал, който служи за прием в Софтуерния университет. Който се запали по програмирането и усети, че му харесва да се занимава с писане на код, може да продължи образованието си в СофтУни, където го очаква задълбочена 2-3-годишна програма, която завършва с професия и работна позиция в софтуерна фирма. Може да учите за няколко професии, сред които основните са C#/.NET софтуерен инженер, Java софтуерен инженер, JavaScript програмист или PHP уеб програмист.

При постигнат резултат от курс поне Много добър (5.00), участникът получава и сертификат от СофтУни за начални умения в програмирането.

Как да се запиша да уча програмиране безплатно?

Записването за безплатните уроци по програмиране (за всички градове, присъствено и онлайн) става от сайта на СофтУни. Попълнете формата за кандидатстване в срок до 5 януари 2017 г. от сайта на СофтУни ии се запишете за безплатно обучение по програмиране във вашия град:

https://softuni.bg/apply


Кой език за програмиране да уча и защо езикът няма значение?

$
0
0

Днес направих 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

Това умение се придобива в курса Programming Basics в СофтУни (или негов еквивалент в друго учебно заведение).

Езикът за програмиране няма значение за това умение!

Умение #2 – алгоритмично мислене (30%)

Алгоритмичното (логическо, инженерно, математическо) мислене формира около 30% от минималните умения на програмиста.

  • развива се за половин-една година чрез решаване на 1000+ задачи по програмиране
  • помага физика, математика и подобни (но не са задължителни!)
  • способността да решаваш задачи е супер важна за програмистите

Това умение се придобива на 60-70% от необходимото за старт в професията в курса Programming Fundamentals в СофтУни (или негов еквивалент в друго учебно заведение).

Езикът за програмиране няма значение за това умение!

Фундаментални знания за професията (25%)

Фундаментални знания и умения за програмирането и разработката на софтуер и компютърните науки формират около 25% от минималните умения на програмиста.

  • ООП – обектно-ориентирано програмиране: класове, обекти, наследяване, полиморфизъм, абстракция
  • функционално програмиране, ламбда функции, функции от по-висок ред
  • бази данни, SQL, релационни, нерелационни
  • софтуерното инженерство, сорс контрол системи, Git, управление на задачи, софтуерен дизайн, архитектури, управление на проекти
  • уеб технологии (HTML, CSS, JS, HTTP, DOM, AJAX, REST, …)
  • мрежово програмиране, мрежови протоколи, мрежова комуникация
  • паралелно програмиране и асинхронност
  • структури от данни и алгоритми

Тези умения се придобиват на 30% от необходимото за старт в професията в курса Software Technologies в СофтУни (или негов еквивалент в друго учебно заведение). Професионалните курсове за софтуерни нженери в СофтУни покриват 50%-60% от тези умения.

Езикът за програмиране няма значение и за това умение!

Езици за програмиране и софтуерни технологии (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 и т.н. Затова класирахме всички отворени работни позиции за разработчици в няколко основни групи. Ето нашите очаквания за шансове да си намерите работа в България според езика за програмиране според извършеното проучване:

  • Java (+ JS + HTML + SQL) – най-свирепо търсене – 15-16%
  • C# (+ JS + HTML + SQL) – огромно търсене – 15-16%
  • PHP (+ JS + HTML + SQL) – огромно търсене – 15-16%
  • JavaScript (+ HTML, SQL) – огромно търсене – 15-16%
  • C++ – търси се доста, но е труден език – 8-9%
  • Mobile development (iOS / Andorid) – търси се доста, но по-малко от C++ – 6-7%
  • Python – търси се умерено – 4-5%
  • Други – общо около 20%

Посочената класация е ориентировъчна. Не претендираме за научен подход при изследването, нито някой твърди, че това е абсолютната истина. Възможно е някъде да сме се подвели, да сме пренебрегнали някои фактори, да сме изкривили неволно информацията, но смятаме, че цялостната картинка прилича на горната (с +/ – 5-10% за всяка позиция).

Не се доверявайте на следните източници: TIOBE и StackOverflow. Те изследват други характеристики на популярност на езиците за програмиране (не търсене на пазара на труда, нито пък на българския пазар).

Гледайте цялото видео (4 часа с въпросите от публиката):

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

$
0
0

Днес ще разкажа подробно за професията “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 програмист. Успех!

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

$
0
0

PHP Web DevelopmentДнес ще разкажа подробно за професията “PHP Web Developer” и как се става PHP програмист, с какви софтуерни технологии работят PHP разработчиците и как можем да се научим на PHP уеб разработка, съвременни уеб технологии, работа с бази данни и PHP frameworks, от къде да стартираме и какво да учим, стъпка по стъпка. По-конкретно ще обясня за:

  • Езикът PHP и екосистемата около него.
  • Платформата LAMP (Linux + Apache + MySQL +  PHP / Python / Perl).
  • PHP MVC Frameworks и как да пишем организирано и структурирано сериозни PHP проекти.
  • Връзката между PHP уеб разработката и HTML5 платформата и уеб front-end технологиите (HTML, CSS, JavaScript, DOM, AJAX, REST, JSON, WebSockets, JS библиотеки, JS frameworks и други).

Ще обясня за стъпките през които минава всеки един начинаещ програмист, за да овладее професията “PHP Developer” и защо няма особена разлика дали учиш PHP, JavaScript, C#, Python или друг език за програмиране, както и кои са фундаменталните умения на софтуерните разработчици, които не зависят от конкретните езици и технологии за разработка. Ще изясня защо трябва да преминем през основните етапи от изучаването на професията PHP Web Developer: овладяване на програмирането (без значение от езика), развиване на алгоритмично мислене, натрупване на базови познания по компютърни науки и софтуерно инженерство, развиване на технологични умения с PHP, MySQL, HTML, CSS и JS и трупане на практически опит с PHP уеб разработката.

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

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

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

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

PHP програмистите са програмисти, които използват езика PHP и технологиите от PHP екосистемата (платформата LAMP, базата данни MySQL, front-end уеб технологиите HTML, CSS, JavaScript и различни JS библитеки) за разработка на уеб сайтове, уеб приложения и уеб базиран софтуер. По-конкретно, PHP разработчиците:

  • Пишат PHP-базирани уеб приложения.
    • PHP програмистите изграждат уеб базиран софтуер с PHP, MySQL, различни PHP библиотеки и PHP технологични рамки (frameworks).
  • Пишат PHP back-end.
    • PHP програмистите изграждат сървърна логика за съхранение и обработка на данни с PHP, MySQL, ORM технологии за опростен достъп до бази данни и други сървърни PHP технологии и технологични рамки (frameworks), разработват REST услуги (RESTful back-end services) и сървърни компоненти с PHP.
  • Създават уеб front-end с HTML + CSS + JS и JS библиотеки и технологии.
    • По природа PHP е сървърна (back-end) технология и се използва заедно с front-end технологии като HTML, CSS и JS, които визуализират данните на уеб приложението в уеб браузъра.
    • Затова всички PHP програмисти владеят до голяма степен съвременни технологии за изграждане на уеб потребителски интерфейси като HTML, CSS, JavaScript, AJAX, REST, WebSockets и JavaScript библиотеки като jQuery, Angular и React.
  • Използват инструменти за PHP разработка като:
    • Инструменти за инспектиране на MySQL бази данни като phpMyAdmin и MySQL Workbench.
    • Linux операционна система и Cron задачи, уеб сървър Apache, сървър за проксиране на уеб трафик nginx, инструменти за виртуализация като Docker и Vagrant.
    • Пакетни системи PEAR и Composer за включване на PHP библиотеки, дебъгер Xdebug, frameworks за unit testing като PHPUnit.
  • Използват среди за разработка (IDE) като:
    • Eclipse for PHP, PhpStorm, Netbeans for PHP, Aptana Studio, Zend Studio, Vim, Sublime Text, Atom, Visual Studio Code и други.
  • Имплементират комуникация между клиентски front-end приложения и сървърен PHP код с AJAX и REST, по web socket или с друга съвременна технология за комуникация в уеб среда.
  • Ползват бази данни като MySQL, PostgreSQL, MongoDB и други през PHP интерфейси като PDO и MySQLi и обектно-релационни ORM технологии за PHP като Eloquent ORM, Doctrine, Yii Active Record и други.

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

PHP започва като прост скриптов език за създаване на динамични уеб страници. Поради своята леснота за работа и леснота за научаване и в комбинация с широката поддръжка от уеб хостинг компаниите, PHP лека полека се утвърждава като лидерът при езиците за сървърна уеб разработка, който задвижва половината Интернет сайтове в света (в добрите си години), най-вече чрез платформи за CMS и e-commerce като WordPress, Drupal, Joomla, OpenCart, Magento.

Към 2017 г. PHP задвижда 37% от топ милион сайтовете в Интернет (източник).

В началото (преди PHP 5) езикът PHP е процедурно-ориентиран и това му донася славата на “езика на мазачите” заради често срещана в миналото лоша организация и затруднена поддръжка на PHP кода, с липса на стандарти, с огромен брой безразборно разпръснати функции в глобалния scope, с безразборно навързани PHP файлове, без свястна Unicode поддръжка и с много проблеми, особено при по-големи проекти.

В по-новите си версии (след PHP 5) езикът PHP става съвременен обектно-ориентиран език, силно повлиян от Java и поддържа всички съвременни ООП парадигми (namespaces, класове, интерфейси, обекти, абстракция, наследяване, полиморфизъм, капсулация, изключения и други).

В най-новите си версии (с идването на PHP 6 и PHP 7) постепенно в PHP е въведена възможността за типизация на данните (type hinting), която значително намалява грешките и подобрява организацията на кода.

С по-новите версии на PHP в езика навлиза и функционално програмиране, което дава повече гъвкавост на разработчиците: first-class functions (функцията като стойност на променлива), higher-order functions (функцията като аргумент на друга функция), анонимни функции и closures (затваране на състояние във функция).

PHP започва като интерпретеруем език, но в последните години за него са разработени и виртуални машини като HHVM и оптимизации в Zend Engine (най-разпространената PHP импелемнтация), които многократно ускоряват производителността му.

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

В съвременния си вид PHP вече не е език за мазачи и може да се ползва за добре структурирани, качествени уеб проекти, използващи добри практики за разработка и качествен код, базирани на модерни парадигми за разработка, не отстъпващи на лидери в сървърното програмиране като Java, C# и Node.js. Научете повече за кадърното използване на PHP технологиите от общността “PHP: The Right Way“.

Факти за PHP. Знаете ли, че?

  • Стартовата заплата на един junior PHP developer е 800-1000 лв. чисто.
  • PHP и MySQL са в топ 5 на най-търсените технологии в софтуерната индустрия в България.
  • PHP технологиите задвижват 1/3 от Интернет сайтовете в целия свят света.
  • Езикът PHP се използва от над 5 милиона програмисти в целия свят.
  • PHP технологиите се ползват за разработка на уеб приложения и back-end системи.

Какво е PHP?

PHP е съвременен скриптов език за сървърно уеб програмиране с отворен код, който съчетава процедурно, обектно-ориентирано и функционално програмиране. Предназначен е за сървърна (back-end) уеб разработка: за писане на уеб приложения и уеб услуги.

PHP е много широко използван език и задвижва стотици милиони сайтове по целия свят, най-вече около open-source екосистемата на WordPress, Drupal, Magento, OpenCart и десетки други уеб CMS системи, уеб магазини, форуми, блогове и други уеб софтуери.

PHP разработчиците обикновено използват базата данни с отворен код MySQL (или по-навият й вариант MariaDB), за да съхраняват данните на уеб приложението във вид на таблици с редове и колони (използвайки релационна схема). Връзката между PHP и MySQL става директно с интерфейса MySQLi или PDO. Понякога вместо MySQL се ползва друга база данни, например PostgreSQL, Oracle, SQL Server, SQLite или MongoDB.

Какво е LAMP?

Платформата LAMP е традиционната среда за изпълнение на PHP уеб приложения. LAMP означава Linux + Apache + MySQL + PHP и представлява стек от back-end технологии за уеб разработка с PHP.

  • Linux като операционна система изпълнява в себе си уеб сървъра Apache (или уеб прокси сървъра nginx в комбинация с няколко Apache инстанции).
  • При постъпване на HTTP заявка Apache сървърът изпълнява заявения от заявката PHP скрипт (чрез модула mod_php извиквайки PHP интерпретатора).
  • PHP скриптът обработва клиентската HTTP заявка, изпълнява някаква бизнес логика, тегли или записва някакви данни от MySQL базата данни и връща обратно към клиента HTML страница с резултата от зявката.
  • Всичко това се комбинира с традиционни Linux инструменти и софтуери като cron jobs, sendmail/ qmail / друг пощенски сървър, Linux потребители и процеси, Linux файлова система и права на файловете, Linux отдалечен достъп (ftp, ssh, scp, nfs), криптосистема OpenSSL, DNS сървър bind, уеб прокси сървър nginx, Apache .htaccess конфигурация, mod_rewrite правила и други.

Рядко за production среда и по-често за development среда се използва и Windows варианта на LAMP, който се нарича XAMPP (Apache + MariaDB + PHP + Perl за Windows).

Какво е PHP MVC Framework?

За да се улесни разработкатта, за да се структурира даден PHP проект, за да се опрости кода, за да се спести имплеменнтирането на често повтаряни функционалности и да се улесни подръжката на PHP уеб проектите, се използват т.нар. PHP технологични рамки (PHP frameworks) за структуриране, организиране и задвижване на на уеб проекти.

Болшинството PHP frameworks използват MVC (Model-View-Controller) като архитектурна парадигма за разделяне на кода на изгледи (които визуализират данните и потребителския интерфейс), контролери (които изпълняват заявките, променят базата данни и подготвят данните за визуализация) и модели (които съхраняват данните в база данни).

Всички сериозни PHP разработки ползват някакъв PHP framework. Това може да е както framework написан от програмиста (custom PHP framework), така и някой добре известен индустриален open-source PHP MVC framework (което е по-масовия случай) като Symfony, Laravel, CodeIgniter, Yii, Zend, Slim, Phalcon, CakePHP или друг.

Най-използваните към 2017 г. в практиката PHP frameworks са Symfony и Laravel.

  • Symfony е мощен PHP web development framework с отворен код, който се грижи за всички аспекти на PHP уеб разработката: налага използване на MVC архитектура, задава структура на PHP приложението, занимава се с routing на HTTP заявките, намиране и изпълнение на контролерите, извикване на изгледите и рендиране на HTML страницата през Twig темплейти, достъп до базата данни през Doctrine ORM технологията, работа с форми, валидация и прехвърляне на данни, автентикация и управление на потребители, управление на сесия, кеширане и много други. Върху Symfony са изградени широко използване PHP приложения като форумната система phpBB и CMS системата за управление на съдържание Drupal.
  • Laravel е съвременен PHP framework за уеб разработка с отворен код, който се грижи за всички аспекти на PHP уеб разработката: налага използване на MVC архитектура, задава структура на PHP приложението, занимава се с routing на HTTP заявките, намиране и изпълнение на контролерите, извикване на изгледите и рендиране на HTML страницата през Blade темплейти, достъп до базата данни през Eloquent ORM технологията, работа с форми, валидация и прехвърляне на данни, автентикация и управление на потребители, управление на сесия, кеширане и много други. Сравнително нова технология, направена по съвременни парадигми и технологии, близка по концепции до ASP.NET MVC.

Защо да уча PHP технологии (език PHP, LAMP, Symfony / Laravel, HTML, CSS и JavaScript)?

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

Защо да се захващате точно с PHP екосистемата (с технологии като PHP, MySQL, Symfony, Laravel, HTML, CSS и JS), а не с някоя друга платформа за софтуерна разработка?

  • Езикът PHP е най-използваният съвременен скриптов език за сървърно уеб програмиране в света, насочен към разработка на back-end и уеб приложения. Той комбинира процедурно, обектно-ориентирано и функционално програмиране. PHP е лесен за учене, с добра документация и има огромна общност от разработчици около него.
  • Огромно търсене на PHP програмисти. Предлагането на работа за PHP developers е сред топ 5 на най-използваните и най-търсените в софтуерната индустрия в България. Заради дигитализацията на бизнеса и ежедневието, нуждата от уеб разработчици постоянно нараства. И понеже PHP е сред най-предпочитаните платформи за уеб разработка (поради своята леснота на използване, технологична зрялост и огромна общност от специалисти), расте и нуждата от PHP разработчици. Погледнете в сайтовете за обяви за работа за PHP програмисти, за да се уверите колко много отворени позиции има за PHP разработчици.

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

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

  • Фундаментални софтуерни умения: отлично ниво на програмиране, работа със сорс контрол системи и екипно взаимодействие с Git и GitHub, обектно-ориентирано и функционално програмиране, бази данни и стандарти за уеб разработка;
  • Практически уеб back-end технологии с PHP: LAMP стек, Linux, Apache уеб сървър, език PHP, сървър за бази данни MySQL и език за заявки SQL, ORM системи за опростен достъп до данни, и PHP MVC frameworks за улеснена разработка на уеб приложения и REST услуги, инструменти за unit testing, управление на PHP пакети и инструменти за PHP разработка;
  • Технологии за уеб front-end разработка: HTML5 платформа, HTML и CSS за уеб потребителски интерфейс, JavaScript, jQuery, AJAX, REST и JSON за динамично съдържание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Овладяване на PHP технологиите за уеб разработка и уеб front-end технологиите

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

  • Технологии за PHP уеб разработка: изучават се доста сериозно в СофтУни по време на професионалните модули от професията “PHP Developer”, най-вече в курсовете “PHP основи” и “PHP MVC Frameworks“:
    • PHP технологиите включват владеене на езика PHP, базата данни MySQL, пакетния мениджър Composer, различни PHP библиотеки, интерфейси към бази данни като PDO и MySQLi, обектно-ориентирано програмиране с PHP, обработка на HTTP заявки и генериране на HTTP отговори, работа с HTTP cookies и сесии, обработка на данни, изпратени от HTML форми и други.
    • Работа с PHP frameworks за разработка на уеб приложения като Symfony и Laravel. Това включва инсталация и настройка на framework, създаване на проект, създаване на изгледи (views) и ползване на templating engines като Twig и Jade, писане на контролери с GET заявки за визуализация на данни и уеб формуляри и POST заявки за изпращане на форми и имплементиране на CRUD операции, работа с форми, валидация и въвеждане на данни, писане на модели (data models), работа с бази данни през ORM engine, контрол на достъпа, автентикация, потребители и авторизация и много други типични функционалности за уеб приложенията.
  • Технологии за уеб front-end разработка:
    • В учебния план за PHP професията са включени и задълбочени курсове по уеб сайтове с HTML и CSS, сериозни курсове по концепциите на JavaScript езика и практически технологичен курс по “JavaScript front-end разработка”.
    • Учи се и се практикува сериозно изграждането на уеб сайтове и уеб-базиран потребителски интерфейс с HTML и CSS, основни HTML тагове, структура на HTML документ, семaнтичен HTML, работа с HTML елементи и атрибути, div, span, параграфи, таблици, форми и контроли, CSS селектори и правила за разположение (layout) и стилизиране и други.
    • Изучава се изграждането на уеб front-end приложения, които извличат данни от back-end REST service с AJAX или друга комуникация и рендират Web UI от JSON данни чрез шаблони, компоненти или друга UI технология. Използват се jQuery и JS библиотеки за front-end JS разработка, ООП в JavaScript, closures, шаблони за модул и revealing module, promises и библиотеки за JS-базиран user interface.
  • По време на PHP курсовете студентите създават RESTful back-end APIs и server-side Web apps с PHP и PHP MVC frameworks като Symfony и Laravel, ползват template engines като Twig, Jade и Mustache, рендират динамичен HTML или подават данни към клиента в JSON и други формати.

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

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

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

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

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

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

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

Безплатна книга по основи на програмирането (със C# на български език) –бета версия

$
0
0

Приятели на програмирането и технологиите, радостен съм да съобщя, че излезе публичната предварителна версия на безплатната книга по основи на програмирането с езика C# за напълно начинаещи, която аз заедно с широк екип от доброволци и приятели на СофтУни разработваме през последните 3 месеца:

За книгата “Основи на програмирането със C#”

Книгата е официален учебник за безплатните курсове по програмиране за начинаещи, които СофтУни провежда вече над 100 пъти присъствено в 28 български града и онлайн. Тя е учебно пособие, което може да се ползва като допълнение към курса за старт в програмирането в Софтуерния университет. В безплатната книга за програмиране са обяснени учебният материал от СофтУни курса за навлизане в програмирането (работа с данни, проверки и цикли) и всички задачи от упражненията.

Книгата е безплатна!

Книгата “Основи на програмирането със C#” е безплатна и се разпространява свободно под лиценз CC-BY-NC-SA. Тя е разработена със системата за документация GitBook, като проект с отворен код в GitHub, използвайки единствено Markdown форматиране (.md страници, сорс код, таблици и картинки). Разпространява се свободно в следните формати:

Учебно съдържание

Авторски колектив

Книгата е написана от широк състав от доброволци автори и редактори, които дариха своето време и труд, за да създадат един прекрасен безплатен учебник по програмиране за начаинаещи. Болшинството от авторите са бивши или настоящи топ студенти от СофтУни, които са минали през основите на програмирането, решавали са задачите от настоящата книга (и курса към нея) и знаят много добре какво затруднява начинаещите. Сега повечето от тях работят като професионалисти в софтуерната индустрия и желаят да помагат на навлизащите в професията. Ето имената на нашите герои – автори и редактори на книгата “Основи на програмирането със C#” (по азбучен ред):

Aлександър Кръстев, Александър Кирилов, Ангел Димитриев, Васко Викторов, Венцислав Петров, Даниел Цветков, Димитър Татарски, Димо Димов, Диян Тончев, Елена Роглева, Жулиета Атанасова, Захария Пехливанова, Искра Николова, Калин Примов, Кристиян Памидов, Любослав Любенов, Николай Банкин, Николай Димов, Павлин Петков, Петър Иванов, Росица Ненова, Руслан Филипов, Светлин Наков, Стефка Василева, Теодор Куртев, Тоньо Желев, Християн Христов, Христо Христов, Цветан Илиев, Юлиан Линев, Яница Вълева.

Инициатор на създаването на книгата е д-р Светлин Наков, който от повече от 15 години насам обучава начинаещи програмисти и е систематизирал своя опит в обученията на напълно начинаещи в курса “Основи на програмирането” в СофтУни. Той е главен автор на съдържането и учебните материали към курса, а те са използвани като основа за съдържанието на настоящата книга.

Книгата е спонсорирана от Фондация “Софтуерен университет”, която предоставя безплатно образование за софтуерни инженери, разработва учебно съдържание с отворен лиценз, обучава учители, провежда практически курсове по програмиране и технологии, разработва книги и учебници и подкрепя свободното образование като цяло.

Бета версия – търсете грешки!

Настоящото издание на книгата е бета версия. Това означава, че все още съдържанието не е финализирано и може да се променя. Книгат ае пусната публично, за да може всеки читател да изпраща грешки и коментари, които на които се е натъкнал докато чете. За да докладвате проблеми, използвайте официалния тракер в GitHub:

Докладвай грешка в C# книгата “Основи на програмирането”

Не обещаваме, че ще поправим всичко, което докладвате, но ще се постараем да вземем предвид всички ваши препоръки, коментари и да изичстим докладваните проблеми.

Плановете за напред

Имаме амбициозни планове за идните няколко месеца: 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):

https://goo.gl/forms/w1bQ6DbGJkSEhIPp2

Благодарности към екипа

Благодаря на всички, които повярваха в този проект и участваха доброволно в него! Благодаря ви колеги, че направихте над 2000 промени (Git commits), с които създадохте 20 глави и около 400 страници качествено учебно съдържание. Благодаря специално на Венци Петров и Росица Ненова, които редактираха старателно всяка страничка, всяка табличка, всяко парченце код и всяко едно изречение, за да уеднакват стиловете и да изчистят грешките. Очаквайте шумно парти, като излезе хартиената версия на книгата и се надявам да се включите и за другите книги в плана.

Тенденции в софтуерната индустрия в БГ за 2017 г. и класация на езиците за програмиране –годишното проучване на СофтУни

$
0
0

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

За мен е нормално всяко читаво учебно заведение да провежда регулярно подобни проучвания и да адаптира обученията си спрямо локалните и глобалните трендове и нужди. Дали традиционните университети, училищата, частните обучителни организации, академии и школи правят такива проучвания не знам, но мога да споделя, че от създаването на СофтУни през 2014 г. до момента редовно събираме по систематичен начин мнението на софтуерните и ИТ фирмите и адаптираме учебния план, учебните курсове и учебния процес към нуждите на бизнеса.

Целта на проучването е да се оцени кои езици за програмиране, софтуерни технологии, инструменти и методологии се търсят най-много на пазара на труда в ИТ сектора в България към средата на 2017 г.

За използваната методология

Методологията, която ползваме за проучването, е стандартна:

  • Проверяваме сайтовете за работа в България и събираме най-търсените езици и технологии от софтуерния свят и изисквания към търсещите работа към май 2017 г.
    • Разделяме използваните технологии в категории (примерно езици за програмиране, уеб технологии, front-end технологии, back-end технологии, технологии от света на базите данни, нетехнологични умения и други).
    • Отсяваме тези от категориите, които имат пряко отношение към софтуерната индустрия в България и обученията на софтуерни инженери.
  • Въз основа на събраните данни изграждаме анкета с въпроси, включваща серия въпроси, разделени на групи.
    • Повечето въпроси са в стил “Кой front-end framework ползвате във вашата фирма?”
    • Отговорите са измежду най-популярните на пазара технологии + празно поле за дописване (ако сме изпуснали даден отговор).
    • На всички въпроси може да се посочи повече от един отговор и затова сборът от процентите надвишавт 100%.
  • Анкетата е изпратена на около 200 фирми от партньорската мрежа на СофтУни и външни компании (предимно на технически ръководители), с молба да бъде попълнена старателно.
    • Анкетата е попълнена успешно от около 90 фирми, с най-разнообразен профил: продуктови и аутсорсинг компании, софтуерни фирми, ИТ фирми, ползващи всякакви технологии.
    • Обхванати са болшинството от по-големи софтуерни фирми (над 100 души), както и редица средни и мини-фирми.
  • Резултатите са събрани, внимателно обобщени и визуализирани като диаграми от техническия експерти от СофтУни.

За автентичността на изследването

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

Използвайте резултатите от настоящото проучване на свой собствен риск!

Да преминем и към самите резултати.

Област на разработка

  • Изглежда болшинството от анкетираните фирми разработват уеб-базиран софтуер. Някои разработват уеб и мобилен едновременно.
  • Половината фирми имат QA позиции в екипите си.
  • Половината фирми разработват мобилни приложения.

Уеб разработка

  • Масово уеб разработчиците пишат full-stack.

Web Front-End технологии

  • Изглежда Angular е победител във front-end web frameworks категорията, но React е плътно зад него. Останалите участници са с много малко влияние.

Web Back-End езици

 

  • Лидери в back-end програмирането в България са C#, Java и PHP с много малка разлика.
  • Python и Ruby в БГ се ползват много по-малко от C#, Java, PHP и JS.

Web Frameworks за C#, Java и PHP

  • От лидерите в 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

  • В C# света болшинството разработчици ползват Entity Framework (EF).
  • В Java света болшинството разработчици ползват Hibernate и Spring Data.
  • В PHP света всеки ползва каквото си иска за достъп до данните – няма технология победител.

Databases

  • В базите данни в българската софтуерна индустрия най-използваната база е MS SQL Server, следвана от MySQL.
  • В C# света се ползва предимно SQL Server.
  • В PHP света се ползва предимно MySQL.
  • В Java света се ползват най-вече MySQL и MS SQL Server (леко съм изненадан).

Web and Front-End Templating Engines / Frameworks

  • Във всички технологии за уеб разработка (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, а не самостоятелно и затова делът му в статистиката е толкова голям.

Технологии за разработка на мобилни приложения

  • Android има лека преднина пред iOS, а другите мобилни платформи практически са извън надпреварата.
  • Болшинството Android developers използват Java.
  • Болшинството iOS developers използват Swift. Най-сетне Swift изпревари застаряващият вече език Objective C.
  • Технологии като JS hybrid apps, JS native apps, Xamarin mobile apps и Unity for mobile се ползват рядко при мобилната разработка.

Езици при обработката на данни

  • C# води с малко пред Java и Python при сървърната обработка на данни. Други сериозни участници в тази надпревара не се забелязват.
  • Вероятно въпросът не е бил добре разбран от анкетираните, защото идеята беше “какво ползвате за big data / data science и подобни“, но отговорите са в стил “с какво си обработвате данните от страна на сървъра“. Отговори като R и Scala отстъстваха.

Framework Development езици

  • При програмистите с профил framework developer разнообразието от езици и технологии е огромно и нямаме категорични победители.

QA, ръчно тестване и автоматизация

  • Времето на QA автоматизацията дойде. Болшинството от QA инженерите в българската софтуерна индустрия се занимават с QA automation.
  • При автоматизираното тестване най-предпочитаният инструмент е Selenium.

Използвана от програмистите операционна система

  • Имаме категоричен победител при операционните системи, използвани при разработката на софтуер (desktop средата на програмистите) и това е Microsoft Windows!

Тип бизнес: продуктови и аутсорсинг фирми

  • Повечето софтуерни инженери в България разработват продукт или услуга. Това може да е проект на фирмата-работодател (разработка на български продукт / услуга или чужд / услуга продукт от фирмата-майка) или като част от аутсорснат екип (разработка на чужд продукт или услуга с български dev екип).
  • По-малко от половината програмисти в България работят в аутсорсинг сценарий (като екип или човек под наем на чужда фирма).

Глобални изводи от проучването

  • Приблизителна класация на топ 10 на най-търсените езици за програмиране в България (към май 2017 г.):
    1. C#
    2. Java
    3. JavaScript
    4. PHP
    5. C++
    6. Swift
    7. Python
    8. Ruby
    9. Objective-C
    10. 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-CPerl, 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, така че най-вероятно извадката от фирми не е съвсем представителна. И затова ползвайте информацията с внимание и размисъл! Успех на всички!

Безплатен курс за технологични обучители @ СофтУни

$
0
0

От 21 юли лично ще водя безплатен курс за технологични обучители в СофтУни:
Train the trainers course @ SoftUni

https://softuni.bg/trainings/1709/train-the-trainers-july-2017

Ще ви науча на техники, подходи и инструменти за подоготвка и провеждане на качествени технологични обучения. Ако някой има интерес да развие уменията си да презентира и преподава, може да се запише.

Курсът е безплатен, така че елате с приятели. Изискват се начални технологични умения (програмиране и ИТ).

Четирите най-търсени професии в софтуерната индустрия за 2017 г.

$
0
0

Днес водих live stream във FB по темата за четирите най-търсени професии в софтуерната индустрия в България и мотивирано обясних кои са те:

Гледайте цялото видео, заедно с анализ на проучването “БАСКОМ Барометър” (2016) за софтуерната индустрия и проучването на СофтУни за 2017 г. за търсенето на различните технологии в БГ софтуерната индустрия.


СофтУни фамилията се разраства с нови инициативи и нова бранд идентичност

$
0
0

СофтУни стартира през 2013 г. с амбицията да предостави истинско образование за софтуерни инженери, с което да дава професия, работа и висок жизнен стандарт на хиляди млади хора, които поемат по пътя на програмирането и дигиталните професии. Първоначално излязохме с концепцията да дадем алтернатива на университетското образование под името “Софтуерен университет“, но постепенно проектът се превърна най-големият български образователен център за програмиране, ИТ и дигитални умения.

Разрастването на СофтУни

И този иновативен образователен проект СофтУни, задвижван първоначално от Светлин Наков и Христо Тенчев, се разрасна и през обученията за 4 години преминаха над 50 000 души и екипът на СофтУни порасна до над 50 души, под напътствията и ръководството Иван Ненков. Редом с основната програма на СофтУни за софтуерни инженери (2-3 години интензивни обучения всеки ден със специализация в C#, Java, JavaScript и PHP), се появиха и стотици отворени курсове с десетки хиляди участници. Развиха се направления и програми за обучения по дигитален маркетинг, дигитални изкуства, хардуер и електроника, машинно обучение, блокчейн технологии и много други. СофтУни се утвърди като категоричен лидер в ИТ обученията в България.

Новите инициативи на СофтУни

И така, от идеята за “Софтуерен университет“, който да замести до голяма степен традиционното висше образование, СофтУни се разгърна като иновативен център за дигитално образование, а името “Софтуерен университет” се трансформира в наименование за цялостната програма на СофтУни за обучение на софтуерни инженери.

През годините лека полека под шапката на СофтУни се оформиха и нови инициативи – за дигитален маркетинг, дигитални изкуства, програмиране за деца и фондация за дигитално образование. И така дойде време и за цялостно ребрандиране на СофтУни инициативите. Имам удоволствието да ви представя новата бранд идентичност и структура на СофтУни организацията:

СофтУни

SoftUni е основната организация, стояща зад образователната инициатива “СофтУни“, която организира и провежда редица обучителни програми, безплатни курсове и семинари, събития и други образователни инициативи за предоставяне на качествено дигитално образование на хиляди млади хора в България, в сферата на IT и дигиталните умения. СофтУни.орг разработва курсове и уроци по програмиране и дигитални умения и развива съвременни, иновативни образователни програми за подготовка на софтуерни разработчици, специалисти по дигитален маркетинг, графични, уеб и UI дизайнери и 3D специалисти и лидери на дигиталното предприемачество.

Програма “Софтуерен университет”

Програмата за цялостна подготовка на софтуерни инженери “Софтуерен университет е основната образователна инициатива, с която СофтУни стартира и една от най-успешните в България. В софтуерния университет се обучават десетки хидяди души всяка година, стартирайки с безплатни курсове по програмиране в 40 български града. Програмата “Софтуерен университет” за софтуерни инженери е интензивна и продължителна: за около 2 години, по 5 пъти седмично по 4 часа, със 70% практика на живо в клас или онлайн, начинаещ може да достигне ниво стажант или junior developer. В направлението “Software University” се подготвят софтуерни специалисти в областта на програмирането, разработката на софтуер, вградените системи и IoT, уеб приложенията, мобилните приложения, блокчейн технологиите, машинното обучение и интелигентните системи и много други.

SoftUni Digital

Академията по дигитален маркетинг SoftUni Digital предоставя цялостна програма за обучение на специалисти по дигитален маркетинг, онлайн реклама, социални мрежи, търсачки и други дигитални технологии за бизнеса. Програмата SoftUni Digital продължава повече от половин година и обхваща основи на маркетинга, content marketing и писане на качествено съдържание, email marketing и мейл кампании, Facebook маркетинг и кампании във FB, Google AdWords маркетинг и управление на AdWords кампании, Search Engine Optimization (SEO) и оптимизация на сайтове за търсачките и основи на e-commerce и изграждане на онлайн търговия.

SoftUni Creative

SoftUni Creative е цялостна програма за обучение на крейтив специалисти, графични, уеб, UI и interaction дизайнери, UX специалисти, 3D артисти, аниматори и дигитални артисти. Обученията в СофтУни крейтив продължават около година и обхващат фундаментални концепции в дизайна, графичен дизайн и растерна графика с Photoshop, векторна графика с Illustrator, предпечат с InDesign, уеб и UI дизайн на сайтове, приложения и потребителски интерфейси с Photoshop, дизайн на потребителско изживяване – user experience (UX), видео обработка и създаване на филмчета и видео с Premiere Pro, дизайн на движението и анимация с After Effects, 3D визуализация с 3DS MAX и 3D гейм моделиране с Maya.

SoftUni Kids

SoftUni Kids предоставя съвременни обучения по програмиране и ИТ за деца, основани върху модела “учене чрез игра“. В детската академия по програмиране се изучават модули, всеки с продължителност от един учебен срок, които обхващат първи стъпки в програмирането и алгоритмичното мислене за деца, програмиране със Scratch, разработка с Micro:bit контролери, работа с Arduino за деца и други. Програмата е подходяща за деца от 1 до 6 клас.

СофтУни Фондация

Фондация “Софтуерен университет” (СофтУни фондацията) е нестопанска организация в обществена полза, която развива образователни инициативи за програмиране, ИТ и дигитални умения. Фондацията разработва качествено свободно учебно съдържание, книги, учебници, курсове и уроци по програмиране, ИТ и дигитални умения, обучава ученици, студенти, безработни и учители.

Бъдещи СофтУни унициативи

Макар и силите ни да са ограничени, ние не спираме да мечтаем за по-добро образование, и не жалим сили за развитие на още многобройни вдъхновяващи иновативни образователни инициативи. Ето и няколко проекта, които смятаме да развиваме по-активно през 2017-2018 г.

  • SoftUni Interactive – нови интерактивни онлайн уроци по модела “учене чрез правене” с интерактивно учебно съдържание и обратна връзка на момента, геймификация на учебния процес и нов вид учебен процес с активно взаимодействие с обучаемия.
  • СофтУни за ученици – цялостна програма за обучение на ученици за професия “програмист” и “приложен програмист”. Ще се предлага като допълнение на училищната образователна система, за ученици с интерес към програмиране и софтуерни технологии. Инициативата е вероятно да прерасне и до гимназия за ИТ и дигитални специалисти с присъствено и дистанционно обучение.
  • СофтУни за учители – обучителни програми за вдигане на квалификацията и уменията на българските учители по информатика, програмиране и информационни технологии от средните училища.
  • СофтУни It Pro – цялостна програма за обучение на системни администратори и ИТ специалисти, включваща обучения по хардуер и сървъри, компютърни мрежи, системна администрация, Linux administration, Windows Server administration, cloud технологии, информационна сигуност и DevOps.
  • Цялостен модул за machine learning
  • Цялостен модул за blockchain технологии
  • Цялостен модул за електроника на вградени системи
  • Цялостен модул за мобилна разработка
  • Цялостен модул за QA инженерство

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

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

Защо да учим програмиране в присъствена форма?

$
0
0

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

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

Такива размисли ме застигнаха днес и реших да блогна за тях… Ще започна с това, което винаги съветвам познати, приятели и който друг ми иска мнението.

На приятели и близки винаги препоръчам “присъствено обучение”

И така, наистина онлайн образованието и някои онлайн курсовете по програмиране са страхотни, но да ви кажа честно, когато трябва да препоръчам за мой близък приятел или на децата ми дали да учат програмиране онлайн или присъствено, особено при старта, им казвам твърдо и убедено “учете присъствено, на място, по график, с преподавател (треньор), запознайте се с колеги, събирайте се, обсъждайте, помагайте си, споделяйте си, учете заедно, събирайте се на живо“!

Аз наистина вярвам в това: на живо обучението е по-ефективно (макар и да не е винаги възможно, макар и да има изключения).

Защо “присъствено обучение”?

Няколко са наблюденията ми от студенти учащи присъствено и онлайн и от разговори с колеги, приятели и учащи при нас. От тях си правя изводи, че най-съществените предимства на присъственото обучение са следните:

Повече дисциплина

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

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

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

Общност, колеги и учебни групи

Невероятно предимство при ученето на каквото и да е (не само програмиране), е да се обградиш с мотивирани колеги, които учат същото и да движите заедно през учебните занимания, да си помагате, да си обсъждате, да се подкрепяте, да споделяте проблеми и решения, техники и инструменти. Аз наричам това “учебни групички“.

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

Примерно, ако си онлайн и нещо не ти работи по кода и не можеш да си намериш грешката, трябва да споделиш кода във форум, FB или друга онлайн общност, да опишеш задачата, да обясниш какво искаш да направиш и какво се чупи и да чакаш докато някой ти отговори. Става бавно, не на момента.

Ако си присъствено, например на упражненията на живо в учебната зала в СофтУни, или в учебна групичка или на менторска сбирка с колеги на живо, когато имаш проблем, питаш на момента колегата до теб и той почти винаги ти помага веднага. Ако той не знае решението, питаш някой друг. Ако си в клас, питаш асистентите и трейнърите. На живо винаги има кого да питаш и много бързо получаваш отговор, защото колегата до теб решава същите задачи в същия ден като теб. Той се сблъсква със същите проблеми и вероятно е намерил решение на повечето от тях. Задачите и решенията са му пресни в главата и може веднага да ти отговори, без да се замисля. Важи и обратното: ти също помагаш на колегите си, когато имат трудности и те помолят да погледнеш кода им. Да имаш колега до тебе, на живо, с директна комуникация, е огромно предимство!

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

Помощ на живо от асистенти и преподаватели

Който учи присъствено, на живо, има директна комуникация с преподавателите и асистентите. В СофтУни сме се постарали в основната учебна програма да наложим правилото 75% практика – писане на код на живо в клас под надзора на инструкторите за курса и в колаборация с колеги.

В дните с нов учебен материал лекторът преподава за 1-2 часа новата тема от учебния материал, показва на живо примери, пише код и обяснява как и защо работи и решава задачи на живо в клас. Следва почивка и в следващите 2 часа курсистите решават задачи за упражнения (lab exercises). В тези дни половината време е практика (около 2 часа за нов учебен материал + около 2 часа за практически упражнения).

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

В онлайн форма на обучение няма асистенти. Ако си решавате задачите сами в къщи, няма кой да ви помага. Трябва сами да се борите с проблемите, или пък да търсите помощ онлайн. Пак може да се справите, но трябва да положите повече усилия.

Присъствено > онлайн

Онлайн студентите в СофтУни получават:

  • Live stream video от учебните занятия (ако имат възможност да гледат в точния ден и час, когато е занятието).
  • Възможност да задават въпроси онлайн (ако са на линия по време на занятието).
  • Видео-запис от всички учебни занятия.
  • Условията на всички упражнения и насоки за тяхното решаване.
  • Система за проверка на домашните в реално време (online judge system).
  • Достъп до онлайн форумите за всеки учебен курс.

Студентите от присъствено обучение в СофтУни получават всички привилегии на онлайн студентите + още няколко:

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

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

Ето и още предимства на присъственото обучение в СофтУни:

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

Статистика по успех: онлайн / присъствено

Да погледнем сега статистиката на успеваемостта за последния курс “Programming Fundamentals” в СофтУни (май – август 2017), преди поправителните изпити:

Статистика за успеваемост в курса
“Programming Fundamentals” – May 2017
Присъствено Онлайн
Брой студенти 385 778
Среден успех в курса 3.87 3.35
Силни студенти (с успех над 5.00) 33% (126) 25% (197)
Със среден успех (3.00 … 5.00) 24% (92) 19% (147)
Скъсани или отказали се 43% (167) 56% (434)

В него участваха общо 1163 студента (385 присъствено + 778 онлайн). От присъствените студенти успешно преминават курса 57%, срещу 44% онлайн. Силните студенти (които ще си намерят работа с лекота чрез кариерния център на СофтУни) в присъствена форма са 33%, а в онлайн форма са 25%.

Ясно се вижда, че присъствените студенти са по-силни и по-успешни. Причините е по-силната отдаденост на обученията, по-голямата дисциплина, повечето отделено време и включването в присъствени учебни групи и получаването на помощ на живо. Изводът е категоричен: учете присъствено, за да успеете! Може да успеете и онлайн, но шансовете са доста по-малки.

Недостатъци на присъственото обучение

Да, присъственото обучение има и недостатъци:

  • Губи се време за придвижване до учебните зали и разходи за транспорт. Съветът ми е да си вземете квартира в близост до СофтУни или до спирка на метрото.
  • Графикът е фиксиран. Това е хем предимство (защото налага дисциплина), хем недостатък, защото понякога може да искате да учите в друго време. В СофтУни може да отсъствате от някои занятия и да наваксате после от онлайн ресурсите.
  • Ако сте от друг град, присъственото може да не е възможно. Наистина, понякога няма как да присъстваш, например ако си ученик от Силистра или Бургас, пътуване до София е много трудно. Затова правим началните курсове по градовете.

Онлайн обучението работи по-добре за напреднали

Знаете ли, че най-трудно е в началото: докато разбереш за какво става дума, докато свикнеш с материята, докато усвоиш работата с инструментите за разработка, докато натрупаш практика как да търсиш решения и да се справяш с техническите проблеми?

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

При подобни ситуации на живо винаги се намира решение. Направете първите си крачки към програмирането присъствено! Това е моят съвет. Когато има някой до теб да ти показва, е много по-лесно и си спестяваш трудния път на учене с “проба-грешка”.

След години обучения, когато напреднете, когато натрупате опит, и когато просто трябва да добавите поредното допълнително знание или умение, нов език за програмиране, или нова технология за разработка, тогава онлайн курс може да ви свърши добра работа и да ви спести време. Наистина, колкото по-напреднал си, толкова по-бързо учиш и толкова по-малко имаш нужда от чужда помощ. Най-големият плюс на присъственото обучение е получаването на помощ на момента. Затова смело мога да препоръчам:

Ако си начинаещ, запиши се да учиш присъствено!

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

Ако имаш възможност, учи присъствено

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

След всичко изписано, вярвам, че ще възприемете моите препоръки, които накратко са:

  • Ако имаш възможност, избери присъствено обучение.
  • Ако си начинаещ, избери присъствено обучение.
  • Въвлечи се в учебни групички и учи заедно с колегите си. По-ефективно е.
  • Търси помощ от асистенти и колеги. Така пестиш време. На живо е по-лесно.
  • Ако учиш присъствено, това не изключва някои занятия да ги взимаш онлайн.
  • Вероятносттта да се справиш присъствено е по-голяма, отколкото онлайн.

И, разбира се: учи здраво. Ако си несериозен и не влагаш достатъчно усилия и хъс, ще се провалиш, независимо дали учиш присъствено или онлайн. Всичко зависи от теб!

Честита Нова година на всички колеги от дигиталния сектор. За технологиите през 2017 г. и предизвикателствата 2018 г.

$
0
0

За всички колеги от ИТ сектора и дигиталните професии, приемете моя скромен технологичен новогодишен поздрав.

31.12.2017 г. 22:30

Скъпи съотечественици,

Скъпи колеги от дигиталния свят,

Скъпи програмисти и ИТ специалисти,

Обръщам се към вас, за да ви поздравя за Новата година!

Какво се случи в дигиталния и ИТ света през 2017 г.

Измина още една прекрасна, динамична и забързана година за българското дигитално общество:

  • за българските програмисти и софтуерни инженери, джавари, дотнетаджии, джаваскриптъри и пиейчпари, питонджии, сиплюсплюсъри и екзотични софтуерни мазохисти
  • ИТ специалисти, мрежари и админи, консултанти и ИТ мераклии
  • представители на дигиталното общество и бизнеса около него, виртуални и дигитални активисти
  • дизайнери и крейтив артисти, дигитални художници, аниматори и шашави крейтивисти
  • специалисти по дигитален маркетинг, копирайтъри, сайтови-оптимизатори и откровени спамъри
  • сайтаджии и електронни магазинджии, дропшипъри и безсрамни дигитални спекуланти
  • крипто-миньори, борсови търговци и крипто-схемаджии
  • дигитални предприемачи и всякакви ИТ шарлатани

Трудна година, но успешна и интересна, наситена с:

  • предизвикателства, възходи и падежи, трудности и победи, и партита до зори
  • радост и развитие, усмивки и нечувани досега емоционални ругатни
  • много бачкане и хиляди успешни проекти, или поне успешно отчетени
  • стотици изпити и недопити кафета, бири, ракии и всякакви алкохоли

Хубава година за програмирането

  • Излезе Java 9, модулна и могъща
    • Все така негенерична, подробна и безумно описателна
    • Вече мечтаем за Java 10, 11, 12, а защо ли не и 17
  • .NET Core все по-стремително се налага като водещата .NET технология
    • Или поне така го рекламират, ама май повечето фирми още не го пишат
    • И да, излезе .NET Core 2.0, но все още миграцията не е директна и боли
    • Дали пък всичко си работи както трябва или още му е рано?
    • Чакаме .NET Core 2.1 през 2018 и мечтаем как някой ден 3.0 ще ни реши всичките проблеми
  • В PHP света вече си имаме PHP версия 2
    • Laravel леко и стремително напредва
    • А в PHP света като че ли мнозина мигрират към JavaScript и Python, макар и технологията да се подобрява
  • В JavaScript света
    • Се готвим за ES2018
    • js е вече на версия 9 и тича изумително бързо напред
    • A JS светът расте и завладява нови хоризонти: и в уеб и в desktop и в mobile и в изоморфните приложения
  • В Python света сме още нa версия 3.6
    • А езикът Python продължава да завладява още и още привърженици
    • Особено в data science и machine learning технологиите
  • Феновете на C++
    • Се радват на Финалния C++17 стандарт
    • И се готвят за C++20
  • Къси срокове и безсънни нощи спохождаха на практика цялата индустрия.
  • Дигитализацията продължава, а програмирането е неин основен инструмент.
  • А програмистите се търсят и все ги няма, особено читавите, с опит и сериозно отношение.
  • Затова учете програмиране, то ви дава огромно бъдеще! Ще ви дава и през 2018 г.

Силна година за системната администрация

  • Клаудове с линукси и всякакви хипервайзори върлуват в дейта центровете, не останаха невиртуализирано желязо, а Linux kernel достигна версия 14.
  • DevOps вече стана стандарт за админските професии, а контейнеризацията дебне навсякъде.
  • А читави админи все така трудно се намират, макар и в админската стаичка да е вечно винаги пълно с алкохол, недоядени пици и недопити кафета.
  • И през 2018 ще се търсят админи и DevOps инженери, затова учете Linux, мрежи, виртуализация и DevOps, хардуер и ИТ инфраструктура и ще просперирате!

Изкуствен интелект, машинно обучение – невероятен възход!

  • През 2017 г. светът като че ли влезе в хайпа на машинното обучение, грешно възприемано от мнозина с термина „изкуствен интелект“.
  • Всички се юрнаха на пишат machine learning, да се занимават с data science, да обучават всякакви модели за всякакви задачи и замечтаха за живота в големия машинен cloud, съчетан с big data, IoT, интелигентни системи с machine learning технологии и умни джадни отвсякъде.
  • Забележителни успехи, наистина, и наистина светът отива към по-голяма машинна интелигентност, но сме далеко от ерата на роботите. Все още компютрите не могат да мислят и разсъждават като човек, нямат емоции и превъзхождат хората само в някои задачи.
  • Ще има хляб и за по-простите професии, спокойно. Технологичната модернизация ще става плавно, както стана с навлизането на Интернет и телефоните. Роботите няма скоро да са заплаха за човека, но пък ще има автономни коли, самолети и ресторанти без персонал. Лека полека ще станем свидетели на това.
  • Хайпът по machine learning, чат ботове, умни даджи, персонални асистенти, автономни автомобили и всякакви интелигентни джунжурии е по-силен от реалното им навлизане в живота, така че по-кротко.
  • Учете математика, статистика, data science и machine learning и ще имате бляскаво бъдеще, безспорно. И през 2018 г. тази индустрия ще расте и ще отваря нови високоплатени работни места. Учете и ще просперирате!

Дигиталното предприемачество се разрастна

  • Вече традиционното предприемачество, без дигитални елементи е рядко срещано.
  • Финансирането чрез ICO, блокчейн технологиите, децентрализацията и токен-базираните икономики променят правилата на стартъп света.
    • Предстоят мащабни иновациии в десетки индустрии. И всичко това чрез дигитални технологии.
  • Обаче, вместо да четете за новите технологии и да се вдъхновявате, действайте. Предприемач означава “да предприемаш”, да действаш, да опитваш, да събираш обратна връзка, да се учиш и да иновираш всеки ден. Така че действайте!
  • Продължавам да вярвам, че някой ден България ще стане „Силициевата долина на Европа“, след като през 2017 г. лично шефът на Bosch я обяви за „силициевата долина на източна Европа“.
  • 2018 г. ще е още по-благоприятна за нови бизнес начинания и стартъп проекти, така че очаквам и още по-мащабни успехи на дигиталните и технологичните предприемачи. Действайте приятели, с бачкане става!

Луда година за блокчейн технологиите и дигиталните криптовалути, но това е само старта!

  • Биткойнът мина 20 000 долара, но ще остане нестабилен заради масираните спекулации.
  • Над 5 милиарда инвестиции в ICO проекти
    • И добри и лоши, scam, големи мечти и променящи света идеи
    • И откровена простотия в големи мащаби
  • Ripple завладява все повече банковия свят и финансовите институции
  • Цената на етера стремоглаво се качва заради ICO контрактите и развъждането на крипто-котенца
  • Традиционните копачи вече рядко копат биткойни и етери
    • Вече се копаят предимно екзотични валути като Monero, ZCash, Electorneum, Sia, Sumocoin, Ubiq, Zencash, Bytecoin, Comodo и Monacoin
  • Proof of Stake технологиите като Cardano и NEM (който е proof-of-importance) влязоха заедно със Stellar (който ползва federated Byzantine agreement консенсус алгоритъм) в топ 10
    • Май наближава блокчейн бъдеще без копачи в традиционния смисъл (с много желязо)
    • Или по-точно големите фермери вече няма да имат нужда от големи ферми с много хардуер
  • Навъдиха се всякакви блокчейн мастъри, крипто-експерти, биткойн-врачки и смарт-контракт шарлатани, а таксиджиите вече търгуват в биткойн, май ще има движение в пазара, а скоро там влизат и големите банки с нови инвестиционни инструменти. Ще е динамично!
  • Криптосветът нараства и ще расте още и още през 2018 г. Ще расте експоненциално: нови блокчейн мрежи и технологии, нови ICO стартъпи, подобрение на инфраструктурата, децентрализирани приложения, още сме в зародиша на тези технологии.
  • Учете блокчейн и ще просперирате. Ако нямате криптопортфейл и не притежавате криптовалута, още не е късно. Големият бум тепърва предстои. Индустрията ще порасне десетки, а може би и стотици пъти!

СофтУни продължава да е най-значимият ИТ образователен център в България

  • Какво постигнахме през 2017 г. https://softuni.bg/blog/what-you-helped-us-achieve-2017?
    • Безплатни курсове по програмиране в 37 български града à 5000+ участници
      • Нов национален рекорд!
    • 100+ отворени курса по всякакви технологии: IoT, блокчейн, програмиране, софтуерно инженерство, Python, C++, Java, JavaScript, C#, PHP, бази данни, Swift, мобилни технологии, уеб разработка, електроника, системна администрация, DevOps, …
    • 2200 студента по програмиране в СофтУни (25 000+ кандидата)
    • Видео стрийминг в реално време от всички учебни зали.
    • 500+ участници в SoftUni Digital програмата за дигитални маркетинг експерти (3000+ кандидата)
    • 500+ участници в SoftUni Creative програмата за дизайнери, аниматори и крейтив артисти
    • 800+ деца (1-6 клас) участници в курсовете по програмиране и дигитални технологии в София, Пловдив, Бургас и други градове
    • Екипът на СофтУни порасна до над 60 души!
    • Спечелихме наградата на Forbes за развитие на образователния бизнес.
    • Стратегическо партньорство с Google за дигитално образование в цяла България.
  • Какво да очакваме през 2018 г. от СофтУни?
    • Блокчейн академия за програмисти: голяма, сериозна, мащабна образователна инициатива за blockchain developers, с тренировъчни лагери по целия свят и иновативно онлайн обучение.
      • Започваме със 6-седмичен целодневен курс за блокчейн програмисти през януари 2017 г. в София
    • Собствена ИТ гимназия: частна специализирана гимназия за дигитални умения
      • Три специалности: програмиране; дизайн и мултимедия; дигитален маркетинг и предприемачество.
      • Чакаме си лиценза от МОН и започваме записване на ученици от пролетта.
      • Ще има присъствена и дистанционна форма на обучение, а цените ще са в порядъка 400-500 лв. на месец (за присъствено обучение).
    • Платформа за интерактивно самообучение – нова платформа и образователна концепция с кратки видео-уроци, следвани от практически задачи и автоматизирано оценяване и помощ в реално време. Концепцията е „учене чрез правене“, дистанционно, без преподавател.
    • Академия за админи – вероятно ще стартираме академия за ИТ специалисти и системни администратори (ако ни достигнат силите).
    • Разрастване на текущите инициативи: обучения на софтуерни инженери, курсове по програмиране по градовете, курсове за дигитални умения по градовете, модули от отворени курсове (примерно мобилни приложения, машинно обучение, Python разработка и други), развитие на програмите SoftUni Digital, SoftUni Creative, SoftUni Kids и останалите СофтУни инициативи.
    • Разпростиране в чужбина

Технологии с бъдеще през 2018 г.

  • Интернет на нещата (IoT) – този тренд вече тече и редица компании успяха да дигитализират огромна част от домакинската техника и технологиите за индустриално производство, да направят „умни“ редица предмети от живота ни, нашият дом, сграда, град, автомобил, транспорт. IoT системите в комбинация със събирането и обработката на данни и учене от тях (big data & machine learning), заедно с умните джаджи ще движат дигиталните иновации и занапред. Контролери, датчици, комуникация между тях, събиране и обработване на данни à това са предизвикателствата за идната година.
  • Big data & cloud – този тренд също е от няколко години и ще продължи, но движението през 2018 г. ще е не само в посока събиране и анализ на големи обеми от данни и преминаване към cloud инфраструктура, но и събирането на данни с датчици от IoT системи, с блокчейн технологии за неизменимост и проследимост и с machine learning технологии за взимане на решения и автоматизация на правените от човек дейности.
  • Machine learning & data science – този тренд ще се засили още. Това не е балон: интелигентните системи, базирани на machine learning алгоритми ще навлизат още повече в живота ни. През 2018 г. и следващите години напред очаквам напредък в роботиката, в машинното зрение, в човешко-машинния интерфейс, в експертните системи, в алгоритмите за учене, в статистическите модели зад тях, в съчетанието им с квантови компютри и комбинирането им с други горещи технологии.
  • Blockchain & децентрализирани приложения – технологията на децентрализираните бази данни (distributed ledger technology), блоковите вериги (блокчейн), умните договори (smart contracts) и децентрализираните приложения ще расте експоненциално. Очаквам блокчейн индустрията да порасне 10 пъти. И не става дума само за криптовалути, а за драстични иновации във финансовия сектор, за децентрализация и премахване на посредника в десетки индустрии и за доброто на цялото общество, за иновации при съхранението и дистрибутирането на данни. През 2018 г. крипто-технологиите ще достигат нови върхове и ще навлизат забележимо в живота ни.
  • Биотехнологии, ДНК технологии, биостатистика, биоидентификация – този тренд е по-дългосрочен и се развива по-бавно. Става дума за статистически компютърни анализи на биометрия, данни от ДНК секвенация, биостатистически алгоритми, технологии за биоидентификация, машинно обучение и експертни системи в здравеопазването, ДНК анализи за граждански цели и всякакви алгоритми, системи и приложения в сектора на биоинформатиката. През 2018 г. ще се събират и анализират повече данни, ще се анализират повече ДНК проби, ще се изучава в по-голяма дълбочина човешкия геном и ще изникват още стартъп компании в сферата на биоинформатиката.
  • Квантови изчисления и квантови компютри – наближава индустриалното навлизане на квантовите изчисления. Вече Intel продават квантови процесори (17 Qbits) за граждански цели. Microsoft пуснаха среда за разработка за квантови алгоритми. Очаква се през 2018 г. и следващите години навлизането на квантовите компютри в бизнеса и ИТ индустрията да се засили и да подкрепи напредъка в machine learning алгоритмите, data science, big data, както и да създаде сериозни предизвикателства за компютърната криптография и блокчейн криптографията.

Пожеланията на Наков за 2018 г.

  • Честита ви дигитална нова година! Да ви донесе здраве и вдъхновение за дигитални иновации и креативни постижения, с усмивка на лице да им се радвате и да движите напред.
  • Пожелавам ви безоблачни технологични решения в надеждна облачна ИТ инфраструктура.
  • Пълен крипто-портфейл с нарастващи дигитални крипто-активи. Да уцелите навреме тренда в крипто-инвестициите и да реализирате значими финансови резултати.
  • С лекота да учите новите технологии и безстрашно да навлизате в света на информационните технологии и дигиталните умения, да ги ползвате креативно в бизнеса и да реализирате кариерните си мечти, защото технологиите дават добра работа, висок стандарт на живот и удоволствие от свършената работа.
  • Много, много здраве, защото дигиталните умения дават висок стандарт, но не могат да поправят загубеното здраве от безсънните нощи, традиционния застоял живот и недобрата храна. За щастие много от това зависи от вас, така че ви желая да се вдъхновите за здравословен живот и да постигнете добро здраве и отлична форма.
  • Любов и хармония, защото сме хора и имаме нужда от тях. Лично щастие за вас и семействата ви, благодатна нова година, радост и благоденствие.

Успешна, усмихната и весела Нова година!

Излезе от печат безплатната книга “Основи на програмирането със C#”

$
0
0

С голяма радост обявявам на всички навлизащи в програмирането, че през март 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” обученията и СофтУни стажантите (Иван Иванов и Симона Симеонова).

От къде да се сдобия с книгата?

Книгата “Основи на C# програмирането” се разпространява безплатно в електронен формат (PDF, DOCX и други формати) и ще може да се закупи на хартия от книжния пазар, както и от СофтУни. Книгата излезе от печат през март 2018:

Успех на всички с програмирането!

Мотивирай се! Песента на СофтУни екип & Braketo –официален старт на кампанията “учи, за да успееш”

$
0
0

Приятели, страхотно съм разпален да обявя публично един вдъхновяващ креативен проект за промотиране на ученето като път към успеха и като значима ценност в обществото и възпитанието на младежта. Чрез този артистичен проект възнамеряваме да достигнем до хиляди млади хора и да ги вдъхновим да учат и да развиват уменията си.

За кампанията “учи, за да успееш”

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

Развитие чрез познание, трупане и обогатяване на уменията, изграждане на трудови навици, изграждане на компетенции, инвестиция в собственото си образование, вдъхновение за познание – всичко това възпяваме в нашия музикален артистичен проект “Мотивирай се” и в нашата кампания “учи, за да успееш“.

Ние промотираме възпитаването на ученето като ценност в нашето общество и работим за повече просвещение, повече познание, повече умения, повече интелектуално и личностно развитие и повече успех за всички граждани.

За песента “Мотивирай се”

Песента “Мотивирай се” е съвместен проект на СофтУни и Петър Стоянов (Braketo), който е студент в Софтуерния университет, запален по програмирането и технологиите, и талантлив продуцент, музикант, артист, творец и изпълнител.

Благодарим ти, Braketo, че пое отговорността да си двигателят на този креативен проект, че събра и организира арт екипа, организира измислянето на текста, композирането на музиката, поведе изпълнението и задвижи записите, организира творческия екип за видеоклипа и с енергия, ентусиазъм и творчески дух мотивира всички участници и направи този проект реалност!

Благодарим на всички участници в осъществяването на проекта за текста, изпълнението, продуцирането, участието, обработката и разпространението на тази съвременна музикално-артистична продукция. Благодарности!

  • Куплети: Петър Стоянов – Braketo
  • Припев: Петър Стоянов – Braketo, Полина Алексиева – Polisha
  • Музика: Петър Неделчев – Pez Beats
  • Артисти: Иван Йонков, Соня Аврамова, Светлин Наков, Ивайло Кенов
  • Запис: Studio Buster
  • Микс и мастер: Петър Костов – Бате Пешо
  • Видео: Еclipse Vision
  • Оператор: Жулиян Христов – Jn
  • Монтаж: Момчил Ренчев – Joker Flow

Последвайте SoftUni:

Последвайте Braketo:

Последвайте Polisha:

Последвайте PEZ:

Последвайте Studio Buster:

Последвайте Eclipse Vision:

Изтеглете песента “Мотивирай се”

За да си слушате песента “Мотивирай се” от СофтУни екипа докато спортувате или докато пътувате или докато шофирате или докато работите или се забавлявате, изтеглете я в mp3 формат: SoftUni-Team-Motivirai-Se.mp3.

Слушайте “Мотивирай се” онлайн сега:

Продукцията се разпространява безплатно под лиценз CC-BY-SA.

Споделете кампанията “учи за да успееш”

Спеделете настоящата кампания. Да мотивираме заедно повече млади хора да учат, да търсят знанието, да инвестират в развитие на уменията си и да бъдат успешни и проспериращи в живота и в обществото!

Viewing all 51 articles
Browse latest View live