Not Your Average Junior Developer
When I was at Knowledge Systems Corporation in the late 80s and 90s, I witnessed firsthand the difference between what classroom training could accomplish and what "directed learning" could accomplish. KSC developed the Smalltalk Apprentice Program, in which clients who wanted to transition from their old ways of doing things (often using C, Cobol, or others) into the world of Objects and GUIs sent us several people who had been through basic training to become immersed. A mentor was paired with two or three apprentices, and we built a system for the apprentices over several months using "just-in-time" learning. The results were spectacular.
That's when I began to realize that success as a software developer (especially using agile/object-oriented/lean/craftsmanship-minded techniques) had little to do with whether someone had Computer Science training and had more to do with less tangible elements.
By the time I started RoleModel, I had a lot of experience mentoring others, and I had determined that hiring a college grad for $40-60K/year (the going rate at the time) was spending a lot of money on someone who still required thorough training. I experimented with teaching high school grads to become good software developers, but I determined that training them to go from zero to anywhere was too painful for me. However, when I found an apprentice who already knew the basic mechanics of programming, I could take them to the next level with a lot less pain (and some enjoyment). This was also far more cost-effective: by the time they reached Junior Developer status, they were actually worth that $40-60K.
The RoleModel Junior Developer
Definitions of a Junior Developer vary, and this inconsistency in terminology is one of the most frustrating things in our industry. The term might refer to a hacker-academy participant who knew nothing about programming 12 weeks before. In my shop, the term denotes a competent developer with a solid foundation in agile and object-oriented development techniques. A Junior Developer at RoleModel has worked on real-world projects using that foundation, but does not yet have years of experience to draw upon. I've never met anyone coming out of college with a CS degree who meets that definition.
Over the years, I have found that beginners need a lot of the same instruction. However, a beginner at RoleModel is someone who already knows the basic mechanics of programming and has proven that they have character, are good learners, and are teachable.
The Training Process
RoleModel created its Software Craftsmanship Academy to train Junior Developers. We lay the foundation in the Immersion Phase, which covers four months. This consists of a series of projects and "just-in-time learning" on a variety of topics, including but not limited to Rails. This phase is highly interactive, but it makes the participants do a lot of work.
Participants then enter the Apprenticeship Phase, a period of one-on-one training that lasts for three months. Each apprentice digs deeper into some specific technologies (e.g., Rails, iOS, or other things) and works on some low-risk projects outside of our main line of business.
After three months (or six months if we feel the individual needs a little longer in the Apprenticeship Phase), they will spend three to nine months in the Resident Phase, in which they work as part of the team on projects with significant supervision—more so than our typical level of accountability. (How much resident work, if any, is billed to a client and at what rate will depend on many variables.) After they've completed their "Residency" successfully, they may become Junior Developers.
Junior Developers are never given their own projects to lead; however, depending on the size and nature of the project, they may do a significant amount of work. No one shy of a Senior Developer leads a project at RoleModel, and typically this task is reserved only for Craftsman (individuals who have accomplished more than 10,000 hours and proven that they have reached proficient-expert status in most aspects of their projects).
Setting the Standard
By the time participants earn the rank of Junior Developer, they possess a solid foundation and are well on their way to becoming software craftsmen. These individuals are equipped to bring value to their employers and to begin a successful journey in the field. We frequently receive comments from people throughout the greater Research Triangle Park area stating that the best developers they have seen have come through RoleModel. Those who are setting the standards in the creation of great software and great software craftsmen recognize what it takes to prepare for greatness.