Monday, December 26, 2022

My premises about software development

It is very important that, as a software development team, we share certain premises about software and software development. This allows us to work more efficiently and effectively, as we are all aligned in terms of our vision and goals.

That is why I have tried to do an exercise in introspection to extract which are the basic premises that I almost unconsciously apply when I think about software and the process of developing it.



These are my premises for software system development:

  • Software development is a team activity: We cannot work in isolation but must collaborate with other developers, designers, and other professionals to create a high-quality product.
  • There is no real trade-off between quality and speed: The way to go fast is to have good quality. Low quality in the long run only ensures that we will go slower, as we will have to fix errors and problems.
  • Software is a means to achieve an impact: We are not working just for the software itself but to achieve an impact on the "business". We must keep this in mind when making decisions and prioritizing tasks.
  • Only one-third of the business ideas contribute effectively to the outcome we aim (Online Experimentation at Microsoft): We have to accept this and optimize for learning and distinguish between product development, prototyping, and experiments.
  • When developing software-based systems, there is always a high degree of uncertainty, so we must optimize for quick feedback and work iteratively and incrementally, always taking small, safe steps (https://www.eferro.net/p/small-safe-steps-3s-workshop.html).
  • Software has a basal cost (https://www.eferro.net/2021/02/basal-cost-of-software.html) that must be taken into account. When combined with the understanding that software is only a means to achieve an impact, it becomes clear that software can be considered a liability.
  • In software development, maintaining options and flexibility is valuable. To do this, it is essential to defer commitment and try to use reversible decisions whenever possible.

These are my personal premises with respect to software development, and they are not necessarily universal principles. However, they are essential for working efficiently and effectively in software development. These premises may not apply in the same way in all contexts, but I perceive them as accurate in the contexts in which I have worked.

Some of these ideas have been confirmed in the industry through data, but for others, I only have more support than my own experience. In any case, I would love to share and contrast ideas with more colleagues.

Do you share these premises? Do you have others that are similar? Do any of these premises seem contradictory or contradict your own premises?



Related:

Monday, December 12, 2022

Mini TejonesConf 2022 / Honey Badger team gathering

It's been almost three years since we last gathered as a small group of friends for a (reduced) TejonesConf. This time, with the challenges posed by the COVID-19 pandemic, we decided to prioritize reconnecting with the original Honey Badger team and some special guests. We wanted to enjoy each other's company and be able to have intimate, in-person conversations.


As in previous TejonesConfs, we decided to use the open space format for this edition. Due to the small size of our group, we opted for a single track to allow for more focused discussions and deeper conversations. As always, the open space format proved to be a success, providing us with a minimal structure that allowed us to share experiences and spend a lot of time enjoying each other's company.


During the conference, we still managed to share some interesting experiences and insights. We discussed topics like observability and the transition from unstructured logs to structured events, lean software development and the importance of deferring commitment, the challenges of Kubernetes packaging, and the differences between clean architecture and vertical slice architecture. We also touched on product development through experimentation.


As always, the format allowed for some great conversations during lunch and breaks. We discussed issues like power dynamics in pair programming, the toxicity of certain corporate cultures, and the challenges facing our profession.


It was an absolute pleasure to reconnect with old friends and catch up on each other's lives. While we couldn't get the entire group together due to logistical limitations, it was wonderful to spend time with those who could make it. Some of us even continued the conversation over dinner.


Until next time, friends!


BTW Thanks to Nextail for allowing us to use their offices and to Fran for managing it.


Related:



Tuesday, December 06, 2022

Good talks/podcasts (Dec 2022 I)

 


These are the best podcasts/talks I've seen/listened to recently:
  • Keynote: Why web tech is like this (Steve Sanderson) [Inspirational, Technology] [Duration: 1:00:00] Interesting talk about the evolution of web technology. The talk includes interesting demos.
  • #12 e-Meetup | Sam Newman - Monolith Decomposition patterns (Sam Newman) [Architecture, Architecture patterns, Evolutionary Architecture] [Duration: 1:30:00] Great presentation on how to approach the division of a monolith and the patterns to evolve an architecture towards microservices. In addition to the presentation, the subsequent questions are also very interesting.
  • What makes a good developer (Christin Gorman) [Engineering Career, Inspirational] [Duration: 0:11:00] (⭐⭐⭐⭐⭐) Inspiring lightning talk about the importance of humanities, empathy for users and information management as the basis of our profession (beyond pure technology and knowledge about logic or mathematics).
  • Stop Writing Dead Programs (Jack Rusher) [Inspirational] [Duration: 0:43:00] (⭐⭐⭐⭐⭐) This talk argues that it would be better to focus on building new live programming environments that can help us solve the problems of the future.
  • SEDaily: Serverless Clickhouse for Developers with Jorge Sancha (Jorge Sancha) [Big Data, Data Engineering, Product, startup] [Duration: 0:40:00] Interesting conversation about tinybird with one of its founders. They talk about the company, the problem they solve and other interesting topics related to real-time data analysis.
  • Improving Observability and Testing In Production (Dave Farley) [Observability, Testing in production, testing] [Duration: 0:19:00] In this episode, Dave explores what Testing in Production is, and how to Test in Production, and how this is related to working more experimentally.
Reminder, All these talks are interesting even just listening to them.

Related: