Likewise, offer your opinion as little as possible unless it's positive or you've been explicitly asked for criticism. And even then describe how the thing could be improved, not how it sucked or how much.
Likewise, offer your opinion as little as possible unless it's positive or you've been explicitly asked for criticism. And even then describe how the thing could be improved, not how it sucked or how much.
Being able to critique things is really important. It's essential for identifying problems, developing good ideas, and improving systems and products and well as people's personal development.
You say to explain how things could be improved rather than talk about the problems with them. The problem with that approach is it's usually important to first identify exactly what the problem is, before coming up with ideas for how to fix it. Sometimes it's not obvious how to improve things. It may take days or weeks to get to that point.
[1] https://intenseminimalism.com/2015/pixars-plussing-technique...
If there's a problem that can't be solved for a while there's world of difference between saying "Your code is wrong. This is a problem we can't solve for weeks." and "You've made a great start and this code is going to be really useful as a foundation to build on, but there's a new challenge we didn't foresee so we'll need to make a couple of changes when we have more data."
I've never met a technical problem that couldn't be solved better with good people skills. Knowing how to get good work from people is key for any tech business.
To repeat the point of the comment you replied to, it can be much more effective to first work on identifying exactly what the problem is, and if you always expect you can immediately identify solutions it'll hamper your ability to address tough problems.
"It's been difficult to add new features to the code base because it's grown so much and I think we need to consider a serious refactoring project. The best approach in my opinion is to take the lessons of the past and start over for X and Y reasons."
Will everyone agree with you? Maybe not. Will it work? Maybe it won't. But that's also true if you say "your code sucks," and you won't have to be bogged down in savage internecine code warfare.
Plenty of the things we do that are good for us would turn out poorly for us if everyone did them. Plenty of the things we do that are good for the groups we belong to would turn out poorly if everyone in the group did them.
It's hard to time it just right but when somebody does, on their own, something that they previously would not or could not, praise will work wonders.
1) Animosity (the person dislikes you)
2) A broad description of a mistake
3) Different taste
Only (2) can be somewhat useful, although (3) is permissible sometimes I guess. Often the person already knows he might be doing something wrong or not good enough; simply pointing it out leads nowhere, knowing what not to do still leaves unancessibly vast possibilities.
It seems much better to directly (and probably privately) suggest alternatives, offer solutions, etc.
I like this opinion piece about this:
http://fanaro.com.br/negative-language-why-you-should-avoid-...
Diverging should be discussed under some circumstances though, specially if you clarify your rationale (or when discussing unconsequential things like foods and such).
Overall pointing out solutions and affirming good values, qualities, outcomes if much more useful (and has the bonus of being charitable, even affectionate).
There is absolutely such a thing as knowing how not to be asshole about negative opinion, but never saying it in the long term harms projects.