Live data from Hacker News

What does it take to be a good programmer?

qristin.wordpress.com

71–80 of 107 posts

Re: What does it take to be a good programmer?

#71
post #60

Earlier quoted context omitted.

This is our stance too. Even within the "batteries included" aspects of the .NET6 framework, we insist on doing certain things our way. Some of the biggest examples being AspNetCore logging and the JSON-style configuration abstractions. We completely rip this out and do it in code-time our way. I cannot account for the exact number of hours we wasted trying to do [x] the 'official' way only to be burned at deployment…

Reinventing the wheel can also lead to difficult-to-find bugs that explode years down the road. Yeah, you could reimplement the parts of zlib you need in a couple hours, but just use zlib, even if it's a core part of your functionality. However, as an industry we don't have a great way to know what is or isn't reliable. I've started publishing component datasheets with my utility libraries because that conveys the so…

> However, as an industry we don't have a great way to know what is or isn't reliable.

That's the rub.

Your zlib example is one of the "Platonic Ideal of Quality Open Source" libraries. Using that is a no-brainer.

Any suggestion of rating/licensing/qualifying open-source projects, is met with ... resistance ...

Re: What does it take to be a good programmer?

#72
It's an open secret that there's a bimodal distribution of raw capacity or talent for programming. (E.g. https://www.researchgate.net/publication/250800680_The_camel... )

Anyone who can solve a Sudoku puzzle can learn to program a computer, and probably should, just like anybody can learn to read and write and do basic math (in which I include algebra, trig, calculus, etc.) However, there's a subset of people who are really good at programming, far beyond the level of the normal folk in the first group. (I say "normal" because the first group outnumbers the second by a large ratio, maybe 20:1 or higher.)

The only prerequisite for being a good programmer is, in a word, Logic. If you're good at logic you'll be good at programming, and if you're not, you won't. (It also helps to have a deep passion for it.)

In re: diversity, I assume that the distribution of normals:programmers is fairly constant across human populations. Yet, there's no denying cultural/gender/race aspects affect who actually becomes working programmers. (I don't know what to do about this.)

In re: all the burgeoning complexity, that's a side-effect of all the normals flooding into the field to make money. Up until roughly the Dot-com Boom programmers were largely self-selecting. Once normals realized they could make money using computers and the Internet they began to infiltrate the ranks and dilute the ancient hard-won wisdom of the greybeards (so-called because they are old, almost exclusively male, and typically very hairy. They literally have grey beards for the most part.) Nowadays we have degenerated so far that we have insanity like JS server-side!

I call it "Eternal Eternal September" Most people can't remember or never experienced the staunchly non-commercial early phases of the Internet.

> The point of programming is to create software that delivers value to the users.

No, this is a side-effect of programming. If logic was entirely useless I would still spend the majority of my time doing it. It's beautiful.

The fact that a large number of human problems can be solved by means of digital logical programs is marvelous, but it's not the point of programming anymore than the point of poetry is to sell Hallmark cards, eh?

> What would the field of software development look like, if “the best programmers” were not the most mathematically inclined neophile workaholics, but rather people who are good at organising (sic) work? Good at communicating clearly. People who care, not so much about which tools are used, but about using whatever tools are available to maximise (sic) the value of the product being made?

These folks are important and valuable. Call them Product Managers.

Ideally, the elite programmers would write flawless efficient software, and the Product Managers and users would take it and configure it to solve their problems.

(BTW, it is possible and economical to write flawless software. The fact that there are still so many bugs is itself another symptom of the primary problem: the confusion between elite "Real" programmers, Product Managers, and end users.)

Re: What does it take to be a good programmer?

#73
“New technology!” has become an existential business threat to my team.

Some years ago the company went deep on poly repo semver multi components. Over time it has had provided the same long term efficiency improvements as putting a cup of sand in your gas tank. We have neither the breadth nor depth of ability to make it work.

Good programmers, amongst other laudable traits, aren’t afraid to delete things.

Re: What does it take to be a good programmer?

#74
A good programmer

- Naturally sees patterns and common abstractions when he reads implementation details.

- Can translate code into something business folk can understand.

- Knows that hindsight is 20/20.

- Understands software as an organic entity that is vulnerable to tech debt, security holes, and defects, especially when growth is the main focus.

Re: What does it take to be a good programmer?

#75

Earlier quoted context omitted.

That's fine if nobody else has to maintain your code. If they do it's difficult to see how your solutions to solved problems aren't going to be significantly more problematic and risky than established libraries.

Not really. I'm pretty good at what I do. Feel free to see for yourself: https://github.com/ChrisMarshallNY#browse-away Most of those repos are dogfood.

And that is all good if the developer is qualified and has time to review your work.

Far easier to use something that 1000's of others are using as well. Far more likely for edge case bugs to surface.

That said, I have to agree that it can be painful trying to get one of those edge case bugs resolved if you are the only one being impacted. In this case I may be worth just implementing your own functionality and swallowing the future support. But I think it's got to be a backup plan, not your first response.

The real problem is that most developers don't have the experience or knowledge to go beyond accepting the "use xyz library" suggestion on Stack Overflow on face value, not having the ability to review xyz library for suitability. We end up with lots of code that is just collections of dependencies where only a very small % of functionality is used and no resources are put into ensuring that using the dependency is not introducing more problems than they solve.

Re: What does it take to be a good programmer?

#78

Earlier quoted context omitted.

That's fine if nobody else has to maintain your code. If they do it's difficult to see how your solutions to solved problems aren't going to be significantly more problematic and risky than established libraries.

Not really. I'm pretty good at what I do. Feel free to see for yourself: https://github.com/ChrisMarshallNY#browse-away Most of those repos are dogfood.

What you are saying absolutely makes sense to me for domains like device drivers.

I think it becomes a lot more questionable when your coworker wants to write their own JSON parser or HTTP server for use on a commodity x86 linux box. It’s an incredible waste of resources and a major security hazard too boot.

Re: What does it take to be a good programmer?

#79

Earlier quoted context omitted.

Not really. I'm pretty good at what I do. Feel free to see for yourself: https://github.com/ChrisMarshallNY#browse-away Most of those repos are dogfood.

And that is all good if the developer is qualified and has time to review your work. Far easier to use something that 1000's of others are using as well. Far more likely for edge case bugs to surface. That said, I have to agree that it can be painful trying to get one of those edge case bugs resolved if you are the only one being impacted. In this case I may be worth just implementing your own functionality and swall…

> Far easier to use something that 1000's of others are using as well. Far more likely for edge case bugs to surface.

Dunno, I feel this tends to drive a lot of complexity. A lot of canned solution are comically over-engineered and break fairly frequently (especially in the cloud-adjacent space for some reason). Often the code needed to integrate such a library and make it do what you need it to do may exceed the code of just doing it yourself in the first place.

What happened with Log4j also should be a lesson in why adopting needlessly complex standard solutions to problems that don't really need them is deeply problematic. Most of its users would probably have been served fairly well with a thin wrapper for sysout, possibly with a json-serializer.

Re: What does it take to be a good programmer?

#80
What does it take to be a good surgeon?

If you can coordinate a large social event, you have all the mental capacity required to be a good programmer/ surgeon

All you have to do as a surgeon is to follow an extremely specific script. and the script does not change that often since human bodies tend to be more static than operating systems, compilers, and web browsers.

Can you eat a steak? Well then you have the cutting skills you need.

Have you ever taken needle and thread to do some sort of job? Well then you understand sutures

Do you really need all As in high school and compete like crazy to get into Med school, then learn all latin names and bone sequences etc school to be a surgeon?

I don't think so because these skills are something near every possesses.

Yes they try to make it seems like you have to be really smart to be a surgeon, but if you scrape away all the complexity that is only there to protect the "smart people" who already are doctors, nearly anyone could be a good surgeon and we would have much better surgeon.

The profession would be far more inclusive and all that shared culture and experience will just make medicine richer and better for everyone. We could finally do away with the insane expenses medical procedures have today.

So let us do away with the archaic ritual of a pointless medical degree and open it up for everyone.

Post reply on HN