Добре дошъл
Накратко: Курсът „Софтуерно инженерство“ учи как се пише код, който понася промени: шаблони за дизайн, чист код, алгоритми, нишки, сигурност и софтуерна архитектура.
Проблем
Знаеш езика. И пак не стига
Програмата върви. После поръчките стават милион и тя чака минута. Колега добавя нов начин на плащане и чупи три други места. Броячът на посещенията понякога е с няколко по-малко, без никой да е пипал кода. Някой влиза в акаунт, който не е негов, с една кавичка в полето за име.
Нито едно от тези неща не е грешка в синтаксиса. Компилаторът няма да ги хване. Те идват от това как е подредена програмата и какво прави с данните, и са едни и същи на Java, C#, Python и JavaScript.
Идеята
Какво учиш
- Шаблони за дизайн. Решения на задачи, които се повтарят във всеки проект: как да добавиш нов начин на плащане, без да пипаш старите. И кога шаблонът е излишен.
- Чист код и refactoring. Как се чете чужд код, как се разбира защо е труден за промяна и как се подобрява на малки стъпки, без да се счупи.
- Алгоритми и сложност. Това е най-големият модул, с подмодули: сложност, търсене, сортиране, рекурсия, структури от данни, графи, динамично програмиране, алчни алгоритми, техники и накрая проект.
- Нишки и race conditions. Защо две нишки губят увеличения на брояча и как се пазят данните.
- Сигурност за програмисти. Недоверен вход, пароли, сесии и CSRF, токени, тайни, зависимости и случайни числа.
- Софтуерни архитектури. Как се подрежда цяла система: слоеве, модули и услуги, събития, API, кеш, мащабиране, и как се записва защо е избрано едно, а не друго.
- Архитектът в работа. Допълнение за solution и enterprise архитекти: от нуждата на бизнеса до измерими изисквания, варианти с цена, решение и миграция без спиране.
Идеята
Как се учи тук
Всеки урок започва от проблем в истински код, като този на първата карта. После идеята се показва със сцена, синхронизирана с кода ред по ред: как се движат обектите, как расте броят стъпки, как се преплитат нишките. Следват задачки и тест.
Текстът е един за четирите езика. Кодът е на езика, който избереш с „Код на:“ над урока, и можеш да го смениш по всяко време. Всяка програма в курса е пусната и проверена.
Идеята
Какво трябва да знаеш
От езика ти трябват поне модулите „Класове и обекти“ и „Колекции“. За нишките трябва и „Програми в истинския свят“. Всеки модул казва в началото си кои уроци от езика ползва.
Ако ти липсва нещо, картата на курса е на C#. Модулът „Програми в истинския свят“ (тестове, нишки) още се пише за C#. Дотогава модулът за нишките тук ще има код на C#, но основите на нишките засега ще трябва да вземеш от урока на друг език.Тест