Темите, маркирани тук, са неща, за които е добре да имате някаква идея, ако искате да се развивате в посока програмиране. Темите са ориентировъчни и списъкът е далеч от изчерпателен, но все пак, дава начало и посока.
Има различни специализации на програмиране – web разработка (front end, back end), мобилни приложения (iOS, Android, ...), machine learning, QA инженери, пишещи автоматизирани тестове и други. Web разработката е много перспективна и универсално приложима. Специализацията може да дойде впоследствие. За почти всички тях, частично познаване на тези теми ще е полезно.
Най-ефективно е информацията да се приема като се смесват 1:1 "сухо учене" с правене и експериментиране. Първоначалната цел може да е плитко, но широко познание, като постепенно се обикалят темите и се влиза по-надълбоко и по-надълбоко (пак с 1:1 учене и правене).
-
Видове програмиране
- Web
- Mobile
- IoT/Embedded
- Desktop apps
- Others
-
Езици за програмиране
- Скриптови vs компилируеми.
- Типизирани vs нетипизирани.
-
Tooling
- Редактори: IDE vs. plain.
- Version control – Git. GitHub.
- Операционната система.
-
Web specific
- Бази данни и SQL.
- HTTP.
- HTML.
- CSS.
- Front end frameworks (React, Angular, Vue, Ember, ...)
- Back end frameworks (depends on the language – Ruby on Rails, Express.js, Phoenix, ...)
-
Автоматизирано тестване
-
Подкарване/"деплой"
- Linux basics. Системна администрация.
- Облакът - AWS, GCP, Azure.
- Docker.
-
Общи computer science знания
-
ООП
-
Базово
- Класове и обекти/инстанции
- Методи и полета
- Статични vs. инстанционни методи
- Публични vs private/protected методи
- Наследяване
-
Принципи
- SOLID
- The big four
-
-
Структури от данни
- Графи
- Дървета
-
Алгоритми
- https://www.geeksforgeeks.org/top-algorithms-and-data-structures-for-competitive-programming/
- Сортиране (bubble, merge)
- Обхождане на дърво, в ширина и дълбочина
- Най-къс път между две точки в граф
-