Switzerland has an apprenticeship for applikation developers, system engineer, and office supporters. After school (in this case finished with 16), the apprentice works for a company and parttime goes to school. This can be done two ways:
- have a special first year with only
school to build a basis and
additional 3 years with 1 day of
school a week and some block courses
of a week or two.
- starting at the company from the
beginning, having more block courses
spread over the full 4 years
School has wide spread subjects like English, Math, gym, and computer basics. The block courses are more specific: Java basics, DB, data analysis, OO, project management basics, ...
If they take an additional half day of further schooling a week, they are entitled to visit technical college after the apprenticeship.
During the apprenticeship they earn some money (going up from maybe 1/6 to 1/4 of a normal salary), have 5 weeks of vacation like normal workers, and are at least towards the end integrated into normal development in the company. So usually, for hte company, what they get back in productivity covers the cost.
At the end of the apprenticeship, they have to make a small project of 10 days including documentation, and later present the solution in front of some state experts. This counts towards their grad by 1/3, the computer courses count 1/3, and normal school the last 1/3, roughly.
Alternatively there of course are university courses, similar models as most.
Teaching is mostly very conservative up front, as the hands on part is done in the company. There they have a business person (mostly HR) and another developer to manage them. It usually takes up about 10-20% of the developers time being more of a mentor and guide then a teacher.