How to design perfect software products (2013)
hintjens.com
hintjens.com
I think the mental model that you should always be working on software where you have people directly telling you the problem they want to solve is a poor one -- it's great for a variety of domains, but often people want a faster horse or don't even see a problem with their existing horse. Even when you think you are recognizing a problem others don't see yet -- it can require a leap of faith to begin exploring to see if you can iterate and react to discovering something with big promise.
Everyone else (including you, most likely) can only see the change itself. Is the change pretty? No awareness at all of whether the product after the change is nicer than the present product.
It is a skill that can be developed, but it takes focused attention. The end result is to see how to alter the change to make the end result better to use, not just a thing with another PITA feature.
Is it API surface simple ?
Is it data model simple ?
Is it Lines of Code short ?
Is it extensible with small core and huge plugins system ? ...
Is Wordpress simple ? Is MERN simple ? Is Rails simple ?
There's no answer here.
That's it. There's no "absolute simplicity", it depends on context.
Simplicity, like love, justice, elegance, etc are hard to define, but EASY to see.
How you know something is "complex"? When is not simple. When you know something is "complicated?", when is not simple, and not even complex.
The fact some concepts are hard to articulate is not a big problem most of time.
What is needed, is to ASK IT. Ask yourself "is this simple?" "no, we think is complicated". Pump! that's all.
You don't need to get lost on definitions to know. You only need to ask.
----
P.D I don't argue against the importance of definitions... and sometimes people are sooooo lost or the project is sooooo messy that actually is necessary to make a mental check to make clear to everybody or ourselves, like @revskill say, to be more precise in what we are talking about. But most of time, is a problem of FAULTY COMMUNICATION not on words!
I've read everything I can about measuring complexity. I'm just not smart enough to understand most of it. So "simple" is still like pornography for me: I can't define it, but I know it when I see it.
Agile is primarily about managing down assuming a coherent goal exists - not about finding the best coherent goal when it doesn't, or even about being able to tell that it doesn't.
Agile business management doesn't really exist as an established practice. Although you can certainly find books, consultants, and all the usual noise that use the term, the idea that you can recursively define your business strategy - not your implementation - by solving the problems that provide the best customer satisfaction at the lowest implementation cost isn't as common as it should be.
The obvious complication is that the definition of "customer" varies. A bootstrapped startup needs to focus on real income-generating customers.
A VC-funded startup is in a different market. The primary customers are actually the VCs and other investors - not product users, whether they're paying or not.
Pieter Hintjens is always worth reading, even though his "solutions" are wildly oversimplified and contingent. Here he takes it for granted that solving customer pain points should always be the primary value-generating goal - which for better or worse happens not to be true, especially for startups.