But if you said "We value reliable software over meeting deadlines", then you'd actually have said something.
The power of the Agile Manifesto was that it clearly identified tradeoffs they were willing to make.
This reminds me of a Jamie Zawinski quote from the book "Coders at Work":
> [...] Are you trying to write good software or are you
> trying to be done by next week? You can't do both. One
> of the jokes we made at Netscape a lot was, "We're
> absolutely 100 percent committed to quality. We're going
> to ship the highest-quality product we can on March 31st."> Our highest priority is to satisfy the customer by building a non-linear, proactive, and self adaptive system
Okay, firstly, what is that? And secondly, does it serve the customer if those are not the customer's requirements?
What if I don't want a "self adaptive" system, whatever that is? It could be bad: self-adaptive software keeps some global state somewhere and doesn't quite ever do the same thing twice. If I require something that produces exactly the same output every time I feed it a given input, then I'm ill-served as a customer if I'm handed some self-adaptive contraption.
A collection of popular buzz-words in contemporary software engineering research.
> And secondly, does it serve the customer if those are not the customer's requirements?
These are never any customer's requirements. Not a sane customer, at least. Instead, they are (conjectured, probably correctly, to be) generalizations of sufficiently many customers' requirements.
But you're correct -- most customers don't want or need any of those things (except non-linearity. But every piece of software everywhere has this spades.)
While we are currently able to build self-healing systems of a sort, fault-tolerant Erlang systems being a good example, it doesn't seem we can build systems that are truly antifragile on their own, that would require strong AI. Otherwise, humans monitoring and intervention are required to improve systems under duress.
This manifesto does include "team" and "organization" to account for that, but a true autonomous antifragile system is a ways off.
1. Our highest priority is to satisfy the customer by building a non-linear, proactive, and self adaptive system.
2. We welcome changing scenarios where unexpected events (Black Swans) are the real paradigm shifting entities.
3. We deliver assuring embedded and adaptive fault tolerance.
4. All stakeholders, and the broader environment, lead the antifragile organization.
5. Build antifragile projects around motivated, skilled and open minded people. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of building an antifragile organization is building on honest, open and transparent communication.
7. Continuous exposure to faults and automatic fixing is the primary measure.
8. An antifragile organization promotes a context aware environment. The stakeholders should be able to maintain a system indefinitely.
9. Continuous attention to technical excellence, reality, redundancy.
10. Error loving - the art of learning to be antifragile – is essential.
11. Antifragile architectures emerge from self – organizing, context aware teams.
12. At regular intervals, the developing team reflects about the context situation, on how to become more effective, then tunes and adjusts its behavior accordingly.
We don't need Manifestos, we need people who think about each situation and problem differently, basing their thoughts on experience, knowledge, and communication. You can write all the s* you want, but you won't get that thanks to 10 lines - which will be always ambiguous and misinterpreted, then what? Will you write another manifesto?
We need experience, we need to learn, we need to improve. You literally need to fail to get any improvement. And companies need to keep their people, they need to invest in people, instead of relying on a bunch of buzzwords or manifestos to prove themselves "cool" and up-to-date. Stop doing that. Make a step back, give your people time to think, talk to them, and give them the right resources.
it's no great secret how to write robust and unfragile software. We apparently only lack the will to do it.
I've been in spots where we priced a defect, and they still didn't want it fixed.
However, they cannot afford them because they simply don't want to be the best. Look at those companies who invest in people and give them time to grow/think/be. Their products are above average. Why?
When you want to be the best, you simply have no other way than "thinking" and "reasoning". Unless you are just lucky and you get one or two Einstein[s]. But even then, if you don't give such a genius the right environment, he is gonna do his best to get away from you.
What you call will I call it attitude towards business. Nowadays we don't write software anymore to make a product last at least 10 years, we build companies to be sold in order to get someone (the founder) rich so that he can invest in new crap to sell. Why should he waste 500-1000 $ when that money can go to a new feature or an "important" bug (coming from a bigger customer)?
Unfortunately, for me, whenever I see the word "manifesto" in relation to computers, this is the one I immediately remember...
Quality
Time Cost
Right, which one is more important? and more importantly who gets to decide which one is more important?Pick any two...
Except you can deliver a cheaper product faster if it's not fully functional, hence the triangle.
In practice? Pick a spot inside the triangle.
Back in 2014 I wrote a blog post "Antifragile Software Ecosystems" that discusses how IMO antifragility relates to how software is developed.
https://opkode.com/blog/2014/01/14/antifragile-software-ecos...
Honestly, I have trouble fathoming how such a thing would be even possible in the realm of software. Maybe a system that "learns" previous failures and proactively monitor failure conditions / throttles contended ressources? (Seems quite specific already)
And the document surely didn't tell me.