RSSAmplifier

Blog

Michele on Software

Recent content on Michele on Software

sollecitom.github.ioRSS feed ↗37 posts

Latest posts

From Products to Obstacles Wrapped in Subscriptions: the Decline of Craftsmanship and of an Industry

We used to build products. Now all we build is obstacles wrapped in subscriptions. Companies sell their products with an implicit promise. That they did their best to make the customer’s life better. That things will work well for the foreseeable future. That no additional unexpected costs will pop up at some point. These days, this is a lie. Companies don’t necessarily set out to…

Incentives, Friction, and Soul in the Game

One of the things I keep thinking about is the extent to which most companies go out of their way to discourage their own employees from tackling the problems they spot. It’s kind of crazy, right? Because that’s exactly why companies hire people in the first place. At least in theory. Yet, the incentives and internal dynamics often push folks away from wanting to make big improvements.…

Nobody Feels Responsible Without Autonomy

Hey there, reader. If you’ve ever felt like you’re carrying the weight of the world on your shoulders but your hands are tied behind your back, this one’s for you. I’ve been in the trenches of tech and leadership long enough to see patterns that break people and companies over and over. Today, I want to talk about something that’s burned me personally: how autonomy…

A Birthday Zoo Trip That Reminded Me Why User Experience Still Feels Like an Afterthought

Today marks my son’s first birthday, a milestone that sneaks up on you with its quiet weight. One minute he’s a newborn bundle, the next he’s pulling himself up on the coffee table, grinning like he’s cracked a centuries old maths problem. To celebrate, my wife and I decided on the London Zoo, an easy choice, or so we thought. Animals, open spaces, a chance for him to point…

The Mirror Never Lies: An Ode to Unbroken Rebels

Every morning, I drag myself to the sink, razor in hand, steam curling like a ghost around the fogged glass. The water burns, the blade stings, and for those raw seconds, it’s just me and the truth staring back. No likes, no clout, no roles, and no polished mask to hide behind. Just my soul and one question: Who are you when no one’s watching? The world has its playbook, and it’s a bestseller.…

Fork, Don't Merge: Why I Prefer A Variety of Options Over Early Agreement

Today, I want to share my concerns about a trend I’ve noticed in many companies: jumping to agreement too quickly when debating solutions. It feels like teamwork, but I’ve seen it dull good ideas and lead to weak results. Instead, I’ve found that forking ideas early, letting them grow separately before blending them, works better. Here’s why I prefer this approach, based on what I’ve learned from…

Mastering Software Craftsmanship: Making the Change Easy, Then Making the Easy Change

Kent Beck’s timeless advice, “Make the change easy, and then make the easy change,” is a guiding principle for software craftsmanship. It’s a simple yet profound idea that should resonate with both developers writing code and leaders shaping technical strategy. At its core, this philosophy advocates for intentional preparation to ensure changes to a codebase are smooth, predictable, and…

Introducing Abstraction Deviation Impedance

The Search for a Better Term Over the years, leading teams and advising executives, I’ve often used “technical debt” to describe those persistent issues that slow us down or make changes risky. I loved the analogy at first, and it felt like an effective way to flag problems in our codebases or designs. But after countless discussions with developers and stakeholders from all…

AI-Powered Dual-Track Product Development Before PMF

I wonder whether AI can enable a dual track model for building products while finding product market fit. The Historical Problem So far, companies were forced to choose between speed of validation and iteration, and stability, scalability, and maintainability. And so most companies choose speed of prototyping, hoping to fix these gaps after finding PMF. A few succeed, while the majority fail,…

Why Your Codebase Fights Change (And How to Fix It)

If you’ve worked with software for any length of time, you’ve seen it: a codebase that starts as a lean, focused system can morph into a costly, resistant beast without careful stewardship. I recently led a workshop on this topic, and it sharpened my perspective on what drives long-term success in development. What’s difficult isn’t implementing algorithms or optimizing data…

'Winter hats go with winter coats', and 'supporters instead of jailers'.

In my journey through various workplaces, I’ve noticed recurring problems that seem to plague most companies. Two issues stand out prominently: the pervasive presence of office politics and the diminishing capability of companies over time. But what if these issues were not just avoidable but had a remarkably simple solution that every company could implement? The Unavoidable Politics…

A vision for Web 5

Hype cycles in tech rarely translate to significant changes in our lifestyle. Technology is a wide topic, but let’s focus on information systems today, and leave energy, food, water, health, and other important topics for another time. We made it to 2024, and the current frenzy is about AI. Some people claim it’ll change everything. I’m quite skeptical, but let’s not…

Interdependencies in your system of work, and how not to evaluate software practices

I hear of people saying their team tried Trunk-Based Development, and decided they didn’t find it beneficial after a couple of months. I’m not going to war about the benefits of Trunk-Based Development today, even if I do love this practice. Instead, I want to discuss the fact that this kind of statement is problematic. You see, Trunk-Based Development is a practice, and therefore…

So you think you work in a team

I had a discussion on Twitter yesterday about whether a software development team should restrict the freedom of its members, and enforce shared approaches and ways of working. I and others were adamant that yes, this should absolutely be the case. Others were horrified, saying this is everything that’s wrong with our industry. This made me realize that I never wrote about teamwork in…

My belief system for software product development

Running a software product development company is complex. People, processes, products, technologies, and operations are all crucially important, and interdependent. You need to identify a job people struggle with, create a product that addresses it well, price and market it appropriately, defend it against competitors, and react to market changes, all while making a profit. Additionally, software…

Start with a skeleton not to die a zombie

Most companies die a zombie. They start lean and nimble, ship feature after feature, and delight their customers. Then, after eighteen to twenty-four months, the bubble pops, and suddenly they cannot do anything. They limp around painfully until they bite the bullet and re-write their systems, or kick the bucket. So what happens? What’s this hidden killer that shows itself only after a year…

Organizational principles for effective software product development

I often rant about what I feel is wrong with an approach, practice, or system. Today, instead, I want to describe some principles that an effective software product development company should adopt. Why principles? Wouldn’t a detailed description of how things should work be more useful? It’d be almost impossible to write, as it’d be a colossal task. Perhaps it’d be good…

At the heart of the burnout epidemic

These days we’re dealing with a job burnout epidemic. Everybody speaks about it, there’s a lot of awareness, and yet things have been getting worse and worse every year. So what have we been missing? Curious? I’m going to offer a contrarian take, as usual. So buckle up and keep reading. What burnout means Job burnout is a state of emotional, physical, or mental exhaustion,…

The product manager role is a mistake

The popular model Software product companies aren’t usually started by people with a strong background in building software products. Those who most likely end up founding businesses are good at getting funding, and at understanding their target industry. They’ve been in their industry for a long time, know their industry inside out, convinced themselves this means they can do it, and…

You should fear competition more than you fear your competitors

The situation An obsession with competitors Most startups obsess over their competitors. They watch every move, rush to copy every initiative or feature, analyze their marketing, check whether they’re being outsold, and keep an eye on others’ funding rounds. But is it useful? I believe competitors are a largely overrated threat, and that the obsession with competition is a much more…

Can accountability exist without authority?

The ubiquitous way of structuring companies is by nesting areas of responsibility. You introduce well-defined areas and problems, and assign them to people, so that each area or concern has exactly one person responsible for it. The nesting bit is because these areas roll up into wider areas. If someone is responsible for hiring, they might decide to further spread this responsibility across…

The 3M Rule of management

Metrics and indicators are amazing when used appropriately. But problems arise when people either: Use metrics as targets. I wrote a post about this , so I’m not going to explain why this is the case again. Focus exclusively on things that can be measured, while neglecting things that cannot. Adopt metrics without understanding their context. I wrote a post about McKinsey’s software…

Make the change easy, then make the easy change

“Make the change easy, then make the easy change”. Didn’t Kent Beck say that? He did, didn’t he? So why are we talking about this (again)? I just want to clarify a few things about this very good piece of advice. The example To show what I mean, I’m going to use a fictional example. Imagine you’re a software developer working for an upcoming startup that wants…

It's time to put REST to rest

REST is still going strong these days, with many companies structuring their HTTP API based on its principles. And yet, I think that REST is a fundamental mistake, that it caused a lot of damage and pain, and that people should just stop creating RESTful HTTP APIs. A bold statement, isn’t it? Let’s dig a little bit deeper to understand the problem, and an alternative. What is REST: a…

Why software development is hard

We always hear that software development is hard, and that a very high percentage of all software projects fail. But have you ever wondered why software development is so hard? I’m not considering software product development as a whole here, merely its software development aspects. Product development adds many other dimensions of complexity to software development, and I don’t want…

For crying in the beer, stop writing unit tests!

Stop writing unit tests! It’s wrong on many levels, so don’t do it. Actually remove the ones you have. I’m a huge fan of automated tests, and I use Test-Driven Development a lot, so no, I’m not advocating against testing in general. And don’t think the solution is to write a lot of end-to-end tests either, as that’s even worse. So what’s wrong with unit…

Developer productivity: what's all the fuss about?

The controversy about developer productivity There’s been a lot of controversy recently about developer productivity. Some very big consultancies claimed you could and should measure it, while some software product development legends are of a different opinion.The legends are making fun of the consultancies, which are in turn accusing the legends of wanting to dodge accountability for their…

Array sorters aren't problem solvers

The evergreen problem-solving If you work in software product development like me, you hear a lot about problem-solving. Problem-solving skills, problem-solving attitude, problem-solving interview steps. What most companies call problem-solving has nothing to do with actual problems, though. And the interview steps aimed at testing a candidate’s skills at this? They’re completely off…

Confessions of a TDD fanboy

Test-Driven Development (TDD) is arguably one of the most polarizing and misunderstood approaches in software development. It’s love it or hate it. Let’s have a look at TDD and why it provokes such strong reactions. This is going to piss some people off… So what is Test-Driven Development? Put down in words by Kent Beck in 2003, Test-Driven Development is a software development…

To modularize or not to modularize, that is the question!

Why are we talking about modules? Because we want to scale, and if we don’t modularize we won’t be able to scale. Mmm, but wait a minute, there are giant companies that don’t use modules, so we can scale without them! Scaling doesn’t mean becoming bigger and bigger, kind of the opposite of that. What about microservices though? Aren’t those kind of modules?…

Demand, capacity, outputs, outcomes, and impact

“This year we want to double the number of developers!” “We can’t put UX/UI and QA in each team, it’s inefficient!” Sigh, if only reality was so simple. I wonder when screaming your ignorance and incompetence to the world will start getting frowned upon. The problem Many managers would tell you that management is an art. But what they mean is that they wing it,…

Management by Objectives is wishful thinking

“This quarter we want revenue up by 10%” - but is it really that simple? Or is Management by Objectives a travesty? There are 2 ways of managing. One is hard, requires knowledge and understanding, and will expose your mistakes when you make any. The other one doesn’t work, is delusional, and betrays both the top and the bottom. But it’s easy, comes at zero personal risk and…

Traits of great employees

Companies always talk about wanting to hire A players and great talent. But what does great talent mean? How can you tell whether somebody will be great at your company? Companies employ people. In collaborative knowledge work, like software product development, employees are the most important asset for any company. So it’s only natural that companies try hard to secure the best talent. And…

A categorization of what's knowable

We often use different words for what we know, like in data-engineering, information systems, and knowledge workers. But do we really understand their meaning and implications? So what are these categories? Russell Ackoff used to say and teach that the content of the human mind can be classified into five categories: Data: individual observed phenomena Information: data that’s been processed…

Lifers and politicians

I’m sure you have encountered plenty of toxic people at work. Let’s look at some of the most dangerous kinds: lifers, and politicians. Toxic employees come in all shapes and sorts. Some are relatively innocuous, while others can kill a company if not addressed. The more obvious it is that somebody is toxic at work, the less dangerous they usually are. Today I’m going to focus on…

When it comes to models it's not about truth

Understanding models and lenses, their applicability, and their limitations. The philosophical bits Life is about luck and decision-making. Luck has tremendous impact, but we don’t control it, which leaves us with decisions. A good decision is a decision that produces good outcomes, according to the decision-maker. Given the situation, the problem, and the constraints, your job is to make…

Why?

I can hear the what’s in it for me? in your head. I hope you’ll find some of my thoughts useful, and this is more likely if you’re a startup founder, a software engineer, a product manager, a marketer, a project manager or any other software product development professional. And what about me? Well, I’ve always found that writing things down makes them clearer in my head,…