Live data from Hacker News

Why don’t software development methodologies work?

typicalprogrammer.com

31–40 of 201 posts

Re: Why don’t software development methodologies work?

#31
An important realization I made a while back was that design methodologies do little to address program correctness, which is almost always the wildcard on deliverables; buggy software means missed deadlines and budget. Some, such as TDD, work to address the rapid building of tools to a particular spec, but often fail to promote static guarantees, especially in languages and environments where such provability is largely impossible. Dynamic languages penchant for monkey (guerrilla) patching further exacerbates the problem.

Solutions to this are tough. My first suggestion would be to use languages which facilitate correctness, although it's usually at the expense of developer availability: the pool of engineers with experience and know-how in true FP is orders of magnitude smaller than more pervasive languages. My second thought is to further embrace math as the building block for non-trivial applications: mathematical proofs have real, quantifiable value in correctness. I find it no surprise that the larger companies have made foundational maths, such as category theory and abstract algebra, the underlying abstraction for their general frameworks. This is even a tougher pitch than the first since most engineers don't recognize what they're doing as math at all - a big part of the problem. So many of us are doing by feel what has already been formally codified in other disciplines.

I'm aware that both require more (not necessarily formal) education than most engineers have pursued and makes it a difficult short-term pitch point for any company, but I think if we're serious about eliminating sources non-determinism from projects, it's important we address them directly.

Re: Why don’t software development methodologies work?

#32
Methodologies alone don't guarantee success.

I find more problems when there's less focus placed on understanding the data, manually, first, before placing it into a process.

Methodologies don't make it any less important to find, connect and understand the data first, but it seems to happen way too much.

A methodology I see missing is when we developers obsessively focus on optimizing tooling and code, instead of obsessively finding and understanding the data first.

Re: Why don’t software development methodologies work?

#34
There are a lot of issues layered in here, a bunch of complexity that might not be obvious just by scanning the article.

Does a good team deliver solid, quality code? What if it's code the user doesn't want? Conversely, what if the team excels at delivering what the user wants, and they love it, but the code is so buggy that it only works 50% of the time? Would that be better than a solid app the user hates? (Probably yes)

Should a team working inside a large company deliver faster than the organization is able to accept change?

Just what is a good project, anyway? One in which we all had a good time and thought we did a great job? Or one in which the person paying us thought we were awesome?

No matter the criteria, everybody seems to agree that having good people is something like 70-80% of the secret. The big debate is what goes into that other 20-30%

ADD: An interesting thought experiment to play here is to posit that the team sucks -- wrong guys, wrong personalities, whatever. In that case, what would you want to happen? The answer to that should be an important part of whatever you want your process to be. Explicitly define your failure mode. (Because failure is still more often the norm than success in software development)

Re: Why don’t software development methodologies work?

#35

Try this thought experiment: Imagine two teams of programmers, working with identical requirements, schedules, and budgets, in the same environment, with the same language and development tools. One team uses waterfall/BDUF, the other uses agile techniques. Problem is that with agile (as I understand and mildly practice it at least) you can't have "identical requirements", because you don't have full, complete and de…

I think there's a difference between having an initial set of requirements, and believing that those requirements are the requirements forever and ever, amen. Waterfall relies on the latter, while Agile assumes that they can and will change.

Both projects will be given the set of initial requirements. After all, if you don't have requirements, what the hell are you even doing? It's what happens when those requirements change that's the fun part.

Re: Why don’t software development methodologies work?

#36

Maybe they all don't "work" because people suck and get lazy? Things can be very pleasing when one works with developers use the planning tools and have a leader who never relents at keeping the team on track with a given methodology, all without being a bully of course. Of course it's rare in the real world, but it does happen.

I left my last job because my time had degenerated from doing cool stuff to fixing the stupid errors that my colleagues were making because they were lazy. Allowing some coders to be lazy in terms of adherence to coding standards and methodology has to be one of the best ways to get rid of your good programmers. For example, we had coding standards requiring a comment explaining the contract for each method written,…

That is too much doc for me, I wouldn't want to write it all either. Sounds like different people want to code a different amount of docs on their methods.. and should maybe be on different teams ;)

Remember, docs always lie

Re: Why don’t software development methodologies work?

#37
This would rather much be like a carpentry shop owner lamenting "why don't either electric circular saws OR handsaws work to make my mediocre workforce produce beautiful furniture without all of this wasted wood?"

First of all, creating beautiful furniture takes LOTS of time, as it rests in attention to detail and an uncompromising position towards quality. When you're uncompromising about quality, you require yourself to throw out, to waste, things that are of lesser quality.

Second of all, beginner, poorly trained, and dispassionate employees are never going to produce beautiful furniture. Mostly because of the above: they either lack the ability or the caring to have the attention to detail necessary to do great work.

And the best carpenters aren't going to come work for you unless you're willing to make it worth their time. Coming to work for you means they will have to do a lot more work in a much less comfortable environment than they are used to. Because the best carpenters have their own shop, their own tools, and work on their own time, because they love it. Going anywhere that is not their own setup is automatically worse for them.

It's the same thing in software: great software takes patience, it takes time, and it takes money to convince the best programmers that they should be spending their time on you rather than on themselves.

But at no point does any of that mean that, because Tool X can't magically turn your mediocre working into a stellar one, that means that Tool X is not worth studying. That is completely, 100% backwards. The master practitioner studies all tools, even the ones he or she doesn't like, at the very least to understand what is wrong with them and why they don't produce the results they want. A master carpenter might prefer a hand saw over an electric one because the electric saw chips the corners of the board too easily, or something. But he doesn't know that unless he's studied the electric saw.

You can't have "an absence of methodology" any more than a wood shop can have "an absence of tools". It has to be there. But they all have their pros and cons, and non of them has a pro that includes "makes men out of mice."

Re: Why don’t software development methodologies work?

#38
post #22

In my experience, these methodologies are best described as cultish. The form of religion but not the power. Here's my methodology. * Figure out what the software does, what the business cares about, and what the users care about. * Figure out what it kinda sorta needs to be under the covers * Write prototypes of the technically gnarly bits. * Flesh out the prototype and start writing integration/functional tests for…

Too pragmatic. Where are the meetings?!

Re: Why don’t software development methodologies work?

#39
Because Software is inherently complex, one of the most complex things that Humans can try and make. And whenever we successfully make something easier, we push the borders out so that Software is always stretching to the limits of the complexity we can handle. Ultimately, its just hard. Sometimes methodologies help, but there is No Silver Bullet.

Re: Why don’t software development methodologies work?

#40
post #31

An important realization I made a while back was that design methodologies do little to address program correctness, which is almost always the wildcard on deliverables; buggy software means missed deadlines and budget. Some, such as TDD, work to address the rapid building of tools to a particular spec, but often fail to promote static guarantees, especially in languages and environments where such provability is lar…

I think that's one aspect of the problem, but the migration from make-do to mathematically rigorous code can be equally fraught with peril. While the code itself can be made predictable, and easy to reason around, the time estimates and project planning often cannot. There is never enough time to factor out all of the commonality, remove all of the unnecessary use of state, codify all the assumptions into data types, etc., so you have to pick your battles.

A programmer needs intuition of what the biggest, most effective improvements are on the code base, which allow them to get the most work done. They also need some ability to guess how much time it will take, so that they don't miss deadlines. No amount of static type analysis will fix that.

Post reply on HN