Live data from Hacker News

Qualities that I believe make the most difference in programmers’ productivity

antirez.com

111–120 of 321 posts

Re: Qualities that I believe make the most difference in programmers’ productivity

#112
There is no such thing as a "10x programmer", only "1/8 environments" i.e. teams/environments where the normal programmer is 1/8th as productive as industry norms, such that a mere 1.25x programmer is 10x productive.

..and an environment that fosters such low productivity norms, probably also gets it's developer productivity measure/metrics wrong as well, so you don't even need a 1.25x for the perception of a 10x...

Re: Qualities that I believe make the most difference in programmers’ productivity

#113

This bit articulates what I consider to be the main advantage of experience in programmers: > Often complexity is generated when there is no willingness to recognized that a non fundamental goal of a project is accounting for a very large amount of design complexity, or is making another more important goal very hard to reach, because there is a design tension among a fundamental feature and a non fundamental one. It…

>The requirements will be ridiculously complicated (have to do everything all the projects to be replaced do), One of the biggest problems in this type of project is that many requirements are unknown. Yes, the new system must do what the old system did, but no one can write down exactly what that is.

I'm working on a project exactly like this. I'm merging two billing systems. One of these is a legacy mudball of classic ASP and it's a veritable snake pit of nested includes and globally defined variables that just magic themselves into existence out of no-where.

It's been very hard to define tasks and timescales because there are little dark corners and special edge cases in the legacy mudball that don't immediately jump out at you when trying to review the code and work out what the hell it does, and why. The original developer is long gone and there's not much way of commentary in the code. A lot of the code is illegible because somehow the original dev's indentation went mad at some point in the past.

Then there's the database....

Re: Qualities that I believe make the most difference in programmers’ productivity

#114
post #82

Earlier quoted context omitted.

Exactly. Years ago, one company I was at proposed we start a bonus plan based on lines of code. I wrote a script that inspected the RCS commits (it was years ago) and generated a report that showed that most of our best developers were net negative lines of code.

And how did you define and measure the "best developers"?

People getting important shit done.

Re: Qualities that I believe make the most difference in programmers’ productivity

#115
post #63

I don't understand how anyone can say 10x programmers don't exist. There are programmers who DRAIN value from projects and companies. The most insidious I've dealt with are people who assure everyone their part is going to be done on time, but come the deadline, they have nothing. I am today, a 10x better programmer than I was where I started. In terms of quality, complexity, efficiency, readability, maintainability,…

A 10X programmer is supposed to be 10x the average, not 10x the people who drain value. I've watched Notch program, and while he knows of lots of game related algos that I don't, he's not a magical snowflake and it'd take me no time at all to find those algos and implement them. There are huge swathes of the code he writes that I'd be comfortable writing at about the same speed. From experience solving other complex…

10x average is the myth. According to Peopleware, it's 10x the worst and 2.5x average.

Re: Qualities that I believe make the most difference in programmers’ productivity

#116
Honestly the section about debugging skills needs to be much higher in the article. Debugging skills are essential to learning legacy applications you are thrown into and understanding how your code works in general. It amazes me when I see an engineer with 5+ years experience who cannot hook up a remote debugger to their application.

My number one observation about productivity usually revolves around how an engineer attacks a problem and handles scope creep. There are some programmers who can get a set of requirements, and like a trained surgeon get in, fix the big bleed and get out. While they are in there they might fix a couple close issues but they are not re-architecting the whole application. Then there are others who see all the problems, they notice this problem there, and that problem here and keep asking what does this all mean and it eventually cripples them. They spend some much time seeing all the problems, that they never get around to solving the one they were tasked to fix.

Once you realize you won't understand it all from the beginning and you can't fix every issue you see. You become a much more effective engineer.

Re: Qualities that I believe make the most difference in programmers’ productivity

#117
post #72

This bit articulates what I consider to be the main advantage of experience in programmers: > Often complexity is generated when there is no willingness to recognized that a non fundamental goal of a project is accounting for a very large amount of design complexity, or is making another more important goal very hard to reach, because there is a design tension among a fundamental feature and a non fundamental one. It…

Absolutely. This is why it's so important to have input from engineering during the product design stage of any new product or feature: good engineers can help spot when a minor change to the requirements could have a major positive effect on the overall system complexity and time to delivery.

Value scales exponentially with good design, costs scale exponentially with bad design.

This is the hardest thing to communicate to people running projects, in terms of why the amount of Python or Django or whatever that you know has very little to do with being a good or bad developer.

Re: Qualities that I believe make the most difference in programmers’ productivity

#118
post #7

10x what, though? No 10x engineer would accept a unitless quantity from uncalibrated measurements of terrible accuracy. Yes, it's obvious that some people are getting a lot more done, but it's very hard to quantify and vulnerable to social engineering. It can be hard to spot quieter people working effectively, and it's really hard to quantify those who spend their time helping others or improving team effectiveness o…

If the domai space is broad, complex, and immensely resistant to quantification, then a 10x engineer would probably prefer a unitless rough approximation over some precise yet useless quantified description.

Re: Qualities that I believe make the most difference in programmers’ productivity

#119

This bit articulates what I consider to be the main advantage of experience in programmers: > Often complexity is generated when there is no willingness to recognized that a non fundamental goal of a project is accounting for a very large amount of design complexity, or is making another more important goal very hard to reach, because there is a design tension among a fundamental feature and a non fundamental one. It…

> Experienced programmers recognize what's happening and have the personality to stand up the project leader and get a simplified version of the requirements accepted.

Some years ago I was tasked with taking a program and fixing a major bug and adding a new feature. The original devs were gone, the code base was a mix of spaghetti code and a large number of design pattern layers. I brought up rewriting it but was told no, absolutely not. After thrashing around the code for a while longer I rewrote it anyway, taking the requirements from our actual usage in production plus the desired new feature, and was done in short order with about 1/4 the LOC of the original. A lot of supposed requirements fell on the floor, but none of them were being used and some of them never belonged in that particular program at all.

For someone like me, a "normal" programmer, this is the only way to achieve bursts of 10x productivity. At that same job there was another like-minded person I collaborated with. As a nuts and bolts dev I was as good or better than he was, but his ability to cut to the chase and somehow convince management was almost magical. 10x doesn't come from typing in code very quickly on sub-tasks.

Re: Qualities that I believe make the most difference in programmers’ productivity

#120

I've worked with people who could be classed as almost a 10x programmer. Their code worked, but it was also incomprehensible to everyone else on the team. I have found that high-speed programmers tend to develop a very personalised workflow style. They do things their way, they code their way and forget that other people may have to maintain that code.

Do they develop a "very personalized workflow", or do they simply use abstractions and techniques that go beyond hashmaps?

I've observed on a number of occasions that very good programmers get accused of writing "incomprehensible" code simply because they use data structures that you learn in the second half of CS 101, e.g. token buckets or bloom filters.

Post reply on HN