Fl4m3Ph03n1x
Let’s talk about Test Driven Development (TDD)
- What if we could put in the same place Kent Beck, Martin Fowler and a provocateur interviewing them both?
- What if we wanted to analyze TDD?
- Is TDD the Holy Grail? Should we use it everywhere?
- Is there such a thing as too much TDD?
Lot’s of interesting questions answered by the creator of TDD ( Kent Beck ) and by one of the most renowned architects of IT ( Martin Fowler ) giving their opinions over TDD, where it is at, the learning curve, the different benefits for the different people and much more!
Just make sure you see it until the end. Most of the big insights are in the last episode (finishes and concludes the series).
Let me know your opinions!
Trending in Discussions
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
New
The obligatory hello world thread!
Who are you and where are you from? :stuck_out_tongue:
New
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
New
I was working on an Ecto migration and I needed a timestamp. So, for the nth time, I looked up the different data types for timestamps, a...
New
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog
It says that Fly is going all-in on sprites, which is a worry ...
New
We’re evaluating API mocking tools for OpenAPI-based projects and would love to hear what other teams are using.
We’re particularly inte...
New
Is there a word for the ~> symbol used in Version strings?
Do you also just call it a Squiggle Arrow™ ?!
New
Other Trending Topics
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
There are three potential reasons for members of this forum to have a look at https://vutuv.de
You are tired or annoyed of LinkedIn.
Yo...
New
ICal is a library for interacting with iCalendar data. It parses iCalendars into typed Elixir structs via ICal.from_ics, and can prepare ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #phoenix_html
- #elixirconf-us
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
rvirding
Terror Driven Development.
Sorry couldn’t stop myself.
Fl4m3Ph03n1x
Good point, I should make the title more clear so newcomers know that TDD is not driven by terror (although with any bad enough manager that is still very possible) but by tests !
done!
StefanHoutzager
Extensive discussions and lots of links: BDD / TDD criticized . I prefer something like https://medium.com/@ckoster22/invariant-driven-development-8231add95e33
I’m with Rich Hickey:
Someone else (#NoTDD | Microsoft Learn)
tty
Every software methodology exists to deal with some risk. If TDD doesn’t address the risk you face in your project then you are just wasting time.
If anything the people who should be engaged in TDD are business and product owners. It is a clean, relatively simply means of getting them to clarify what they mean and to hash out the requirements (especially conflicting requirements).
Fl4m3Ph03n1x
To make it clear, TDD is not dead and is helpful and useful in many situations. However, we as Developers must be able to know when to use the tools we are given.
This talk focuses mainly on the consequences of over using it, which I think is helpful for every body, but I overall agree with your statement .
Your assessment also falls in line with “The best test suites are a mixed bag of tests ( unit, integration, property based, etc )” which I think is also valuable.
Fl4m3Ph03n1x
Another helpful article for this discussion:
StefanHoutzager
That link was provided already more than a year ago (with discussion): Do we need agile software development? - #26 by StefanHoutzager
Uncle Bob links you can find in abundance on this forum, just search for his name. For a remarkable “confession” for example see BDD / TDD criticized - #72 by StefanHoutzager
TrailingDots
While I am an advocate of TDD, it can certainly be a distraction when mandated by management rules. I once worked for a large corporation that demanded 85% coverage by edict. This was for java code. Due to the verbose nature of java code, creating all the trivial accessors and mutators consumed time that could be invested in better pursuits. They also demanded that complexity level never exceed 7. In java many switch statements contained complexities much greater than this 7.
Legacy java code containing error messages, for example,
had a +1 complexity for each switch. Yes, this could be coded with newer with newer construct that did not increase the complexity, but this consumes effort.
I was in some review of this with developers almost in tears from having spent so much time to read the acceptance levels.
As a result, many developers felt considerable anger toward TDD, clean code, sprints, and agile in general. I can’t blame them. Management directive can’t cure social problems when management remains so inflexible. Many developers have left in disgust - including me.
(Obviously this place does not welcome Elixir)
Fl4m3Ph03n1x
Awesome story !
Code suites with high coverage are awesome. Code suites with low complexity are even awesomer. Projects that have both? Would look like a dream land to me. However, your story does reflect the fact that Management was not familiar with Goodhart’s law:
This law states that when a metric becomes mandatory, it loses its value - mainly because people will focus only in the metric changing the workflow and code to achieve it, irrespective of the added cost the metric brings and at the cost of anything.
I do think TDD is good. I do think testing is great. I do think that low complexity saves lives and I do encourage ( and even teach ) my team all of the above.
But that’s the thing. I want a team. Not a set of mindless replicating drones. I want them to think for themselves and to consider the costs. Yes, all the above rules are awesome for the type of work we do 90% of the time. But there is also that other 10%.
I think these podcasts highlight the missing 10%. For me, these podcasts are about critical thinking more than anything else.
You should not enter the TDD for everything bandwagon. You should also not enter the TDD is horrible bandwagon. Bandwagons are bad.
TrailingDots
I was not aware of Goodhart’s Law, thanks!
A prime aspect of this management style I ommitted was,
“If it can’t be measured, it doesn’t exist.” Lower level managers
were compensated by how they could deliver on “metrics.”
While I am a developer, I developed an presented a course
in Clean Code techniques - primarily in C++ and Java and,
to a lesser degree, Python.
My courses were banned since I could offer no metrics.
Developers could not refactor if their code met complexity
and coverage levels. Developers were tracked on the amount
of code contributed to repositories (yes!).
Due to the line counting metric, maintenance dev suffered
greatly and some left the company. Fixing a bug in code
could consume 1-3 days to find and fix the bug while only
a handful of lines need changing.
As a result, some dev unrolled loops when they could
to bump up line counts delivered.
Tests were written to meet code coverage and not because
they really tested the code. (This would be a great topic for
a blog!)
While this company still exists, the churn has replaced
almost everyone in the area I was in.
I still use TDD in normal development and think of TDD as an
automatic debugger. TDD is my insurance policy when in
development and maintenance. TDD is more valuable than
the docs as TDD is live and the docs get disconnected from
the actual code.