I was reading last night about how corporations get themselves into messes. Each IT generation (5 years) it seems has a silver bullet thatâ€™s going to nail down a system and make it easier to maintain enforce standards.
The current silver bullet is SOA (Service Oriented Architecture). But in 5 years what will happen is that all of the problems created by multiple databases and links between systems will overwhelm an IT departments’ ability to maintain and programmers to code. In 5 years they wonâ€™t have a single system thatâ€™s spaghetti they have multiple systems which are spaghetti complicated by the fact that you have spaghetti linking them.
I have often marveled in that change is rarely incorporated into a Corporate IT strategy. Itâ€™s either because itâ€™s too risky/difficult to mange/define or rather than appear uncertain, which is the way it really is, managers will put a line in the sand and say this is the way it is.
So how do you fix it? How do you pick a corporate IT strategy? How do you create a system of technology and people that entropy (state of disorder) does not increase over time? You canâ€™t, well you canâ€™t without doing some fundamental things and spending some additional time managing the change.
- Use an agile or similar process that involves technology (architecture/creative/development) and the business.
- Use a technology platform that enables development not hinders it. A developer should not have to fight with a technology to do something.
- Create and Enforce DRY (Donâ€™t Repeat Yourself) coding practices.
- Enforce mandatory testing and code review.
- Publish and get business buy-in of the development process, release cycle, and testing review requirements.
- Embrace and Invest in DSLs (Domain Specific Languages)
On the technology/language front, many IT managers and directors want to â€œstandardizeâ€� on a language or pick a â€œframeworkâ€� that will be the best fit for their environment and frankly will not get them fired if they make a bad choice. But we are coming to a point where the underlying language will not matter as DSLs begin to be used on top of traditional languages for most day to day activities and application programming. The benefit of DSLs is they will change little as the language/frameworks become obsolete and they will grow automatically as the business changes.
What is a DSL? A DSL is a Domain Specific Language a programming language specific to a domain of knowledge or business process. You can imagine a stack of programming languages like this:
- Domain Specific Language (SQL, CSS, make, ant, regular expressions)
- Dynamic Languages (PHP, Ruby, Python, Groovy, Perl)
- VM Languages (Java, .Net CLR)
- Static Languages (C, C++)
In conclusion there is no Silver Bullet other than embracing the change that will happen, and creating systems, and assets that enable that change.