---
tags: code4000
---
# Code4000 workshops
## Learning objectives
After completing workshops participant should be able to:
- Explain different phases of software development lifecycle
- Identify roles of team members, their responisibilities
- Distinct between different methodologies of software development, identify their pros and cons
- Understand how automated testing fits into process
- Create automated testing suite with codeceptjs for their website
- Build some website with TDD approach, understanding pros and cons of such
- Give and receive both positive and negative feedback during code review and/or pair programming session
## General idea
Workshops would last 5 days, taking one (3hours) session with instructor daily and one session for work without instructor. Main focus is to teach participants about how work in real organisation look like, with focus on practical aspects of software developer role.
To achieve that we'd start with bit of necessary theory, introduce participants to concept of Agile methodologies (general, without too much details), give them brief overview of software development steps followed by teams (Requirements -> Design -> Implementation -> Testing -> Evolution) and how this affects daily work. This should take no more than 2 sessions 25 mins each, including questions.
From this jumping straight into automated testing and how this fits into whole thing, why is necessary. Focus on getting participants up and running as fast as possible, without theoretical overhead. So getting environment ready, little bit of introduction on TDD and code review, split them in pairs and jump in the coding.
Then participants in pairs would work on website project of their choosing (instructor can propose something too, but ideally that'd be participant to come up with idea what they want to build).
Over next days participants would get introduced to different, more complex parts of codeceptjs testing framework.
On the last day projects would be reviewed, and necessary theory would be introduced. Also retrospective session inspired by scrum retrospectives would be held to get feedback from participants on workshops content but also on their work.
## Group background
- lots of time
- basic HTML & JS knowledge
- varied level of expertise between participants
## Day 1
### Introduction & solo work
- Presentation: Software development lifecycle and Agile methodology
- Presentation: Quality assurance via manual and automated testing
- Q&A
- Presentation: intro to codeceptjs
- Workshop: writing tests for already existing website
## Day 2
### Team work starts!
- Presentation: Code review & pair programming, team work, giving and receiving feedback (be nice to each other, be constructive, you're not your work so don't get mad but say “thanks” etc.)
- Workshop start: Split into pairs, make sure codeceptjs environment works OK
- Kick off work on participants ideas
## Day 3 & 4
- Presentation block: testing framework internals and concepts
- Workshop: taking presented knowledge into practice
## Day 5
- Summary, theory on already done stuff, Q&A
- Pairs projects summary
- Retrospective session (one of):
- like/didn't like/improve
- mad/sad/glad
- sailboat retrospective
- 2 lies & and a wish
## TODO
- [ ] detailed schedule
- [ ] prepare presentations
- [ ] setup VM environment
- [ ] book flights & accomodation