Types Of Programming: Coding Styles
As programmers, we tend to be a rather interesting bunch. Some might even call us peculiar. Developers tend to have our own culture and even subcultures within the development community. Attending a polyglot or regional conference will show many of the various subcultures within development getting together to grow, learn, and enjoy the company of like minded individuals.
Within the community of developers are several archetypes that you will see. Rarely will you find someone who is completely a particular one but you’ll notice these traits, some stronger than others, in most of the developers you meet. The other two episodes are look at the developers personality and their knowledge base.
While researching the different archetypes of developers we broke them down into three groupings: Coding Styles, Knowledge Expression, and General Personality. This is the first of three episodes talking about the types of programmers you’ll meet in your career. It focuses on the various coding styles you’ll encounter.
This is not an exhaustive list of coding style archetypes. Instead it’s a group of the ones you are most likely to encounter within your career. While there are others out there you can use this list to better understand your coworkers, managers, and friends in the development community. To be truly introspective think about the times you have exhibited the traits of these and try to figure out which one you resemble most. Use that information to set yourself up for success at your current place of employment and when you are looking for work.
The Cowboy/girl Coder
Cowboy coders are a force or nature who can code two to three times faster than anyone else. They typically have a degree in computer science and believe that clean code and best practices do not apply to them. Refactoring is a luxury for city slickers, the cowboy’s code is spaghetti at best and smells like several nights on the trail eating only beans. Cowboy coders are best on projects where deadlines are more important than anything else.
The polar opposite to the cowboy coder, the perfectionist aim to write the best code ever. While the cowboy treats code like cattle, the perfectionist treats code like their pet or even worse like their own child. They can get confrontational and argumentative when asked to speed up the process or when told to build a less than optimal solution for the sake of time or money. When resources are limited, the perfectionist works best when told the limitations up front and asked to find “the best” solution given the current limitations.
The caretakers has been with the company for years, maybe even decades so they know the codebase inside and out, especially the older, more arcane areas. Likely an older generation of developer, they are more comfortable with out dated technology and languages so spend most of their time maintaining legacy applications. The caretaker may have gotten stuck in a rut or be bound by golden handcuffs preventing them from trying new technologies. Tread carefully if putting a caretaker on a newer project as they may be riding out to retirement on their knowledge of the codebase.
The specialist is a developer who rather than becoming a ‘T’ shaped developer has become a lower case ‘l’ shape, diving too deep into one area at the cost of being well rounded. The data scientist is one particular type of specialist who only codes in python, tends to be very good with math, and enjoys statistics and image manipulation. The security expert is another common specialist you’ll encounter who knows everything about security, typically hacks into systems for fun, and has a different set of ethics than most. Specialists do very well on highly structured teams where their role is well defined and tasks are assigned by management, don’t expect them to thrive on a Scrum team with loose role definitions.
Sometimes called the experimenter, the rebel is one of the most creative types of programmers. They are constantly looking for newer and better frameworks, languages, and coding practices. They live by the motto, “Rules are meant to be broken,” which can confuse and frustrate other members of their team. Rebels work best when asked to solve unique problems or find new ways of creating solutions, they get bored and suffer when tasked with maintaining legacy applications, even ones they’ve written.
A hero is the developer who’s best when they are under stress and the only person wo can solve the problem. One type of hero coder is the Ninja, who works best alone and may have already solved the problem before you even approach them about it. The Paratrooper is the last resort developer sent in to save dying projects because while they lack patience to work on long term projects they can get up to speed and save a failing one in days to weeks. The biggest risk with sending in a hero is they may solve the problem in a way that only they can understand, make sure they train other developers on what they have done before assigning them to the next problem.
The Regular Coder
Known as 9-5ers or dark matter developers, to the regular coder “good enough” is the main objective. They have the skills and knowledge and perform well enough to get by, but aren’t putting their all into it. This mediocre developer will take longer to get a job done, but their slow and steady pace avoids burn out and helps them keep a balance between work and life. The regular coder runs the risk of becoming apathetic.
What do you do if you run an organization or team and want to allow remote work? It’s not just as simple as send everyone home (as many people have found out recently). Working remote completely changes a lot of critical organizational processes, many of which you depend upon if you yourself want to stay in business. In this chapter, Will gets into how you might approach gradually shifting into a remote capable environment as well as the pitfalls at each stage.
Tricks of the Trade
We talked about how to understand and work with various archetypes in this episode. Understand, though, that these are ways to better understand ourselves and others. The archetypes do not define us. If you find yourself to resemble one that you don’t like then you can make the changes to improve on yourself. That is the main goal of this podcast, to provide you with the tools to help improve yourself.