Met this great team at a startup running a (quite successful) webapp on a cloud hosting provider. They don’t test their code at all (and instead run through tests manually before they push to production). They say it’s because they wanted to put something out there rather than focus on testing. Is that legit? I like them a lot, but it makes me nervous that they don’t have any test framework in place. I think they’re open to testing now they are more stable. Thoughts?
If they’re only starting out, it would be okay if there would be no automated testing at first, but as the months roll by, they’ll need testing sooner than they think.
If they’ve been working at it for a while, joining them is going to be a lot of hard work. For one, it can be a warning sign, in the first place, their code will be hard to test. Dependencies will be out of this world, who knows where they put their business logic, random classes doing random things, random database session handling, god objects, and other elaborate hard-to-maintain hack stacks.
Honestly, lots of huge companies out there don’t test, so shouldn’t really be a big deal. If you still want to join them, introduce testing to them by creating tests for one small part of their stack, it will easily show off the merits of testing:
It’s not just about putting something out there faster, it’s also about failing business assumptions and the capability for your code to iterate/pivot quickly. Testing helps you in that aspect. Spend 10 minutes running the entire stack and tracing where a bug occurred, or just run your tests and find out what went wrong.
The great thing about automated tests is that whenever I make huge changes in my code and the tests still run it means I can confidently say I didn’t break anything at all. If I did, then I can easily know where and how, and I don’t have to run through the entire app. I could easily isolate a single piece of my stack and test directly.
Testing forces a team to write maintainable software.
Another amazing meta-feature about tests is that, whenever you’re debugging, it takes a huge chunk of business logic out from your cognition. You don’t need to carry the extra cognitive load that ‘x’ part of your stack be able to 'y’.
In reality, never join the company for their code, join a company if you find purpose, vision and growth in the people working there. You’ll work through it.