I wrote this as an email to the owner arguing for a talented underappreciated person to be promoted from software test to software engineer (Joanna) because it was the right thing to do rather than hire a new person.
Names have been changed to for anonymity
I was thinking about last Friday when you mentioned that you were now looking for a software developer candidates and to recommend any candidates for review and earlier in the week when Charles asked me to add and update a checklist of software developer skills. However your best candidate for the position already works for The Company currently, Joanna.
Thinking about what a makes someone a good software developer in my experience and technical knowledge of any particular language, software system, or development process isn't it. What does make someone a good software developer is curiosity, being detail oriented, the ability to decompose a problem, patience, and understanding what the final goal of the software is.
No matter who the person coming in to The Company, experienced or recent computer science graduate there will be an adjustment period to understand the technical particulars, not to mention the process and social dynamics of working at The Company and integrating themselves as a valued software contributor. As far as what is the hardest part to do of these it is most likely the process and social factors as the technical details at The Company are based on standard technologies and a person with talent and desire could learn that aspect as they familiarize themselves with the particular codebase. Current example in this case I would think of the situation of Ezekiel as he started as a software developer at The Company and did not know the particular languages or development tools at all, but was able to learn them while working and building himself up to being a productive team member.
With respect to why Bill failed to contribute and grow into a valued team member he was able to pass all the software tests and interview processes, but had trouble integrating with The Company process and social dynamics and as you have only a limited time to evaluate candidates through interviews there is the large risk that this could occur again whereas with a current known employee this has already been tested and evaluated.
This is why I think large companies want to use and keep intern programs for finding their best new software developers as finding people that are compatible and know the product and have talent to do the job can grow into the role faster and more efficient than spending a large amount of time and money filtering and testing candidates that are actively seeking other positions and possibly finally losing out on them to another firm.
Reading through the approach and design of the Ada Developers Academy (http://adadevelopersacademy.org) and how they train, mentor, demonstrate, and intern their students to businesses is a successful model of recruiting and growing software developers.
Off the top of my head I know the following about Joanna as a software developer.
- Writes code currently (Python)
- Teaches classes on code (Python)
- Understands and teaches Geographic Information Systems
- Understands the business and processes
- Detail oriented (from her work as a tester)
- Has expressed a desire to grow and work as a software developer
- Knows how to get things done
Now the role of a software tester would be vacant, but finding and training someone as a tester is a simpler process as the tools and results are immediate and do not require specialized knowledge other than the Geographic Information Systems aspect and I am sure Joanna and others at The Company would be available to assist this new tester and get them comfortable and familiar with what is expected faster and easier than a software developer would take as well as a software tester would not have the same salary expectations as a software developer.