Hacker News new | ask | show | jobs
by qthrowayq0909 1063 days ago
This is a perfectly sane, at least from business point of view, argument. It is being treated with a tantrum of downvotes. That in turns shows a lot about the state of affairs in a certain bunch of programmers. Most importantly that they put their own narrowly defined version of excellence above the importance of maintainability and thus tangible business value.

To put it bluntly. I'd hire the downvoted guy/gal in a heartbeat but would shy away from the downvoters. Why? Because I need to deliver business value which pays for our salaries. And I need to do it today and tomorrow and in years from now.

This is a message to normal people that understand that coding is a _social_ activity that has an audience in the present (your coworkers) and in the future (poor maintainers). Not only you're not alone in this but you are the majority.

5 comments

I think downvoting that comment is stupid, but I also think the comment is wrong: Mastery does not imply incomprehensibility, but rather the opposite.
I have several decades of experience reading and using other people's code. When code is written at "master" level, that excludes most of the people who could generate business/social value out of using or improving it.

I appreciate the aesthetic beauty of great code. But it has a cost compared to average code.

This is doubly true for a language like Python, which occupies a niche of "lingua franca between users with wildly different backgrounds bringing value to the table by being able to use and change the same software".

What you are talking about is not code that is written at a "master" level, what you are talking about is code that is clever. An important part of mastery is understanding what kind of code to write, when. Mastery means writing code that is easy for others to read and modify, when writing code in a professional setting. Mastery can also be writing clever code with "aesthetic beauty", in a different setting like an academic or personal project. But people who write clever inaccessible code while working professionally with a team have a few more steps to walk toward mastery.
Mastery of Python, in my opinion, is mastering "Pythonic" code, which incorporates readability as a fundamental tenet. In addition, the gigantic universe of not only the standard library but also numerous external libraries and tools, of which a master can leverage to undertake tasks both rapidly and efficiently.

So, to me, a Python zen master would not write incomprehensible code, but instead write readable code very quickly that effectively and efficiently solved the problem they are facing due to their comfort working inside the Python ecosystem.

My personal goal is to get as close to Norvig as possible for general Python code: https://github.com/norvig/pytudes/blob/main/ipynb/Advent%20o...

(short but exact comments, inline testing, good function and variable naming, overall good use but not overuse of the standard library, functions very rarely more than a dozen lines, generally understandable code)

> I think downvoting that comment is stupid,

Why?

Not OP. Nothing in the original comment was technically wrong. It does feel misguided and perhaps a little naive. But it seems more like an opportunity for a real conversation to both understand why they think that way and as a way to educate why there might be a better way.

I reserve downvotes for posts that are flagrant, factually wrong, or are otherwise against the rules. Flagging might also be used. But using downvotes to have a voice not be heard feels wrong, too. What was said doesn't hurt anyone, even if a vast majority of people around here might disagree with it. Downvoting because you disagree feels wrong.

Downvoting to indicate disagreement is how HN has always worked: https://news.ycombinator.com/item?id=16131314
This might come as a shock, but pg has been wrong about lots of stuff, including this. Downvotes should be used for bad comments, not comments that you disagree with. These aren't the same thing. It's fine that downvotes and upvotes aren't symmetrical in this sense. They aren't anyway - highly upvoted comments don't get bolded the way that downvoted comments get grayed.
> Downvotes should be used for bad comments, not comments that you disagree with.

I disagree with this. But I can't downvote this comment because it is a reply to my comment. This restriction specifically exists because downvoting to disagree is how HN has always worked.

> highly upvoted comments don't get bolded the way that downvoted comments get grayed.

Highly upvoted comments float to the top and therefore have more visibility.

Bad comments should be flagged.
It is technically and factually wrong.

Advanced != incomprehensible. Incomprehensible isn’t a feature of advanced either, you can be a novice and still write incomprehensible Python code.

Because downvotes aren't for disagreement. There is nothing wrong with the comment, it isn't aggressive or trolling or in bad faith or anything. It's just reasonable to disagree with it.
> Because downvotes aren't for disagreement.

On Reddit, not HN: https://news.ycombinator.com/item?id=16131314

I'm not going to downvote you just because I disagree with you, I'm going to write you a comment about what I think instead :)

I don't consider that appeal to authority canonical. My opinion is that downvotes should be used for bad comments, not for comments you disagree with. These aren't the same thing.

> I'm not going to downvote you

You can't downvote me because my comment was in response to yours. It's not an appeal to authority. It's a statement of fact as also seen in the implementation itself.

> This is a perfectly sane, at least from business point of view,

It's perfectly sane to actively avoid trying to understand the your tools of your trade better?

I too would have disagreed 10 years ago. 15 years ago I may also have downvoted.

Now I recognise that we should, unless there's a very good reason (not for style), keep our code stupid-simple.

And doing that is harder than making it clever.

It was a bit dumb to make a definitive statement about what Python is used for, rather than just saying it's fairly often used for that.
Thanks, but I have a job. :)