Re: Every minute spent on infrastructure programming is a wasted minute



Captain Jake wrote:
"Every minute spent on infrastructure programming is a wasted minute."
-Juval Lowy, .NET Software Legend, April 2003

I saw this quote on the internet and thought it was rather interesting. I've worked at places that insisted that "code is glue" and no infrastructure code ought to be written, and I've worked at other places that insisted that all the infrastructure be written in house (of course most places I've been were a mix of the two). Some places seem biased in favor of writing their own infrastructure because they have succumbed to the "not invented here" syndrome where they don't trust any code they themselves have not written. But to be honest, has anyone ever seen it actually work out that a place writes all it's own infrastructure and yet the project is on-time and on-budget? It seems a luxury that no place can really afford. It also seems to fly directly in the face of the idea that good software design implies extensive code reuse.

What thinkest the denizens of non-tech?

(Nearly) always build mid-high level infrastrucure.

A generic library is just that, a generic library. It has code in there to deal with a multitude of cases, many of which you never use or deal with, and it also has to be solid enough to deal with developers hammering on it with garbage. Not only are you paying for code you aren't using, but it's going to get compiled into your code.

Writing your own means that you get exactly what you want, you get no more than what you want, and you also know how you got it, and have control over it. I could buy something with 80% of the functionality I need, but writing my own, I gain that extra 20%. In general, that doesn't make it a waste of time, although that would depend on how long it took to write it obviously.

The level of the infrastructure is proportional to the likely hood of being re-placed with custom code. Low level code is unlikely to be rewritten or replaced, but higher up functionality should be considered for replacement.

I'm nearly done writing my OPF, including 'OPF aware' controls that I've implemented based on the TNT controls for unicode support. I even re-wrote some of the drawing functions so they look as nice as some of the 3rd party controls out there (which would have added about 100K lines of code to the project, and lots of functions I don't use). I've also expanded the controls to include some nice features.

In total, it's a few thousand lines of code, and about a months work. I get database independence, a unicode application, I know how everything works, and it's completely re-usable across projects.

Cheers,

Andy Gibson
.



Relevant Pages

  • Re: OOP style
    ... >> The root of all evil, if not avoided, is putting functionality ... becomes enabled when you change anything in one of the dialog's controls. ... There is also an extra property "Dirty", ... That event dispatcher enables or ...
    (comp.lang.pascal.delphi.misc)
  • Re: RADiest Client for SQL Server
    ... > So were they MDB front ends or ADP front ends? ... Access starts off with all functionality and you have to find ways to ... The controls look like real windows controls, ... probably need to purchase Active Reports or Crystal Reports to have ...
    (microsoft.public.sqlserver.msde)
  • Re: RADiest Client for SQL Server
    ... > So were they MDB front ends or ADP front ends? ... Access starts off with all functionality and you have to find ways to ... The controls look like real windows controls, ... probably need to purchase Active Reports or Crystal Reports to have ...
    (microsoft.public.sqlserver.server)
  • Re: RADiest Client for SQL Server
    ... > So were they MDB front ends or ADP front ends? ... Access starts off with all functionality and you have to find ways to ... The controls look like real windows controls, ... probably need to purchase Active Reports or Crystal Reports to have ...
    (microsoft.public.sqlserver.programming)
  • Re: RADiest Client for SQL Server
    ... > So were they MDB front ends or ADP front ends? ... Access starts off with all functionality and you have to find ways to ... The controls look like real windows controls, ... probably need to purchase Active Reports or Crystal Reports to have ...
    (microsoft.public.sqlserver.clients)