What Is Hammock Driven Development?
stokoe.me
stokoe.me
Having worked as an outsider with Americans and of course the heavy American influence on the tech scene in general, this one piques my interest because it can lead to some product blindness even in small teams.
I'm obviously generalizing in order to discuss the stereotype, but I find there is a habit of Americans to overstate how awesome everything is and how great it is that you did it, and then one day you find out it's not great and it never was. This affects your ability to make good decisions and deliver good results, because feedback is your touchstone with reality and client needs. If someone tells me it's awesome, job done, I stop working on it. If someone tells me it's no good, I fix it. If it's not perfect and you tell me it's awesome, I still stop working on it, because I figure it meets your needs and the job is done.
I had this in Japan too, everything was great and nothing was bad, food was always considered the best thing ever. I do enjoy the endless optimism and positivity for general living, but it can cause issues when you're trying to deliver a great product.
When an American says something is "awesome" or "revolutionary", it's usually just another day in the office.
This is why you end up in meetings with half the comments being about how "awesome" it is that somebody added a search box to a results page...
...which I agree with wholeheartedly. Never underestimate the value of sleeping on, gaming to, or hammock-ing a problem in order to solve it.
The brain then does this background processing and connects the threads.
Time spent on trying different solutions (and especially, experience) is critical.
Quoting Mark Twain -
Good decisions come from experience. Experience comes from making bad decisions.
But I've never managed to find that kind of focus at work, neither as developer nor CTO, neither remote nor on site. I feel I've always spent a large chunk of my time trying to get people to explain the problem they're trying to solve, to stop rushing, or to reduce scope. Tragic, really.
1. Waterfall (The Good Parts)
2. Focused vs Diffuse thinking as described in Barbara Oakley's Learning How To Learn course [1]
What I missed from the Waterfall[2] days, is taking the time to think on a problem and proper software architecture/design. Depending on the complexity it was one to several weeks of thinking, while writing the SDD[3] document. And then having a proper design review meeting.Under Agile/Scrum everything was rushed, and you had to plan a sprint of work in a day or two, and each feature under a hour in a synchronous meeting. Obviously it's impossible to arrive to a good design decisions that way, and you just grab the first available seemingly working solution.
--
1. https://www.coursera.org/learn/learning-how-to-learn
2. What I though was Waterfall, was actually RUP (Rational Unified Process)
https://en.wikipedia.org/wiki/Rational_Unified_Process
3. Software Design Document
-Nietzsche
Which is fine with me because I can save deep thinking for side projects :-)
- Using a while true loop instead of deploying a worker to Kubernetes
- Using a setInterval instead of deploying a cron job to Kubernetes
Some previous discussion: