I have been thinking recently about the requirements of a good developer. But, I think I must first clarify what I mean when I use the term “developer”. My experience as a developer has, I feel, been different from a good number of others. For me, development meant much more than just being a simple code-monkey. Development meant shepherding a new application from its infancy as an idea in the minds of the users and/or management to a fully functional application deployed to a working environment. It is only in my recent experience that I have discovered this is not always the case. Indeed, if anything, perhaps my experience is the aberration among developers.
I now work for a larger IT shop where I am not the only one (or one of a couple) developers on staff. Instead, I am just one code monkey whose job is spent eight hours a day writing code based on someone else’s interpretation of user requests and needs. I must admit that I find it more difficult to work in that type of a role where the main expectation of me is how much working code can I produce. Essentially, a “developer” in this sense is nothing more than a code monkey. And a good developer in this sense is one who produces working code with no other input or output.
This is not meant to denigrate those who obsess over the aspects of how to best write recursive functions or other code-related issues. Rather, it is meant to point out that a good “developer” does not necessarily equate to a good coder. There is (and will always be) a need for straight-up coders but there is a difference between a coder and a developer. A good coder can and will often produce great code that can solve problems heretofore unresolved. A good developer will provide that which is needed by the users regardless of the level of technology. Good VB6 developers can (and have) produced wonderful applications that did exactly what their users needed while good C++ coders have been known to produce applications that may have been wonderfully written but serve little purpose to external users. Put another way, a good developer will write their code having in mind a good idea of how it will be used by users and therefore cognizant of potential pitfalls. A good coder will write a great program with little understanding of how it may be used and thus potential pitfalls may abound because no thought has been put into preventing those issues. To a coder, just because something “should be done that way” doesn’t mean that some user won’t try it, anyway.
This does not mean that everyone will become good developers. Developers, as I envision them, do more than just code and not everyone can or should aspire to that. But developers should be used for more than just writing code and can only be better by learning and understanding more than just the code they read and write.
And, along the lines of code monkeys, I was urged to include this video… Enjoy! :p