Live data from Hacker News

What does it take to be a good programmer?

dimitrov2k.wordpress.com

91–100 of 116 posts

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

#91
I think there's a personality trait that's really useful in programming, which is to be pessimistic in the short term and optimistic in the long term.

What I mean by that is that you don't expect some thing you just wrote to work the first time, and maybe not the second or third, and so on. But you expect that you'll eventually figure it out and it will work.

A short-term optimist would become discouraged by their expectations not being met over and over, while the long-term pessimist would not be sustained through the hard parts by imagining how happy they'll be when they made their thing work.

I think programming either repels people who are short term optimists or long term pessimists, or the process of learning to code transforms them into short term pessimists and long term optimists.

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

#92
post #74

Earlier quoted context omitted.

This nails it in my opinion. Too often I see people assume that programming/coding is somehow science based. It's not really, it's an art and you need to be a creative person to be good at it. The science comes later (sometimes never for some).

More of a craft than an art. Sometimes it's more like woodworking, sometimes it's more like plumbing, but it's rarely anything like painting.

I have a friend who is an artist that spent the last 10 years working on his painting skills. I observed one interesting parallel between developing skills as a painter and as a programmer based on conversations with him.

Beginning painters tend to get overly focused on very small details without having a good understanding of how they are bringing the painting as a whole together. They spend too much time on these details, whereas advanced painters are able to move very quickly with faster strokes. It's pretty amazing to see a painting where the strokes don't make sense when you look at them one-by-one, but the overall effect truly reflects something from reality.

I found this to be true also with inexperienced developers. We focus on the latest trends, micro-optimizations, coding styles, and "small" details that are easier to master -- yet we struggle with the bigger picture things like delivering a product quickly.

Kind of like the saying "you can't see the forest for the trees". (You focus on the incidental details, but not the larger purpose)

On a slightly different note, I have several friends who are writers and I have found programming to be very similar to writing a novel. You have to construct a coherent world that "compiles", e.g. the characters interactions are consistent and make sense; each character has a role in the story like a component in a program would have; simplicity and directness tend to be more effective than ornateness; small changes in one part of a dialogue can have cascading changes across the rest of the storyline, much like a refactoring gone wrong.

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

#93
post #74

Earlier quoted context omitted.

This nails it in my opinion. Too often I see people assume that programming/coding is somehow science based. It's not really, it's an art and you need to be a creative person to be good at it. The science comes later (sometimes never for some).

More of a craft than an art. Sometimes it's more like woodworking, sometimes it's more like plumbing, but it's rarely anything like painting.

Some years ago now, I came upon a lovely essay entitled "Hackers and Painters†". Here is how it begins:

    When I finished grad school in computer
    science I went to art school to study
    painting. A lot of people seemed
    surprised that someone interested in
    computers would also be interested in
    painting. They seemed to think that
    hacking and painting were very different
    kinds of work-- that hacking was cold,
    precise, and methodical, and that
    painting was the frenzied expression of
    some primal urge.

    Both of these images are wrong. Hacking
    and painting have a lot in common. In
    fact, of all the different types of
    people I've known, hackers and painters
    are among the most alike.

    What hackers and painters have in common
    is that they're both makers. Along with
    composers, architects, and writers, what
    hackers and painters are trying to do is
    make good things. They're not doing
    research per se, though if in the course
    of trying to make good things they
    discover some new technique, so much the
    better.
I think he got it right.

http://www.paulgraham.com/hp.html

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

#94
post #83
post #40

Well, I've been programming 30+ years..... I think one of the main things that makes a good programmer is someone who cares about the final product. Ironically this doesn't necessarily mean you have to be super good at writing code. I have seen people with what seems basic coding capability very methodically build some really nice software. This is because they are very focused on the "end" not the "means". You see t…

Been programming for 10 years and it's distressing how inadequate and incompetent I sometimes feel. I like to rebuff it as Impostor's syndrome, but who knows, may be I am just bad and surviving because mediocrity is what the industry wants. On the other hand, the pleasure that a good piece of code in a beautiful software gives is something I can perhaps relate to an opiate high (as a metaphor, never tried honestly :)…

I find it more like the feeling of having sorted out my wardrobe (folded things and thrown out old clothes, I hate doing this despite feeling better afterwards). Or a mix of that and say building a good looking Lego MOC from a limited set of pieces. But only for some things - I have several self-contained python scripts that give me this feeling. Sometimes fixing a bug in a clean way.

Other things - Android apps for example - tend not to give me this vibe. They feel more nebulous and "unfinished", like it's a miracle they work at all and will break at any moment in ways I couldn't understand.

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

#95

Earlier quoted context omitted.

This nails it in my opinion. Too often I see people assume that programming/coding is somehow science based. It's not really, it's an art and you need to be a creative person to be good at it. The science comes later (sometimes never for some).

This is really interesting to me, how different people view programming at a conceptual level. My current view (it changes every couple of years) is that as a skillset, programming is primarily based on planning and management, most akin to logistical management and orchestration. (we're just lucky our workers are CPUs and resources are memory/bandwidth vs workers you have to individually train, and physical resource…

> programming is primarily based on planning and management, most akin to logistical management and orchestration.

That's how I feel as well. Maybe it's a by-product of the software we work on? I work on IT management software and distributed control systems.

When working with control systems, the "science" part typically is in the analysis and testing phases (since we have to come up with models of physical systems). For coding itself, however, it is closer to what you describe.

> I often think of my data model as a physical system, and its behavior in terms of real world systems.

I do this too, especially when programming in Erlang. When building software systems that are modeled as a large number of concurrent, message-passing actors/processes, it readily lends itself to this "physical systems" analogy.

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

#96

My personal advice would be to follow the Ira Glass quote: > Nobody tells this to people who are beginners, I wish someone told me. All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still kil…

Will you permit a couple more quotes apropos taste?

"Good judgement is the result of experience and experience is the result of bad judgement." - Mark Twain

and

"To write a good program takes intelligence, taste, and patience. You are not going to get it right the first time; experiment!" - Bjarne Stroustrup

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

#97

If you have a choice between 500 lines of easy to understand, dumb code or 50 lines of abstract elegance, go with the easy to understand, dumb code.

I call that distinction the difference between an elegant and a clever solution. Clever being what you mention.

If the programmer can't tell the difference when implementing, then go for a simpler version, as you suggest.

- Elegant: Nice, clean, well thought out.

- Clever: Hackish, terse, too hard to understand for whatever benefit it brings.

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

#98

I wish everyone were forced to program everything on a machine with the resources of a Pentium I-class processor and say 64MB RAM. Learn to conserve your resources, learn to eschew that which is not needed, and for crying out loud learn to not write bloated stuff. Even today, most programs I use on Windows 7 were written back in the days of Windows 95/98 and they still work faster than any current modern implementati…

Just tell them to do microchip programming, like on an Arduino. Though, the idea of 'it works faster' in comparision of todays software is not really valid, as the expectations and requirements of software have gone up since 2000. Of course Firefox 2.x was fast and not memory hungry! It didnt have to:

  - support x64
  - support new web tech like WebGL, WebRTC, Crypto API, all CSS options, the latest JavaScript specs
  - update rendering engine for CSS3
  - support retina/hiDPI
  - handle webpages that are big in size + have loads of javascript libraries + multiple advertisement parties
  - update to a modern UI
  - implement new cryptos for HTTPS
  - ship with lots of rejected certificates
  - still support old systems
  - do all this in a secure way

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

#99

I wish everyone were forced to program everything on a machine with the resources of a Pentium I-class processor and say 64MB RAM. Learn to conserve your resources, learn to eschew that which is not needed, and for crying out loud learn to not write bloated stuff. Even today, most programs I use on Windows 7 were written back in the days of Windows 95/98 and they still work faster than any current modern implementati…

And then we would only have a fraction of the current tools and innovations, because we would all waste an enormous amount of time doing tedious memory and resource management.

While modern tools and frameworks may sometimes feel bloated, they allow us to develop and iterate fast. I know I would've finished less projects if I had to be programming with performance and size in mind. For a lot of projects it just doesn't matter that much. It's more important that the job gets done.

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

#100
post #82
post #77

Here's my take: - You need to think a certain way. You need to be able to see how to translate a problem into something a machine can execute. You need to be able to switch from the macro to the micro smoothly. - You need a certain level of proficiency with the tools you're using. Those can be programming languages/OSes/libraries/other software. - You need experience. Having seen different approaches to solving vario…

Algorithm knowledge too

Rarely, assuming you can read the docs enough to understand what pre-built library to use.
Post reply on HN