Comments by "Nick" (@NicodemusT) on "Continuous Delivery"
channel.
-
16
-
10
-
9
-
9
-
9
-
9
-
7
-
5
-
4
-
4
-
4
-
4
-
4
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
This carries with my understanding of best practices as well. Although, I wish there was some content out there discussing how small agencies deal with developing software w/ TDD. In a software business, applying TDD to everything is something you can sell internally – as everyone stands to benefit from it. In agency settings where every client is different, it is more arduous to sell TDD in smaller-scale systems, where budget and timing come into play. I know developers will argue "well, don't work with them if they don't have the budget for TDD", but when clients budget for software development, they aren't privy to everything you are, and so they do enter RFPs, quote farming a lot of the time without consideration for TDD. We can argue that these clients are left behind, but there's money left on the table – and I personally prefer working on smaller teams, with smaller clients and various projects that all have different degrees of involvement from the client. TDD just doesn't practically fit in a lot of agency work – and I think it should be talked about, so that perhaps agency-friendly TDD can be developed. As it stands, the 1-3 developer shop, working on a mix of projects represent a decent chunk of the workforce, but most of that work is being done without TDD. People say they do. They don't. I've worked at many agencies, and even when they say they do TDD, it's not anywhere near even 50% coverage.
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
1
-
1
-
1
-
I have tried it and I code unit tests when I work on an application. They are helpful in large systems, systems where many developers are working towards a problem together. This is not to say TDD is a net loss, or that TDD is the devil – just that it is not a panacea.
I find that whenever I express dissatisfaction with unit testing or TDD, it is met with "you're dismissing it" – it's almost as if there hasn't been a motivating argument for us who are sorta tired of saying "I tried it, I used it, I like it in scenarios where it makes sense, but not everywhere, and definitely not allowing you to call me a garbage developer based on 1 dimension of my work" and getting the NPC answer of "you're not doing it right." It does come across as arrogant, and off-putting.
As I mentioned, there are places where TDD doesn't work. In the case of Nintendo – they abandoned TDD because of how latin-centric it was, unable to produce Japanese mocking or stubs in a reliable way, that doesn't crash or dive bomb when glyphs are encountered. They have the least bugs of any video game publisher/developer. That's not an opinion – it's an industry fact. And those old school assembly-written cartridges from the 80s: no TDD.
I'm not making a case against TDD, I am making a case against TDD for everything.
As mentioned earlier, I doubt Sir Tim Berners Lee was envisioning a web where everything was gatekeeped by heavy toolchains and integration scripts. Preaching that every single website, script, or unassuming app needs TDD is an anti-pattern to human knowledge. It pushes everyone except developers out – in the peripheral. I teach code to kids – if one of the first things I did was "well, kids, expect to write tests for your tiny scratch project" you can probably guess how long they will participate.
I've personally had plenty of experiences where I've started a unit test only to find that it fails on measures that most people do not want to address. Example: I have a client who has a max. of 40,000 requests per day to a service API. I run integration tests on that – that's 200-500 requests. Their daily average is 35,000. If there's a bug, now that's 400-1000. Another bug? 600-1200. Now you could say "don't run the tests that hit the API", and then there you are with the problem I am illustrating here. If I can just dodge a test because it's inconvenient or causes a $500 influx in fees, then why would I bother testing something mundate – like assert("date === date"). I mean, I don't need that. I NEED to test the integration with an API that I have no control over. This is just one of many scenarios that some director of technology has told me "I'm not trying hard enough", walk away and think they preached TDD – but all they did was show its weaknesses, and that they don't have solutions – just ad hominem-laced perspectives.
I know I could be better at TDD, I know I have weaknesses and gaps in knowledge. That doesn't keep me from TDD, it's the people who profess "it really does work in every situation" but never followup. When I say never, I literally mean never. You can find a million tutorials that tell you how to assert a record being saved the database. That's where most of us are left. Being told it's possible but never seeing an example of anything close to it.
Overall, I just do not like the "only a true scotsman" vibe of TDD. It is sorta disengaging and honestly often down right disrespectful. If you want to throw shade at someone not running tests on a bank transaction, yeah, let them have it. But a lot of the comments here are arguing that Johnny's Recipe Blog needs to be unit tested – and you lose me on that. It takes the simplicity and elegance away from what the web is supposed to be.
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1