Monday, May 03, 2021

API contract & Expand. (Small Safe Steps)

In the latest Toughtworks tech radar (Vol 24 April 2021), API Contract & Expand appears as a technique to be adopted. I couldn't agree more.
We often use complex versioning mechanisms even if a more straightforward API expand and contract strategy works perfectly for most cases.

In general, API expand and contract should be enough for internal APIs. For external APIs, expand and contract should work for small changes, and API versioning is a better option for more significant changes.

If you want to practice this and other strategies to reduce risk and slice technical changes, please check out this Small Safe Steps workshop.


Saturday, May 01, 2021

It's not only waste; it's a burden

Talking about software systems, let's stop to talk about waste when we refer to something not necessary or created without a clear understanding of the problem to solve. Let's call it a burden (since you are going to have it holding you back forever)...

If you implement it to experiment, learn and later throw it away, perfect... If you are keeping it, you are fooling yourself. 

This code is a burden, worse than the sunk cost, and it will generate a recurrent cost forever.

There are two types of complexity, the inherent and the accidental/incidental.

The inherent complexity can't be avoided because it is intrinsic to the problem we want to solve. But the accidental/incidental is all the complexity we introduce by not fully understanding the problem, not knowing how to solve it, or by our lack of mastery on the subject, etc.

This accidental/incidental complexity is also a burden. The inherent one is not. :)

Do yourself a favor, reduce the burden. reduce the basal cost. improve your life and the life of your team.

Develop product in an agile way:
  1. Work in small steps
  2. Try to really understand the real problem and the meaningful impact you want to make
  3. Validate each increment and its impact
  4. Always work with quality-in and with attention to technical excellence
  5. Refactor continuously (to reduce the accidental/incidental complexity)
  6. And for God's sake, delete everything that is not necessary. Ruthlessly remove; code, dependencies, features, complexity… Minimize basal cost and make the evolution of the system easier.
And follow the principles:
  • Continuous attention to technical excellence and good design enhances agility.
  • Simplicity --the art of maximizing the amount of work not done-- is essential.


Saturday, April 24, 2021

Good talks/podcasts (April 2021 I)



These are the best podcast/talks I've seen/listen to recently:

  • Inside-Out TDDDD (Amitai Schleier) [Inspirational, Technical Practices, XP, testing] [Duration: 2 days, 12:51:00] (⭐⭐⭐⭐⭐) Talk about joy and humanity in software development. The talk was primarily concerned with the effects of software craft on our emotional states and working relationships. Along the way, Amitai touched on Theory of Constraints, stable and unstable equilibria in work environments, a significant and deliberate omission from Scrum, my take on “legacy code”, applied empathy (never mentioned explicitly, merely woven in), and what agility looks and feels like when you’ve got it.
  • Extreme Programming 20 years later (Kent Beck) [Technical Practices, XP] [Duration: 1 day, 17:49:00] Kent reviewed what he got right, what he got wrong, what he's still working on and how things work at Facebook.
  • Looking Back at Working Effectively with Legacy Code (Michael Feathers) [Design, Technical Practices, XP] [Duration: 1 day, 5:57:00] Wes Reisz and Michael Feathers go back and review the book. The two spend some time reviewing key concepts from the book and then discuss how the techniques can be applied today. The two wrap with a discussion on what might change in a new version of the book.
  • Project to Product: How Value Stream Networks Will Transform IT & Business (Mik Kersten) [Engineering Culture, Product, Technology Strategy] [Duration: 1 day, 7:17:00] How to Survive and Thrive in the Age of Digital Disruption using Product mindset (instead of project mindset) and the flow framework.
  • The Technical Debt Trap (Doc Norton) [Engineering Culture, Technical Practices] [Duration: 2 days, 5:13:00] (⭐⭐⭐⭐⭐) What is technical debt? What is not technical debt? Why should we care? What is the cost of misunderstanding? What do we do about it? Doc discusses the origins of the metaphor, what it means today, and how we properly identify and manage technical debt.
  • When TDD is Difficult - Try This! (Dave Farley) [Technical Practices, XP] [Duration: 12:09:00] In this episode Dave Farley explores the more complex cases in TDD. Testing at the edges of the systems that we build. How do we test code that talks to Databases, Disks or Displays or other edges of our system? How do we apply this software engineering discipline to the creation of our software systems to greater effect?
  • When to Use Microservices (And When Not To!) (Martin Fowler, Sam Newman) [Architecture, Microservices] [Duration: 1 day, 14:44:00] The two touch upon the main reasons for using or not using microservices, and, if you decide to do use microservices, what else you should change along the way to fully benefit from the switch, plus much more.
  • E3: Marty Cagan, Founder & Partner @ Silicon Valley Product Group (Marty Cagan) [Lean Product Management, Product, Product Team] [Duration: 1 day, 16:58:00] (⭐⭐⭐⭐⭐) Very interesting conversation about Empowered Product Teams, Product Culture.

Reminder, All these talks are interesting even just listening to them, without seeing them.


Sunday, March 21, 2021

Good talks/podcasts (March 2021 II)



These are the best podcast/talks I've seen/listen to recently:

  • The resource utilization trap (Henrik Kniberg) [Flow, Lean, WIP] [Duration: 0:05:33] (⭐⭐⭐⭐⭐) Henrik Kniberg explains the resource utilization trap, how it impacts our ability to deliver and what we can do about it.
  • Henrik Kniberg : Multiple WIP vs One Piece Flow Example (Henrik Kniberg) [Flow, Lean, WIP] [Duration: 0:07:05] (⭐⭐⭐⭐⭐) Brilliant explanation of the concept of WIP and how limiting it improves delivery flow.
  • Jason Yip : Stop starting and start finishing (Jason Yip) [Flow, Lean, TOC, WIP] [Duration: 0:05:24] (⭐⭐⭐⭐⭐) Great explanation about Lean concepts (Limit WIP, class of services, Root cause analysis...)
  • Lightning Talk: Certified Really Agile Practitioner (CRAP) (Jon Smart) [Agile, Engineering Culture] [Duration: 0:05:10] Ironic (and sad) vision about digital transformation and the misunderstood agility that is unfortunately common these days.
  • The CIO Who Mistook a Value Stream for a Hat (Mik Kersten) [Devops, Engineering Culture, Management, Technical leadership] [Duration: 0:23:30] Interesting talk on development flow with interesting examples from large companies.
  • Being Outcomes Driven (Gabrielle Benefield) [Lean Product Management, Product Discovery] [Duration: 0:08:26] Interesting point of view on how to improve delivery by adding descovery and avoiding much of the waste.

Reminder, All these talks are interesting even just listening to them, without seeing them.


Sunday, March 07, 2021

Good talks/podcasts (March 2021 I)


These are the best podcast/talks I've seen/listen to recently:

  • Ep. #29, Testing in Production with Glen Mailer of CircleCI (Glen Mailer, Charity Majors) [Operations, Testing in production, testing] An interesting discussion about testing in production and rethinking socio-technical systems from the ground up.
  • GOTO 2020 • Talking With Tech Leads (Patrick Kua) [Engineering Culture, Technical leadership, leadership] (⭐⭐⭐⭐⭐) Practical tips to be a successful Tech Lead. Very interesting for anyone interested in a leadership role for an engineering team.
  • GOTO 2020 • Where We’re Going, We Don’t Need Servers! (Sam Newman) [Architecture, Architecture patterns, Microservices, Serverless] Interesting talk about: why serverless, especially FAAS, technology is so powerful, how serverless technology and microservices fit together, and some tips for adopting serverless incrementally.
  • The Limited Red Society (Joshua Kerievsky) [Agile, Continuous Delivery, Technical Practices, XP] (⭐⭐⭐⭐⭐) Joshua Kerievsky discusses the need to reduce “red” periods of time while developing software. One is in the red when he spends too much time designing, or having compilation errors or the tests do not pass. Kerievsky demonstrates a method (Parallel Change) of reducing the red while refactoring code, and discusses another approach called Narrowed Change, and answers refactoring related questions.
  • Chris Matts on BDD, Real Options, Risk Management and the Impact of Culture for Effective Outcomes (chris Matts) [Agile, Company Culture] Lots of topics in this podcasts: Real options, last responsible moment, a community of needs vs community of practices.
  • Reliable Messaging Without Distributed Transactions (Udi Dahan) [Architecture patterns, Design] (⭐⭐⭐⭐⭐) Particular CEO, Udi Dahan, describes how you can still do reliable messaging without using distributed transactions
  • How To Build Big Software With Small Agile Teams (Dave Farley) [Agile, Continuous Delivery, Engineering Culture] In this episode, Dave Farley explores the trade-off at the heart of scaling-up and describes useful techniques to allow you to scale your big software projects.
  • How Fast is Your Computer? | DESIGNING FOR HIGH PERFORMANCE (Mechanical Sympathy) (Dave Farley) [Inspirational, Performance, Scalability] Mechanical Sympathy is a term that Dave Farley's team at LMAX started to use to describe how they took the constraints of their hardware into consideration when designing their software to maximise its performance in the high-performance computing world of financial trading systems.
  • Acceptance Testing | Webinar (Dave Farley) [Continuous Delivery, Technical Practices, XP, testing] In this talk Dave Farley will describe approaches to Acceptance Testing that allow teams to: work quickly and effectively; build excellent functional coverage for complex enterprise-scale systems; manage and maintain those tests in the face of change, and of evolution in both the codebase and the understanding of the business problem.

Reminder, All these talks are interesting even just listening to them, without seeing them.


Wednesday, March 03, 2021

Talk: (3s) Small Safe Steps: The secret to agility

Ayer tuve el gran honor de compartir cartel con dos grandisimas profesionales, María Berenguer y Angélica Lozano en el Software Development Summit organizado  por el grupo Voxel y presentar la charla  "(3s) Small Safe Steps: The secret to agility".
Muchas gracias a @vgaltes por la invitación. 




Resumen Visual

Resumen Visual by @Aitortxu


He añadido a la presentación una slide inicial para explicar el contexto que aplica en la misma y que uso para los ejemplos. En la presentación hablamos sobre todo de entornos en los que es posible hacer ciclos de feedback cortos.

Documento Original (Con Notas)