Live data from Hacker News

A Proposal for an Antifragile Software Manifesto

sciencedirect.com

41–46 of 46 posts

Re: A Proposal for an Antifragile Software Manifesto

#41
post #19

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?

You can have all three. Prioritizing quality from the start, by doing design reviews, pair programming, tdd and so on, will actually reduce time needed to deliver fully functional software, and therefore lower overall cost.

reduce time needed to deliver fully functional software

Except you can deliver a cheaper product faster if it's not fully functional, hence the triangle.

Re: A Proposal for an Antifragile Software Manifesto

#42

Earlier quoted context omitted.

> what is that? 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…

Or you could read the book. I haven't (summer reading list, again). But it's got a 20-page bibliography, and appendices with all sorts of greek letters that define, well, a lot. I think. The Black Swan was also by Taleb and probably the most influential finance book of the last 20 years, plus a great read for anybody thinking in 'systems'. It'd give the idea the benefit of the doubt. Sometimes words have no meaning,…

A URL to a git repo showing the non-linear, self-adaptive piece of software would be more effective.

Re: A Proposal for an Antifragile Software Manifesto

#44
post #39

Earlier quoted context omitted.

It's not only about Agile, but incremental development is always detrimental especially for complex projects I really have to dispute that. First, it's not really clear what you mean by "detrimental" - is that to software quality, or development schedule, or suitability? Or all of them, or others? Agile is very clear about the trade-offs - working products being more important than documentation for example, or respo…

You can't build a house from the roof, but that's what Agile indirectly makes you do. Although Waterfall is the other dangerous extreme, it makes you think, correctly estimate, and plan. You can't apply Scrum to every project - especially those with firm deadlines! Yeah, it's good for startups, where feedback and market shape your product, by can you build a spaceship using Scrum? Honestly, as an engineer, even when…

You can't build a house from the roof, but that's what Agile indirectly makes you do.

And you can't compare software with a house, or even a spaceship :) For one thing, we have far fewer constraints.

When we build software we are (generally, though not in every case) building a solution to a problem rather than a strictly defined product - and in many cases, we are unsure about what the final product will look like! Spotify did a good illustration of this process in this slide: http://www.chrisyin.com/images/spotify-mvp.png - the point is to continuously deliver features to customers and using the feedback generated to inform ongoing development, which like you point out, is absolutely essential in some cases.

, but that's what Agile indirectly makes you do. Although Waterfall is the other dangerous extreme, it makes you think, correctly estimate, and plan.

That's perhaps the idealistic view, but there is a cost there too - change becomes much harder. I also suspect that there is no such thing as a correct estimate!

You can't apply Scrum to every project - especially those with firm deadlines!

Maybe not, and Scrum is not the ideal methodology in all cases - but it's also not the only way to be agile. It's also a fallacy that planning in advance means a project will meet a deadline - let's remember that Scrum doesn't typically mean you are doing different work, just that you are slicing it and delivering it differently. I'd argue that one of the main differences is that if a Scrum-developed project misses it's deadline, you still have a working product - it just doesn't necessarily have all the features you'd like. But if you are correctly building the most important and complex features first, then that's potentially much better than the "waterfall" outcome of "the product isn't complete and can't be used".

can you build a spaceship using Scrum?

I probably wouldn't want to try it, but this is an example of a project with incredibly tight constraints on what can be built - far more than software typically is. But I'd imagine it's also possible to build components of any product in an agile manner.

I still use Gantt charts, and that's another thing that makes people make funny faces in Scrum.

That's great, and it's something that should be encouraged - development methodologies should be determined by what works well for you as a developer, team, or company! A Gannt chart, assuming you are changing it as product requirements change, is basically the same as a Scrum burndown chart with additional planning thrown in. And we do the same sort of thing - "these are the epics, this is how long we estimate they will each take, and here is the order we will do them in." It's not so different.

Ultimately these methodologies are designed to help projects cope with change, which has been a long-term problem in correctly sizing and executing software projects. Maybe they won't always work for every project with particular constraints, but I reckon they are far more applicable than some people believe.

Re: A Proposal for an Antifragile Software Manifesto

#45
post #40

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…

I actually think the former would be more within in the spirit of Taleb's book. software is the result of a complex, sometimes problematic process and not every piece of software needs to be antifragile. when bugs or system outages pop up it isn't the responsibility of the software to fix itself, it's the responsibility of the team behind it.

Re: A Proposal for an Antifragile Software Manifesto

#46
post #32

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 ambiguo…

We may need those things, but it's increasingly clear that we cannot afford them so far as we know. I'm using "afford" widely - if we needed those things and understood that need properly, we'd have them. It's the mythic "$20 bill on the ground" - if it was really there, someone would have picked it up by now. it's no great secret how to write robust and unfragile software. We apparently only lack the will to do it.…

I have also worked for such companies. It's more common than what you and I think :)

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)?

Post reply on HN