The best approach for software development
craftedsw.blogspot.co.uk
craftedsw.blogspot.co.uk
> The bad news is that there is no best approach
> to software development.
The article is mostly rants about all the current "best practices" everything from NASA strategies to TDD, DDD, lean, agile, etc. He thinks you should avoid dogma and be pragmatic.Article is good-written irony-style novel about relation between developers and "best practices" out there. Author is making a high-level (a bit sarcastic) review of bunch of methodologies like NASA strategies, TDD, BDD, DDD, Toyota Kaban, Scrum etc.
There's no point just reading TLDR, go and read the article itself.
Avoiding dogma is a no-brainer, there's absolutely no advantage on being dogmatic in software development. But the pragmatism part, I think it's OK as long as being pragmatic doesn't mean carelessly building stuff without putting much thinking beforehand, in whichever methodology you chose to follow.
I do believe in testing, not just software testing, but testing in general. Let's try and test the better set of methodologies and techniques for our scenario, mashup stuff together and come up with our very own "dogma".
The vast majority of developers probably don't care much at all about development methodologies. The author notices the vocal minority and mistakes it for the majority.
Generally software just doesn't work that way. (But maybe that was that you implied with "some contexts". In that case, I agree with you)
* I'm not saying they weren't trying out things until they decided how to land the Rover, but when they wrote the software they had very clear requirements.
Do what you think is best for whatever it is you're building :)
If all developers would be "inquisitive, curious and pragmatic" you could probably rationalize the decisions and carry the necessary actions without evangelism. Unfortunately the world is sometimes awfully imperfect.
Seen too many devs pursuing the perfect 1-size-fits-all holy grail architecture, only to leave a pile of over-abstracted technical debt in their wake.
Quite simply, if you can't understand why and when a particular pattern or methodology is effective, you can't take advantage of it and shouldn't be using it.
An experienced programmer is confident in all his choices and able to pick the best tool for any particular situation. Blindly subscribing to religions or Cargo cults just clouds your judgement and leads you to falsely believe that you wield the only hammer that gets all jobs done.
Which is a result of the wrong methodology, and what the modern approach tries to prevent.
And you know what? It really is better. I don't for a moment believe that everyone was doing agile-type development and then in 1968 they discovered NASA used BDUF and decided to adopt it. Software engineering is a remarkably young field, we really do know things now than we didn't know ten or twenty years ago. If you're following what was the best methodology a year ago, it probably isn't the best methodology now - there is no contradiction there.
Just don't for a moment try and tell me that the old ways are better. Because that's really not true.
You can't choose a methodology without considering the personalities and habits of the team members. Unless you have the luxury of replacing an entire team with people who want to work with a particular methodology, dogma gets you nowhere.
And I'm only talking about a team. Go up a level or two to the department or organization, and things get even harder.
But process does not create skill.
Process should exist to provide a framework or a set of limits to work within. It won't make a mediocre developer a superstar, but it will keep him from propagating dumb mistakes out to the customer. As a result, Process results in less improvement from good developers, because they're already operating at a level well above the quality floor.
In the end, randomly choosing a methodology without considering the team's personality and culture is a recipe for frustration for some, apathy for others and maybe a small bit of product improvement.
I agree. I have this saying that doesn't win me any friends: "Methodologies are for monkeys". (Keep in mind I use that term for project management methodologies and not so much for development methodologies)
A lot of big companies want/like trendy methodologies because they assume it lets them to hire less skilled people (i.e., cheaper) and continue to produce quality work. It doesn't.
What I have found is that when you have a team of quality senior people with good communication skills and throw them together, they will hash out what processes work best for that team without any need of formalizing their process. This way, everyone gets to work the way they want individually with some adjustments that allow them to work as a group.
I always try to hire the ones who program. People who program learn domain knowledge and become better developers through ... writing code.. their managers leadership and not talking about methodologies all day long but actually executing and learning from their mistakes!
I tell them if they'll get to work -- I will worry about requiring things like testing frameworks that add overhead but only when they add more value than the overhead costs.
sure, you can squeeze out some ok code from bad developers, by making them follow enough conventions. but are they really what you want in your company?
"i don't have a choice, that's not my company and not my employees" - sure you do. build your own
2. Release the damn code to QA
3. When QA finds a bug, write a damn test
4. Fix the damn code until the damn test passes
5. Release the damn fix to QA