Fending off Attacks on Average Joe Software Developers

It was a year ago this week that I started this little venture.

Coincidentally, just yesterday I took part in a debate that typified the whole reason I decided to start this blog in the first place.

Be it specific to Cocoa development or more generally applied to the profession of software development, there’s a segment of our profession that only respects those with the utmost of programming skill, or at least those who strive to attain such.

In no field is EVERYONE “elite”. By definition that would be impossible. There will always be those who are “average”. In fact, by definition, the MAJORITY of people in any field will be “average”. But average doesn’t mean “mediocre”, (I just looked it up to be sure.)

A lot, if not most, of the software out there in the wild was developed and is maintained and extended by “average” programmers. These programmers are perfectly capable and competent. And they should be respected, even if they aren’t always striving to be elite, to learn all of the ins and outs of the SDK/platform/language that they’re using; even if they do things in non-standard ways; even if they buck platform conventions by trying to develop software on one platform using conventions and design patterns that they brought over from another platform.

The goal, for most programmers, is to produce a finished, working application.

Users of that application couldn’t care less how it was developed, if it “just works”.

There are programmers out there, hmmm… what did I refer to them as a year ago? Oh, yeah, “Hotshot Superstar Software Engineers“… who desire to have the most pristine, optimized, streamlined code that always uses the most appropriate aspect/feature of the language/SDK in its implementation.

Good for them. More power to them. I don’t begrudge them anything.

But personally, I would MUCH rather release a program that does something unique and is adored by users, but was implemented with code that was ugly, unoptimized and inefficient, than to write the most beautiful, optimized, streamlined, efficient routine to implement a feature 20% faster than anyone else ever has, and have users go, “meh, there’s a dozen other apps out there that do the same thing.”

So while Hotshot Superstar Software Engineers continue to degrade and belittle “average” programmers, I’ll continue to stand up for them, and proudly declare myself as a member of that group.


2 Responses to “Fending off Attacks on Average Joe Software Developers”

  1. bartlomiej_n says:

    Sorry, but I cannot agree with you at all… I am not sure what kind of software are you creating (is it some small apps for iOS only?), but this idea that ‘it just needs to work’, no matter of an internal quality has a chance only for small, one-developer projects. Additionally, the project would have to be a one quick shot and that’s over – you sold it, forgot it.
    In ANY other case, doing as you suggest is a suicide, or at least – shooting in your own foot.
    It is not a matter of being ‘elite’ to use well-known design patterns, generally understood idioms, syntax, naming conventions etc. It is just a matter of being a solid engineer, working in the team who pays respect to the other collegues.
    It is also a matter of reducing a maintenance costs of the software in the future, minimizing a costs of introducing new people, assuring you have solid regression tests to keep existing features working and so on.

    The code doesn’t needs to be super-hiper-clever, but needs to be clean, self-explanatory, and overall architecture has to have a reason behind.
    It can be done by the ‘average’ developers, just not by those too lazy to care.

    Personally, I came from enterprise Java world and I usually work with (or lead) teams – quick&dirty approach is no-go and would kill ANY project in longer term.

  2. EricC says:

    I agree that the standards are different for independently developed apps done by a one man shop than enterprise level applications created, maintained and extended by a group of developers over the course of several years.

    My comment about the app just working was said from the perspective of the user. The user doesn’t care about design patterns or underlying architecture. If the program does what they need it to do and proves to be reliable, then they’re happy.

    I’ve worked on all kinds of projects, big and small, with development teams of varying sizes. Bad practices can absolutely kill a project. But many a healthy project has been developed with less than ideal practices.

Leave a Reply

You must be logged in to post a comment.