Skip to content

MCR-Digital/apprentice-boot-camp-fundamentals-3

Repository files navigation

Competencies, Behaviours and Knowledge units

These relate to the KSBs defined in the Level 4 Software Developer standard.

  • S1: create logical and maintainable code
  • S4: test code and analyse results to correct errors found using unit testing
  • S12: follow software designs and functional or technical specifications
  • S10: build, manage and deploy code into the relevant environment
  • S14: follow company, team or client approaches to continuous integration, version and source control
  • S14: follow company, team or client approaches to continuous integration, version and source control

Resources

  • Slides
  • Laptops
  • Internet access
  • Post-its
  • Pens
  • Whiteboard

Mentors / Languages

Two–three mentors required in addition to leads. These should be able to cover support for the required languages.

Exercises (katas and code starters) will need to be ported to required languages.

Mentors should be comfortable with branching, feature toggles, setting up GitHub Actions for their chosen language.

Prep-work for apprentices

  • Make sure you can sign in to github.com with your own account by signing out and signing in again
  • Open the template repo and click ‘Use this template’
  • Clone your repo: git clone https://github.com/[your-username]/apprentice-boot-camp-fundamentals-3.git
  • Follow the instructions in the README for your language under the exercises directory, making sure you can run the tests (which are all ignored)
  • It’s normal to have problems with this, so just let us know! :)

Follow-on tasks

Organisation mentors should look to exercise the knowledge we’ve covered in the boot camp. Below are suggestions for tasks that would do this, but please use your own judgement to work out what to do. There is no need for anything to be returned to MD or the presenters—it’s just a learning exercise.

  • Find out what CI systems the organisation uses
  • Find out how the team works with branches and discuss this with your mentor
  • Find out how the team deploys code and manages releases to mitigate risk

Further reading / learning resources

CI/CD

Git

  • Git Pretty is a flow chart that helps you fix git messes
  • Dangit, Git!?! is a written site with more detailed instructions about how to resolve problems
  • Git-it is a desktop (Mac, Windows and Linux) app that teaches you how to use Git and GitHub on the command line.
  • This Atlassian git tutorial is also a useful resource on undoing changes
  • Git for Teams is has a book and some video aimed at helping you create a workflow strategy with your team, and learn to use Git
  • git-katas has a bunch of exercises that we’ve dipped into in this boot camp to practice git learning
  • Learn Git Branching is a git repository visualizer, sandbox, and a series of educational tutorials and challenges. It helps you understand git through visualising what you do.
  • CS Visualized: Useful Git Commands has some great animations which help bring git commands to life by visualising what is happening
  • If you use zsh, then https://ohmyz.sh/ with the powerlevel10k theme will give you git command line tips and visibility of the branch you are on in your prompt.

Slides

The slides can be viewed from the link at the top of the repository. Hit ‘?’ to see navigation controls.

Exercises

  • Setting up GitHub Actions CI, changing tax_calculator & watching GitHub Actions fail/pass
  • Changing tax_calculator using feature branches
  • Changing tax_calculator using trunk development and feature toggles
  • Git: reset
  • Git: amend
  • Git: detached head
  • Git: revert
  • Git: stash

Boot Camp Summary

  • Continuous Integration
    • What it is and why we do it
    • Examples of different CI systems
    • Exercise: add GitHub Actions to fork of existing repo
    • Exercise: Make change to their fork and show (hopefully) successful build
  • Continuous Delivery/Deployment
    • What it is and why we do it
    • Benefit of fast feedback—small/fast deployments
  • Branch based development
    • What is a branch
    • Explain feature branching and pull requests
    • Exercise: Get them to make two changes using feature branches
  • Trunk based development
    • What is a feature shield
    • Exercise: Get them to implement a feature shield
  • Comparison of approaches

Briefing for organisation mentors

  • Review the summary above
  • Have a go at the exercises to get a gist for the
    • Exercises are described in the slides linked to at the top of the repo
    • Code for the exercises is in the exercises directory
  • On the day get involved when they are doing the exercises and help them when they get stuck
  • Ask them open questions about what they are doing
    • Ask to see what they’ve done
    • Start with the tests
  • Help resolve language specific issues
  • Coach them towards finding their own solutions rather than fixing things for them

Git kata exercises

The git exercises are included as a git subtree from https://github.com/eficode-academy/git-katas.git. It is best not to update them unless you are familiar with maintaining changes to subtrees. To fetch changes from the origin, run git subtree pull --prefix exercises/git https://github.com/eficode-academy/git-katas.git master --squash.

Contributing

If you’d like to contribute changes to the slides or exercises, please see our contributing guidance.