Hacker News new | ask | show | jobs
by pottereric 3203 days ago
> This author starts with the implicit premise that change is bad and all conclusions are the result of that.

How did you come to that conclusion? The theme of what I was saying is that projects to be given direction from the stakeholders. I never said anything to suggest that the direction couldn't change.

1 comments

Is it actually a problem that you've seen in real life where programmers write code without any direction? That seems impossible. A program exists to solve a problem. You might have a pretty vague idea of the details of that problem but ultimately you know what it is.

If programmers are coding whatever they want based on wildly unfounded assumptions then they're not doing Salmon Ladder development -- they're just terrible developers. If they're given some direction, coding, and iterating on that result then that's great. Even if they make some wrong assumptions at first, I don't see anything wrong with that.

It is a problem I've seen in the real world.

For example, I've seen a project where upper management tasked a team of developers with writing software and didn't give the team specific direction nor did they communicate clear goals for the software. The team asked for more details, and the management told them to "do it agile". The team wrote good software, but they solved the wrong problem.

This is not a software development process issue. If management is bad, doesn't understand the process, and there isn't buy in then the project will fail. Take that same team and same management and do it waterfall and I doubt the outcome would be any different.

But it is not just management that is at fault. Those developers did not have enough backbone to push back. Instead of educating management about the process or telling them it can't be done they just sulked back to their cubicles and coded. There is no surprise it turned out wrong.

I see where you're coming from on this; you cannot build any product without communicating with the stakeholders. That communication can be rough scribble diagrams, notes, detailed requirements, meetings showing off prototypes -- really anything. All software development processes are about communication.

> this is not a software development process issue... [followed by a list of software development process issues.]
I have seen quite a few cases where more thought to work through the specific implications and consequences following from "vague ideas of the details" would likely have quickly identified problems that did not emerge until a bunch of code had been written.
I've seen many cases where specific implications and consequences from vague ideas of the details could not possibly have emerged until a bunch of code is written.

Obviously it could have been found during planning but it never would have. It's hard to get people to think in that much detail without anything concrete.

Edit: with the exception of literal rocket scientists -- they're very good at planning and getting the details right compared to the average person.

Coincidentally, The Cassini mission to Saturn comes to its scheduled end in a few hours. From what I have read about how NASA develops software, it is essentially a waterfall process, and I am fairly certain that its programmers have more than a vague idea of what they are doing when they write code.

Edit: Do you really want to be an evangelist for mediocrity? You should give thinking things through a try; none of us get it right even close to all the time, but I think you will be surprised by how effective you are at it.

I'm not saying we shouldn't be thinking things through but we aren't often blessed, as developers, with working with actual rocket scientists who will provide perfect models of the product such that it won't literally crash into another planet 1.2 billion kilometers away.

Sometimes you have to do the work and build something that isn't fully specified. Or when management says they want a Facebook clone and then walks away, you have to be willing to say "no, you have to come back the table on that one".

I think we are in agreement here - I acknowledge that the waterfall approach doesn't often work and that spacecraft are a very special case. In fact, I was going to write that waterfall is a straw man in that no-one tries or believes in it any more, but that made me think of NASA (and possibly aerospace in general), which demonstrate that it works (and is possibly the only thing that works) in certain circumstances.

I think the pendulum has swung too far the other way, however, and it is not hard to find opinions (and Stack Overflow comments and sometimes answers) stating, in effect, that the only valid way to develop code is to write some and try it. For the most part, I think these authors have not considered of how much thinking ahead goes into making even that work, and if they did, they would not be so dogmatic about deprecating it.

Three areas, of definite relevance to ordinary commercial applications, where I think thinking ahead is more or less essential to success, are security, concurrency and performance.

My whole line of thought actually comes from misunderstanding the point of the article. My original reading was that it was dismissive of jumping in and coding as a method of working out requirements -- which I disagree with it. I think jumping in and coding is one good way (but not the only way) to work out requirements with stakeholders.

Instead the article is about programmers who code without the involvement of stakeholders at all. The inclusion of agile is a bit of red herring.