|Michael McDonald :: acting blog consulting noel contact|
I'm not your typical rapid developer: Java, not php/python/ruby, is my language of choice. I probably don't qualify as a great hacker by Paul Graham's standards. I abhor PHP and though I love Ruby as a scripting language I just don't trust it to be as maintainable as Java after several years of optimization and evolution.
I'm a slow starter. It could take me days to get a server set up and a baseline 'Hello world!' application running. Despite being a regular at SuperHappyDevHouse I have never created a business from scratch overnight. Nor would I want to.
What most people consider rapid development I would actually refer to as rapid prototyping. Rails scaffolding is a perfect example of this: you quickly get something working, but then you're on your own. Rapid prototyping makes for great demos, and makes bosses/clients happy. But after working on that webapp for a year how much did that scaffolding really help you?
I'm a fast evolver. My programming style is like Aikido: agile, minimalist, elegant, humble. I start with the simplest thing and keep testing, adding, refactoring, optimizing, always staying centered. I don't set out to build architectures, they just happen on their own, as they are actually needed, the same way that design patterns arise out of refactoring. Coding this way is as effortless as breathing, and I never waste time and energy worrying when I release code, because I know that it is rock solid.
After a couple months of development, 'rapid developers' are often drowning in bugs and trying to figure out how to break their architecture's magic to overcome the architecture's scaling limitations. Meanwhile, I remain centered. Bugs are rare, and adding new features is fast and effortless. When I write a system with a million lines of code, I can still turn it on a dime and release it to production the same day, backed up by an army of regression tests. That's what I mean when I say rapid development.
© 2013 Michael McDonald, . All rights reserved.