Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 2 · Урок 10

Работа по проекти

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

От план към изпълнение

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

Бележка

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

Роли в екипа

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

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

Ключово

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

Разпределяне и проследяване на задачите

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

За правенеВход от файлМенюПомощВ процесТърсенеСортиранеГотовоМодел на даннитеЧетене на входЗадачите се местят отляво надясно: За правене → В процес → Готово
Фиг. 1 — Дъска със задачи: всяка задача е картичка, която пътува отляво надясно, докато стане готова.
  • За правене — задачи, които още никой не е започнал.
  • В процес — върху какво се работи в момента (с името на отговорника).
  • Готово — завършени и проверени задачи.

Дъската може да е истински софтуер (Trello, GitHub Projects, дъската в това приложение 🙂) или просто листчета на стената. Важното е всеки да вижда цялата картина и да няма две задачи, които „всички мислят, че някой друг ги прави".

Управление на версиите

Най-болезненият проблем в екипната работа: „кой изтри моя код?", „коя е последната версия?", „при мен работеше вчера!". Решението е система за управление на версиите (version control) — най-известната е Git.

v1скелеv2входv3търсенеv4сортиранеv5финалВсяка версия е „снимка" на проекта — можеш да се върнеш към всяка от тях
Фиг. 2 — История на версиите: всяка стъпка запазва състоянието на проекта. Винаги можеш да се върнеш назад.

Основните идеи (засега концептуално):

  • Комит (commit) — „снимка" на целия проект в даден момент, с кратко описание какво е променено.
  • История — последователност от комити; можеш да видиш кой какво и кога е променил и да се върнеш към всяка стара версия.
  • Клон (branch) — отделна линия на работа, в която експериментираш, без да чупиш основната версия; после я сливаш обратно.
  • Отдалечено хранилище (напр. GitHub) — общо място в облака, където екипът качва и сваля кода.

Минимална дисциплина с Git

Комитвай често и с ясни съобщения („добавя търсене по име", не „промени"). Преди да започнеш работа — сваляй последната версия. Така кодът на всички се събира гладко.

Без version control

Ако екипът си разменя кода по имейл или USB — рано или късно някой ще презапише чужда работа. Затова дори малките проекти печелят от Git.

Преглед на кода (code review)

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

  • Работи ли кодът коректно, включително при граничен / грешен вход?
  • Имената смислени ли са, форматирането чисто ли е?
  • Има ли повтарящ се код, който да се извади в метод?
  • Разбираемо ли е без обяснения на автора?

Бележка

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

Документация

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

ДокументЗа когоКакво съдържа
READMEЗа всекиКакво прави програмата, как се стартира, кой я е писал
Ръководство за потребителяЗа потребителяКак се работи с програмата стъпка по стъпка
Коментари в кодаЗа разработчицитеЗащо някои нетривиални части са направени така

Представяне и защита на проекта

В заключителната фаза екипът представя проекта пред възложителя (учителя и класа). Добрата защита включва:

  • Проблемът — каква задача решава проектът и защо е полезен.
  • Демонстрация — живо показване как работи (а не само слайдове).
  • Архитектура накратко — кои са основните части и как се свързват.
  • Разпределение на работата — кой какво е направил.
  • Какво научихме — трудности, какво бихте направили различно.

Съвет

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

Соло срещу екипна работа

СамВ екип
Скорост на дребноБърз — никого не чакашПо-бавно — нужна е координация
Голям проектБързо затъвашРазделяш и владееш
ГрешкиЛесно ги пропускашCode review ги лови
ВерсииМоже и безGit е задължителен
ЗнаниеСамо у тебСподеля се в екипа

Какво трябва да запомниш

  • Ясни роли — ръководител, разработчици, тестващ, документатор.
  • Дъска със задачи (За правене / В процес / Готово) — всеки вижда цялата картина.
  • Управление на версиите (Git): комити с ясни съобщения, история, клонове, общо хранилище.
  • Преглед на кода лови грешки рано и споделя знание; критикувай кода, не човека.
  • Документация (README + ръководство + коментари) прави проекта използваем и продължим.
  • Защитата — проблем, демонстрация, архитектура, разпределение, поуки.