Red, Green, Refactor – I Love it!
I’m currently working on a Chef cookbook for Hoegg Software to create a Mule Server cluster. And, in the course of my travel I came across the term “red, green, refactor” as another way to describe test-driven development. I love it! This is why I don’t like on-line testing being given to potential hires because I don’t memorize anything anymore. I don’t want an employee that knows everything. He’s not an expert if he does. I want an employee that clutters her mind with ways to do things better. I want an employee that sees 2+2=5 and knows it’s wrong.
I can tell you almost everything I write (code) today is run before it’s finished, tested, or otherwise put through the motions to receive some form of error or warning before I say “it’s ready for production”. It’s like someone brainwashed us to write the program first and when we were complete, run it. I can’t do it. I know that test-driven development (TDD) is more efficient and progressively successful. I do not believe, however that all recruiters, hiring managers, directors, CIO’s, CTO’s realize the process of software development has really changed overall.
I have spent a good portion of my career in isolation of other developers by working on different software, projects, areas of systems and it’s been a detriment to my overall software development knowledge. At first glance, pair-programming seems to be an economic tragedy. How successful can two people be if they are working on the same lines of code? It seems like a waste of talented manpower. This is actually one of the best and most rewarding ways to write code. And, the talent and experience of both developers grows tremendously. I wish I could create an online IDE where two could code using the same module (window) over the net with enabled audio. (I might have something here)
I was tickled to read the description of test-driven development as “red, green, refactor” because this is reality my friends. I’m hoping corporate enterprise executives read this because those that disagree with me are the ones I wish to read my postings. I don’t know everything about what I do, but I do it everyday. I run the test and it’s red. I change something very quickly and it’s green. And, I refactor everything always.
Today, I realized that everything needs to be fluid. Our infrastructure, our software, our configurations, and our data. I’m not saying we should put quality in the closet, we just need to be quick, agile, and aware of security. We don’t need to adopt change, we need to live it.