What Kind Of Developer Are You?
Posted by Davy Brion on September 27th, 2009
It occurred to me recently how much i’ve changed as a developer in the past few years. When i first started working as a developer, i was pretty quick at adding new features to projects and fixing bugs. I was almost fully focused on adding functionality but i didn’t really spend a lot of time thinking about how i was adding the functionality. In some cases, i complained when i felt that some of our approaches could be better and in other cases i came up with alternative approaches but generally speaking, i was in full “i’m new at this, i’m learning and i’m just trying to do the best i can”-mode. For me, that meant trying to complete your assignments within (or ahead of) time, and with as few issues/bugs as possible.
This worked pretty well for the first 2 years or so of my career, but a lot of that changed when i started working on our own little ORM in VB6 together with a more experienced coworker. For some reason, writing code that made the job of developers easier somehow was more appealing to me than writing code that made the job of our users easier. From that point on, my focus gradually shifted from being a developer who tries to add value through functionality to being a developer who tries to add value by reducing complexity. With that i mean that i spent less time working on actual features that our users would benefit from, and more time on writing code that other developers would benefit from. And that, in turn, would (should?) offer more benefit to our users on a larger scale because my code was supposed to make it easier for other developers to add new functionality.
Just to be clear on this: i think we need both ‘kinds’ (yes, i know there are more ‘kinds’ of developers but bear with me on this) of developers. If a team of developers consists solely of people like me, you’re never going to deliver anything of value to your users because we would spend all of our time trying to improve whatever it is that we’re doing. Just like you need people who are willing to think a bit further about how you’re doing things, you need people who manage to actually get things done in a manner that is good from both the technical as well as the end-user point of view.
Sadly, i’m no longer one of those people. I used to be, but i don’t really think i’m capable of going back to that. To me, providing a good User Experience means coming up with a good API. So i spend most of my time working on architectural and framework stuff. One of my biggest fears is that i’ll some day end up as the typical non-coding architect so i try to stay very involved with how people are actually writing code to deliver real functionality. I may not write that kind of code anymore, but i do keep looking at a lot of that code so i can keep coming up with possible improvements.
So what about you? What are the things you focus most on, as a developer, and why? What are the things that get you the most satisfaction (keep this technical, i don’t wanna know about your personal life) and are you able to focus most of your energy on this?
September 28th, 2009 at 5:48 pm
I’m glad you posted this, I was beginning to think I was the only one with this “problem” of being focused on infrastructure and frameworks. I love writing code that makes everyone elses job easier. It’s quite obvious that the code base I inherited never had someone like me working on it. I often wish I could focus more on end user features, but I feel like if I don’t focus on quality and maintainability no one will. I feel at times my prestige is not what it could be because I don’t focus on shiny things. I only came to this conclusion several weeks ago of what type of programmer I am; it took me 9 years to figure it out.
September 28th, 2009 at 6:43 pm
I don’t really consider myself as one type over the other. I equally agree with both sides. As a user, I often find frustrating interfaces that could (SHOULD) be solved with simple tweaks and added functionality. Why can’t I mass-delete a tree of items, or mass edit them? I would be ashamed to ship a “full-featured” product like this. This seems like fundamental functionality to me.
But as a developer I often see redundant, lacking, slow, and downright BROKEN API’s. I’m not sure why some developers think of the API as an afterthought. If your application is well architected, YOU should be using the API!!! It enforces consistency, and allows your customer to enhance your product!!! Why would you NOT want your product doing all sorts of crazy things, and further ingraining itself with your customers!
My current area of expertise is with CMS’, so I’m not sure if my comments apply to most applications, but I’m guessing it does.
October 1st, 2009 at 3:32 pm
Hi Davy,
I really liked your post, and would like to give it to you as a present some of my favorite quotations:
“Make everything as simple as possible, but not simpler.” — Albert Einstein
“The cheapest, fastest, and most reliable components are those that aren’t there.” — Gordon Bell
“A designer knows when he has reached perfection, not when there is nothing more to add, but when there is nothing left to take away.” — Antoine de Saint-Exupéry
“In Jeet Kune Do, one does not accumulate but eliminate. It is not daily increase but daily decrease. The height of cultivation always runs to simplicity.” — Bruce Lee
“Simplex Veri Sigillum” — dunno…
October 2nd, 2009 at 12:39 pm
I don’t want to, but it appears that I am commonly recognized as sort of spoilsport in a software project, with a big tendency to being overly pedantic.
I’d describe myself of course a lot more positive: I care much about the internal quality of software (e.g. small methods, low complexity, as few as possible interdenpendencies, good style etc.), and I think that good software is the result of getting the details right.
Similar to you, I was a doer in the beginning, always looking for new features and the cool new stuff, but after 10+ years of programming and quite some maintenance disasters, I tend more to see potential problems that may arise in the future.
If I had to make a professional credo, it would be something like this:
- Every line of source code is a potential error.
- The best code is the one that’s not written at all.
And still, I call myself a ’software developer’…
- Thomas
October 14th, 2009 at 12:19 pm
Hi there
writing code that made the job of developers easier somehow was more appealing to me than writing code that made the job of our users easier.
These aren’t exclusive aims….
I prefer to work on solving my current customer’s individual problem. My guiding principle is to provide the user with the best possible experience – it’s their system to use at the end of the day. If I’ve got to think a little harder for a little longer to make that happen, then so be it.
But thanks to you for trying to help me to do so!
Dermot