Articles & Blogs
There’s no dearth of information or best-practices or books about how best to test software. This post, however, focuses solely on testing backend services and not desktop software or safety critical systems or GUI tools or frontend applications and what have you.
Excerpt: Many years ago, Ward Cunningham posted an excellent video on YouTube regarding refactoring and “debt”. But is “Technical Debt” simply a metaphor, or is he describing a real fiscal debt associated with software development activities?
Excerpt: Sooner or later, every software developer will hear something like this:
“Truth can only be found in one place: the code.”
– Robert C. Martin, Clean Code
But what does that mean?
"Breaking compatibility forces work on the user but sometimes you need to when you are trying to a keep a product viable. It’s better not to have to break it at all. The way to avoid having to is to keep the contracts narrow, and find ways to prevent clients from expanding them beyond what is good for your software."
"Like in biology, the boundaries of a genus of bugs are always changing, although in software the change can be very fast. Unlike biology, the key is to pick a genus that is big enough to be interesting, but small enough to fit in your brain."
In many ways the Ship of Theseus paradox is quite similar to software development. Is this app the same one it was five years ago? How about two? What about after the massive overhaul we just finished? If it still serves the same business users in the same capacity, but we rewrote it, does it matter?