Hacker News new | ask | show | jobs
by mikeash 5271 days ago
The point that developers tend to live an extremely privileged life compared to the human average is an excellent one. However, I must strenuously object to the characterization of building tools for other developers as simply being self-pleasure.

If developers really can do good things for society, then by helping other developers, am I not helping to achieve that goal? If software is useful, and I build something that makes developing software easier/faster/cheaper/better, why should I be criticized for wasting my time while the guy who uses my stuff to build something else easier/faster/cheaper/better gets lauded?

To me, this is like praising a farmer for feeding the world while criticizing the company who builds his tractors for indulging in self-pleasure. Yeah, people can't eat tractors, but those tractors enable a vast increase in the farmer's food output.

The economy is a vastly complex interlocking web of interactions. You can help people enormously while still being far removed from the pointy end. People on the pointy end deserve our respect, but people far removed from it who still assist in some indirect way don't deserve our scorn.

User interaction isn't my strong point. Low level arcana is. Am I really going to improve the world more by resting on my weak points that would help people directly, rather than concentrating on my strengths and helping people indirectly?

Computers are enabling massive changes and improvements in the collective lot of humanity. And yet most of the innovations driving that started out as toys, as computer people building things for other computer people, or as tools for massive corporations and the massively wealthy. Imagine if the people working on early cell phones had said, you know what, I don't want to build flashy toys for 1% Wall Street types, I want to build stuff for the underprivileged in poor countries. That approach does not result in said underprivileged people obtaining cell phones, whereas the former does.

In short: this stuff is complicated and making enablers feel guilty because they aren't out at the front is counterproductive.

3 comments

You're right. However, there comes a point where we don't need yet another framework, or productivity app, or another project management tool. I also think the author is addressing people who build "thin value" startups as well, not just developer tools. Like Color, or Farmville, or Diaspora.
People who build things that "we don't need" get the message when no-one uses their product and they run out of money. But it's still a valuable process for them and everyone else, as long as they learn how to build things we do need.
I can strap on wings and jump out of a window and have a hard landing and break a few limbs and "get the message" that I shouldn't have jumped in the first place. To claim that jumping was a valuable process is a bit far fetched. I could have gotten that same lesson by simply taking a course in aerodynamics, or better yet, watching those black and white videos from the history channel of people in the 1900s doing similar stunts before the Wright brothers came along. Having worked at startups for a bunch of years & having interviewed with several others & speaking with their founders in person, I see a very distinct divide. The vast majority are building things "we don't need", throwing stuff at the wall and hoping something will stick. Purely from a statistical perspective, something will indeed stick. otoh the very tiny minority that are building stuff we do need are handicapped by too many factors to even have a remote chance of success.
The problem is then figuring out what's valuable. But being told that building an entire class of extremely useful tools is not valuable just gets it completely wrong.

To take your analogy, it's like seeing some people jumping out of windows with wings and telling them, hey, stop trying to invent stuff. No, the correct message is, do your research.

Developer tools can be extremely useful, you just have to make sure that what you're building is useful and hasn't already been done before. This is completely different from saying that all developer tools are useless, which is what was said in the post.

> "This is completely different from saying that all developer tools are useless, which is what was said in the post."

That isn't what was said nor what was implied. Someday we will stop pretending that what we do is "extremely useful". A developer tool is nice. It is neat. It is cool. It is a bulletpoint on your resume. It is a repo in the github. It buils your brand. It scratches your itch. It generates revenue. It has a long tail. etc etc... But "extremely useful" ? To the real world full of real people ? Not in a million years. Let me look at my own work, at this very instant. I'm coding up a scala sobol sequence generator by solving a recurrence on a primitive polynomial of the Z2 field. Why in the world would I need this ? Well if I have a low discrepancy sobol sequence I can generate quasirandom montecarlo variates in scala instead of importance sampling. Why in the world would I need that ? Well with a million of those variates I can tell you with a lot of accuracy whether a commercial loan will default & what the expected loss would be ? Why in the world would I need that ? Well since we have a portfolio of millions of commercial loans, like every bank on the planet does, we need to compute the value at risk so we know how much capital to set aside in case of defaults. Why in the world would I need that ? Well since....I can go on and on, but at some point, I will be forced to acknowledge the very point the post was making - that the world is full of real people. These tools & algorithms are neat, but they are a workproduct of privilege. Everytime we build a piece of software, we are simply resorting to the rifleman's creed the marine core uses ( you know, the one that goes - This scala sobol sequence is mine. There are many like it, but this one is mine! ) So f*ing what ? It is definitely a life of privilege. It is far far removed from the world of real people. Personally there is nothing else I would rather do. But to pretend that what I'm doing is on the same plane of someone say vaccinating a kid with malaria in the tropics, or providing shelter to a homeless person etc is highly disingenuous. That would be reality. otoh coding software is simply privileged cs guys playing games with bits and bytes so that after the talent acquisition exit, we get to play games with vc money on techcrunch :) Lets not kid ourselves.

...we need to compute the value at risk so we know how much capital to set aside in case of defaults. Why in the world would I need that ? Well since....I can go on and on...

And if you went one step further, you'd have realized: "to reduce the risk of a bank failure and potentially saving thousands of jobs."

But to pretend that what I'm doing is on the same plane of someone say vaccinating a kid with malaria in the tropics...

Lets think about the guy vaccinating a kid to prevent malaria.

But lets think a few steps back. Rather than thinking about the guy with the needle, think about the guy in the lab coat. He's currently sitting in a lab somewhere, fucking around with gene assays in order to create antibodies. Why does he do this? Because some other guy might use the antibodies to stimulate an immune response to malaria parasites in rats. And the other guy might find out the first guy was wasting his time.

The vast majority of people who are trying to do exactly what you ask (creating a malaria vaccine) are "building things 'we don't need', throwing stuff at the wall and hoping something will stick."

And if you back up a couple steps more, you realize all this was only possible because someone built biologist tools (e.g. gene sequencing machines, bioinformatics software) which are neat and cool and bullet points on a CV and also completely useless to "real people".

Yes, some tools are toys without much use. I don't dispute that.

But to make a blanket claim that no tool is useful, "not in a million years", is completely wrong. The real world full of real people has benefitted tremendously from certain software projects. Those projects have in turn benefitted from others, which benefitted from others, etc. Not all software is involved in the chain, but a lot is.

Software does things like predict weather (saving thousands, perhaps millions, of lives and vastly improving other lives), help design buildings and machines, allow people to communicate over extremely long distances at very little cost, etc. etc.

All of that software was enabled by various developer tools that have been built over the years. Tools like FORTRAN compilers, UNIX systems, make, gcc, VMS, etc. etc. All of those have been extremely useful. Indirectly, they have been extremely useful to real people in the real world. So why do you say that "not in a million years" would anything we build be useful. Maybe what we build isn't, but it certainly can be, and a lot of it is.

Is what I'm doing extremely useful? Probably not. But if I wanted it to be, the answer isn't to stop programming and go vaccinate kids. The answer is to apply my software skills to areas which are useful in general. The results don't have to be directly useful to "real people" to be indirectly useful to them.

Building some Facebook clone is probably not all that useful. But to come along and act like all software is simply an act of privilege and is never useful to "real people" is just plain wrong.

Not necessarily. There are plenty of things we "don't need" but many of those succeed because they're part of what the developer community "wants". People can profit from these wants, making things developers don't necessarily need and "real people" neither need nor want.

The point of the article is that it's easier to build and profit from these wants, even if they're not truly beneficial to people outside of the developer community.

But what would help is a better framework, productivity app, or even project management tool.

Almost everyone who is building a new framework, etc is doing it because they think theirs will be better, at least for some particular use case.

True, but on the other hand there is so much money circulating around doing pointless, dumb, immoral shit that even the most inane startup is saintly and ingenious in comparison. Pre-mature optimization, and all that.
A lot of people said, "we don't need yet another company making mobile phones" at the launch of the iPhone.

It's also tough to characterize what is a "good example" vs a "bad example" per the broad descriptions.

For example, if I release "yet another testing framework" and it helps some healthcare app get released a day sooner and, in that day saves a life. Worth it.

I think Diaspora has value to "real people". Decentralizing control and reducing commercialization of users and content in social networking could be seen as a moral good.
Agreed. Its mind boggling to think about all the technologies a modern web developer is leveraging when they work on their projects and without these lower-level technologies their job would be much harder and less productive.
Spot on. Some of the key economic principles are covered in this EconTalk podcast with Paul Romer, on growth and "meta-idas". http://www.econtalk.org/archives/2007/08/romer_on_growth.htm...