from Hacker News

A Proposal for an Antifragile Software Manifesto

by jhrobert on 5/29/16, 11:49 PM with 45 comments

  • by danielvf on 5/30/16, 1:03 AM

    "We value reliable software", is nice, but everyone values that.

    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.

  • by SkyMarshal on 5/30/16, 6:28 AM

    Antifragile refers to a property in which a system does not just resist breaking down under disorder and stressors (robust), but gains/learns/becomes stronger. A good example is how bones heal back stronger where they were broken.

    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.

  • by devishard on 5/30/16, 2:17 PM

    TL;DR:

    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.

  • by mk89 on 5/30/16, 2:30 PM

    Why do people still keep writing Manifestos in 2016? I thought it was evident they don't work out - or that they get "abused" as political opinions.

    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.

  • by keithnz on 5/30/16, 1:58 AM

    I think a manifesto with a lot of buzzwords ends up being quite fragile.
  • by jmspring on 5/30/16, 3:27 AM

    As with any manifesto, words, interpretation, and practice are where they fail. I've been through the Agile/Scrum classes, yeah, great. Does management buy in, despite professing such? Yeah, not so great.

    Unfortunately, for me, whenever I see the word "manifesto" in relation to computers, this is the one I immediately remember...

    http://phrack.org/issues/7/3.html

  • by jimjimjim on 5/30/16, 2:22 AM

    This will be difficult to do in text (imagine a triangle):

                    Quality
    
            Time                Cost
    
    Right, which one is more important? and more importantly who gets to decide which one is more important?
  • by jcbrand on 5/30/16, 10:18 AM

    Interesting that the concept of Antifragility is gaining traction with regards to software.

    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...

  • by norswap on 5/30/16, 4:48 PM

    I was kind of hoping for a document that outlined principles to make the engineering process truly antifragile, i.e. one that would thrive under contingencies.

    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.

  • by kapitalx on 5/30/16, 6:03 AM

    Chaos engineering falls in this category: http://principlesofchaos.org/
  • by bernardlunn on 5/30/16, 3:37 PM

    I think this is more about tools than process. Specifically tools to assess fragility (bad dependency patterns). You cam only manage what you can measure.
  • by nikolay on 5/30/16, 6:54 AM

    When in 2009 I was calling it "Fragile," not "Agile," people were laughing at me as yet again I wasn't politically correct!