DEV Community

Discussion on: I've Trained Programming Interns For 6+ Years, Ask Me Anything!

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

I've figured a lot of this out by trial and error, but our current system is surprisingly polished and effective!

  1. I put a lot of work into the collaborative development platform. We use Phabricator, Jenkins, and Nextcloud (plus a few other pieces) all fine-tuned to work smoothly and effectively.

  2. We have extensive, clear, well-organized written documentation for the setup process and workflows.

  3. Teams meet over video chat at least once a week. Text-based chat is no replacement for human interaction! The agenda is simple: the leader gives announcements, each person shares what they did over the past week (with opportunities for feedback), and then each person describes what they'll be doing over the next week. Meetings can be as short as 15 minutes, or as long as an hour (we moderate to keep it below that), depending on the needs of the team that week. Everyone looks forward to the weekly meetings!

  4. Interns are assigned an Internship Supervisor (so far, always me) whom they meet with 1-on-1 regularly over video chat. As they move along through the program, they need to meet less and less.

  5. The programming workflow includes mandatory code reviews, CI/testing, and documentation requirements.

  6. We have a complete Employee Handbook and proper forms for all administrative functions. We require these for things like leaves of absence, promotions, and disciplinary reports.

  7. Time must be reported using the dedicated hours tracking tool. Because everything on Phabricator has a code (tasks, PRs, commits, events, etc.), all reported time must include the codes for the work completed. (This has allowed us to catch deceptive over-reporting.)

  8. We have regular performance reviews; however, these are structured in a way that requires the supervisor (me) to hand-write a statement about each point. Then, I meet with each intern to discuss the review.

  9. Interns in the second half of the year-long program, and graduates of the internship program, can serve on the Standards Board, or be appointed as an Assistant Lead Developer or Team Lead. These are designed not to be considered "promotions," but rather a voluntary peer leadership position. It provides valuable management experience to interns, and makes my job a lot easier. (These roles typically cycle each year as graduates get jobs, or just want to give other interns a turn. It's a beautifully peaceful hand-off.)

Point 9 is especially interesting because, when interns know they have leadership opportunities, they become more invested in the maintaining and upholding the structure.