News for hackers. Stuff that matters.
Re:Ask HN: How to manage developers who aren't very good? by jonstewart on Friday February 06, 2015 @09:11AM (#9008986)
Presumably this is your first time managing programmers. Without ill will, you are most likely a very poor manager right now. Management is a separate skill and, like programming, it takes a long time before you're proficient. So, the first step is to acknowledge that, right now, you are a total newb and to tell yourself that a few times every day.

From your description, it sounds like these programmers are not as efficient in their work, or as task/goal-oriented as you'd like them to be, but not that they're completely incapable. Sometimes you will find programmers who can't program; they're hopeless, you have to fire them. But otherwise good programmers can be awful at managing themselves... and you're the manager, after all, so it's your problem to solve. Of course, you don't want to micro-manage them every hour of the day; that's not scalable.

Not every aspect of Extreme Programming is applicable to every situation. But a quick morning standup meeting can be a very effective tool. First, you will find out when people get off track and are having problems. Second, it creates some accountability to advance the ball every day. Third, while you must actively work to have the team cooperate instead of compete, it will naturally create some competitive and evolutionary pressure, where the more focused members of your team provide a good example and, over time, can share some of their secrets. Finally, the standup helps reinforce teamwork. If someone is having a hard time with a task, you can respond and say, "hey, you know, Bob's in a good place with what he's working on, why doesn't he help you out today, see whether a fresh perspective can help?"

Re:Ask HN: How to manage developers who aren't very good? by jmulho on Friday February 06, 2015 @10:38AM (#9009434)
Excellent answer up until paragraph three. Nothing will drive your developers (good and bad) away quicker than an a "quick morning standup", aka daily interrogation. Were you productive yesterday? Will you be productive today? What are your excuses? This innocent attempt to keep everyone on track has all manner of unintended consequences. Here is what happens to your developers calendars: Draw a box around the hour before standup. In that box write "Don't start on anything hard." Draw a box around the half hour after stand up. In that box write "Try to regain focus." Draw a box around the last hour of the day. In that box write "Do meaningless things I can mention tomorrow in standup, if necessary." Difficult tasks are rarely accomplished as a series of daily successes.

As a manager, the most important thing to remember about the meetings you schedule is that they are for your benefit. If you are the type of person who needs to know what is going on every minute, you will hold a meeting every minute. When developers need to know what is going on they simply turn around and ask, exactly as often as necessary. One way managers could minimize disruption is to walk up and ask developers what is going on as often as necessary on a per developer basis.

Re:Ask HN: How to manage developers who aren't very good? by e28eta on Friday February 06, 2015 @10:54AM (#9009516)
I'm sorry that standups have been like an interrogation for you. They should really be for the team's benefit. The team as a whole should care about delivering the product, and should use standup to communicate about current progress, and especially to help each other with any blockers.

It sounds like these engineers have tasks they think are important: I don't think anyone spends several days setting up a VM for fun. Does everyone have a say in what user stories are worked on? Do they have a mechanism to suggest improvements, and help prioritize them against the rest of the backlog to figure out what's most important?

Re:Ask HN: How to manage developers who aren't very good? by jonstewart on Friday February 06, 2015 @11:09AM (#9009610)
Likewise, I'm sorry you've had a bad standup experience. A standup should absolutely not be an interrogation, and perhaps I dwelt too much on the "competitive pressure" aspect. That competitive pressure should come entirely from within a developer, just from the normal psychological desire to achieve and do a good job and to know that someone cares about what you're doing. The manager actively needs to counteract the competitive part, to ensure that it's okay in the standup to say "I'm stuck" or "I fucked up" or "I need help".
Re:Ask HN: How to manage developers who aren't very good? by nitrogen on Friday February 06, 2015 @10:58AM (#9009542)
15 minute standup meetings right before lunch are an ideal way for a team working on scattered parts of a big project to stay connected to reality. They shouldn't be structured as interrogations. Rather, each team member (works for non-programmers too) gives a brief summary of recent and near-future work, their longer term trajectory, and anything they need another person to review. Other team members then have the opportunity to point out they are working on similar things and need to make sure integration of the separate parts goes smoothly.
Re:Ask HN: How to manage developers who aren't very good? by neukoelln on Friday February 06, 2015 @10:49AM (#9009488)
We also thought this way. We had our daily standup at half past ten, which was right in the middle between coming in and going to lunch.

Now we moved it to quarter to two, which for most of us means a bit after lunch. Now we have no interruption throughout the morning, and the hour before the standup we're not working anyway.

Re:Ask HN: How to manage developers who aren't very good? by jonstewart on Friday February 06, 2015 @11:10AM (#9009619)
Yeah, I'm a fan of first thing in the morning--if everyone gets to work at the same time--or after lunch, where it helps ease people back into work whilst digesting.
Re:Ask HN: How to manage developers who aren't very good? by jacquesm on Friday February 06, 2015 @11:35AM (#9009762)
The daily standup: it will make a really bad team perform a little better and it will make a really good team go to pieces.
Re:Ask HN: How to manage developers who aren't very good? by sukilot on Friday February 06, 2015 @11:54AM (#9009882)
If the team is doing really well, no one will suggest a standup.
Re:Ask HN: How to manage developers who aren't very good? by RogerL on Friday February 06, 2015 @01:54PM (#9010792)
Are you hiring?

This sort of stuff tends to get imposed from above, or by busybodies enraptured with ideas and theory as opposed to practicality. I'm endlessly told how nothing but agile works, despite the fact that I'm 48, and successfully lead dozens of projects before agile was an idea, on time and on budget.

Re:Ask HN: How to manage developers who aren't very good? by collyw on Monday February 09, 2015 @09:27AM (#9021252)
This is exactly what I have though. I code the same way as I have for years. (I am more organized and disciplined, but that is down to experience, and nothing to do with the way I work being labeled "agile").

If I was to take a list of aglie practices, I maybe end up ticking half of them. Same things I did when waterfall was all the rage.

Re:Ask HN: How to manage developers who aren't very good? by jacquesm on Friday February 06, 2015 @02:13PM (#9010926)
How I wish you were right.
Re:Ask HN: How to manage developers who aren't very good? by BerislavLopac on Friday February 06, 2015 @05:49PM (#9012103)
My favourite take on the standup meetings is not to structure them as reports on what each team member did yesterday and planned to do today. They can include that if necessary, but I prefer using them as an opportunity to exchange knowledge. The team members should be encouraged to discuss any issues they ran into and share the ways they resolved them, and the lead should listen and make note of any recurring issues -- both related to technology and to the personal -- and see if they need resolving on a more individual level.
Re:Ask HN: How to manage developers who aren't very good? by dragonwriter on Friday February 06, 2015 @06:09PM (#9012199)
Its essential to regularly update what tasks are done and what tasks are being worked on by whom, but if you use some other system to handle those updates and keep people aware of the updates (e.g., visual artifacts updated as items are completed and pulled for work, as in kanban), then you don't need to do that in the standup meeting.

Identifying issues encountered (both to share knowledge of how issues were resolved and to gather information on addressing barriers that haven't been resolved) is a pretty standard element of standup meetings even when they include progress updates, and certainly a good thing to keep them for if you've moved the status updates to another channel.

Re:Ask HN: How to manage developers who aren't very good? by vraravam on Friday February 06, 2015 @11:43PM (#9013090)
I am sorry - but I dont understand why your attitude towards daily standups is so pessimitic. I do agree that what you describe can be one possible outcome of standups, but, if everyone (at least individually in their own way) is looking to ensure that the project/undertaking succeeds, then there are a whole lot of other benefits that standups do provide.

One advice to the OP - dont think of yourself a "manager". I always think of myself a "lead"er - as in "lead by example". So, anything that i ask (and consequently expect from my team) is definitely something that I would also do given the same circumstances. Going by this, the standup (as an example) is where I am the first one to share what I did yesterday, something interesting that I found out about yesterday, and what I hope to accomplish today. I add any blockers that I came to yesterday couched in the "can someone please help with this problem?". Since I open up the "discussion", its not even considered an interrogation - its just sharing my accomplishments, interesting things, etc with my peers/team mates.

Re:Ask HN: How to manage developers who aren't very good? by jghn on Friday February 06, 2015 @12:14PM (#9010027)
In my group standups are more about everyone touching base on what they're doing and what issues they have so that other people a) know that they're not duplicating effort and b) can chime in to help if they think that'd be helpful.

That's far from an interrogation

Re:Ask HN: How to manage developers who aren't very good? by therealidiot on Friday February 06, 2015 @11:55AM (#9009886)
As part of my job I have the pleasure of a "quick morning standup" every day, and it's one of my least favourite parts of the job. It also routinely becomes a "not-so-quick morning standup" meeting.
Re:Ask HN: How to manage developers who aren't very good? by rifung on Friday February 06, 2015 @12:54PM (#9010380)
I think that your opinion is definitely valid and just goes to show that different things work for different people. I actually really enjoy stand up because it's the only way I get to know what other people are working on. It also makes it so that it's easy to prioritize depending on dependencies.

However I would argue that the problem isn't stand up itself, but a culture of not being able to say you didn't finish something. After I realized in my last company that it was okay to say I couldn't finish something in time, the environment quickly felt much nicer to be in.

Re:Ask HN: How to manage developers who aren't very good? by pcglue on Friday February 06, 2015 @05:40PM (#9012047)
Yeah, I left my last company because of SCRUM gone wrong (1 hour daily "stand-ups" and 6 hour sprint planning meetings). One criteria in my job searches now is no Agile/SCRUM (to me, it's just another name for micro-management).
Re:Ask HN: How to manage developers who aren't very good? by logfromblammo on Friday February 06, 2015 @12:17PM (#9010049)
I have an anecdote about daily stand-up meetings. The project I was on had its tasks written up in Excel spreadsheets, planned up to 2 years in advance. The management discovered, after seven years, that things were not being done that should be done.

So they implemented daily stand-up meetings at exactly 8:50 am, including every single person on the development team, as well as all the testers. The natural politicians on the team immediately pivoted towards writing down every bullshit thing they did during the day, so they could recite them the next morning as evidence of productivity. Incidence of scheduled meetings that would require at least one of the seniors to be present exploded.

Every single one of those damned meetings was scheduled for 10 minutes, and lasted at least 30.

The stand-up is not the problem. Incompetent management is the problem. Management fads won't do anything to address the underlying deficiencies. The actual problem with that office is that smart and unethical developers are leading the incompetent managers around by the nose, using the very process and metrics that the managers had created to hide their lack of development knowledge.

As a result, the senior developers assigned themselves the privileged tasks that sound important but don't actually require much work, assigned the grunt labor to juniors, and gamed every last one of the management metrics to make sure everyone on board with "the program" gets paid until the gravy train runs off the cliff.

So naturally, every last line of that code base is DailyWTF candidate material. The management does not understand technical debt, so the seniors issued them high-interest loans from their own bank.

This is not the fault of the developers. It is 100% the fault of the managers that allowed that toxic creature to take root.

So with respect to the question post, I suggest that the "slow" employees may actually be testing their new manager's capability to manage them. This is particularly relevant if any of them have ever worked for another company.

Assume they are trying to establish their own slack margin, so that they can safely read HN every morning, or some other equivalent time-waster, without falling behind on assigned tasks. If so, implementing a daily stand-up will only confirm that you are a management novice that can be manipulated.

Just establish a tough, but fair, work standard, and check to see if the "slow" guys speed up in response, or continue to struggle for more hours. For the former, you will need to court their favor by assuring them that good productivity will not be punished. For the latter, you will need to continue their education by sharing the knowledge and experience you and the faster developers have acquired during your careers--but subtly, so as to not embarrass them before their peers.

Re:Ask HN: How to manage developers who aren't very good? by joesmo on Friday February 06, 2015 @11:28AM (#9009724)
"Excellent answer up until paragraph three. Nothing will drive your developers (good and bad) away quicker than an a "quick morning standup", aka daily interrogation."

While it's far from the worst thing to drive developers away, I do agree a standup/scrum meeting every day is stupid, counterproductive, and just plain useless.

For the managers, they should be able to look at your ticketing/project system and know instantly what everyone is working on. Keeping tickets up to date is part of the job and really, it's not that hard.

For the programmers, they are now tasked with figuring out what to say in the standup and how to make sure that they are not perceived as not working when they really are. Programmers who need to know what other people are working on in the team can also look at the ticketing/project system and when they need more information (as in cases where their work depends on someone else), they will ask directly.

I've been to standup meetings in close to a dozen different companies, ranging from the smallest startup to some of the biggest tech companies and never have I ever seen a standup meeting end on time. NEVER. I don't think it actually happens. What I have seen is the meeting go on for half an hour to an hour, boring everyone out of their minds. Sometimes this even involved multiple teams whose work barely intersected at all. The other team's work status was a pure waste of time for anyone not on that team.

Yes, it is absolutely an interrogation. A daily standup shows that the manager doesn't trust his employees. He doesn't trust them to keep the ticketing/project system updated. He doesn't trust them to do work without the threat of being shamed and/or seen as lazy if the work done doesn't sound impressive in a standup. He doesn't trust them to seek help on their own. Basically, a daily standup is the sign of an incompetent manager.

Scrum is for rugby.

Re:Ask HN: How to manage developers who aren't very good? by zhte415 on Monday February 09, 2015 @09:12AM (#9021180)
> I've been to standup meetings in close to a dozen different companies, ranging from the smallest startup to some of the biggest tech companies and never have I ever seen a standup meeting end on time. NEVER. I don't think it actually happens.

I've never seen a huddle exceed 5 minutes. Ever. Even sit-down meetings, in large corps, rarely exceeded half an hour (Fortune 50 type companies).

I find the daily update hugely useful as a quick run-down into the changes in strategy happening, and as a chance to know the focus of what others are doing.

Perhaps I'm just lucky? Industry and location: Banking (UK); Finance and Technology (China).

Re:Ask HN: How to manage developers who aren't very good? by agilecoffee on Wednesday February 18, 2015 @06:23PM (#9071564)
I've experienced all range of standups. My current teams (I have two) both get in / get out in under 15 rather consistently. On occasion, parking lot items may extend beyond the 15-minute mark, but these are typically NOT requiring all team members' participation (so non-participants are free to leave). As a SM, I keep the team on track, reminding them to stick to the 3 questions and not much else (we do enjoy some banter - few teams take themselves so seriously that they don't allow any banter), but I keep the overall standup short, to the point and respectful of our time.
Re:Ask HN: How to manage developers who aren't very good? by jonstewart on Friday February 06, 2015 @11:45AM (#9009820)
A standup is for communication. "Here's what I'm working on, here's something cool I found out, Oh hey I have some code related to what you're working on, I need help, That sounds awesome, What a pain in the ass setting up VMs is", etc. I've actually found it's also a good way for the manager to communicate what s/he is doing, by participating as an equal. The standup should not devolve into the manager pointing a figure at each team member and asking them when they'll be done with a certain task.
Re:Ask HN: How to manage developers who aren't very good? by jmccree on Friday February 06, 2015 @12:09PM (#9009986)
In my personal opinion, if you need to set aside 15 minutes per day, killing at least 45 mins of productivity, for people to communicate, then your communication processes are broken. All of the things you mention could be communicated throughout the day in a team chat room. If someone needs help, they should send up a flare immediately via email or chat and get assistance as soon as someone is free.

In my personal experience, standups are practically useless if you have a team that has good communication practices. You know what people are working on from the ticket system, things are shared throughout the day as people work on chat, and if you do need some level of daily status report, having everyone email one in directly to the manager is the most efficient route.

Re:Ask HN: How to manage developers who aren't very good? by jonstewart on Friday February 06, 2015 @02:06PM (#9010870)
That's funny. Right now my colleagues and I are remote, and I really miss having a standup and often despair at using chat all day long. For me, it feels like an interruption throughout the day and frustratingly low bandwidth.
Re:Ask HN: How to manage developers who aren't very good? by joesmo on Friday February 06, 2015 @12:08PM (#9009982)
I do agree that communication is the intention, but in practice, that's just not how it plays out.
Re:Ask HN: How to manage developers who aren't very good? by jonstewart on Friday February 06, 2015 @02:07PM (#9010882)
I've never had a standup go on for longer than 15 minutes. Perhaps one of the ultimate takeaways for the OP is that there are N tools in the manager's toolbox, and N^N ways to abuse them.
Re:Ask HN: How to manage developers who aren't very good? by ricardobeat on Friday February 06, 2015 @09:30PM (#9012826)
As jonstewart said, the standup is for communication. In my team the morning standup will occasionally take less than a minute, a much shorter interruption than getting up for a cup of coffee. It makes me aware of what everybody else is working on and their progress, which I think is valuable.

If it acquires a have you done any work at all? vibe, you just fight it off with honesty. A half-hour standup is just insane. A large 'scrum of scrums' standup with dozens of people/teams shouldn't take longer than 15 minutes.

Re:Ask HN: How to manage developers who aren't very good? by automatthew on Friday February 06, 2015 @12:48PM (#9010328)
> I've been to standup meetings in close to a dozen different companies, ranging from the smallest startup to some of the biggest tech companies and never have I ever seen a standup meeting end on time. NEVER. I don't think it actually happens.

It's easy to sabotage standups in this manner by asking questions of others that you know will cause extended discussions. Especially on topics that have previously been "settled" by fiat.

Re:Ask HN: How to manage developers who aren't very good? by danielki on Friday February 06, 2015 @02:24PM (#9010988)
> I've been to standup meetings in close to a dozen different companies, ranging from the smallest startup to some of the biggest tech companies and never have I ever seen a standup meeting end on time. NEVER. I don't think it actually happens. What I have seen is the meeting go on for half an hour to an hour, boring everyone out of their minds. Sometimes this even involved multiple teams whose work barely intersected at all. The other team's work status was a pure waste of time for anyone not on that team.

A stand-up shouldn't take more than a couple of minutes per person, at the most. The thing that seems to help the most with this is to set aside a section of the whiteboard for the "Parking Lot". If the discussion starts getting off-topic or taking too long, the leader says "let's put this in the parking lot for now", makes a note of the topic on the whiteboard, and you move on to the next person. After the main part of the stand-up meeting is done, the Parking Lot is addressed, but only people who want to discuss it (or are needed for such discussion) need to stay.

Re:Ask HN: How to manage developers who aren't very good? by michaelochurch on Friday February 06, 2015 @10:56AM (#9009528)
I hate 95% of "Agile" (i.e. wolf-in-sheep's-clothing micromanagement) but I actually think that a daily standup is often a good thing or, at least, a necessary evil.

In organizations, people will form suspicions, e.g. "does that guy actually pull his weight?" It's not a good thing. It's not what people should do. It's what they will do. Standups allay that suspicion. Of all the political games that an office environment can make you play, standup is one of the easiest ones, and that's good because even with the losses you mentioned (such as regaining focus) it's limited in the amount of time it takes, and you still have 50-65 percent of your time for real work, which is 3-4x what many programmers get.

One way managers could minimize disruption is to walk up and ask developers what is going on as often as necessary on a per developer basis.

Impromptu status pings are more disruptive (and, in some companies I've seen, obnoxiously frequent, like 1-4x per day) than scheduled status meetings. If you've decided that you need status updates, you should have the standup instead of having the whole office on edge all fucking day.

Re:Ask HN: How to manage developers who aren't very good? by gregd on Friday February 06, 2015 @10:02AM (#9009252)
To elaborate a little more on jonstewarts excellent answer: It sounds like you're comfortable with two of them because, in your words, "Two are like I was". You manage 4 people. You're lucky that you can relate to two of them and their work styles. I say this because everybody works a little differently than everybody else.

And everybody is going to have strengths and weaknesses. As a great manager, it's up to you to play to each person strengths. The other two employees may be scatter-brained, so perhaps task them with very specific goals that aren't as time critical as the other ones. The term Rock Star Programmer, is so fucking overused, overhyped and just plain stupid and I wish that it never entered into our vernacular.

It's also your job to realize realistically, where your employees have weaknesses (trust me everyone does). A great manager will help bolster areas that people are weak in, in a way that doesn't demean them.

Management ain't easy.

Re:Ask HN: How to manage developers who aren't very good? by exelius on Friday February 06, 2015 @09:29AM (#9009090)
You're absolutely right, management is not programming. But management is LIKE programming in that there are frameworks and libraries developed by people before you that you can use so you don't have to learn everything the hard way.

In this case, I suggest the OP read up on the situational leadership framework [1] (Wikipedia is a good start but I suggest you pick up a book since they explain it far better). It is designed for the exact problem OP is encountering: what to do when you have people with different levels of expertise at a task. In a nutshell, it's about helping your subordinates manage the experience curve by recognizing where they are and providing the right kind of encouragement at the right time.

[1] http://en.wikipedia.org/wiki/Situational_leadership_theory

Re:Ask HN: How to manage developers who aren't very good? by joeyspn on Friday February 06, 2015 @11:13AM (#9009638)
This one goes to my reading list cue..
Re:Ask HN: How to manage developers who aren't very good? by ArekDymalski on Friday February 06, 2015 @11:54AM (#9009875)
> Of course, you don't want to micro-manage them every hour of the day; that's not scalable.

While some managers want to stay away from so called micro-managing at all costs (either because they are afriad that their employees won't like it or becuase they are lazy) it has to be said very clearly: There are certain situations when so called micro-management (very precisely set goals with clear metrics, large amount of detailed instructions, frequent controlling and immediate corrections) is absolutely necessary to push someone's growth forward. Of course such management style isn't scalable and ultimately must be changed when the employee's competences grow. It's just an investment into future performance.

Of course as in case of every investement you need to evaleate if it makes sense. Assuming that the employee has only one particular area that needs to be improved, the answer usually will be "yes".

Re:Ask HN: How to manage developers who aren't very good? by Avalaxy on Monday February 09, 2015 @03:53PM (#9023634)
You might be on to something here, but what else can a team leader do to manage other developers besides organising daily standups?
Re:Ask HN: How to manage developers who aren't very good? by j_m_b on Friday February 06, 2015 @10:51AM (#9009497)
What about having each person give you an oral review of what they did at the end of the day to spot problems?
Re:Ask HN: How to manage developers who aren't very good? by geebee on Friday February 06, 2015 @12:49PM (#9010340)
Standups, like so much of "agile", could be beneficial to every member of the team. I've insisted on them as a developer.

Unfortunately, standups, like so much of "agile", are a perfect disguise for wolves in sheep's clothing.

I've been incredibly burned by agile, and I realized it's because agile encourages a developer to let down his or her guard at the wrong moment.

Going through the agile manifesto, I can now see how each one of these has gone wrong for me.

http://www.agilemanifesto.org

"Individuals and interactions over processes and tools". Right, we all get together, discuss what we're working on. It feels very collaborative. But there will be this tool, this time-tracking system, that we'll enter stuff into, and your name will be next to those things with a deadline. If you don't meet it, we'll interact with you as an individual about why you aren't meeting your deadlines.

"Working software over comprehensive documentation". Again, sounds great. Rather than spec'ing out every little detail, let's work together iteratively to get the right product out. Here's the thing - you just allowed the people who are putting your name next to a task and a deadline to never commit to exactly what they're trying to build and by when. The deadlines are yours, but they'll enjoy changing their minds, because, you know, "agile."

"Customer collaboration over contract negotiation". The trap has been set, this is where it is sprung. Most developers, I'll guess, aren't truly in contract situations where there are lawyers and signatures and so forth. The tend to work on internal projects. But make no doubt - if someone can turn to you and say "you committed to getting X done by date Y", and it's in there in the system, you are in a contract situation. But because it was "agile", you didn't negotiate properly, and now you'll get rolled.

"Responding to change over following a plan". I assure you they will hold your feet to the fire if you don't follow the plain that was clearly in the "contract" and documented in the progress tracker system. However, because it was "agile", you never really got them to commit to what they were asking of you, so they retain the ability to change and adapt. If it suits their purpose, so can you, if not, you're "in breach". If it's internal, this isn't some lawsuit, it tends to be a sit down with people, including your manager (and perhaps a few other managers), where people act like they're all here to solve a problem and get things back on track, with a heavy undercurrent that it's your fault.

Standups, while not part of the manifesto, corrupt similarly. Instead of "here's what I worked on yesterday, here's how it went, here's what I'll work on today", they become a daily application of pressure and reminder of deadlines. It appeals immensely to someone who would like micromanage a developer. They're meant to keep communication open in complicated projects where it can be difficult to make estimates under uncertainty (you know, a software project). But they often end up with one person trying to explain complexity to an exasperated (and perhaps manipulative) person who really just wants to apply (often artificial) deadline pressure.

Unfortunately, "agile", for all its promise, turned out to be amazingly fertile ground for manipulators. I think this, more than anything else, is what has so badly damaged "agile."

Waterfall seems like a discredited old system, and I don't love it either, but it has a huge advantage for developers. It requires people who will insist on and enforce deadlines to state upfront, in considerable detail, exactly what they want.

Re:Ask HN: How to manage developers who aren't very good? by exelius on Friday February 06, 2015 @02:40PM (#9011081)
> Waterfall seems like a discredited old system, and I don't love it either, but it has a huge advantage for developers. It requires people who will insist on and enforce deadlines to state upfront, in considerable detail, exactly what they want.

Except it never really worked that way, which was the entire problem with waterfall. Waterfall works best in a static environment with guaranteed funding because it doesn't react well to shifting priorities. In reality, requirements change and budgets get cut, which sets off a chain reaction of change management activity in a waterfall model. Agile is so much better -- you reassess requirement priorities every few weeks and that dictates what you work on over the next few weeks. In very few situations under which software is developed today is it even possible to state upfront what you need with any certainty. Waterfall assumes that requirements gathering and development take place serially, whereas agile recognizes the reality that they are more or less concurrent.

Waterfall still has its place - if I were developing a nuclear reactor or an airplane, waterfall is still the way to go. But for projects where 100% requirements completeness is unnecessary (and let's be real, nobody runs a full regression suite after every sprint), Agile will get you a better product faster and cheaper. Everything you said is true -- agile is a fertile ground for manipulators, but so was waterfall.

The manipulation is a byproduct of any reasonably large organizational structure, and if you want to stop it, it's got to be a cultural thing. Bad actors will exist under any development methodology, it's up to the leader of the engineering organization to stand up and refuse to allow his/her people to be abused.

Re:Ask HN: How to manage developers who aren't very good? by geebee on Friday February 06, 2015 @03:21PM (#9011289)
Interesting answer, but I think you're refuting waterfall in general rather than the narrow point I was making about it. Overall I agree with you, waterfall is worse than agile. But to me, this is like saying that fighting and communicating only through lawyers is worse than getting together with trust and working out an agreement. Right, totally, agreed. But if the other side lawyers up and prepares for the "let's find who to blame!" that they suspect will happen in a couple of months, and you go in all ready to collaborate and work together, you're going to get steamrolled!
Re:Ask HN: How to manage developers who aren't very good? by exelius on Monday February 09, 2015 @04:03PM (#9023705)
Right, but I was saying that the "biggest benefit" of waterfall was never actually one to begin with -- Agile was built around the assumption that requirements will constantly change because that's what happens in the real world. If requirements accuracy is the most important thing in your project, you deal with the change management implications. Otherwise, you go Agile and accept that you may not be able to guarantee a specific feature by a specific date/release.

It's a two way street though: the business folks need to understand that they're giving up some control and predictability in exchange for lower overhead and faster delivery. This is the hardest part of Agile IMO since most business / product folks don't like not being in control. Agile gives engineering more autonomy, but only if the business respects that autonomy. If the business starts dictating too many processes/priorities, the whole thing crumbles into a waterfall mess (even if you call it "Agile").

Re:Ask HN: How to manage developers who aren't very good? by rbrcurtis on Friday February 06, 2015 @04:01PM (#9011523)
Dude, you're a programmer. If you're in an organization where this is the norm, go find another job with a more enjoyable environment. There's a million out there for you.