In the spirit of sharing, I’m going to talk a bit about how automated testing has stolen my heart.
I’ve been working with some form of Web development for roughly 7 years now, but have had surprisingly little experience in maintaining a codebase over time. I’ve never liked this fact.
Due to the one-off nature of many freelance projects and personal experiments, there is often little that needs to be maintained or iterated upon after the fact. It’s like a software design utopia; nothing changes. I’ve always been aware of this absurdity and enjoyed it to the fullest, I assure you :)
Now, I work for a company and have a salary and have legacy code to maintain. I also write large amounts of production code, employing nebulous and ever-changing requirements. Sounds more like the software industry, doesn’t it?
This leads me to where I assume many are led: automated testing. I’m learning about unit testing now, but have also touched briefly on integration testing. Most interesting to me so far is the implementation and architecture required to set up test scenarios effectively. Interfaces and DI, oh my! It’s a perfectly well defined example of modular code which feels extremely natural to me.
Coming from a workflow that had me entering data and clicking widgets manually, I actually gain productivity. On top of that, the obvious benefits of overall runtime and structural stability lead to more “confident code”.
Sadly, I still feel resistance from higher-ups regarding unit testing being “too expensive” for small shops, so I am working on compiling citable studies.
Wish me luck :)
Thanks for reading!
2 Comments
Excellent write up. I’m coming to the same realizations in my line of work as well.
I would have thot the reverse – not doing unit testing could turn out to be too expensive, esp for small shops that dont have several layers of qa validation. Anyway, interesting write up. good luck on ur efforts :)