Live data from Hacker News

How to Pick Your Battles on a Software Team

spin.atomicobject.com

81–90 of 141 posts

Re: How to Pick Your Battles on a Software Team

#81

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…

I don't think you're going to get a satisfactory answer from HN but I'll try.

It's probably easiest to start with your manager and talk over these problems. Consider how your manager works:

Is he a data kind of guy? Show him how writing tests reduces bugs in the future and speeds development time. How will your changes allow you to ship more features or fix more bugs in the future?

Is he trying to make everybody on the team happy? Ok, see if you can get a few of the more senior people together on the team and talk over the problem in meeting and get everyone to agree on an incremental plan moving forward.

Is your team the kind that tends to hang out together after work? Go out with them once a week, see if you can bring this up in the group casually.

Maybe your boss thinks everything is fine and will only listen if you make more noise? Go into his office and be more direct about the problems you're having.

This also applies to the rest of the team. Consider that they may not see the problems with the project in the same way as you. That's not a bad or good thing, it's just that all people are different. You sound like you're frustrated because it's clear from the facts that there are not enough tests and your team's processes are not being followed. The rest of the team might think that "good enough" is all that is required, and adding more work (even if it reduces workload down the road) isn't a "nice" thing to do.

> I rarely learn from them and they don't want to do things better, they only want to work to raise money.

This is an opportunity for you to learn from them! It's just in areas that you may not be thinking about.

Re: How to Pick Your Battles on a Software Team

#82
There's nothing caustic about self-censoring when your view isn't worth the headaches it might give others. In terms of development, you have to respect the views of your teammates and the effect of your position on overall workflow.

Edit: for clarity, there's basically one guy here who's made it some sort of vendetta to object to the entire concept of a "battle," as though using that word for a disagreement is the issue. There's no such thing as a "perfect" team, but it seems his idea of that involves consensus.

Consensus is an abstract, reality is defined by multiple viewpoints.

Re: How to Pick Your Battles on a Software Team

#83

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…

Your "(1)" is, by the very definition of the concept, "picking your battles." This is because you aren't pushing issues. The whole article is about making a way more important, but also recognizing that valid concerns deserve to be addressed. Balance.

I'm not going to pick any battle. Because I don't believe that is the way forward. I'll inform and I'll produce but I will not confront or invest my ego into which path is chosen. And in the position that I'm in right now I will simply produce.

That's because this is the best way to contribute to a team effort that is already underway. If and when my expertise is required for something I'm quite sure the other team members will know how to reach me.

Re: How to Pick Your Battles on a Software Team

#84
post #59

Earlier quoted context omitted.

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

No, it will still be confrontational and that's not how you approach these things. If you have issues with how the team makes the decisions you have to tackle the problem at the root, rather than to make each and every decision a point of conflict.

[deleted]

Re: How to Pick Your Battles on a Software Team

#85
The hardest battles I've had are dealing with legacy code. The majority of teams want to improve the overall code base and correct past mistakes, but you can never fix everything right now. Deciding when to let the nasty thing lie and when to pay the cost of fixing something is a tough decision to make. Fixing costs are large and immediate but the cost of leaving a problem area is spread unknown across the future. Couple that with fixes that don't actually provide system value except for standardization and you can have all sorts of fun arguments.

Re: How to Pick Your Battles on a Software Team

#86
At my current job we have a prima-donna software engineer who wins 90%+ of all battles simply because he throws a giant tantrum whenever a disagreement comes up. People (including the boss) usually just give in to shut him up.

It's to the point people won't critique his work because he gets defensive and throws a giant hissy-fit if you suggest his explosion-at-the-pattern-factory nightmare of a module isn't just the most awesome piece of code ever created.

Re: How to Pick Your Battles on a Software Team

#87
This may be redundant with what others have said at this point, but I think this article is wrong-headed: it perpetuates the idea that you will/should have winners and losers.

The biggest barrier I've found to helping improve an idea is that input is perceived as an attack on the author. And, far too often, engineers will say something like "that approach isn't the right one, this one is", effectively substituting their own solution wholesale for the original.

If a team is ever going to be greater than the sum of its members, it must produce output that is better than any single member could produce on their own. That only happens when you move away from "your approach/my approach" to something like "here's a specific concern I have with the existing approach - how would folks suggest we address it? (here's one possibility)"

Re: How to Pick Your Battles on a Software Team

#88

Earlier quoted context omitted.

> How about some good old consensus? My concern with consensus, is that most teams are comprised of a single or two senior people supported with a larger number of less senior people. If consensus is the protocol-de-jour, your service/product/offering suffers in the mid-to-long term (as well as alienation of the senior people whom you want driving).

> If consensus is the protocol-du-jour, your service/product/offering suffers in the mid-to-long term (as well as alienation of the senior people whom you want driving). I don't believe that is true. Junior people are only junior people if you treat them like that. If you are the lead dev and you work together with people junior to you (in experience, possibly not in years) then the fastest way to get them to grow is…

I'm glad you bring up these points. It boils down to viewing conflict resolution as being (often) a temporary matter of information sharing with rationality as the ultimate goal.

People who enjoy having authority for its own sake are usually not good at this, since they think they have earned the right to be authoritative, and resist the dialog necessary to achieve true consensus.

Re: How to Pick Your Battles on a Software Team

#89

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…

>If you feel the direction a project is going in is not to your liking you can always quit.

Sorry but that is terrible advice. Most people would be out of a job with that kind of attitude.

>But leave the war and associated terminology and attitude out of it.

Nobody brought it in in the first place. The terminology was in quotes, to explicitly indicate that its not used in the dictionary meaning of the term.

> A good team member knows how to make their objections heard without engaging in confrontational tactics and will be able to present their reasoning in non-confrontational fact driven terms. And is able to accept that they do not always get what they want.

Sure, that looks excellent on paper, but I have found that it doesn't work with actual humans who are actually very _human_ with all of the associated (incl. negative) traits that humans have in varying amounts including pride, pettiness, jealousy, egotism and others. It has very hard to pickup on those because not everyone will display these traits overtly. They will mask it under other rationalizations or explanations or "objective arguments", or what have you. Many people are just sensitive like that. You can try telling them that their work needs fixing in the most gentle, objective way possible, but all they will hear is "XYZ thinks I suck".

>If that happens too frequently then maybe ask to be transfered to another team or maybe leave for another company.

Wow. Much of your comment reads like this to me - "This what a good team looks like, if you aren't on one, find another team or quit your job"

Re: How to Pick Your Battles on a Software Team

#90
post #85

The hardest battles I've had are dealing with legacy code. The majority of teams want to improve the overall code base and correct past mistakes, but you can never fix everything right now. Deciding when to let the nasty thing lie and when to pay the cost of fixing something is a tough decision to make. Fixing costs are large and immediate but the cost of leaving a problem area is spread unknown across the future. Co…

This is something you have to decide organizationally. For our part as a frontend team, we've decided when we implement a new feature, it won't be in our old framework. Ever. We've built a way to integrate React into our old world areas of our code. Furthermore, the portion of the old world code that this new React code interacts with will also be converted into React. This way, our code has a sort of 100%+1% movement toward the new framework.

The point is, you need to figure this out as a group and then just implement it as a rule. It can't happen during the code review.

Post reply on HN