Being a developer I have been surrounded by developers both in school and at work for over 10 years, so I have made a lot of friends in the field along the way. As you can imagine I have also been in all sorts of arguments pertaining to technology which ended with an agreement to disagree.
Some of my closest friends in the world are people I regularly disagree with. Besides us having something in common – like we code, or we went to the same college or we grew up in the same neighborhood – I think the main bonding factor is that we tend to frequently have varying ideas on various topics. Many people find these kind of friendships frustrating, but they are actually my favorite. I usually get to learn something new in every interaction, which is a gift.
I was recently thinking about the differences in perspective of what coding meant to me that caused me to see the process of software creation similarly or differently from other developers and I realized that in my life I have met mainly three types of developers, some people are a combination of two but they are always more of one type than the other and this greatly affects their view on how software should be built.
This is usually the developer that loves to code, not for solving problems particularly, but loves the general process of communicating with a machine and watching the way it responds. They are the kind that wants to build their own computer and computer language, not as a hobby but they want to see how far they can go or do it “right”. They usually carry out or read about benchmarks and care about efficiency to a fault. This kind of coder believes in the right way of things, because to them if everything is measured there has to be an objectively correct way to code something, and most times they have to do it themselves cause they don’t trust these questionable open source projects. You can usually find this coder in arguments about the inefficiencies of framework X and they store code snippets they have refined over several years.
This is usually a developer that likes to make completed and well refined products. This person usually sets out to solve a particular problem that they resonate with and does not care too much about the intricacies of code beyond what it can do for her in the next project. They think of the problem from end to end and the various pros and cons of various execution strategies. Besides enjoying reading and writing code, this type of developer usually dabbles in design, copy writing, marketing etc. in order to provide robust solutions. Basically this type of developer sees code as a tool in a toolbox to make stuff. They usually love using open source tools or anything that will make them release a product faster so they can move on to the next exciting thing. You can usually find this person in arguments about the minimum viable product and deep discussions about the complexities of user interface design.
This is the type of developer that codes just for them. They enjoy the challenge of coding and they see software in the context of what they can do in their lives with it. They are the kind of people that will code up their own LED display when they could buy it from Radio Shack or write their own home entertainment software or create personal apps they use on their phone and never submit it to the app store. These kind of developers see code as a means to directly better their own life and think of it in that context, not necessarily as a business tool but more like a hammer in their garage to help them build that rocking chair or family dinning table. They code for themselves. You usually find this person discussing their newest home or computer innovation.
I find that the perspective in which you see code affects the way a lot of developers work in the real world. To some it is a tool, to others it is a new frontier to be discovered and advanced and when you have these varying ideas of code, I tend to see developers agree and disagree on the “right” way to do this or that. Understanding this I have found myself in fewer arguments and in more discussions trying to understand the perspective of the other person, because when I do I tend to learn something new and something worthwhile.
Editor’s Note: This article first appeared on Adim Ofunne’s blog. Adim is a Software Engineer and Designer currently running Blueport Software Limited and naijalingo.com. When I am not turning Coffee and Music into Code, I enjoy playing poker.