Last week I came across Devin Halladay's article about Laziness & The Web Designer. In the article he claims that, a web designer should not use tools like the not yet released Macaw because they encourage
- laziness in the web design industry,
- produce badly written code and
- rushed designs.
He points out that he prefers doing things the "old-fashioned" way and that he's much faster when he does everything by hand.
A few weeks back I would have agreed with him to 100%. Today I think he's wrong. Not because I know the answer to all of our problems but because I watched Bret Victors great talk The Future of Programming and I have to agree with Bret. Since the time I started to learn programming (and probably also the time you started to learn programming) the way we produce code hasn't really changed. We're still dumping around lines of code in a text editor, test our program, debug and repeat. We obviously do things computers could do for us: creating code.
And this concept isn't even new. I mean take look at Rails for example. Rails does a lot of code generation for you and it does that pretty well. So why are code generation tools on the command line accepted while UI code generation tools are not? Is it because of our bad experience in the past with Dreamweaver and Co. that we don't trust such tools anymore? Do we need that assurance that we've done everything on our own so that we can be 100% sure the product we create is good and fully functional? I don't think so.
I think it has to do how we interpret words like programming and a little bit with our own ego. As Wikipedia says:
Computer programming [...] involves activities such as [...] implementation (or coding) of the algorithm in a target programming language, testing, debugging, and maintaining the source code [...].
What do you imagine when you think of someone coding an algorithm in a programming language or creating a website? You probably think of someone who sits in front of a computer typing in words and characters into a text editor or into the command line.
But the Wikipedia definition doesn't include the words text or typing. The algorithm could also be clicked together right? So using a tool like Macaw would still be programming.
And only because a tool like Macaw does something differently than you're used to doesn't mean it is bad or wrong. To get back to Devin's opinion, he said tools like Macaw encourage three essential down points: Laziness, bad code and rushed designs. I think they encourage quite the opposite:
- better designs and collaborations through a visible creation process,
- better maintainable code through specific validations and guidelines and
- less used time and money because the work is done by a computer.
Of course this presupposes that the code, code generation tools produce is good and maintainable but I think we live in a time where this can be a reality.
Ignoring the possibilities of such things would be wrong and I think we would miss out on huge potential if we would just disregard new things because of our own ego.
So embrace code generation.