Live data from Hacker News

Being Slow to Criticise

solipsys.co.uk

71–80 of 103 posts

Re: Being Slow to Criticise

#71
post #58

> Additionally, there might be time pressures, political pressures, engineering constraints, access problems, and more. All of those (except possibly "engineering constraints") are merely excuses for why it ended up being garbage, not reasons why it's not garbage. This conversation goes both ways. When someone calls my work garbage, I can sit there and try to come up with excuses, or I can say "yes it is!" and we can…

This is really about maturity I think? With children we do something like:

thoughts > filter > communication > thoughts

With grown ups it should work like:

thoughts > communication > filter > thoughts

You want the full spectrum of gradients of terribility. If I wrote a "steaming pile of crap" I don't want to hear "it is not very good". "not very good" is reserved for things that are "not very good".

food half frozen != under cooked

The alternative is teaching people not to give you feedback because you are emotional unstable and might take it the wrong way.

Just because someone is a dick doesn't mean they are wrong. You have to adjust for their lack of social skills. You want to own the filter, don't require others to maintain it for you. That is a terrible idea! To them the trash talk is treasure.

Re: Being Slow to Criticise

#72
post #58

> Additionally, there might be time pressures, political pressures, engineering constraints, access problems, and more. All of those (except possibly "engineering constraints") are merely excuses for why it ended up being garbage, not reasons why it's not garbage. This conversation goes both ways. When someone calls my work garbage, I can sit there and try to come up with excuses, or I can say "yes it is!" and we can…

You turn this into a question about "having thick skin" or "making excuses". But the article is not at all about how the receiver is supposed the take the criticism, the point is that shallow dismissals (like "garbage") typically indicate the critic does not understand the full picture.

Re: Being Slow to Criticise

#73

I agree with this but I have to admit it is hard as hell to practice. If you can become slow to criticize though, when you do it people tend to pay more attention, a great upside to the effort required.

> I agree with this but I have to admit it is hard as hell to practice.

You may want to self-analyze your need to criticize. What is criticizing satisfying in you? It must be something otherwise you wouldn't have the urge to do it.

It varies from person to person, but for a lot of academic (and perhaps tech) folks, there is a strong history in their training to be correct (in both research and classes) - therefore they are hyperaware of things that seem off.

In the work environment, though, the focus is on being useful, which has overlap with correctness, but the two occasionally differ. A lot of times such people tend to be correct but not useful. Pointing out a flaw in something where there would be no significant impact were the flaw absent is the opposite of being useful.

Unfortunately, people in the audience often get fooled by this and give the comment more weight than it deserves.

Re: Being Slow to Criticise

#74
post #42

Earlier quoted context omitted.

>If anyone is an environment that cynism is rewarded, run from there. There are better places to be. This is why I quit Twitter.

Quit the app? (Or quit the company as an employee?) Curious about Mastodon, if that's possibly a different experience

Quit the app as a user. It wasn't a platform thing, in terms of technical aspects although there is probably something to be said about how it shapes community, but it was the community itself.

Re: Being Slow to Criticise

#75
post #58

> Additionally, there might be time pressures, political pressures, engineering constraints, access problems, and more. All of those (except possibly "engineering constraints") are merely excuses for why it ended up being garbage, not reasons why it's not garbage. This conversation goes both ways. When someone calls my work garbage, I can sit there and try to come up with excuses, or I can say "yes it is!" and we can…

> When someone calls my work garbage, I can sit there and try to come up with excuses, or I can say "yes it is!" and we can move on towards a solution.

When someone calls my work garbage, but isn't willing to sit and discuss what is garbage about it, nor willing to discuss the cost of fixing it, I will ignore him/her.

Talk is cheap. It's trivial for someone to come up with a surface reason to complain. It's harder to take all factors into account.

I was once doing a project where I was solving something in a brute force, inefficient way, but it was simple to code and we had the computer time available. One developer kept loudly complaining in meetings about how crappy and dumb my method was. I finally set up a meeting with him and asked him how we would do it. His solution was far more efficient, but would also take up to a week to implement. I asked "Given our deadline, do you think it is worth losing a week of computer time to implement your method?" He thought about it and said "No, my method won't make up for the time lost."

If you're not willing to sit in the trenches with me, your feedback will have lower weight. I'm in the business of solving problems, not in the business of perfection. At some level, my software is always going to be garbage. You want it not to be? You better have a stake in the outcome, then.

Re: Being Slow to Criticise

#76

I see Colin is atoning and reforming from even 1 day ago https://news.ycombinator.com/item?id=23125032 This is good

This comment was flagged dead, and I have vouched for it. Please don't downvote it ... it clearly shows an underlying misunderstanding, and as such deserves to be answered. My comment that you reference was an attempt to find the merit in the idea that I couldn't see, but I assumed would be there because I was assuming the proposer thought it was a good one. I was starting from a position of "Well, this person thinks…

I liked the reply you posted, I'd be happy for getting such feedback / replies. And I think your reply can be edited a little bit, to start in a little bit more positive tone,

by changing from this:

> There are many, many problems with the idea, ...

to instead:

> I can see problems with the idea, ...

Re: Being Slow to Criticise

#77
post #71
post #58

> Additionally, there might be time pressures, political pressures, engineering constraints, access problems, and more. All of those (except possibly "engineering constraints") are merely excuses for why it ended up being garbage, not reasons why it's not garbage. This conversation goes both ways. When someone calls my work garbage, I can sit there and try to come up with excuses, or I can say "yes it is!" and we can…

This is really about maturity I think? With children we do something like: thoughts > filter > communication > thoughts With grown ups it should work like: thoughts > communication > filter > thoughts You want the full spectrum of gradients of terribility. If I wrote a "steaming pile of crap" I don't want to hear "it is not very good". "not very good" is reserved for things that are "not very good". food half frozen…

> If I wrote a "steaming pile of crap" I don't want to hear "it is not very good".

I don't see how either statement is of any use for you?

Re: Being Slow to Criticise

#78
post #63

I find it very very true, however. The time necessary to understand why the fence was put up, it is usually greater than the time necessary to push down the fence, test the system, and put back up the fence if necessary.

Except that you don't always know all the ways the system needs to be tested. I've come across code that was broken, seriously broken, multiple thousands of pounds broken, because someone replaced apparently pointless code with something simpler, tested every case they thought of, and deployed it. Are your tests really complete? Have you tested everything ? Perhaps we simply work in different fields, and there are th…

Indeed it is a fine balance.

However, what I am trying to convey is that the burder of explaining and testing the code, and why the code is needed, should be on who put it out first.

If we are not brave and decisive when we decide to cut code, the complexity of the codebase will just explode in no time.

It is already extremely difficult to simplify and remove code, if the person doing this job is also the one that need to figure out, from scratch without documentation, why the code was put there in the first place, the simplification is never going to happen.

Re: Being Slow to Criticise

#79
post #78

Earlier quoted context omitted.

Except that you don't always know all the ways the system needs to be tested. I've come across code that was broken, seriously broken, multiple thousands of pounds broken, because someone replaced apparently pointless code with something simpler, tested every case they thought of, and deployed it. Are your tests really complete? Have you tested everything ? Perhaps we simply work in different fields, and there are th…

Indeed it is a fine balance. However, what I am trying to convey is that the burder of explaining and testing the code, and why the code is needed, should be on who put it out first. If we are not brave and decisive when we decide to cut code, the complexity of the codebase will just explode in no time. It is already extremely difficult to simplify and remove code, if the person doing this job is also the one that ne…

> ... the burden of explaining and testing the code, and why the code is needed, should be on who put it out first.

Yes. But what happens when that code is there, live, working, and the originator is no longer available, and you need to enhance it. You come across a complex section and you can't really see why it's written like that. It feels like you're suggesting that one should just replace it with the simpler version you think will do the job just as well, and see what breaks.

Due to my usual context, that approach fills me with horror. I've seen it go wrong too many times ever to be comfortable with it. Admittedly, if you're producing simple web sites then usually it won't be a problem, but when there are potentially millions of dollars of revenue at risk when a condition happens that you didn't anticipate and which was part of the reason the original code was so hairy, you become a little more wary of the "move fast and break things, then fix them" approach.

> If we are not brave and decisive when we decide to cut code, the complexity of the codebase will just explode in no time.

And if you are brave and decisive and cut code, and it turns out that the complexity was there for a reason you didn't understand, then that can be a company-terminating move.

Again, our contexts are different, and yes, I do understand the need for controlling complexity in code, and simplifying where possible.

Properly understanding and analysing the risks is something I rarely see.

I suspect we'd actually agree in a given context, I'm just horrified to watch people unthinkingly advocating the approach in places where it doesn't apply. I'm not claiming you're one of them, quite possibly you'd do the risk analysis and understand the context, but I've seen it too often to take for granted that otherwise clever people won't do it.

"We'll just re-write it, it won't take long, how hard could it be?"

Re: Being Slow to Criticise

#80
post #78

Earlier quoted context omitted.

Indeed it is a fine balance. However, what I am trying to convey is that the burder of explaining and testing the code, and why the code is needed, should be on who put it out first. If we are not brave and decisive when we decide to cut code, the complexity of the codebase will just explode in no time. It is already extremely difficult to simplify and remove code, if the person doing this job is also the one that ne…

> ... the burden of explaining and testing the code, and why the code is needed, should be on who put it out first. Yes. But what happens when that code is there, live, working, and the originator is no longer available, and you need to enhance it. You come across a complex section and you can't really see why it's written like that. It feels like you're suggesting that one should just replace it with the simpler ver…

I do actually work on quite low level code. My mistakes are neither millions of euros nor company ending scenario. Just a lot of complaints.

I am not advocating for move early and break things fast. Not at all.

But in my environment I find the need to find a reasonable compromise.

Compromise that can also be having a set of test suites that allow to test things and rollback.

I am the one advocating for "clean code is the one you never have to look at, because it works, not the one that looks nice in the editor".

I understand your point, I understand that we work in different environments, but I also think that a codebase is a living creature that, if left unchecked, will just explode in complexity.

In some environment make sense to tame that complexity, in some other make sense to reduce it!

Post reply on HN