Here is a (definitely not exhaustive) list of the training topics I teach most often, with a little bit of information about each one. If you need targeted training for your team then just let me know and we can discuss what you need; I can work with you on identifying what that actually is before we arrange actual training courses. For those looking for public courses, see the list of course dates for what's coming up.

PHP Programming Topics

These are all about the code and how to make the most out of the PHP.

Zend Certification 5.5

This training course attempts to cover everything you need to know for ZCE, which makes it comprehensive in the extreme. It can (optionally) include some exercises and also covers what to expect in the exam room itself and some strategies for making the most of what you know to get certified.

Object Oriented Programming

Everything from "this is a class, this is an object" through to inheritance, abstraction and beyond. This is a hands-on approach with exercises to help the concepts to "stick".

Design Patterns

Take a tour through a world of common design patterns, learn when to apply them, and build a few of them yourself to try out the ideas in application. This course will enable you to recognise and apply patterns in your own applications.

Web Services

Web Services and APIs are so much more than SOAP (although we'll cover that too). This courses teaches the core HTTP concepts, then shows how to consume and publish services of your own, including how to handle XML and JSON, how to choose what kind of service fits, how to design an excellent and useful API, and troubleshooting strategies for when things go wrong (just in case).

Skills for LAMP Developers

An intense few days aimed at bringing new graduates, or equivalent, up to speed and ready to work in a fast-paced environment. This course pulls together the theory from many of the courses here, covering programming theory and OOP, designing databases, configuring a standard LAMP platform and managing tools such as Phing and Subversion. Ideal if you have a few junior developers needing some accelerated learning.

Platform Skills

This section includes topics more focussed around the application ecosystem and getting the right tools in place.

Git for Developers

Whether you're completely new to git, migrating from another source control system, or simply looking to improve the skills of your team as a whole, I can help! I'm an experienced developer and tech lead, and have taught git to groups all over the world. My courses can be adjusted to fit your needs but a typical outline looks something like this:

  • Configuring git
  • Create and inspect a repo
  • Add, un-add (reset) and commit changes
  • Diff and log to browse activity
  • Delete/Rename files, the .gitignore file
  • Branching
  • Merging (fast-forward vs recursive merges)
  • Tagging
  • Rebasing
  • Remotes (GitHub examples including forks)
  • Push/Pull
  • Tracking Branches
  • Bare repos
  • Branching strategies and development process

If you would like to cover migrating from a centralised version control setup such as subversion or run a workshop-style session to devise and document a branching strategy, those are often useful to include.

PHP and The Build Process

This is a pick-and-mix course which starts at your source control system, and covers*:

  • Deployment - getting code live, quickly and right every time
  • Static Analysis - evaluating the healthy shape of your code, including compliance with coding standards
  • Automated Testing - tools for repeatedly running test suites and reporting on the output
  • Continuous Integration - gluing all of the above together, to make it easy to run jobs, and create pretty graphs for management!

* Any of the above points can be split out and covered separately

Soft Skills

Things I do myself that people have asked me to teach, listed here in case they're useful to you as well!

Projects and Estimation

If developers could say how long something would take, tell you how far through a particular task they are, and be accurate on both counts, everyone could be able to deliver projects on time, or at least have some idea how late something is! This workshop is aimed at teaching developers how to estimate well, how to track project progress, and how to flag up risks before they become showstoppers.

Speaker Training

Whether you're preparing for a management presentation, taking your developers to sales meetings, or getting ready to speak at a local user group, public speaking is totally foreign to most technical people. Getting developers to come out of their shells and communicate well is awkward - but I have learned to do it, and will share what I know in words that make sense to a geek.