Software, “It’s not what we do”.

August 9th, 2010
I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”. One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.” Good, lord. Really, people? This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes. I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work. This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work. If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence! In summary, no matter what type of organization you work for:
  • Yes, you need to use source control.
  • Yes, you need to automate the build.
  • No, you shouldn’t be releasing the assemblies compiled on your machine.
  • Yes, you need to stop writing long methods and pay attention to code complexity.
  • Yes, you need to buy your developers the best tools available.
  • No, you don’t need to write your own logging framework.
  • Yes, you should be practicing test first development.
  • No, continuing to ship known defects is not acceptable.
  • Yes, you should understand who your customer is.

  • Dean

    Not to burst your bubble but the most important aspect of development is delivering something that works and that people find useful, not HOW its developed. At the end of the day, that is what is important, not a TDD’d CI’d piece of garbage that no one wants. We dont use continuous integration, dont subscribe to test first development/TDD, and we DO deploy from dev machines. We dont have a problem and make over $1M a month profit with a few developers.

  • Daniel

    @Dean –Ad crumenam, Ad crumenam…

    Delivering something that works and is useful IS SOLELY based on HOW it’s developed. I assume that use source control (since you didn’t knock it on your post). Why not just put everything in a folder on a shared drive? — because it obviously makes sharing changes easier.

    And in the same fashion implementing CI (or at minimum a repeatable build script) makes deployments easier. Not only that, but how hard is it to implement? Why would you want to add unnecessary risk from deploying from developer’s machines when the alternative is just as easily done???

  • http://elegantcode.com David Starr

    @Dean

    I don’t labor under the false impression that fortunes aren’t made on piles of crap.

    Windows 95.

    We done here?

  • http://elegantcode.com David Starr

    @Daniele Spinosi

    Good enough in feature set is a very Lean and profitable idea. That does not equal or even influence good enough in quality of the features that you do choose to implement.

  • Dean

    If we are so concerned about the quality of items being bulletproof and NASA ready before they are unleashed on the public why so many validation errors on your site?

    Clearly, you should have a validation check as part of your “deployment” process to ensure such quality errors are avoided. Dont worry about writing your next blog post (who cares about the output, we’re after quality here!) youll need to spend the time fixing this error instead.

    You can see where I am going with this I hope.

    http://validator.w3.org/check?uri=http://elegantcode.com/2010/08/09/software-its-not-what-we-do/comment-page-2/;accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;accept-language=en-us,en;q=0.5;accept-charset=ISO-8859-1,utf-8;q=0.7,*;q=0.7