Sometimes I come across posts that just nicely sum up attitudes in IT that I personally think are responsible for the issues we have in IT today.
This is a great example it goes through what the writer in question wants to see and starts off with a cracker.
There is always a community of IT people fascinated by shiny code generators. IDE support for SOAP is just that. There is no more “architecture” built around these code generators than the CASE tools of the past.
Ahh yes the old hatred of "code generators" its a wonderful thing,
Ruby on rails sucks for the same reason apparently.
The poster of the first article goes on to talk about "dynamic" programming styles and then trolls on about how "easy" it should be to do independent evolution of complex data centres... if only everyone would listen to their approach.
Genius.
Lets start with code generators suck. First off lets assume you aren't using binary to programme, because assembler gets compiled into binary so there is code generation there. Maybe you are using a language like Java which not only compiles (generates) the code, but worst of all it then actually hosts it in an environment where
it does things you didn't ask it like garbage collection, memory allocation, talking to the operating system. The posters biggest complaint isn't about code generation its about static v dynamic interfaces and really its about the poster wanting to hand roll everything rather than actually just do the valuable work.
Code generation is a good thing, a very good thing. It makes tasks repeatable and enables you to automate parts of the cycle. Code generation for editable code has issues, I personally prefer the "magic" approach where you use facades and proxies to hide the generated pieces. The whole goal of IT should be to automate more and more parts of the process, and right now that goal should be focused on automating the communication between different systems.
The "code generation is bad" crowd are plain wrong, it reminds me of a question I asked at
JavaOne in 2005 (
IIRC), there was a Web Framework "
Smackdown" with a
JSF chap and a bunch of different OSS frameworks, all claiming theirs was the quickest to
code in, while the
JSF chap was claiming his was the quickest to
deliver with tools.
My question was that given that GUI development should be WYSIWYG, therefore tools, weren't all the other frameworks pointless and shouldn't we just get behind the one that is designed to be tooled. One of the OSS boys flashed back with "you can't build serious GUI applications with tools"... a killing retort he clearly thought. My response was "I used to build Air Traffic Control
GUIs using visual builders, and I'm pretty sure those would class as serious
GUIs with anybody"... the OSS framework chappy then resorted to a classic five year old child argument of "
sez you".
Tooling is a good idea, tooling is what everyone wants. People want to have pieces that are easy to assemble so they can get onto the value as quickly as possible.
There are four ways to get a new cupboard
- Buy it ready made (package solution)
- Buy it flat packed (assemble with simple tools)
- Build it from raw materials (planks, nails, screws) with power tools (hammers, drills, saws) (smart custom build)
- Build it from a tree (dumb custom build)
The goal of technical
SOA is to make 2 happen more often, the goal of code generators and things like the
JVM is to make 3 simpler. The goal of people who rail against this and what everything handcrafted is number 4.
It really annoys me when people rail against generators as a principle, and yet talk of dynamic languages or using compiled languages. It just shows that they fundamentally don't understand the environment they are working in, and yet they feel this ignorance gives them the ability to hand out advice.
Technorati Tags: SOA, Service Architecture