I think that these posts started out as rants, and no-one wants another rant blog.
so, Ive decided that every post here should have some kind of solution, or suggestion or something positive, rather than a “this is what is wrong” message…
So, to follow up last week, this week the key is simplicity.
The bigger the project, the harder it is. In every aspect. Keeping every aspect simple is the key to successful software. The project may be big, but each part of it must be as simple as it could possibly be.
One thing I have noticed is architects/designers seeing ‘the bigger picture’ where one doesnt actually exist. Another thing I have noticed is that the architect/lead says “lets use this brilliant piece of tech to solve our problem” because its their thing, the thing they think is great. Without realising that, adding in another piece of complex technology signs the business up to that complexity forever. Everyone who will ever work on that project, all the maintenance coders and anyone will forever have their learning curve steepened, the time to productivity increased, forever.
Thats a long time, and a lot of additional complexity.
So, my rules of thumb are,
1) If its scaffolding, you are only allowed to use hugely popular pieces of technology.
2) if it is a business process, you are only allowed to include new technology if
a) its simple
For example, open source software in projects. I use Struts, and JBoss, and Hibernate and Ibatis and a few other tools. Complicated pieces of technology. But I don’t tend to use open source software further up the application stack. Why? Because it almost never supports my business process. It supports it, in a general sense, but it wasn’t tuned for my process.
So, going by my rules of thumb: struts and jboss and hibernate are fine, because they are massive and popular. Ibatis? Its ok, because its simple. There is no massive increase in learning curve introduced.
Ok, these are rules of thumb only. You can use complicated pieces of tech up the application stack. But… you need to think very long and very hard about all the less god-like mere mortal people who will be looking at your wonderful masterpiece, and changing it in ways you never expected. You need to care about those people, cos monuments never last.