In 1995 I took a C programming course at my local university. I dialed into the university’s 28.8k modem pool, and typed my programs into their Solaris machines using pico.
My best friend at the time suggested I could install Linux—a FREE Unix-like operating system—on my own machine, and save the hassle (and cost) of dialing long-distance to do my home work.
In 2006, I started a new job doing Perl coding. I had heard of the idea of unit tests, and thought it was a neat idea, but who has the time?
Then I attended a conference where someone suggested writing tests before they wrote code.
In 2010, I was the lead developer for a software project that would release once every couple of weeks. The release process took a minimum of two to three hours, and involved a lot of manual labor.
Then I heard that there were companies that were releasing multiple times per day.
One of the reasons it was so time consuming to release new code was that we had to do a lot of manual conflict resolution and regression testing before we were confident that each feature was ready for customer exposure.
Then someone introduced me to the concept of trunk-based development, and the idea that code on the
trunk branch should always be releasable.
Last week while discussing testing strategies, and shifting left, someone said that their organization practices Test in Production (TIP). That is, they actually push code into production to do their tests. If it breaks something, they’re prepared for a quick roll back.
Okay. That last one didn’t really blow my mind, as I’ve been advocating something like that for years. But I did see it blow someone else’s mind, with a violent reaction:
Developers testing in Production?! They should concentrate on unit testing. Keep their noses out of PROD.
I can completetly identify with the sentiment this person felt, precisely because it’s exactly how I felt with most of the other examples I’ve described.
The novel, game-changing ideas that change my career always feel like utter BLASPHEMY the first time I hear them.