Apprenticeships in the Banno group follow a fairly standard path. After hire, apprentices spend their first 1-2 months learning a tech stack before joining a production team and working on production problems. Generally, these are projects without any time restrictions to allow apprentices to balance work with other responsibilities while working part-time hours. If apprentices stick around past the initial 90 day apprenticeship period and prove themselves ready, they may join work on time-sensitive features as well.
However, due to the unique structure of the Data Services team, the process requires a bit more management up front. This doc will outline the expectations for both apprentices and teams managing apprentices within the Data Services group.
Scala Boot Camp
When new apprentices start, we assume 0 Scala knowledge. As such, we have a Scala Boot Camp prepared to teach the basics of the language as well as introductory FP concepts. While we have also used this boot camp in the past to teach apprentices Akka and Postgres, the changing landscape of our technical stack means this is no longer required for all team members and these modules are no longer a part of the Scala Boot Camp. These modules remain in that section of the wiki for those interested.
During this time, all management duties including code reviews, 1-1s, and mentorship will be overseen by the Apprenticeship Program Lead. Apprentices will be assigned a peer mentor to help them day-to-day, and there will be at least one full time Scala engineer (not necessarily the Apprenticeship Program Lead) checking in on them regularly. During this time, the focus is on learning Scala and completing the projects outlined in the boot camp.
Joining a Team
After completing the boot camp, apprentices will join a production team, with the intention of staying with that team throughout their entire apprenticeship. Each team will be responsible for at most a single apprentice at a time, and the team has final say over whether or not they accept an apprentice at any given time. Generally we will determine which teams will be getting apprentices before hiring any given group.
The apprentice will work as a member of that team, attending standups and retrospectives as schedules allow and pulling work from that team’s backlog. The team will be responsible for the apprentice. They will oversee any additional learning required, including libraries or tools used within that team’s services, and be responsible for 1-1s. The team lead for the team does not need to be the one giving that member 1-1s, and in fact it is encouraged that another team member take on the responsibility of team mentor if they are interested in technical leadership as a career path. The Apprenticeship Program Lead will still handle any HR requirements and will be available for questions or assistance as needed.
The team will also be responsible for giving the apprentice projects. Ideally, the first project will be a self-contained project that can be completed and presented within the first 90 days of the apprenticeship. Internal tools and documentation are a common path, and teaching a new apprentice the team’s stack should be viewed as an opportunity to fill any gaps in a team’s documentation. Projects should be useful to the team, but it is advised not to give the apprentice anything time sensitive unless both the team and the apprentice have discussed and agreed that this is a reliable path and will not unduly strain any involved parties.
Going Full Time
Apprenticeships that continue past the initial 90 days generally continue indefinitely. If the apprentice becomes a candidate for a full time position within the team, the team lead will bring it to leadership and determine what our openings are. Often times the team the apprentice has worked on will be the best place for them, but other teams will be considered if they have openings available. While going from apprentice to full time employee is a common path, it is not guaranteed for any apprentice hired. The prospects for any apprentices looking to join the team full time should be addressed in 1-1s with either their team mentor or team lead.