Live data from Hacker News

What does it take to be a good programmer?

qristin.wordpress.com

81–90 of 107 posts

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

#81
post #10
post #4

> In todays field of software development, people don’t come into it To be as polite as possible without being dishonest; wow, there are a few rather sweeping, unsubstantiated, boiling hot takes embedded throughout there, i've just quoted one. From my experience, most of what features here just simply isn't true, or is at least very anecdotal. Just as one example, i've never worked for any software company that "wasn…

> i've never worked for any software company that "wasn't about the users" Startups are going to tend to have devs focused on users and "quality is everyone's job" etc. In fact, you should never hear the phrase "that's someone else's job" in a startup. Big corp jobs, especially at non-software companies will tend to treat people as isolated cogs in the big machine, a machine you're told by everyone is "someone else's…

> Big corp jobs, especially at non-software companies will tend to treat people as isolated cogs in the big machine, a machine you're told by everyone is "someone else's job" to understand and steer.

In my experience at a massive company this is spot on, as a mentor it feels like I spend more time on teaching new hires to realize that we're not a "technology company that does X". We are, in fact, a boring X company that uses technology when it's needed. Not everything has a complex technical solution. Sometimes the best thing you can do, even as a software engineer, involves changing processes, organizational structure, or bad habits.

When I read these "software" articles and books it feels like a radically different world than what I do.

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

#82

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 cutti…

This is only tangentially related, but it dawned on me that we truly have a unique culture as programmers that you're basically forced to learn in the process of getting a CS degree.

And you can usual use cultural references (such as joking about 'Do you know how to close Vim?' or complaining about symbolic links, or talking about RMS) to tell who is a more traditional programmer versus someone who has had less exposure to the programmer culture (this obviously only applies to Americans, with international hires they'll have their entire own programmer culture)

Another thing I noticed is how niche cultures tend to be less homogeneous, I feel like in all 'mainstream' cultures, the celebrities are almost always white, attractive, and socially confident. While in programming, our celebrities are pretty off-putting to the mainstream.

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

#83

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 cutti…

This is a pretty bad comparison. Not only are doctors trained for years through a mentorship process, go on to teach others, and are tested against standards; every surgery they perform for the rest of their lives is subject to review which might result in an independent board of other doctors recommending changes to the process.

This is one of the things we're missing in software development (although retros are supposed to solve it), and the author points this out. Often, we get stuck in a bad framework or organizational structure that leaves us so we're forced to get use complex CS ideas to solve the problem when a better approach would allow for simpler solutions.

> Team A are those who work with metal utensils, team B work with wooden utensils, C use electrical appliances and D are in charge of all food heating. Trying to make sense of how one creates a crème brûlée with a worker grouping like that requires a lot of intelligence.

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

#84

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…

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

That's me. I'm the person that most often needs to go back into my code, six months later. I write code that I want to use, and that I want to see, months afterwards. I actually don't give a damn if I never get a single star on my repos. In fact, the fewer people that use it, the better. I still write every library as if it will be used by first responders, as I have pretty high standards.

I'm also insane about testing. If you look at those repos, you'll see that the testing code (either unit, or harness), far outweighs the code under test. Most of my test harnesses are App Store-ready full-fat applications, with localization, and documentation.

But I am not reinventing Facebook. I write end-user native apps for Apple systems. I don't have the same needs as someone writing a massive social media server.

Like I said, I do what I do, and it works for me. Your mileage may vary.

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

#86

IMO good programmer writes code that: 1. Solves task. 2. Does that within a necessary performance constraints. 3. Uses commonly accepted approaches, libraries, style, does not reinvent things which are not necessary to reinvent. 4. Readable by programmers who'll work with that code in the future. That could be juniors or seniors, that depends on a particular company and project. 5. Extendable for changes which are li…

> does not reinvent things which are not necessary to reinvent. This is one of those "eye of the beholder" things. If I had a quarter for every time I've heard "That's a solved problem," with a reference to a dependency, somewhere, I'd be a rich man. I tend to really avoid external (not written by me) dependencies, because I have had many problems with other people's code. Fixing someone else's badly written open-sou…

> I tend to really avoid external (not written by me) dependencies, because I have had many problems with other people's code.

Exactly, I'd rather write 1500 lines of brand new C code to parse Wavefront OBJ files than import 300000 lines of Assimp [1].

OTOH, I'd rather import 2000 lines of mikktspace[2] code than attempt to reinvent (or even understand) that black magic.

[1] https://github.com/assimp/assimp [2] http://www.mikktspace.com/

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

#87

IMO good programmer writes code that: 1. Solves task. 2. Does that within a necessary performance constraints. 3. Uses commonly accepted approaches, libraries, style, does not reinvent things which are not necessary to reinvent. 4. Readable by programmers who'll work with that code in the future. That could be juniors or seniors, that depends on a particular company and project. 5. Extendable for changes which are li…

> does not reinvent things which are not necessary to reinvent. This is one of those "eye of the beholder" things. If I had a quarter for every time I've heard "That's a solved problem," with a reference to a dependency, somewhere, I'd be a rich man. I tend to really avoid external (not written by me) dependencies, because I have had many problems with other people's code. Fixing someone else's badly written open-sou…

Yikes, I think this is how teams end up with "we should just rewrite this whole thing because the guy who wrote it liked doing things his own nonstandard way and nobody else can understand it once he left".

Clever code that reimplements common packages just because one person thinks it's better for their particular use case might seem like a flex when you write it, but it's a pain in the ass for everyone after you... sigh.

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

#88

0. Learn how to name things. 1. Anticipate cache invalidation issues. 2. Write tests to avoid off by one errors. https://twitter.com/codinghorror/status/506010907021828096

What a great answer :)

Regarding naming things, this comes to my mind: https://github.com/kettanaito/naming-cheatsheet

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

#89

0. Learn how to name things. 1. Anticipate cache invalidation issues. 2. Write tests to avoid off by one errors. https://twitter.com/codinghorror/status/506010907021828096

What a great answer :) Regarding naming things, this comes to my mind: https://github.com/kettanaito/naming-cheatsheet

>Use english names

Depends IMO. I worked on some VERY specific program with lots of terms that just don't have a proper translation. And the program was internal to the company that only ever operated in one country and only ever will.

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

#90

Earlier quoted context omitted.

I worked with someone who didn't have what I'd call a scientific mindset, and it can really be a limiting factor. They confused correlation with causation, in other words were quick to launch on to theoretical explanations without testing or proving their thinking. When solving a problem, they tried tons of different approaches until they empirically found one that worked, without always fully rationally understandin…

Sounds like a bad problem-solver. Maybe a good problem-solver is "scientific." Dunno. I have never had "scientific" training, but I have had plenty of "problem-solving" training.

All problem-solving methods should converge, given enough brainpower, so yes.
Post reply on HN