Live data from Hacker News

How to Pick Your Battles on a Software Team

spin.atomicobject.com

51–60 of 141 posts

Re: How to Pick Your Battles on a Software Team

#51

Earlier quoted context omitted.

Even a great team can be dysfunctional. It's crazy to pretend like a software team will not have disagreements from time-to-time.

> Even a great team can be dysfunctional. By definition it can't. > It's crazy to pretend like a software team will not have disagreements from time-to-time. Sure you can have disagreements. So then you all present your arguments figure out which way forward is the best with as little ego thrown in as possible and move on. Right now I'm involved on the side with a project where a ton of decisions have already made. I…

Completely different context, but still a creative team, look at musical groups like the Ramones, Fleetwood Mac, many others who could hardly stand to be in the same room together offstage but still managed to make some great music. Dysfunctional groups can still do great things.

Re: How to Pick Your Battles on a Software Team

#52
post #46

Earlier quoted context omitted.

> Even a great team can be dysfunctional. By definition it can't. > It's crazy to pretend like a software team will not have disagreements from time-to-time. Sure you can have disagreements. So then you all present your arguments figure out which way forward is the best with as little ego thrown in as possible and move on. Right now I'm involved on the side with a project where a ton of decisions have already made. I…

> So then you all present your arguments figure out which way forward is the best with as little ego thrown in as possible and move on. If you're dealing with people, then you are going to have problems with ego. Sure, it'd be great if everyone could lay down rational arguments, then come to a rational decision and rationally agree to move forward. It'd also be great if the unicorn færies showed up to take us all to…

There are team players and there are solists, it's rare to find people that can be both.

If you feel that 'software is art', that 'you are going to have problems with ego' then probably your view is that of the solist, and likely not of someone who would be happy in a team unless they get to call the shots and impose their will on others.

Good teams simply follow the leader and take their paycheck. Great teams cause the team members to grow and will produce work that none of the members individually could aspire to. Great teams know the strengths and the weaknesses of the members, and they themselves know these too.

If you want to phrase working together in terms of 'battles' then you've already lost.

And if you feel that if there is no mathematically correct answer about something, just aestetics or simply choice and the end result is less important than whether or not it was your way or the other persons way then I again conclude that you are most likely not a team player.

And there is nothing bad in that, there is definitely room for solists. But if you are part of a team then you have to play by team rules, otherwise it becomes a war zone with bad results for the project and the health and well-being of the rest of the team.

Nobody needs to 'swallow their ego' in order to present an option, the worst that can happen is that a particular road isn't taken, as long as you don't identify with the road as yours you'll do just fine. But as soon as you see the roads taken as validation of your ego then you are on very dangerous ground.

Re: How to Pick Your Battles on a Software Team

#53
Most of the tensions described in the article are things that I believe can be modeled in terms of debts. It depends on which kinds of debt your team willingly takes on. Most teams take on at least one or two types routinely, no matter how religiously they avoid the others:

Technical Debt:

- build it fast by any means necessary

- use whatever pre-packaged library exists, and duct tape it into your existing system.

Analytics Debt:

- build it without any prior UX experimentation on the design.

- build it without any way to measure key interactions

- have no data about the status quo before you build something new, this will insure that your new feature is a success because the before numbers are unknown.

Marketing Debt:

- build it without knowing whether users want it (or what they want)

- build it without talking to users about their problems.

Spec Debt:

- build it without creating a detailed spec, leaving many important decisions up to the developer, who may not know the full reasoning for what she is building.

- have a print designer do the UX, so that many subtle areas of interaction, animation, and behavior are unspecified.

Mental Model Debt:

- build it without having a hypothesis about why it is helpful and what might need to be changed next. This helps your engineers make choices that speed up this feature but add significant complexity for the next step.

- do not worry about the statistical significance of numbers. Just focus on the direction the numbers are going and be sure your CEO knows how smart you are.

Credibility Debt:

- Don't acknowledge things that have gone wrong (with planning or execution) before. The pretense of infallibility is helpful to creating resentment and mistrust among different divisions of your team.

Kool Aid Debt:

- Whatever you do, be sure it is "agile" or "scrum" because then you have done everything right and you didn't need to worry about any of the above forms of debt.

Re: How to Pick Your Battles on a Software Team

#54

Earlier quoted context omitted.

> Even a great team can be dysfunctional. By definition it can't. > It's crazy to pretend like a software team will not have disagreements from time-to-time. Sure you can have disagreements. So then you all present your arguments figure out which way forward is the best with as little ego thrown in as possible and move on. Right now I'm involved on the side with a project where a ton of decisions have already made. I…

> By definition it can't. Please, we should not be so dismissive. "Great team" commonly refers to output, not internal organization. (At least if we use a charitable interpretation. And if we don't, we're in the uncomfortable position of demoting many teams from "great" once we learn of their internal dynamics.) Many teams even often seem unaware of their dysfunctions. Even if we don't use the charitable interpretati…

> "Great team" commonly refers to output, not internal organization.

I'd love to see an example of a team that is internally dysfunctional but that still manages to produce. I've been in this industry for 3 decades and yet I've never seen such a beast, on the other hand - and in the spirit of the argument - I'd love to see examples of this.

> Many teams even often seem unaware of their dysfunctions.

A dysfunctional team means: a team that does not perform (or at least, that's my reading of the word, it does not 'function').

To have some issues that could be improved on does not immediately qualify a team as dysfunctional, that's a pretty heavy term.

> Even if we don't use the charitable interpretation, then perhaps a "great team" would act on the assumption that it is almost certainly dysfunctional, as part of ongoing processes of self-improvement.

Yes, great teams tend to strive to become better (and they usually do). They also tend to leave companies as a unit and move on if they feel they are not appreciated, so for companies there is actually some risk to having a 'great' team, great teams tend to negotiate as one and team members will look out for each others interests.

> After all, once you think you're perfect, you're in trouble.

Agreed.

> And teams aren't "closed". Outsiders (like that contractor or executive from another department) interact with the team and are momentarily part of it. Interactions with them may be dysfunctional, due to culture clashes, inevitable bumps as people learn to cooperate, etc.

That's not how I would define a team but you are welcome to your interpretation and within that interpretation I'd agree with you.

Re: How to Pick Your Battles on a Software Team

#55

I'm in the middle of this problem and not sure If I'm doing something wrong. In the next month we are going to launch a new product, I'm full stack dev and I'm bit frustrated with my colleagues. I did all the devops and all developers(5) has his vagrant per branch, each vagrant box is deployed in one box so they can show to another colleague without trouble (I built a server with the subdomain with the $TASK-ID.subdo…

You can fix it but it will take time and you will need to be very patient. (1) let go of your frustration, it is not helping you, if you can't GOTO 3. (2) pick the best of your colleagues and try to lift him/her up to your level with arguments , not with force (this will take time and oceans of patience) (3) if that does not work, start looking for other employment, no matter how much you like your boss (4) if it doe…

I think it's not clear if he is the project manager or not. If he has a project manager, then we have to ask why he isn't helping focus the team. Or are they are product a team that is expected to organize themselves.

I agree strongly with #1.

#2 I think it might be good to approach it by asking more questions. If people say it is hard, ask how can we achieve the goal of writing more tests without it being a burden? Maybe OP is perceived as pushy if he's not the manager, or he doesn't allow for enough input on how the process evolves if he is the manager.

Re: How to Pick Your Battles on a Software Team

#56
post #49

How about some good old consensus? Battles are not the way to go, regardless of the stakes. If you feel the direction a project is going in is not to your liking you can always quit. As soon as you start phrasing things in terms of battles, winning, losing and so on you're going to end up very frustrated and potentially toxic to the rest of the team. A good team member knows how to make their objections heard without…

> How about some good old consensus? How about it? What do you do when there is no consensus, because people genuinely, honestly disagree? Sometimes consensus is impossible.

Arbitrage.

And then you move on.

Re: How to Pick Your Battles on a Software Team

#57

How about some good old consensus? Battles are not the way to go, regardless of the stakes. If you feel the direction a project is going in is not to your liking you can always quit. As soon as you start phrasing things in terms of battles, winning, losing and so on you're going to end up very frustrated and potentially toxic to the rest of the team. A good team member knows how to make their objections heard without…

>How about some good old consensus?

I have never myself seen true consensus work anywhere. It ends with a) one person caving and being resentful, or b) abandoning consensus because everyone realized for important things that it took too long or it never got done.

Even on small teams, it's been a goal, but often we have to say "ok, well you're outnumbered, so unfortunately we aren't taking that direction."

Re: How to Pick Your Battles on a Software Team

#59
post #18

Earlier quoted context omitted.

> I agree with the author's advice, but a part of me can't help but feel that "picking your battles" is a sign of a poorly functional team. This is true, but practical. Most people will never work on a functional team.

Applying this advice could quickly turn a functional team into a non-functional one.

Really? It seems like picking your battles can only help make a non-functional team a little more functional.

Re: How to Pick Your Battles on a Software Team

#60
Your experience/talent should dictate how much you press on an issue, and you should do it professionally regardless (e.g. no yelling, and listen to people; calmly state your point of view).

Over the years I have encountered people arguing passionately about things that, as it turns out, they did not fully understand. It is fine to not understand things but if you’re new to a language/team, you should be saying things like “shouldn’t we do X?” or “I read on [site] that X is better”, and not act like you have found the One True Way to do everything.

Ultimately, you need to communicate some experience/example showing why it is important to do X, or you must be in a position of authority where you can say that you choose X because there is no clear decision among the alternatives.

Post reply on HN