The last couple of years it has been a general practice to offer a developer training at a CiviSprint. The idea behind this is to get CiviCamp (which will usually precede a CiviSprint) as user oriented as possible and push all technical/developer type of sessions and activities to the sprint. This then includes the developer training. It also allows for more trainers/helpers to attend and more fine tuning towards the needs of the participants.
make sure you have a room that is large enough for the participants you expect (in my experience anything between 6 and 14)
you will need a beamer and might like a flipchart
prepare a presentation of your training. It will probably help if you specify goals for each session to structure your presentation and training. Include concrete exercises. Attach is an example of one of my developer trainings (for what it is worth...)Developer_training.odp
send out an email in advance, stating that you expect each participant:
to have a basic understanding of PHP, OO and MySQL
to have a local installation of CiviCRM available that they can play with and break (in case there is wifi trouble a local installation is really recommended)
to have downloaded and installed civix (and perhaps buildkit if you want to)
The level of your participants is likely to be very mixed. Some will barely know PHP and others will be experienced developers just learning a new application. So if at all possible it is quite nice to have 2 trainers so you can have a basic program for all but also the ability to have more advanced topics and exercises for the more advanced participants. It is ideal if you then also have an additional room/beamer.
In my experience there are 2 approaches you can take:
the core bugs approach where you prepare your participants to deal with core issues. They will have to set up buildkit and you will certainly talk about PR's, reviews and unit tests. The advantage is that participants can immediately work on a bug during the sprint, the disadvantage is that some of the participants probably have a hard time getting the basics of hooks and the API already and then this is a steep mountain to climb. On top of that setting up buildkit on the spot will require some of your time (although with Docker it should be straightforward but somehow there is always the one exception).
the extension approach where you give them the basics of extension development and only mention that there is also buildkit, unit tests and core bugs but ONLY mention it. This is the approach I prefer as it allows me enough time to ensure the basics of extension, API, hooks, pages and forms are covered and understood by all. The ambitious ones will then certainly find out how to fix core bugs with the documentation or at a next sprint. I firmly believe in unit testing but I also believe it then makes for a heavy load for 2 days.
There is no list of topics that you have to cover in your training. Obviously it makes sense to talk about extensions, civix, API and hooks. Below is a list of topics I cover:
presentation round (who are you, what is your CiviCRM experience, what do you want to take home from the training)
civicrm developer community & information resources (Developer Guide, StackExchange, Mattermost, Gitlab)
some real life examples
if I have time left: upgrader, custom searches, reports, entities