Live data from Hacker News

Joe Armstrong on Programmer Productivity

groups.google.com

51–60 of 90 posts

Re: Joe Armstrong on Programmer Productivity

#51
post #8

The corollary to a) that I deal with all the time is third party integrations that are poorly documented and that after some time X start magically working even though the third party changed nothing on their side (according to them). Management always thinks "We've integrated things with this vendor before, it will be a snap to do again on a totally different endpoint" and this is never the case.

Then there's Facebook. "We integrated with Facebook a few months ago, it should be easy to do it again." Famous last words. I've lost count of how many times I've become an "expert" at some aspect of Facebook integration to have it be completely different just a few months later. Google is also really bad about this, at least in the past year or so. It almost makes me want to quit webdev and be a dba or something.

Feel ya. So many API's and yet it seems like there is no interface - since they change all the time. Might as well don't have them at all.

DBA it is then.

Re: Joe Armstrong on Programmer Productivity

#52
post #19

this is partly why I advocate a slow code movement similar to the slow food movement. instead of sprinting I would like to walk to the destination, avoid the pains of broken ankles and repairing shoes whilst running in them. I would like to explore to find a sane and reasonable approach and not be driven by artificial deadlines guessed at three months ago but by todays business need. i would like to actually be measu…

I think that is entirely in line with the true values of agile, which haven't really gotten through. Slow food isn't about slowness for the sake of slowness. It's just about being realistic and interested in the long-term. It's about saving energy and mental stress. One beautiful expression of this ideal is in "Domain-Driven Design."

Agile in the sense you are describing really has the wrong name. Agile implies fast; from Apple's Dictionary:

able to move quickly and easily; able to think and understand quickly

Agile should have been called Adaptable or some other name that has less implication of speed and more implication of accomodation of unknown or changing requirements.

No putting that toothpaste back in the tube at this point though.

Re: Joe Armstrong on Programmer Productivity

#53
post #44
post #37

Earlier quoted context omitted.

Never used nodejs before - is node's packaging system different from Python's or Ruby's?

Yes. The biggest difference is that there is no global namespace for modules. require('my-dependency') returns a value, rather than aliasing identifiers into the current scope. So you end up with code like: var myDep = require('my-dependency') exports.doSomething = function (x) { myDep.doSomethingToAnX(x); // more code here } The Python import (and Go and probably others) works in a similar way, except that in node,…

Modified globals is the fault of bad coding, not node. There are valid reasons for using globals, but it's well known to be bad practice to modify standard classes these days.

If someone wants not yet released features, they can compile to JS/node with source maps (i.e. Traceur, Coffeescript). This also solves the cps/callback issue (i.e. Iced Coffeescript).

Npm is also incredibly easy to publish to (one line in the CLI). That leads to a ton of packages released that would otherwise hit friction in release process in other package managers.

Re: Joe Armstrong on Programmer Productivity

#54

This one sentence sums up the sociological and psychological problems that retard progress in the tech industry: "Experiments that show that Erlang is N times better than "something else" won't be believed if N is too high." That is exactly it. I've had those arguments where I was forced to tell a manager about another project I did for another company, a similar project where things went quickly and smoothly, using…

Did they disbelieve it went smoothly as you described, or did they lack confidence in your conclusion that the _reason_ it went smoothly was because of the particular tools chosen?

Re: Joe Armstrong on Programmer Productivity

#55

This one sentence sums up the sociological and psychological problems that retard progress in the tech industry: "Experiments that show that Erlang is N times better than "something else" won't be believed if N is too high." That is exactly it. I've had those arguments where I was forced to tell a manager about another project I did for another company, a similar project where things went quickly and smoothly, using…

Ya, I had a manager laugh at me when I told him I had learned Erlang over the weekend (I am the resident "language lawyer", and Erlang's really not that complex). He didn't seem to be able to grok that a language could be so simple…

Re: Joe Armstrong on Programmer Productivity

#56

This one sentence sums up the sociological and psychological problems that retard progress in the tech industry: "Experiments that show that Erlang is N times better than "something else" won't be believed if N is too high." That is exactly it. I've had those arguments where I was forced to tell a manager about another project I did for another company, a similar project where things went quickly and smoothly, using…

Ya, I had a manager laugh at me when I told him I had learned Erlang over the weekend (I am the resident "language lawyer", and Erlang's really not that complex). He didn't seem to be able to grok that a language could be so simple…

You can learn Objective-C in a couple hours if you have experience with similar languages.

Learning Cocoa or Cocoa Touch, otoh...

Re: Joe Armstrong on Programmer Productivity

#57

I've often wondered what the software development world would be like if we used prototypes. Experimental hacking seems like a cut-down version of this concept. But what if we actually built things that we already agree in advance to throw away? Maybe even start from two or three different plausible designs, and push on each one for a while until one seems to be winning? Then rewrite it, learning from the other conte…

Dr. Winston Royce came to this conclusion over 40 years ago. Unfortunately people read his paper and developed the Waterfall methodology instead. See Step 3:

http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/wate...

Re: Joe Armstrong on Programmer Productivity

#58
There's a problem with language productivity comparisons that Armstrong mentions: it's impossible to write the same program in two different languages. If you have the same team write it, their second try will benefit from everything they learned the first time, and that is so huge a part of programming that it is sure to distort the outcome and may even dwarf any language effects. But if you use different teams instead, you've traded one confounding variable for another—the effect of switching teams—which is also hugely influential. Thus it's impossible to do an apples-to-apples comparison, and most such experiments deserve high skepticism. It's too easy to consciously or unconsicously engineer the outcome you expect, which is presumably why we nearly always hear that the experimenter's pet language won the day. Has the experimenter's pet language ever not won the day?

That makes me think of a more modest way to do these experiments that might return more reliable results: use the same team twice, but have them solve the problem in their favorite language first. That is, if A is the pet language and you want to compare A to B, write the program first in A and then in B. This biases the test in B's favour, because A will get penalized for all the time it took to learn about the problem while B will get all that benefit for free. Since there's already a major bias in favor of A, this levels the playing field some.

Here's why I think this might be more reliable. If you run the experiment this way and A comes out much better, you now have an answer to the charge that the second time was easier: all that benefit went to B and B still lost. Conversely, if A doesn't come out much better, you now have evidence that the language effect isn't so great once you account for the learning effect.

Re: Joe Armstrong on Programmer Productivity

#59
post #58

There's a problem with language productivity comparisons that Armstrong mentions: it's impossible to write the same program in two different languages. If you have the same team write it, their second try will benefit from everything they learned the first time, and that is so huge a part of programming that it is sure to distort the outcome and may even dwarf any language effects. But if you use different teams inst…

If you want to compare languages A and B, have them write it in language C first for the domain knowledge, then the two languages. That seems like a better option than giving one a bias on purpose.

Re: Joe Armstrong on Programmer Productivity

#60

Earlier quoted context omitted.

Ya, I had a manager laugh at me when I told him I had learned Erlang over the weekend (I am the resident "language lawyer", and Erlang's really not that complex). He didn't seem to be able to grok that a language could be so simple…

You can learn Objective-C in a couple hours if you have experience with similar languages. Learning Cocoa or Cocoa Touch, otoh...

I picked up c# within a day or two with a working knowledge of Java. Some languages are easy to pick up given the right background.

I'll have to check erlang out. I only hear good things.

Post reply on HN