Practical Software Engineering

Working in Teams

vs

Working Alone

Teams Can Go Faster

Teams Can Go Faster

  • Less context switching
  • Allows for specialisation
  • Higher maximum output

Teams Can Go Slower

Teams Can Go Slower

  • Differences in experience levels
  • Misaligned understanding of the problem
  • Delegation overhead
  • Less individual responsibility
  • Integrating each other's code

Planning the Work

How to delegate effectively

The Card

Issue · Task · Ticket

The Card

Basic unit of work

  • Enough context to understand the work
  • A definition of done

The Card

Commonly includes

  • Problem or feature description
  • Suggested implementation
  • Acceptance criteria
  • Complexity estimate
  • Associated code (once started)

The Card

Tips for writing good cards

  • Small and specific
  • Anyone can pick it up without prior context
  • Anyone can tell when the work is correct

The Board

Kanban · Project · Sprint board

The Board

Shared view of work in progress

  • Columns: Todo -> In Progress -> Verifying -> Done
  • Sprint: 2–4 weeks of planned work
  • Standup: Regular sync on blockers and progress

Takes time

That could have been spent coding

Git

How to integrate your work

Without Git

Without Git

  • How do I share my changes?
  • How do we combine changes to the same file?
  • How do I undo something?
  • Who changed this, and why?

Core Concepts

Core Concepts

  • Commit - a saved snapshot of changes
  • Branch - a separate timeline of changes
  • Merge - combining two branches

Commit

Bundle and save related changes

Commit

Stage your changes first


git add style.css index.html
					

Commit

Then commit with a message


git commit -m "update header styles"
					

Branch

A separate timeline of changes

Branch


git branch feature/new-header
git checkout feature/new-header
# make changes to your files
git add index.html
git commit -m "try a new header"
git checkout main
					

Changes stay on feature/new-header

Merge

Bring work back together

Merge


git checkout main
git merge feature/new-header
git log
					

Merge Conflicts

When two branches change the same line

Merge Conflicts


<<<<<<< HEAD
background: blue;
=======
background: red;
>>>>>>> feature/new-header
					

Merge Conflicts

Resolve and complete the merge


# edit the file to resolve the conflict
git add style.css
git commit -m "merge feature/new-header"
					

Remote

A shared copy of the repo everyone syncs to

Remote

Clone the repo


git clone https://github.com/codersforcauses/software-engineering-practices-demo-2026-winter
					

Remote

Push your branch to the remote


git checkout -b your-name/update-my-file
git add changed-file
git commit -m "update my file"
git push origin your-name/update-my-file
					

Remote

Pull Request

Your turn

  1. Clone the repo
  2. Create a branch with your name
  3. Modify an existing file
  4. Stage and commit the change
  5. Push and open a pull request