Types of Programmers: Knowledge Base
Podcast: Play in new window | Download (57.5MB) | Embed
Subscribe: Apple Podcasts | Spotify | Email | RSS | More
An archetype is a recurring symbol or motif in literature, art, or mythology. It is a very typical example of a certain person or thing. It can be called a universal symbol. Personality archetypes are based on Carl Jung’s work in psychological archetypes.
Within the development community we have a lot of unique and interesting personalities. Combining similar traits we can derive certain recurring personality types that make up the unique people in the field. These types are the basic archetypes of developers.
To the outside world these archetypes might seem quirky and strange. Some personality types are strange even within the development community. While researching the different archetypes of developers we broke them down into three groupings: Coding Styles, Knowledge Expression, and General Personality.
This is the third and final episode talking about the types of programmers you’ll meet in your career. It focuses on the various expressions of knowledge you’ll encounter. If you haven’t done so, go back and listen to our episodes on coding and interpersonal styles.
Throughout this series on personalities in software development you’ll notice a certain term is missing. The term “rockstar” has been used a lot in programming to define many different types of personality usually related to a very talented and possibly arrogant developer. Sometimes it’s used in a positive light and others not so good. To avoid muddling the term even more it was not one of the personalities in this series as several of them could fit into the “rockstar” category.
While you may find yourself or your coworkers leaning toward one or the other of these types, understand that they are archetypes or extreme versions of a personality type. We made them even more extreme in our discussion to help understand the type. Other than the Average Joe, you’ll not likely run into anyone who is completely one type. Use these to help understand the motivations behind yourself and your coworkers.
The dreamer believes they are a programmer because they desire to be one and have done surface level work on learning to code. The ‘Hello World’ Expert who has learned a plethora of languages but only surface deep. If not careful a dreamer will never focus and sharpen their skills remaining a dreamer instead of making the dream a reality. They tend to overestimate their skill level and get very frustrated or quit when faced with a difficult or challenging problem to solve. If somehow you get one on your team relegate them to the more simple, mundane operations but build it up as if they are doing important work.
The Vainglorious Newbie
Students who did well in school sometimes come into the work force with an inflated sense of self worth and overestimate their knowledge and usefulness. They are proof that a degree in computer science doesn’t mean you know anything about software development or creating production quality code. They tend to not understand or care about password security and have no idea about design patterns or how to write clean, reusable code. Pairing these types with a highly intelligent and experienced mentor can help them to overcome their own inflated ego and help them to learn better coding practices.
The Young Genius
This, typically autodidactic, young coder is the most excited to try the next new thing in tech and programming. Always following the trends, this person knows way more about programming than they should and spends the majority of their free time coding. Most of the time this newbie has found a passion in coding, but has not yet found their niche so they are trying out all the new and exciting things coming along. They spend so much time in code that they can almost look at it and process it like a computer. They are great at debugging other’s code because they can see the problems before running it. While too green to mentor other developers, these new coders make great additions to a young start up or can help bring an existing codebase into a more modern framework.
This highly experienced coder may not be up on the framework du-jour but their deep knowledge of coding principles and years of experience can be shared no matter the language. They appear to be slow at getting anything done because they know what they are doing and finish large projects by working at a steady pace. The Sage will spend most of their time staring at a problem thinking of all the ways to solve it and then refining those before ever writing a line of code. They are best utilized when building or maintaining larger code bases. Also they make great mentors and code reviewers because they are able to think of all the possible ways to solve a problem.
This academic expert can spend hours lecturing on the history of computer science or the details of an obscure language but knows nothing about practical software development. Their code is the most elegant, illegible code you will ever see. But it is optimized to the extreme and will run 4-5 nanoseconds faster than yours. They are easily distracted by imperfections in existing tools and will waste time on a project inventing a better wheel than is currently available. Outside of academia, a theoretician can be a huge asset to your team if you can keep them within the bounds of the project or use them to research new solutions.
The outspoken Evangelist will want to change all of your existing tools and process because they believe that the project can be improved with something else. The opposite of the Theoretician, they know a whole lot about software development but very little about the actual work of programming or writing code. The slow typer will hunt and peck at the keyboard barely getting over 30 words a minute. The money waster spends exorbitant amounts of money on trainings and boot camps but never accomplishes anything. This person is really a project manager at heart but hasn’t figured it out or been able to make the move. Give them their own side project to manage as they see fit until they can get into a role better suited for their personality.
The Average Joe
This person know just enough to get by with “good enough” code and work to meet the average needs of a team without any fuss. Like the Sage, they are slow and methodical but if chosen correctly they have the right skills and perform well, even though it is obvious they are not doing their best. They tend toward languages and systems that do not change much over time as they are not likely to learn or do much training outside of work. The average 9-5er can be the most difficult to motivate, however while the Theoreticians are out there exploring new areas they’ll be steadily building the meat of your application.
The 17 Essential Qualities of a Team Player
John C. Maxwell
The eleventh quality of a team player is mission conscious. “The (Big) picture is coming in loud and clear”. Maxwell starts out telling the story of Mary Hays or “Molly Pitcher” in the battle of Monmouth during the revolutionary war. She had accompanied her husband, a heavy artillery man, to help care for the soldiers and bring them water during the battle. After watching her husband die and seeing no one to take his place she stepped up and continued his work on the cannon, helping the Americans win the battle. Maxwell then gives four qualities to look for in a team member who is mission conscious. First they know where the team is going. Next they allow leadership to lead the team. The don’t try to take over. They place the team’s accomplishments above their own individual accomplishments. Finally, they do what it takes to win or achieve the mission. He closes the chapter with three ways to improve your mission consciousness: Make sure the team is focused on the mission, find ways to remind the team of the mission, do your best as a team member.
Tricks of the Trade
Fountains, not statues. Learn to BE a particular archetype when it is needed.