The recalcitrant engineer
Wednesday, November 05, 2003
 

301: This blog has moved permanantly

Please see http://www.burnthacker.com/
Tuesday, November 04, 2003
 

The "too complex" rule: if you can't figure it out in a day or two, it shouldn't be done

There are a few things that have been bouncing around in my head the last few days with regard to software. The first is an old adage, from I think Brian Kernighan, that says (roughly) "you must be twice as smart to debug code than you need to be to write it". If you use all your cleverness to write the code, then by definition you aren't smart enough to debug it. The other thing is a quote from Albert Einstein that (paraphrased) is "If you really understand something, you should be able to explain it to your mother."

I've been thinking about this a lot, both due to the inherent conceptual complexity of a web framework I've been working with and the difficulty trying to explain it. The other thing that's been bouncing around is trying to figure out a really complex web UI if you're a backend java person.

Real world problems are hard. Really really hard. A commercial webapp that needs to actually scale to thousands of users and cluster, that has hundreds of pages and probably 50-100 tables is a beast. Super complex. Not necessarily in any part, but as a whole, it's a freakin' monster. When you try and build a framework that can be a platform for such a thing, you're up against a very big, very tall cliff. There's almost this tradeoff: by the time you get your framework complete enough to actually work for the app, it's going to be so complex in its details and behavior that it won't be understandable without a huge amount of ramp up time. There's a lot to be said for good theoretical backing, orthogonality, good general design, etc, but that won't make things necessarily crystal clear. I know that ultimately, if its a good design, it will have that clarity, but I am wondering if anyone is smart enough to do it, or if its just going to take a lot more time and a lot more baby steps before we can get there.

The other half of this is complex user interfaces. I'm currently working with a UI where developers have implemented extremely clever JavaScript, which, when it explodes, blows the minds of everyone expect perhaps 1 or 2 people. Such a thing is really not workable, as the long term maintenance is not going to be either cheap or possible, depending on your perspective.

I'm starting to wonder if the only thing that actually works is really, really dumb code. Not necessarily bad, but forgoing a lot of things like complex user interfaces, skinnability (micrositing), massive performance throughput, etc, in order to just get something that a normal human can understand and maintain. It's depressing that microsoft access is looking like a good answer for business applications.  

Main Entry: re�?�cal�?�ci�?�trant
Pronunciation: -tr&nt
Function: adjective
Etymology: Late Latin recalcitrant-, recalcitrans, present participle of recalcitrare to be stubbornly disobedient, from Latin, to kick back, from re- + calcitrare to kick, from calc-, calx heel
Date: 1843
1 : obstinately defiant of authority or restraint

ARCHIVES
04/01/2003 - 05/01/2003 / 05/01/2003 - 06/01/2003 / 06/01/2003 - 07/01/2003 / 07/01/2003 - 08/01/2003 / 08/01/2003 - 09/01/2003 / 09/01/2003 - 10/01/2003 / 10/01/2003 - 11/01/2003 / 11/01/2003 - 12/01/2003 /


Powered by Blogger