Suggestions
Thanos Diacakis
⚡️ I help software engineering teams bring back enjoyment in their craft and evolve into a source of competitive strength for their firms by coaching them on how to build and deliver software effectively.
Thanos Diacakis is a seasoned Software Engineering Effectiveness Coach and Technical Leader at Cosmic Teacups, Inc., with over 25 years of experience in the software industry. His expertise lies in developing engineering teams and optimizing software development processes to enhance productivity and manage complexity effectively.12
Professional Background
Diacakis has a rich background in technology leadership, having previously served as a Senior Staff Software Engineer at Included Health, where he focused on technical architecture and company-wide initiatives. He also held a significant role at Uber, where he was responsible for the technical leadership of the bikes and scooters division, successfully scaling it to 45,000 vehicles and generating over $150 million in revenue.25
Coaching Philosophy
As a coach, Diacakis aims to reignite the passion of software engineering teams for their craft, helping them transform their effectiveness in building and delivering software. He emphasizes the importance of aligning teams, processes, and technology to foster rapid delivery and accelerated learning.34 His approach includes addressing common challenges faced by organizations, such as managing production teams efficiently and ensuring high-quality feature releases.12
Education and Achievements
Thanos Diacakis holds degrees from Carnegie Mellon University and Imperial College London. He is also an inventor with seven US patents to his name, underscoring his innovative contributions to the field.56
Through his work at Cosmic Teacups, Diacakis continues to influence the software development landscape by providing strategic coaching that helps organizations maximize their return on investment while minimizing operational headaches.12
Highlights
Software Engineering Mistakes [4/5]
Try to keep everyone busy 🔥
This one is a common one: make sure everyone has tasks to work on, all the time. The hamster wheel must keep spinning.
Pack that sprint with stretch goals. In case someone runs out of tasks, make them work on some features. Everyone must be 100% utilized all the time.
Guess what happens?
Feature A is “done” and our engineer moves on to Feature B. Then someone finds a bug with Feature A, near the end of the sprint. Now we have three problems:
👉 It may take some time to pull our engineer back to Feature A, putting its delivery at risk. This is classic “priority inversion,” where the lower priority task has essentially pipped the higher priority task.
👉 Useful context has been lost as the engineer has moved on to Feature B. There is a higher chance of mistakes in fixing the bug with Feature A. Also, engineers love getting bounced around tasks.
👉 Last, Feature B is half-written. Priorities frequently change in the next sprints, and it does not make the cut, or by the time it does, it has to be rewritten. Thus, time spent working on Feature B is essentially wasted.
Stop the insanity!
The focus should not be on everyone being busy. You don’t make money by being efficient. You make money by shipping (working) features out the door.
Instead of striving to keep everyone busy:
🚀 Orient around shipping 🚀
Keep everyone on the same project/task until it is done (in production, feature flags on). Pair program with someone else, or assist with any auxiliary work needed to ship.
Worse case, it’s OK if someone is on standby to support the rest of the team if and when needed. They can read a book to improve their craft or work on some small cleanup items (that can be completed and shipped), rather than pick the next big complicated project (that will likely be left partially finished).
