Join 3,554 readers in helping fund MetaFilter (Hide)


It's a good time to know Ruby on Rails
June 7, 2013 8:10 AM   Subscribe

Are coders worth it? We call ourselves web developers, software engineers, builders, entrepreneurs, innovators. We’re celebrated, we capture a lot of wealth and attention and talent. We’ve become a vortex on a par with Wall Street for precocious college grads. But we’re not making the self-driving car. We’re not making a smarter pill bottle. Most of what we’re doing, in fact, is putting boxes on a page. Users put words and pictures into one box; we store that stuff in a database; and then out it comes into another box.
posted by shivohum (169 comments total) 32 users marked this as a favorite

 
This is a question about simplistic web development, not "coders". This like asking of we really need civil engineers since it's so easy to dig a garden yourself. Or if we need doctors now that we have bandaids.

"Software engineers" do a LOT more than type. But "coders" who put boxes on a page and stuff it in a database may not. Once management knows which jobs take actual expertise and professional judgement, they'll start paying for the cases where they get real value.

j/k they'll just outsource the whole thing.
posted by DU at 8:22 AM on June 7, 2013 [43 favorites]


Overpaid twentysomething navel-gazes in an attempt to make himself feel better about being overpaid at a company whose mission is to crowdsource the meaning of rap lyrics. Cry me a fucking river.
posted by mkultra at 8:24 AM on June 7, 2013 [35 favorites]


"In 1999 a dotcom with no revenue could burn $100 million in one year, with $2 million of that going to a Super Bowl ad. Its namesake website could offer a terrible user experience, and still the company could go public. Investors would chase the rising stock price, which would drive up the price further, which in turn drew more investors, feeding a textbook ‘speculative bubble’ that burst the moment everyone realised there wasn’t any there there.

This kind of stuff isn’t happening any more."


Thank goodness for that...
posted by overeducated_alligator at 8:24 AM on June 7, 2013 [6 favorites]


...The founders have since moved on to ‘Mommy Nearest’, an iPhone app that points out mom-friendly locations around New York....

An awful lot of web startups have a business model that is essentially just a mediocre pun.
posted by aught at 8:24 AM on June 7, 2013 [47 favorites]


This reads like navel-gazing.

Someone is willing to pay this guy for his skills. Not everyone can or wants to run an ambitious startup that tries to help cancer or AIDS patients with the medication compliance. If this guy is so concerned that his job does not measure up to those whom he considers ambitious then perhaps he ought to found his own ambitious startup rather than being a programmer.
posted by dfriedman at 8:25 AM on June 7, 2013 [3 favorites]


Web development is more like plumbing than any of us, perched in front of two slick monitors, would care to admit

As a 15-year developer in tSQL/C/C#/omgVB, I think this is uselessly demeaning to plumbers.

Knowing how to use a set of tools and understanding the process you're using the tools for are worlds apart.
posted by Mooski at 8:26 AM on June 7, 2013 [12 favorites]


> This is a question about simplistic web development, not "coders".

That was my initial reaction too, but the dude's aware of it:
My friends and I who are building websites — we’re kids! We’re kids playing around with tools given to us by adults. In decreasing order of adultness, and leaving out an awful lot, I’m talking about things such as: the Von Neumann stored program computing architecture; the transistor; high-throughput fibre-optic cables; the Unix operating system; the sci-fi-ish cloud computing platform; the web browser; the iPhone; the open source movement; Ruby on Rails; the Stack Overflow Q&A site for programmers; on and on, all the way down to the code that my slightly-more-adult co-workers write for my benefit.
Irritating, though, how he assumes the reader will also see his sister's question as naive rather than pointing to a bedrock injustice.
posted by postcommunism at 8:27 AM on June 7, 2013 [5 favorites]


An awful lot of web startups have a business model that is essentially just a mediocre pun.

I have, as I mention in my profile, a lot of great ideas for best-selling products that are really just terrible terrible puns.
posted by gauche at 8:28 AM on June 7, 2013 [1 favorite]


TBH some pretty horrific things happen in web development when "Software engineers" step in to show us poor benighted putting-things-in-boxers how it's done.
posted by Artw at 8:28 AM on June 7, 2013 [13 favorites]


So this guy thinks it's super easy to just take a 3 month course and then get paid like hundreds of thousands of dollars as a web developer taking data from boxes, putting it in databases, and then taking out and putting it in other boxes?
...was only 21 when I became the chief technical officer of an American corporation. When that happened, I thought of my dad because he, too, had once been among the country’s youngest corporate executives, a chief financial officer (CFO) by the time he was 28. The only difference is that the company he helped to run in his twenties was Hardee’s, a fast-food restaurant chain with more than 1,000 locations...
Yeah, okay. What actually happened is that this rich guy happened to know the right other rich guys and he got job where he gets paid $150k for something pretty much anyone can do. I guess that's nice for him but it really has nothing to do with what actual programmers do actually do.
posted by delmoi at 8:29 AM on June 7, 2013 [25 favorites]


I'd be interested in some statistics on what percentage of software engineers are web developers. It can't be more than...5%?
posted by DU at 8:30 AM on June 7, 2013 [1 favorite]


I thought his point about how much cheaper it is to run a startup now, with cloud based app hosting and the like, was interesting.
posted by Aizkolari at 8:30 AM on June 7, 2013 [1 favorite]


Heh, first comment on that page is smarter than the article.
posted by postcommunism at 8:30 AM on June 7, 2013 [1 favorite]


This is a question about simplistic web development

I couldn't make it through this article. I think "simplistic" is the problem for me. Whether he's doing web development or back-end heavy lifting, there's just no depth to his thinking. I was hoping for some interesting questions and instead all we got was some kid trying to argue that his life represents everyone else's experience. If he's as good a coder as he is a writer, I'm not interested in either part.
posted by yerfatma at 8:30 AM on June 7, 2013 [3 favorites]


Socrates warned us about this kind of thing from this kind of person.
posted by boo_radley at 8:33 AM on June 7, 2013 [2 favorites]


what percentage of software engineers are web developers

It doesn't matter. I hate that sort of division, as though web development is a simple task for simpletons who don't have CS degrees. Some of the best and smartest coders I've worked with have been involved in front-end dev. I've never noticed a correlation between CS degrees and intelligence. Coding is work just like any other job: there are people who get shit done, there are people who talk a good game and there are people who actively fuck things up because they need to have a say even if they don't know what they're doing. Give me as much of column A and as little of columns B & C and we'll do well, regardless of what their job titles are.
posted by yerfatma at 8:33 AM on June 7, 2013 [6 favorites]


he gets paid $150k for something pretty much anyone can do.

It isn't, though. There's a legit shortage of people who are good at this particular form of box-wrangling, which is about as much like "putting things in boxes" as air traffic control is "telling people where to go". That's why the salaries are high.
posted by tylerkaraszewski at 8:34 AM on June 7, 2013 [12 favorites]


Yeah, I have little besides an overwhelming "meh" for the whole article.

If you have a CompE or CompSci degree you can do some very cool stuff, or you can also do some pretty boring, but still well-compensated, stuff. This guy took Option #2, and now he's having some sort of existential crisis about it, I guess.

First of all, it's an obnoxious complaint because it's not just First World Problems, it's First World With Good Degree and a Job Problems. Dude should be glad that he has a job. If he doesn't like it, I'm sure somebody else will. And he should be glad that he was guided into majoring in something reasonably useful in the job market and that he's not deeply in debt with a diploma in something stupid and/or practically useless.

Second, he could have, and still could, leave his presumably-comfortable but boring job doing web development -- hardly the cutting edge of computer science -- and do something riskier and more rewarding. Blaming his not-really-a-predicament on the industry is almost lulzy.

And third, the only reason that he made it as far as quickly as he did, to the point where he apparently feels like his reach exceeded his grasp, is because he started off with a shitload of privilege and probably a few business contacts and maybe a little help from Good ol' Dad. I don't normally fault anyone for playing the hell out of whatever hand they were dealt, but one should at least be aware of starting out with three aces before they complain that the game is just too damn easy.
posted by Kadin2048 at 8:36 AM on June 7, 2013 [7 favorites]


I thought his point about how much cheaper it is to run a startup now, with cloud based app hosting and the like, was interesting.

Is this the same James Somers who was complaining about his $20,000/month Heroku bill? Heroku is a really neat tool and fun to use, but I feel like it's a Stupid Tax being paid by Flavor of the Month coders who don't want to figure out AWS.
posted by yerfatma at 8:37 AM on June 7, 2013 [6 favorites]


Well let's hear 'em, gauche!

I'll start: Monitours--live streamed walkthroughs of museums beamed to people's computers so they can visit the Louvre from anywhere.

Simulachrom.es: Users upload photos of themselves, which are then modeled, 3D printed and then plated in high-gloss chrome.

WatchSwaptch: Users "subscribe" for a different luxury watch to be loaned to them each month. At the end of the month, they ship the watch back and are sent a new one. The Netflix of luxury watches!
posted by Admiral Haddock at 8:38 AM on June 7, 2013 [11 favorites]


> Whether he's doing web development or back-end heavy lifting, there's just no depth to his thinking

Yeah, that one bit:

"Hours are flexible and time off is plentiful. Fuck-ups are quickly forgiven. Your concerns are given due regard. Your mind is prized. You are, in short, taken care of....You can imagine what it does to the ego, to be courted and called ‘indispensable’ and in general treated like you’re the one pretty girl for miles."

He could also read that as the people above him patting their lottery ticket on it's head, but he seems perfectly happy to accept the more flattering premise.
posted by postcommunism at 8:39 AM on June 7, 2013 [1 favorite]


Okay but seriously my shitty freelance publishing-related career is going to be fizzling to an unspectacular end here in a few months, and this dude is telling me if I put myself through a few months of Rails classes I'm good to go? Is that for real? It sounds like it couldn't possibly be for real.
posted by Sokka shot first at 8:41 AM on June 7, 2013 [3 favorites]


Is this the same James Somers who was complaining about his $20,000/month Heroku bill? Heroku is a really neat tool and fun to use, but I feel like it's a Stupid Tax being paid by Flavor of the Month coders who don't want to figure out AWS.

I don't understand all of that post, but I think that services like Heroku and Appfog are for those Flavor of the Month people who want to get an app but don't have the time or expertise to figure out AWS. Rather than a Stupid Tax it's a cost to bear while you see if your service will be popular; if it is successful, then it becomes worthwhile to figure out AWS or hire someone who knows it.
posted by Aizkolari at 8:43 AM on June 7, 2013 [1 favorite]


It isn't, though. There's a legit shortage of people who are good at this particular form of box-wrangling
If you're actually talking about the simple HTTP post -> database -> fill in the template 'classic' web development then it actually is really easy and yeah I think anyone can do it with a little training, and it's not worth $150k.
Is this the same James Somers who was complaining about his $20,000/month Heroku bill? Heroku is a really neat tool and fun to use, but I feel like it's a Stupid Tax being paid by Flavor of the Month coders who don't want to figure out AWS.

From the article:
When you deploy an app to Heroku, you actually deploy it to a bunch of different “dynos” (viAnnotatertualized Ubuntu servers) that live on AWS. For a Rails app, each dyno is capable of serving one request at a time. They each cost $36 per month, or $79.20 per month if you buy the New Relic add-on.
$36 a month for a single threaded server? What? You can get an (Amazon web service) EC2 micro instance on the spot market for like $2.50 a month.
posted by delmoi at 8:44 AM on June 7, 2013


delmoi: "$36 a month for a single threaded server? What? You can get an AWS micro instance on the spot market for like $2.50 a month."

uhhhh i dont think you understand the rails-slash-heroku value proposition delmoi.
posted by boo_radley at 8:46 AM on June 7, 2013 [2 favorites]


$36 a month for a single threaded server? What? You can get an AWS micro instance on the spot market for like $2.50 a month.

Yep and then you just need to learn to be a sysadmin and you're good to go
posted by crayz at 8:47 AM on June 7, 2013 [5 favorites]


time or expertise to figure out AWS. Rather than a Stupid Tax it's a cost to bear while you see if your service will be popular; if it is successful, then it becomes worthwhile to figure out AWS or hire someone who knows it.
How much time and/or expertise do you think it takes to figure out EC2?
posted by delmoi at 8:47 AM on June 7, 2013


it actually is really easy and yeah I think anyone can do it with a little training

Basically every single occupation is like this. With "a little training" you can be a soldier or a plumber or an engineer or a nurse or a teacher or whatever. Everything's easy once you know how to do it.
posted by tylerkaraszewski at 8:48 AM on June 7, 2013 [10 favorites]


This guy is a fucking idiot.
posted by azarbayejani at 8:48 AM on June 7, 2013 [1 favorite]


I seriously can't believe I read that whole thing.
posted by azarbayejani at 8:49 AM on June 7, 2013


I'm reminded of this guy, suffering a similar shock to his weltanschauung, at a very high hourly rate.
posted by fatbird at 8:50 AM on June 7, 2013 [1 favorite]


How much time and/or expertise do you think it takes to figure out EC2?

That depends on what you're doing. Why don't you kitchen-napkin out your EC2-based architecture for running say a dozen Rails/Django/node.js apps you made over the course of a couple years, running different versions of the languages/frameworks and depending on a variety of Postgres/Mongo/Redis DBs/instances, with a git server and automated deployment and rollback, dynamic http proxying of hostnames to one or more backend app server instances, ability to scale up/down as needed for traffic, etc.
posted by crayz at 8:52 AM on June 7, 2013 [6 favorites]


It doesn't matter. I hate that sort of division, as though web development is a simple task for simpletons who don't have CS degrees.

It was neither a division nor a implication about simpletons. It was more wondering out loud about how you go from talking about "coders" to a tiny subset thereof: web developers.
posted by DU at 8:55 AM on June 7, 2013 [1 favorite]


I'm a developer. I guess that also makes me a "software engineer?"

It's funny... I was working from home the other day and my gf was sitting next to me, watching, maybe for the first time, what I do in the average day. She was like, "Your job... how the heck do you do it?"

The range of skills I'm required to know is kind of astounding -- linux, networking, apache, html, css, php, mysql, javascript, architecture, patterns, troubleshooting, etc... It took me years to get good with this stuff and the learning curve is relentless. ("I have to use another new framework now?") I have to do this while constantly bombarded with an endless torrent of IMs, phone calls, and emails.
posted by ph00dz at 8:58 AM on June 7, 2013 [25 favorites]


FWIW it seems to be a slightly better time to be a Python or Node.js developer, with Java holding steady and .net taking a dive unless you want to do sharepoint (Bleh).

Goodtimes for front end debs who can quote the holy scripture of Crockford.
posted by Artw at 8:59 AM on June 7, 2013 [2 favorites]


.net taking a dive unless you want to do sharepoint (Bleh)

SharePoint is literally Hitler
posted by crayz at 9:01 AM on June 7, 2013 [13 favorites]


She was like, "Your job... how the heck do you do it?"

The range of skills I'm required to know is kind of astounding...


Yeah, my son is learning programming (and is really, really good at it for his age). And then he comes to me with a question and I solve it without even looking at his code and I'm like, whoa, experience.

Of course, "you have a pointer problem" isn't much of a solution...

But also, he was writing a special program just to get certain words out of the dictionary. I showed him a command with a regexp that did that all in probably 1/100th the time. There's a lot of depth there that "I'm putting boxes on web pages" doesn't capture. Unless that really is all you know, which I've definitely seem in the wild.
posted by DU at 9:02 AM on June 7, 2013 [3 favorites]


It sounds like he is grappling with his own privilege.

It is, sadly, an enormous privilege to earn a good salary and have decent benefits. It should not be.
posted by yaymukund at 9:04 AM on June 7, 2013 [3 favorites]


Basically every single occupation is like this. With "a little training" you can be a soldier or a plumber or an engineer or a nurse or a teacher or whatever. Everything's easy once you know how to do it.
By "a little training" I mean like maybe three months maybe? It depends on what kind of framework they'd be using and how much handholding it does for them, and also whether or not they want to be able to do complex stuff with javascript.

But still the basic "taking stuff from boxes, putting it in databases, and then taking it out and putting it in other boxes" stuff is really not a vary challenging thing to learn how to do.

(Oh and of course you will need someone to setup the server environments for you)
posted by delmoi at 9:06 AM on June 7, 2013 [1 favorite]


SharePoint is literally Hitler

I got shafted doing support for a poorly-written webapp based on SharePoint, and I must disagree with you sir. SharePoint is a thousand Hitlers.
posted by mrgoat at 9:07 AM on June 7, 2013 [17 favorites]


That is a lot of Hitlers.
posted by Aizkolari at 9:08 AM on June 7, 2013 [11 favorites]


This guy is wrestling with entirely reasonable questions for everyone to ask. Am I adding anything of actual value to the world? Is the world fair?

Of course we must shit on him for not doing it perfectly and failing to distinguish between different job categories. Because larger social justice issues are secondary to properly delineating a front-end web developer from an assembly programmer. I'm surprised grammar hasn't come up yet.

Plus he is middle class!

I'm going to do my best to curb my participation in this behaviour from here on out. I can feel it killing my soul and poisoning the metafilter well.
posted by srboisvert at 9:10 AM on June 7, 2013 [17 favorites]


Because larger social justice issues are secondary to properly delineating a front-end web developer from an assembly programmer.

No, that 's not the problem we are complaining about. He's characterizing an entire profession as "putting things in boxes". We are saying there's a LOT more than that to it and it is used for a lot more serious purposes than "startup" webpages.

His subject should be "am I worth it" not "are coders worth it". He needs to justify his own job, he doesn't need to justify mine.
posted by DU at 9:12 AM on June 7, 2013 [7 favorites]


Man, I am working way too hard. I gotta get in on this hot rails startup of the month treadmill.
posted by Ad hominem at 9:13 AM on June 7, 2013


I'm in an odd portion of the market. I create software tools - libraries, assemblies, jars - for other software developers to use. It's something I've done for more than half my professional career and something that I excel at and at which many other software engineers, honestly, suck at. When I look at typical web APIs, my usual reaction is, "you're shitting me, right? This is chewing gum and string. What were they thinking?"

But so be it. If he wants to make himself suffer existentially for it for it, he's welcome to do so, or he could step up and apply his knowledge to other things. A guy at work participated in a hackathon to build a web-accessible seed saver database for farmers who are trying to preserve particular varieties of seeds. Awesome.
posted by plinth at 9:16 AM on June 7, 2013 [5 favorites]


The number of language choices are abundant. This means we can choose the "best" language for the job, meaning the most productive / easiest to program, to get the job done with the least human resource. But it also means we can choose multiple languages. Indeed it may be that the days of the General Purpose language, like C and so on, begin to fade as more and more specialized languages appear, for example Go language for concurrency. Mix and match many languages. One only needs passing familiarity with many languages to know which one to use for whatever function or module in the application.

Awk is fantastic for text processing. Go is fantastic for concurrancy. So I wrote an awk script that is called from a Go .exe that itself is called from a bash shell script and the whole thing rungs blazing fast and was easy to program. Or, I could have written the whole thing in general purpose language like C and it would have taken forever.
posted by stbalbach at 9:17 AM on June 7, 2013 [1 favorite]


That depends on what you're doing. Why don't you kitchen-napkin out your EC2-based architecture for running say a dozen Rails/Django/node.js apps you made over the course of a couple years, running different versions of the languages/frameworks and depending on a variety of Postgres/Mongo/Redis DBs/instances, with a git server and automated deployment and rollback, dynamic http proxying of hostnames to one or more backend app server instances, ability to scale up/down as needed for traffic, etc.
The original question was about apps that had not yet become popular, so scalability wouldn't be a big issue right away (initially you can scale up by getting larger and more powerful single instances without any reconfiguration, which can have 10gbps network pipes and hundreds of gigs of memory, and would probably be capable of handling hundreds of requests a second, at least)

If you have a bunch of apps you can create an EC2 image for each one and configure it with the specific versions of stuff you need, although if you're running out of date versions of web frameworks I would imagine you have some pretty serious security vulnerabilities.
posted by delmoi at 9:17 AM on June 7, 2013


and the learning curve is relentless

I think this is a crucial point. If you train to be a plumber, carpenter, or lawyer, how much of that training is going to be nearly useless in 2 years? In 5 years? If you're a software developer, especially working on new platforms, it could be 50%. Sure, skills like writing, general problem solving, and communicating with coworkers are going to help you your entire career, but what the hell am I going to do with all the Actionscript, Turbo Pascal, and x86 ASM junk rattling around in my brain? (I am also very good at using tables and GIF spacers for HTML layout)

On the other hand, if you had told me in the early 90s that I'd still be using UNIX on a daily basis, I would have laughed and laughed...
posted by gwint at 9:18 AM on June 7, 2013 [6 favorites]


> He's characterizing an entire profession as "putting things in boxes".

I think part of his disconnect is that he is just putting things in boxes and he knows it. He's aware that the tools he's using are much more complex than what he's using them to do, he's aware that they were written by people whose job requirements exceed his skills, and he's aware that his outsized salary is earned in part by standing on top of a robust structure of knowledge and resources that other people built and maintained.

The self-reflection displayed in the article isn't exactly deep, but it isn't entirely absent.
posted by postcommunism at 9:18 AM on June 7, 2013 [2 favorites]


There are a lot of crappy web sites out there. A lot of people can push boxes around but few people can do it well. If he can do it well, that's great. He can improve on his skills at pushing boxes around and he also has the option of doing something he finds more challenging or worthwhile. Or giving his money to charity.
posted by grouse at 9:21 AM on June 7, 2013


$150k seems like an insanely high salary for a Rails dev in New York.
posted by Kwine at 9:29 AM on June 7, 2013


Like many things, working software looks pretty simple and obvious, in retrospect. And there are many many many copies of copies of web sites basically cut and pasted. But getting something to actually work, especially the first time is just not something all that trivial, there seems to be rather more folks in the world when presented with a quite simple problem need to call the the help desk when even a quick google would solve it, let alone a tricky problem. So coders tend to earn their keep at the edge conditions.
posted by sammyo at 9:30 AM on June 7, 2013


Well let's hear 'em, gauche!

The problem is, they exist just long enough to make me laugh and my wife roll her eyes so, so hard. I should keep a list.
posted by gauche at 9:32 AM on June 7, 2013


You know what makes me feel good about a "putting things in boxes" front-end job? An eye towards going above and beyond on accessibility so when you're done, you leave one more place on the web that accommodates people with screen readers or other nonstandard interfaces that help those who are normally shut out of a lot of internet experiences.
posted by jason_steakums at 9:33 AM on June 7, 2013 [3 favorites]


Im sorry I just have to laugh about this, but this guy's company got $15 million dollars in VC funding for a wiki about rap lyrics?

Some quotes:
On Why Rap Genius Works:

“Rap Genius is not just crowdsourced. It started with us and like, six of our homies. It was homiesourced. We opened it up to the masses so it became crowd sourced. Then we decided we wanted it to ‘ballersourced’, [so we got a bunch of these huge stars verified on the site]“

“The secret ingredient of Rap Genius is love. We often tell people that Rap Genius was built on Love on Rails”

On Working With Marc Andreessen and Ben Horowitz, who funded their entire $15M Series A:

“We said we wanted such and such millions of dollars. [Marc] asked what we’d do with it; I said something really stupid, like we’d buy a bunch of companies. He just totally lost it, tapping his leg all over the place. I thought we’d totally tanked the meeting, but that’s just his way of showing love.”

“Ben is a real rap fan. He’s like the rap genius god father. We consider him a bro… What people don’t know is that he’s a marketing genius. He came up with the idea to call users ‘Scholars’, and ‘TopScholars’. He came up with NewsGenius. Ben, we love you dawg.”
posted by delmoi at 9:36 AM on June 7, 2013 [5 favorites]


i dont think you understand the rails-slash-heroku value proposition delmoi

I do and I still don't get it. If you're running at large scales you'd better have a sysadmin and failovers and 5 9s of uptime and all that, but Heroku's everyone's first stop now even for a toy project (which is fine because it's free until you really need a database). The gap between having Heroku (theoretically) abstract all of the problems away and learning just enough sysadmin to take a disk image someone else made for you that is exactly everything you need to get started isn't big enough to justify the cost to me. Admittedly, I'm pretty comfortable doing developer-quality sysadmin stuff after 10 years, but the difference in price would justfiy spending some time learning or just frigging hiring someone to set up the Amazon image for you.

dozen Rails/Django/node.js apps you made over the course of a couple years, running different versions of the languages/frameworks

I take the general point, but for Python/ Django, that's what virtualenv is for: I just bought a new laptop and once I have the basic infrastructure in place (Postgres, virtualenv, pip), getting an existing project set up locally is just a matter of cloning the repo, running one command to install the requirements and then grabbing a backup of the database via a second command.
posted by yerfatma at 9:38 AM on June 7, 2013 [3 favorites]


It's not really possible for me to just take a three month Ruby course and walk out into an $80,000 career... is it?
posted by DirtyOldTown at 9:42 AM on June 7, 2013


You know what makes me feel good about a "putting things in boxes" front-end job?

The other thing would be to realize the end goal isn't to put things in boxes. It's to solve a problem for users or to make users' lives better. I wish coders would stop insisting on putting the machine first and users second. I'd throw my computers away tomorrow if they didn't help me do things. Goddamn I hate coders. And probably people in general. For some reason that makes me a half-decent coder.
posted by yerfatma at 9:42 AM on June 7, 2013


I have, as I mention in my profile, a lot of great ideas for best-selling products that are really just terrible terrible puns.


Yes, yes indeed.
posted by lalochezia at 9:49 AM on June 7, 2013 [1 favorite]


The first few comments in the article are worth reading, and I think highlight the gist of what the author was getting at. Sure, he's adding value to the company that he works for, and they're paying him accordingly.

But the problem is that that's not necessarily the society I want to live in, with income distributions so skewed. This guy's on the far right of the hockey stick when it comes to income distribution, and he's starting to see how unequitable it is. It feels "wierd" making $150k a year pushing boxes around when the vast majority of Americans are struggling to raise families on much less than that.

It's about income inequality, whether the system we have is creating the type of society we want to live in. We're becoming MORE of a country of haves vs. have-nots, and if anything, I think the article is a symptom of a deep seeded feeling a lot of us have, that something's "just not right".
posted by Nquire at 9:51 AM on June 7, 2013 [5 favorites]


By "a little training" I mean like maybe three months maybe? It depends on what kind of framework they'd be using and how much handholding it does for them, and also whether or not they want to be able to do complex stuff with javascript.

But still the basic "taking stuff from boxes, putting it in databases, and then taking it out and putting it in other boxes" stuff is really not a vary challenging thing to learn how to do.

(Oh and of course you will need someone to setup the server environments for you)


You can't start from zero and be a useful web developer in three months. Putting stuff into and especially taking it out of a database is not trivial. How many people who started with zero programming experience are going to be able to even differentiate inner and outer joins after three months? Maybe some, but not people who were also busy learning how to use a regular expressions to parse phone numbers out of the old flat files they needed to enter into said database, or learning how to make those "boxes" line up the correct way on the page using CSS, or learning the syntax of SQL, ruby, HTML, CSS, javascript, and whatever else you might need to know for your particular job.

If you are talking about programmers who already know other languages, sure. If you're talking about inexperienced people who are going to have to learn the difference between "if" and "while" and "for" or what the notion of returning a variable means, then no, you're not going to have a useful developer in three months.
posted by tylerkaraszewski at 9:52 AM on June 7, 2013 [4 favorites]


or learning how to make those "boxes" line up the correct way on the page using CSS

Also you come out with grey hair and a haggard look after fighting your way through the cross-browser problems around this your first time.
posted by jason_steakums at 9:56 AM on June 7, 2013 [2 favorites]


[stands up] I am a developer an actual programmer, not a web typer, I justify my life by hopefully diverting money to "good" from an evil corporation.

I plant food that I plan to give away some of I raise animals and bees with the money I steal... I am a developer but I wish I was a human
posted by mrgroweler at 10:01 AM on June 7, 2013 [3 favorites]


How many people who started with zero programming experience are going to be able to even differentiate inner and outer joins after three months?

Of course, with the rise of ORMs, which comprise maybe the leakiest abstraction in wide use today, there are plenty of people with nominally extensive programming experience who couldn't tell you the difference.
posted by invitapriore at 10:03 AM on June 7, 2013


SharePoint is a thousand Hitlers.

That is a lot of Hitlers.


It's actually just the dongs.

(You don't want to know which bit of the Hitler they make SAP integration projects out of.)
posted by Artw at 10:06 AM on June 7, 2013 [1 favorite]


$15 million dollars in VC funding for a wiki about rap lyrics?

If there's one thing I've learned from my career on the Intertubes, it's that while it may be impossible to fund something that might actually be useful, fortunes can be raised for the most ludicrous nonsense if there's a chance that someone, somewhere will get laid as a result.
posted by Elizabeth the Thirteenth at 10:11 AM on June 7, 2013 [2 favorites]


The trick isn't knowing RoR, Redis,CouchDB,Cassandra, etc. The trick is being 21 and being willing to devote every waking hour to whatever hot new technology makes it to the front page of Hacker News. The trick is knowing that you don't need to know inner joins because "SQL doesn't scale". The trick is knowing that OOP sucks and private methods are dumb and Company X's API sucks, and Heroku is awesome, and Github used to be cool. The trick is posting dumb blog posts about FP, then arguing on twitter.

I talked to a developer the other day who told me java sucked because of curly brackets. He was like "Why does java need them, Python doesn't need them". I think he manages to write working programs in python entirely by accident.

These guys get hired not because they are great, or even good, developers but because they know the right things to say. Not that I fault them, you gotta get your start somehow. But programming can be brutal, a never ending assault on your self worth as you encounter whole classes of problems you never knew existed. You have to keep learning, working and pushing forward even after you have that "oh shit, I'm not as smart as I thought" moment.
posted by Ad hominem at 10:11 AM on June 7, 2013 [30 favorites]


$150k seems like an insanely high salary for a Rails dev in New York.

Cost of living, I guess.
posted by Artw at 10:15 AM on June 7, 2013


But programming can be brutal, a never ending assault on your self worth as you encounter whole classes of problems you never knew existed. You have to keep learning, working and pushing forward even after you have that "oh shit, I'm not as smart as I thought" moment.

This is totally true, but you'd never know it to be the case in talking to most programmers. Maybe the hubris is a defense mechanism.
posted by invitapriore at 10:18 AM on June 7, 2013


Well, someone has to make the glowing rectangles appear correctly!

Related reading:
* XKCD - Computer Problems
* The Onion - Report: 90% Of Waking Hours Spent Staring At Glowing Rectangles

posted by wcfields at 10:19 AM on June 7, 2013


You do reach a point where it becomes harder and harder to give a shit about whatever the hot new thing is. Spending all your free time or research gets to be a drag/impossible once you have family commitments too.
posted by Artw at 10:25 AM on June 7, 2013 [1 favorite]


That's true, and you get cynical because technologies are hot for like 10 minutes before the backlash.

Sometimes shit is just ridiculous. I just spend a day trying to figure out an issue and it turned out they were installing x86 binaries on a 64 bit server.
posted by Ad hominem at 10:46 AM on June 7, 2013


I'm okay with the backlash as long as it's funny.
posted by invitapriore at 11:05 AM on June 7, 2013 [3 favorites]


But programming can be brutal, a never ending assault on your self worth as you encounter whole classes of problems you never knew existed. You have to keep learning, working and pushing forward even after you have that "oh shit, I'm not as smart as I thought" moment.
I don't know, at a certain point all these new technologies are just a new way of doing the same thing in a slightly different way, maybe they're more efficient or more scalable, or something but it's basically the same concepts and principles, just a new syntax to express them. At this point I can pretty much sit down with a framework or language and start coding productively after reading some basic documentation.
posted by delmoi at 11:14 AM on June 7, 2013


This is why I like working for a research university. While I occasionally have a fleeting feeling that I'm missing out on the startup big money merry-go-round, once it passes I can at least pretend that I'm supporting something worthwhile like understanding earthquakes, predicting the weather, saving the oceans or understanding the universe. We don't have to jump on the latest web-scale craze, we have lots of wise and skilled people who have been doing the same sort of work for decades and longer. And the best part, an endless supply of work-study students to do the put boxes on web pages thing.
posted by zengargoyle at 11:16 AM on June 7, 2013 [6 favorites]


But programming can be brutal, a never ending assault on your self worth as you encounter whole classes of problems you never knew existed. You have to keep learning, working and pushing forward even after you have that "oh shit, I'm not as smart as I thought" moment.
I don't know, at a certain point all these new technologies are just a new way of doing the same thing in a slightly different way, maybe they're more efficient or more scalable, or something but it's basically the same concepts and principles, just a new syntax to express them. At this point I can pretty much sit down with a framework or language and start coding productively after reading some basic documentation.


technologies != problems
posted by invitapriore at 11:20 AM on June 7, 2013 [2 favorites]


I don't know, at a certain point all these new technologies are just a new way of doing the same thing in a slightly different way, maybe they're more efficient or more scalable, or something but it's basically the same concepts and principles, just a new syntax to express them. At this point I can pretty much sit down with a framework or language and start coding productively after reading some basic documentation.

Well yeah. I'm more talking about stuff like a user complains your application is slow, and it turns out he has a 2gb XML schema. Or someone wants to de-dupe addresses, but they are all in the same building and half the people are named James Smith, but they are really different people because the sales rep knows them all personally.

It is almost like being a plummer, if every day you showed up to the job site and a random amount of bathrooms had been added or removed overnight. Some people hate hot water and some want a special third knob for tepid water so you have to invent a new fixture. Then one day everyone decides pipes suck, so you have to tear them all out. Then someone comes along and says pipes are proven technology, put them back. Oh, and you don't have blueprints.
posted by Ad hominem at 11:22 AM on June 7, 2013 [11 favorites]


Lots of comments like this:

> If you're actually talking about the simple HTTP post -> database -> fill in the template 'classic' web development then it actually is really easy and yeah I think anyone can do it with a little training,

Really, I laughed out loud at this.

First, it's not the case that "anyone" could do this with training. It's not even the case that 10% of the population could do it. Why? Because most people don't have the aptitude to do even simple programming - and for a lot of people who have the aptitude, this material is so boring that they can't focus on it.

So given that you can read and understand lots of technical documentation and that you want to do this, making a demo site like this is something you could figure out reasonably fast.

But a demo site isn't what people want. That demo will go down the first time you get a New York Times article about your company - so millions of people's first impression of you is "crashed". That demo will be hacked the moment you get any prominence at all. As competitors appear and that demo has to add new features fast, you'll get to the point where you won't be able to make any progress at all. That demo won't work on a bunch of browsers or operating systems and it will take a great deal of work to keep it functioning.

To make solid, maintainable, secure, compatible sites requires grown-up engineers with a lot of smarts and a certain amount of experience.

(Note: I'm a programmer myself, but I do little web stuff these days - partly because it's a crowded field, but also partly because the "compatible" part involves doing awful things and learning a lot of stupid things...)
posted by lupus_yonderboy at 11:27 AM on June 7, 2013 [7 favorites]


Ad hominem: "The trick is knowing that you don't need to know inner joins because "SQL doesn't scale". The trick is knowing that OOP sucks and private methods are dumb and Company X's API sucks, and Heroku is awesome, and Github used to be cool."

What are you on about? I interviewed with James a couple days ago and none of this would have gotten me anywhere.
posted by your hair smells like cheese! at 11:28 AM on June 7, 2013


I think he buries the real issue in the final 3 paragraphs, and that his article would be far better titled "Is Coding Worth It?"

He was handed success, praise and money at a very young age, yet the one and only thing he seems to like doing -- writing -- earns him no respect, praise or money. He is willing to spend all his free time writing for nothing, doing complete rewrites for editors in the hopes of acceptance or validation. This is clearly his love.

Coding? Something that puts food on the table. He says as much himself, that he would quit the job, except he can't give up all the cash. He has no love for coding. He sees himself as a tool (specifically a shovel in a gold rush). A cog. He sees himself as immediately replaceable by anyone willing to read a manual.

In the mean time, he seems to confuse "this is pretty easy for me" with "anyone could do this." Of course this leads to him questioning why he's paid so much. Particularly against the foil of how little he's paid for his writing, his love, and frankly what he probably thinks he's actually good at (calls himself a mediocre coder).
posted by jermsplan at 11:29 AM on June 7, 2013 [6 favorites]


This is totally true, but you'd never know it to be the case in talking to most programmers. Maybe the hubris is a defense mechanism.

I keep a copy of Hacker's Delight easily to hand, so if ever I start feeling complacent in my skillz I can open a page at random and be reminded what a half-assed bodge merchant I really am.


We’re celebrated, we capture a lot of wealth and attention

There's a plenty of developers out there have/do none of that, I'd (quite literally) make more money stacking shelves in a supermarket, but choose to be part of a small business that develops for other small businesses (because, well, yesterday I spent the day up Ben Lomond as it was far too nice a day to sit at a screen all day, because that).

It's not like there aren't options for more fulfilling work/life (and with his background his options are fairly massive).
posted by titus-g at 11:31 AM on June 7, 2013


$150k seems like an insanely high salary for a Rails dev in New York.

The number I was getting thrown at me when I (a Senior level full stack Rails developer) when I was looking for jobs last year was $225k for jobs in Manhattan. For perspective, at the same time I was also hearing $120k in LA, $175k in SF, and $100k in Boulder. I took the Boulder job, because of the four that was the highest salary when compared against cost of living.

In fact, I think Rap Genuis is hiring, they may have been one of the $225k people.

$15 million dollars in VC funding for a wiki about rap lyrics?

When Kendrick Lamar shows up to your "wiki" and starts interpreting his and other people's lyrics, then yeah, people start throwing money at you.

Last: Anyone who thinks companies "should just learn how to use AWS" have never used Heroku. I'm not even sure they have used AWS all that much.

For me it's cheaper (in cost per hour after both environments are built) to build out my applications on AWS, but my salary is a hell of lot more expensive because I have the years of admin experience that lets me do so. Even then, it's often cheaper (when time in taken into account) to just use Heroku.
posted by sideshow at 11:32 AM on June 7, 2013 [2 favorites]


FTA: Writing is a mentally difficult thing — it’s hard to know when something’s worth saying; it’s hard to be clear; it’s hard to arrange things in a way that will hold a reader’s attention; it’s hard to sound good; it’s even hard to know whether, when you change something, you’re making it better.

It is also, evidently, hard to resist semicolons.

Something prima donna-ish can happen when you start believing stories like that.

You don't say! God, this fellow's self-regard is really insufferable. I stopped when I hit the hundredth instance of "I".
posted by seemoreglass at 11:37 AM on June 7, 2013


What are you on about? I interviewed with James a couple days ago and none of this would have gotten me anywhere.

Yeah, I don't know this guy and I'm not saying anything about him personally. He seems thoughtful so that puts him head and shoulders above most developers. I don't mean to impugn the guy, I'm sure he is serious about what he does, which is why he put the effort into thinking about what it all means.

I am just talking about my experiences both hiring developers and interviewing at companies. And maybe I'm being a bit too cynical.
posted by Ad hominem at 11:38 AM on June 7, 2013


> The trick is knowing that OOP sucks and private methods are dumb

This gets my award for "ignorant statement of the week".

Like any other technique, object-oriented programming can be a golden hammer but literally decades of experience all over the industry shows that object-oriented programming (the correct use of which strongly, strongly encourages the use of private methods) lets you generate small, medium or large software systems and gainfully employ programmers of quite different skill levels on the same project.

I'd venture to say that no competing technology has the track record that OOP has.

Again for the record here, I'm constantly telling people whose code I review, "That should be a function, not a class." I've been sending people copies of this seminal article for over a decade...

But again, it's the golden hammer issue. Objects are very powerful, but they're also heavier than a pure function. Pure functions are easier to test, easier to write, more modular (you can include ONE function, whereas when you include a class you need to include all its methods) and IF you can use them without doing violence to your code, you should.

That doesn't mean that classes are bad - my current project has 98 class definitions in it, I just counted! - but it simply means that it's a serious tool that needs to be used for the right job, and if you can get away without it, you should - I have 259 static functions (at the top level) in that same project.
posted by lupus_yonderboy at 11:40 AM on June 7, 2013 [2 favorites]


his gets my award for "ignorant statement of the week".

Well yeah. There was a spate of "private methods considered harmful" blog posts going around for a while like this one.
posted by Ad hominem at 11:45 AM on June 7, 2013


Really, I laughed out loud at this.

First, it's not the case that "anyone" could do this with training. It's not even the case that 10% of the population could do it. Why? Because most people don't have the aptitude to do even simple programming - and for a lot of people who have the aptitude, this material is so boring that they can't focus on it.
Okay, obviously what I meant is "anyone reasonably smart". 10% of the population is 30 million people. Just of the unemployed that's 1.17 million. Still way more then enough people.
But a demo site isn't what people want. That demo will go down the first time you get a New York Times article about your company - so millions of people's first impression of you is "crashed". That demo will be hacked the moment you get any prominence at all.
I was thinking along the lines of taking a job at some company that also has their own sys-admins and they would give you the stack and manage the servers, that is to say a web development job where you're just responsible for shuttling data from box to database to box (like what he was talking about). Yes, it would be much more difficult if you have to setup and manage your own servers and deal with scaling issues and whatnot, (unless you use Heroku or something like it like this guy did)

I mean remember MS Access? That was a tool that made it really easy to create "box -> db -> box" type apps on a local computer, I would guess that you could probably teach someone relatively smart the basics of access coding in a few months. I don't know if Rails is as easy as Access, but I would bet there are some pretty easy to use, gui-fied tools out there that n00bs can learn.
posted by delmoi at 11:48 AM on June 7, 2013 [1 favorite]


Monitours--live streamed walkthroughs of museums beamed to people's computers so they can visit the Louvre from anywhere.

I'd like Minotours. Fully rendered walk-throughs of the impressive digestive systems of some of our planets most beloved mythical creatures.
posted by urbanwhaleshark at 11:56 AM on June 7, 2013 [1 favorite]


Um, as others, I'm completely baffled by the $150k figure.

I work in a different region altogether, so out of sheer curiosity: Can someone tell me what a middle-aged (I assume that's a big strike against me on the startup-circuit) dev with some serious chops in software engineering, most of it earned working on web-applications (Java, PHP), can expect to make in the NYC market? And no, I don't do Ruby.
posted by oxidizer at 11:59 AM on June 7, 2013


Salary for Software Engineer III in New York, NY: Median = $105K
posted by seemoreglass at 12:06 PM on June 7, 2013 [1 favorite]


You could probably walk into a job doing java or c# on a random LOB app at 115-120k including bonus.
posted by Ad hominem at 12:08 PM on June 7, 2013


sideshow: "The number I was getting thrown at me when I (a Senior level full stack Rails developer) when I was looking for jobs last year was $225k for jobs in Manhattan."

Did a recruiter tell you that? Because you know they'll pretty much say anything without regards to truth, right? That's CTO-of-a-large-corporation pay.

Let me put it this way- if dev jobs here were paying that much, there would suddenly be no shortage of developers.
posted by mkultra at 12:17 PM on June 7, 2013 [1 favorite]


> Can someone tell me what a middle-aged (I assume that's a big strike against me on the startup-circuit)

It really depends on if you have "modern" chops. A lot of these people use PHP for some reason I can't fathom, so you'd probably be able to do tolerably well.

They often want a "token older guy" just to tell them they're full of shit. The question is - do you really want to work startup hours?
posted by lupus_yonderboy at 12:17 PM on June 7, 2013


This gets my award for "ignorant statement of the week".

And then you took it away from him by not realizing he was being sarcastic.

It's not even the case that 10% of the population could do it. Why? Because most people don't have the aptitude to do even simple programming

I can never decide if the biggest problem in technology is chasing after new technologies in the hopes they'll magically solve hard problems for you or the insistence on making a Guild out of programming, locking everyone else out and then acting like we're amazing and people should have to sacrifice goats to get a bug fixed. Programming is simply* thinking logically and learning to state problems fully and then making enough mistakes when solving those problems to learn more about what the word "fully" really means. Then iterate like that for some years until you get to a point where you either burn out from the dawning realization of how many things could go wrong for even the simplest use case or transcend and realize while you'll always be stupid, you're not as stupid as you were yesterday and that's a good thing. Come to grips with the fact you can't know everything about a problem space in advance so the best you can do is build good habits, make sure you always have a net and realize Truth is always relative and only solid in highly localized areas.

* That is to say, at its essence, not that it's simple. I don't know if it's a good or bad thing we don't strive to teach this kind of thought in schools. I feel like I've learned a lot about how to think from being a programmer, but I think it could be harmful and I'm leery of making people work for machines rather than the other way 'round.
posted by yerfatma at 12:18 PM on June 7, 2013 [8 favorites]


Artw: " .net taking a dive unless you want to do sharepoint (Bleh). "

What's that quote from... Christopher Lee, I think? About how he hadn't seen the movie, but by all accounts it was dreadful. He has seen the the house the paycheck from the movie, however, and it is wonderful.

That's why I'm a sharepoint developer.
posted by boo_radley at 12:18 PM on June 7, 2013 [2 favorites]


$225K is ridiculous for a general purpose developer in Manhattan. But if you can do numerical stuff well, you have a provable track record, and can stomach working for Wall Street, you can get more than that - a lot more. Someone was shopping me at "over $300K" working for Credite Suisse and thought I was joking when I said, "How could I explain this to my friends?" I'm happy to earn a fraction of that and still be able to look myself in the mirror.
posted by lupus_yonderboy at 12:20 PM on June 7, 2013 [2 favorites]


It isn't, though. There's a legit shortage of people who are good at this particular form of box-wrangling, which is about as much like "putting things in boxes" as air traffic control is "telling people where to go". That's why the salaries are high.

I think the point of his piece is that regardless of the legit demand and shortage of people who are good at this stuff, the industry adds very little social value compared to the wealth it generates.

This bothers the author.

It bothers me, too. Even if he has points that can be nitpicked.
posted by entropone at 12:20 PM on June 7, 2013 [4 favorites]


I think salaries for programmers will also depend greatly on the sector. If you're doing programming for non-profts or education (I'm in the latter), you're not going to expect to do as well as people in more lucrative sectors (like entertainment, evidently). But you might sleep better at night.

the industry adds very little social value compared to the wealth it generates.

Again, really depends upon the industry for which the programming is being done. You can't really say that to a sysadmin for MercyCorps, etc.
posted by seemoreglass at 12:23 PM on June 7, 2013 [1 favorite]


Hmmm, I'm not particularly celebrated, but I am making a smarter pill bottle (or similar).

guess as usual I'm doin it rong.
posted by tel3path at 12:30 PM on June 7, 2013


Come to grips with the fact you can't know everything about a problem space
This.
Bloody this.
I've been hacking on PDF for close to 20 years (go ahead and figure out how I started) and at this point I still can say, "wow, I learned something about PDF today" including how Acrobat and I differ about the interpretation of the specification.

There's also the Zen-like state when you look at programming languages and realize that there really is only one because they all pretty much do the same thing. Give me a language spec and a couple days and I'll be up and running. The only truly oddball ones are maybe Prolog and Brainf*ck and they're about equal for being useful (IMHO).
posted by plinth at 12:31 PM on June 7, 2013 [2 favorites]


You can't start from zero and be a useful web developer in three months.

Depends; You can be useful to someone else, presuming there's a use for someone who understands what they're looking at and can be a part of some of the gruntwork clerical aspect that almost any large job involves.

I'm sure a large percentage of those folks aren't competent to do that, but some who have the right methodical mindset will be. It's a variation on the sort of thing that some of the huge consulting firms used to do - take people who have been pre-qualified in some way and intensively train them on your structured methodology. You then turn them loose to reproduce it under the supervision of folks with enough experience to understand the forest layout and reasoning vs just how to plant trees where the map says X.

seemoreglass expresses the thought I had. I spent five years in education making things to help better deliver educational product, which is something I felt had value. Now I'm working on something that relates to transparent government. Last weekend I did Code for America and we got started on a project to streamline HUD applications.

In DC there's 107 properties with HUD spaces. If every single one of them had a spot and the applicant met the qualifications for all of them that would represent 107 pieces of paper that needed filling out, all at least slightly different. We worked on something that would put little bits of information in boxes (phrasing deliberately chosen) and make filling out apps notably easier.

That was a volunteer gig but we were collaborating with someone whose whole job is to do Peoplesoft work with a wonderful charity - Bread for the City - that helps people fill these things out. I think his job adds social value. I think the things I did for the last half decade added value.

Our society needs work and to the extent that this guy thinks that, great. But he's picking what he does. (At the risk of posting something here that speaks positively of GiveWell) If he feels shitty about that maybe he could decide that he's going to maximize his earnings in order to do more good. Or he can leave that behind and choose a place where he feels like he's directly contributing to making things Better.

But he's got options to make those choices to make the world the way he wants that most people would kill for. I don't understand the ennui.
posted by phearlez at 12:33 PM on June 7, 2013 [1 favorite]


> And then you took it away from him by not realizing he was being sarcastic.

Heh, you're right. As we know, people are very bad at interpreting sarcasm on the net.

Aside/Rant: There are a lot of people who seem to hate OOP, and people who are honestly writing stupid articles like the one linked to above with facepalm statements like:

> Many developers believe that the internal methods of their objects should be private. While this thought process is understandable, it’s also wrong. Though you may wish to prevent internal methods from being externally accessible, this only requires that they be marked “protected.”

He fails to understand that when you create a protected interface, it then becomes part of the API which you cannot change - or indeed understand the idea of data hiding at all... He also fails to understand that re-using classes by extending them is very often the wrong move - if you can, you should use composition, not inheritance! And this is a guy who wrote a book on the subject.

[end rant - back to the main topic.]
posted by lupus_yonderboy at 12:37 PM on June 7, 2013


(I'll be repeating some points made above here...)

Some quote I found interesting:
This cascade of invention is a miracle. But as much as I want to thank the folks who did it all, I also want to warn them: When you make it this easy to write and distribute software, so easy that I can do it, you risk creating a fearsome babel of gimcrack entrepreneurship.
My web developing career (aged 1 year and 6 months so far) is based off of a dashboard that displays numbers and such. From there, it cascaded into producing a web document that tries its best to illustrate to a community what sort of science is taking place on public and private beaches. And along the way, I have been making sure that things are kept tidy on the main lab page.

Yes, the technology is getting fairly easy to produce and maintain. Yes, it can seem like pretty dull and uninteresting work sometimes.

But: I am only beginning to really internalize that through this work I am moving people and its not just me making a whole bunch of soon to be irrelevant glowing boxes with charts, numbers, content, and etc. I just got back from an environmental conference related to the lab I work with, and met a lot of people who really really like what I did and am doing.

It's having an impact in terms of how measurements and results get communicated to others, or how others interface with science. It's helping others make decisions.

It's having a social impact that's tangible. Having a social impact is an incredibly hard and challenging thing to do, and I am internalizing that if I work with people and do a little typing, and the same people I work with sell the product of my typing, things happen. But again, this is hard work.

Working with people + a little programming or web dev + a little bit of marketing by the people I work with = some social output. Repeat this... It's not just making glowing boxes with stuff, it's moving people, and it's not irrelevant.

Web developers are like that oil can to the Tin Man in The Wizard of Oz: it gets people moving. A web developer's value is composed of part developing and part figuring out what impact the development will have.

It's nothing to dismiss. Also nothing to dismiss: the cognitive ability to know how this stuff works. I tell you it is a discovery to realize that the mindset of programming is much further apart from the mindset of scientists than one might think. It's pretty crazy. And if that distance is great, then you can imagine the distances from the mindset of programming to those of other fields (admitting some fields might be closer). That right there is another source of value.

End of slight rant... the article resonated with a way I thought not too long ago. I know the feeling, just need to take a step up and realize there's something big going on.
posted by JoeXIII007 at 12:49 PM on June 7, 2013 [5 favorites]


I'd be interested in some statistics on what percentage of software engineers are web developers. It can't be more than...5%?

But it's a REALLY VOCAL 5%.
posted by We had a deal, Kyle at 12:51 PM on June 7, 2013 [3 favorites]


> Many developers believe that the internal methods of their objects should be private. While this thought process is understandable, it’s also wrong. Though you may wish to prevent internal methods from being externally accessible, this only requires that they be marked “protected.”

He fails to understand that when you create a protected interface, it then becomes part of the API which you cannot change - or indeed understand the idea of data hiding at all... He also fails to understand that re-using classes by extending them is very often the wrong move - if you can, you should use composition, not inheritance! And this is a guy who wrote a book on the subject.


I have to assume that most people's understanding of OOP begins and ends at the "Bear is a subclass of Mammal!" stage. Because, seriously, I think the phrase "composition not inheritance" or something like it appears on the first page of Design Patterns. And I don't even want to get into how often I see the substitution principle violated for no good reason out in the wild.
posted by invitapriore at 12:52 PM on June 7, 2013


There are a lot of private methods suck blog posts around the web. Private methods are a code smell, private methods are stupid.

This is like a programming meme that won't die, it just keeps popping up.

Some of it has to do with TDD, people want to test something, but it is marked private. Some of it is just dumb, one post I can't find right now the author maintained that he once marked a method private, then he had to go back later and mark it public, so private methods are pointless.
posted by Ad hominem at 1:03 PM on June 7, 2013


Aside/Rant: There are a lot of people who seem to hate OOP

I hate these people too. I get not every problem is solved with a hammer. I don't get proselytizing about how hammers might have been useful in the past but these new noodles are way better. Anecdotal, but I also note I've yet to meet an anti-OOP person who knew the first thing about Functional Programming. Or much of anything else.

posted by yerfatma at 1:10 PM on June 7, 2013 [1 favorite]


This blog post from a few years ago is the best takedown of the attitude that web development is just about "putting things in boxes" that I've seen. The One in Which I Call Out Hacker News.
posted by Space Coyote at 1:20 PM on June 7, 2013 [2 favorites]


There are a lot of private methods suck blog posts around the web

Without wanting to hurt anyone's feelings, I note a couple of the relevant links in the thread are to PHP coders. I learned on PHP4 & 5 and I appreciate thinking OOP falls down in places because of PHP's limitations. When I got a chance to work in other languages, starting with .Net and Python, I understood OOP a lot better. Neither PHP (maybe v6 is different) nor JavaScript (a language I love) would give you much of an appreciation for OOP and those were the lingua franca of the web for a long time..

That said, I once worked on a project where my co-programmer tortured pretty decent OOP out of VBScript/ ASP. I still don't understand what he did to get decent inheritance out of it.
posted by yerfatma at 1:28 PM on June 7, 2013


Reminds me of a rant I read somewhere by a campus speaker discouraging new grads from anything OOP because "it's stupid and a waste of time". Then he went on to describe his career of PHP, JavaScript, and Ruby work.
posted by ceribus peribus at 1:33 PM on June 7, 2013


> Neither PHP (maybe v6 is different) nor JavaScript (a language I love) would give you much of an appreciation for OOP and those were the lingua franca of the web for a long time..

Javascript has a super-cool object model which I have made heavy use of - in my music projects, admittedly. It's totally promiscuous - you can hang a member or method off any object you like, even system objects - but it's really easy to use with just a little bit of work.

While some developers don't make use of it, others use it consistently and it sometimes makes your coding much clearer and easier. If you're using Javascript on a regular basis, it's worth at least taking a few minutes to check it out.
posted by lupus_yonderboy at 1:54 PM on June 7, 2013 [5 favorites]


I get the feeling that a lot of people have been kind of evaluating OOP, after how long of OOP being the dominant paradigm? 20 years? One interesting conclusion is that inheritance proves to be a lot less useful than the big OOP brochure said. Also, reuse of classes outside of core APIs seems to happen more in textbooks than it does in working code. It's a big topic and a topic for someone smarter than me, with wider experience in the field.

Anyway, many web development and even mobile jobs are just shoving frameworks around until you've made another version of the same thing you always make. Not all of it is like that, of course, there are brilliant innovative things being done. But there is a big sucking force pulling you in to work like that, since so many clients just want something to shovel ads at people with.

You want to see some real "software engineering"? Look at yesterday's SIGGRAPH post. I would happily live under those people, ruling as wise programmer kings.
posted by thelonius at 2:22 PM on June 7, 2013


Javascript has a super-cool object model

I'm with you. I just meant that if you read about OOP in the abstract and then try to apply it in JavaScript, things don't usually map up. Prototype-based inheritance is just different enough that I struggled with it for a long while. Probably still do.

Also, reuse of classes outside of core APIs seems to happen more in textbooks than it does in working code

Maybe I'm just abstraction obsessed, but that's not true for me. I recently inherited a project I had built and then given over to someone else to maintain because I was too expensive. My (to me, admittedly) nicely abstracted set of models for types of articles (article, news item, etc) had been thrown out and turned into one 50 field monstrosity where half the fields are empty for any given item. To a certain extent it's a matter of making an effort.

And the developer who did that has just released a really popular game. So, y'know, "real" programmers v web developers.
posted by yerfatma at 2:47 PM on June 7, 2013


Then iterate like that for some years until you get to a point where you either burn out from the dawning realization of how many things could go wrong for even the simplest use case or transcend and realize while you'll always be stupid, you're not as stupid as you were yesterday and that's a good thing.
I don't really think that's true for everyone, though. I mean I personally feel like I've gotten to a point with programming where the only 'improvements' I can make are (A) re-learn how to do something I already know how to do on a new platform or framework or language, which is useful but doesn't make you 'better' or (B) learn something highly specialized and esoteric that would only ever be useful if I got a job in that niche.

I already talked about A, but for B it's like, I've thought about trying to write my own OS, or programming language, or video codec or something like that. I think all I'd get out of that would be bragging rights at this point, though.

I've done things like writing my own graph database engine from scratch, literally just using memory mapped files and setting individual bytes, which meant I had to write my own memory allocator. In fact after that I actually wrote my own (very basic) linear algebra library to solve eigenvectors of (matrices relating to) those graphs. That was fun, but kind of a waste of time really.

The thing is, before that I do remember feeling like I was getting smarter and becoming a better programmer, but now it's like there's not really anywhere else to go in terms of just pure programming.

I've done tons of network programming, 2D graphics programming, UI stuff, machine learning, etc. And, honestly I just don't find programming very difficult at all any more.

In fact it's so easy I end up finding it more enjoyable to start at a really low level rather then deal with reading all the documentation and deal with all the dependency crap and configuration for libraries and frameworks. So for example for my project powershop I wrote my own webserver (again) because I didn't want to bother with configuring a servelet container and dealing with a bunch of XML to configure it (but at least this time I used an http library instead of raw sockets :)). All the UI stuff is done in javascript, only JSON and static HTML is sent from the server, I didn't use any javascript frameworks (like jQuery) at all, etc. This was just a personal side project I was doing for fun though.

So basically I don't agree with the whole "in order to be a programmer you have to accept that you are stupid" / "it's brutal you're not as smart as you think" thing.

(I guess the only 'general' skill I've always wanted to pick up but haven't gotten around too is 3D graphics programming with OpenGL. So far I've only done very basic stuff with it.)
Javascript has a super-cool object model which I have made heavy use of - in my music projects, admittedly. It's totally promiscuous - you can hang a member or method off any object you like, even system objects - but it's really easy to use with just a little bit of work.
Google has a great tool called the closure compiler which will do static type checking on JavaScript code. It can definitely catches a ton of errors that could be a pain in the ass to debug in the browser.
posted by delmoi at 2:50 PM on June 7, 2013 [2 favorites]


It sounds like something is "pure programming" if you already know about it and "highly specialized and esoteric" if you don't.
posted by invitapriore at 3:25 PM on June 7, 2013


I feel for this guy; I really do. I've been in his boat. Fact is, even if a job bores you to tears, it can be hard to leave if they treat you well and pay you well. I took that about as far as I could go at my last job, and it nearly ruined me as an engineer. Seriously! Not only had I lost my love of coding, but I was considering some pretty extreme measures to get it back (e.g. self-funding a startup, taking a trip around the world, etc). What I got out of the experience : liking your work is not merely a fringe benefit. You must think of it as a working condition, kinda like having an ergonomic workstation. If you're keyboard's at the wrong height, you may get carpal tunnel. You work a job that bores you to tears, you fry your brain. This guy needs to shit or get off the pot : either get a job that doesn't amount to "moving around boxes", or follow his dream and fail at being a writer before inevitably crawling back to the industry. Heh.

As for "the right way to code", I don't involve myself in those discussions anymore. I've found that every shop has a self-appointed code nazi who feels it's his god-given duty to make everybody code like him. This person should be ignored at all costs. Not because they're never right -- because sometimes they are. No, they should be ignored because half the time they care more about the act of coding than the problem they're allegedly trying to solve, and the rest of the time they care more about being right than they do about anything else. This person will vitiate any joy you ever took in your work, and you will be left wondering what you've allowed to happen to your soul.

OOP is one of those things : the worst methodology out there, except for all the other ones we've come up with. It's a useful abstraction. However, to a certain kind of programmer, it's an invitation to horrendously over-engineer their code. It usually starts with some kind of thought process like "Yeah, I know it's just a class for updating the user's preferences, but what if we need to use it to control an elevator?" And before you know it, you have an AbstractThingFactoryStateListener where all you needed was a class for updating a user's address. I like to employ the YAGNI principal -- it helps me realize when I'm worshipping the false god of reusability.
posted by evil otto at 3:36 PM on June 7, 2013


In fact it's so easy I end up finding it more enjoyable to start at a really low level rather then deal with reading all the documentation and deal with all the dependency crap and configuration for libraries and frameworks.

This, a thousand times.

I am going to say something provocative which a lot of people are not going to like: If you do not know how to code your application in assembly language, you are not programming.

Not that you should code in .asm, of course; that is very rarely a good idea outside of certian limited or time-critical environments. But programming in assembly, or a close high-level language like plain C or old-school Basic, teaches you that the machine is a definite tool which can and should be understood to tame it. If you get into trouble because the person who wrote the high-level tool you're using made a mistake, you can drill down and figure out what went wrong and maybe fix it. (The inability to do this is what drives all those "private methods bad" rants.)

But if you learn on something like Rails or JQuery, and you have no idea how the numbers are represented and where they are stored and how searches and sorts are performed, all you will learn is that the machine is a capricious djinn which magically fulfills your wishes if you recite the proper incantations -- and only if, for reasons you don't really understand, you recite them just so.

In the case of something like Javascript, which yes has some cool ideas but also enough really, really awful ones to make it a freakish nightmare to use without special tools to tame it, that djinn actually has a monstrous sense of evil humor and loves to stomp on you for random and inexplicable reasons. Programming in .asm is far more pleasant and predictable and not, if you know how to organize your work, all that much harder once you've built up a suitable library of support functions.

I am one of those people who hates OO because I hate anything that distances me from the workings of the machine. I can and do program in Javascript; I recently made my own custom alarm clock out of a $30 WinCE machine using its built-in obsolete version of IE as the programming engine, and an HTML table to create a 7-segment display. But I am lost as to whether a method will be useful until I try it, because when I tell it to change the color of a DOM element like a table cell back color, exactly how does that make it to the LCD? I have no clue, and so I flail about seeing whether things will be fast enough where in other environments, like C or VB or any embedded dev system I just know. Because I know how the thing works and I know it can do what I'm asking it to do.

The fact that so many people, apparently like the poor flower in the OP, are taught at such a level of abstraction today (when was the last time you met someone whose degree didn't include the word "engineer" who was taught enough finite math to know when floating point numbers break?) is why modern computers can, with some accuracy, be said to generally suck. When you call the guy who wrote your application using a framework he didn't write that runs on a platform the framework guy didn't write that is compiled by a tool the language designer didn't write that runs on an operating system the compiler compiler writer didn't write that runs on a layer of device drivers that the operating system manufacturer might or might not have bothered to test, and you tell the application guy that his program crashed, he is pretty much helpless. Even a core dump will tell him nothing because he doesn't know what level it will represent or what any of the information means.

Whereas if I code it all up for myself I know where the bodies are buried and where to go if one of them starts stinking the place up. Chuck Moore had this right and everyone else is wrong. One of the most useful things I ever did was to write my own floating point library for x86, because I was hacking an embedded box that didn't have an operating system or support for any standard API. That taught me more about avoiding the use of floats than I learned from The Art of Computer Programming. It taught me that floats are ugly and that most problems can, if you are sufficiently motivated, be solved without them.

The result is that my code is more stable and efficient, very noticeably so after a career of having little epiphanies like that. Nowadays the small company I work for makes a sales pitch out of the stability of my bespoke code compared to the systems we've replaced. And while I don't make even $100K a year, I've worked continuously since 1985 without ever worrying about whether I will have a job or be able to make my expenses. And in Louisiana my standard of living is probably higher than that of somoene making $200K in NYC.
posted by localroger at 3:39 PM on June 7, 2013 [7 favorites]


...but now it's like there's not really anywhere else to go in terms of just pure programming.

Now that makes me laugh out loud :)

I seriously think that programming is one of the most intellectually (and socially) challenging pursuits that humanity will ever try to deal with. Programmers almost never completely understand their software (that's why bugs are always present). We have no idea how to write large, correct software systems except to spend insane amounts of money--$1000 per line of Space Shuttle code or whatever.

We know so little about writing software.
posted by jjwiseman at 3:45 PM on June 7, 2013


Metafilter: bespoke code
posted by sammyo at 3:49 PM on June 7, 2013


I am going to say something provocative which a lot of people are not going to like: If you do not know how to code your application in assembly language, you are not programming.

Fair enough, I am not programming.

Still get the same results and paid the same rate though.
posted by Artw at 3:58 PM on June 7, 2013 [4 favorites]


sammyo: "Metafilter: bespoke code"

who will by my biiiits? Fresh tested! Optimized by hand! Who will buy this lovely code?
posted by boo_radley at 3:59 PM on June 7, 2013 [1 favorite]


who will by my biiiits? Fresh tested! Optimized by hand! Who will buy this lovely code?
Steve Gibson, is that you?
posted by me & my monkey at 4:07 PM on June 7, 2013


Yes Artw, you can be paid quite well, better than I am, for invoking the djinn.

Why understanding your code is important:

I once wrote an application that ran to about 600 lines of a kind of pidgin VB which was the native language of a "smart" (and those scare quotes are justified) scale controller. What this little puppy does is fill a hopper, wait for stability, weigh the load, dump the hopper, tabulate the result, and at the end of a run print a nice set of totals. Simple, really. Anybody could code it.

Except that the hopper is the size of a living room and holds 50,000 pounds of raw sugar. It cycles about once every 45 seconds and handles about eight million pounds of sugar a day. It has been the cash register for one of the largest sugar refineries in North America for over 10 years.

Bulkweighers are subject to systematic errors if you don't code them right, for example if you capture the weight before it's fully stable or don't properly account for material that stays in the hopper when you dump it. A few years ago my customer got in a dispute with one of their suppliers and they hired a team of engineers to audit everything.

By the time they reached Louisiana they had already pretty much decided the problem was on our end so the onus was on me. I showed them the bespoke (which means "custom written for a single customer") application I'd written for them. They consulted the documentation for the controller, and watched it process about 20,000,000 pounds of sugar, writing down observed weights and adding them up and comparing their results to what my program was printing out.

At issue was a disputed 0.3% systematic error which had been going on for a couple of years. If they had found anything wrong with my system millions of dollars would have traded hands.

What happened was that even though they had already cleared the system at the other end they decided to check it out again. They eventually found that at the other mill, which had two systems they'd cross-checked, both systems had the same systematic error. Those systems were off-shelf -- there are enough bulkweighers in the world that a few manufacturers make dedicated boxes to control them -- but the enormous size and cycle time of the sugar hoppers were beyond what their programmer had bothered to check for in his canned app. I had noticed some anomalies in the settling when we installed it though (50,000 pounds has a bit of an effect on the three storey tall structure holding it up) and so I had built in especially paranoid settle checking.

If I had written that thing in something like Javascript I'd have been toast. I had to justify every line of my code, and convince the auditors one of whom was an engineer far more familiar with the application and its hazards than I was that we could show the box was doing what I'd told it to. (The platform I used has its own quirks, but over the years I've learned where they are, in a couple of cases by reverse engineering the firmware.) Knowing how your shit works can save your ass.
posted by localroger at 4:17 PM on June 7, 2013 [6 favorites]


I am going to say something provocative which a lot of people are not going to like: If you do not know how to code your application in assembly language, you are not programming.

Yeah, what Artw said. I don't really care if you call what I do "programming" or not, I care about making computers do useful things. (Actually, that's not even true: what I care about is solving people's problems. It just so happens that making computers do things is a good way to do that.)
posted by asterix at 4:18 PM on June 7, 2013 [3 favorites]


If I had written that thing in something like Javascript I'd have been toast. I had to justify every line of my code, and convince the auditors one of whom was an engineer far more familiar with the application and its hazards than I was that we could show the box was doing what I'd told it to. (The platform I used has its own quirks, but over the years I've learned where they are, in a couple of cases by reverse engineering the firmware.) Knowing how your shit works can save your ass.

I am unsure what language choice has to do with anything you are saying there.
posted by Artw at 4:30 PM on June 7, 2013 [2 favorites]


The notion that you should implement everything above the assembly level is great and all if your job is to write the 50 thousand pound hopper controller in a few hundred lines of code, but it's not feasible if you want to write, say, a phone app. Or anything delivered over the web. Or anything for mass consumption. Or anything with tens of thousands of lines of code in it.

Some smart guy once said that computer science is the science of abstraction, and I'm inclined to agree. The point of inventing higher-level languages is so that the coder doesn't have to think about what's under the abstraction layer 99% of the time. S/he should still have some conceptual notion of what's under there (e.g., what a compiler does, or how a library works), of course, but not have to reinvent those wheels every time. Yes, language compilers and stable libraries will still contain bugs, but I'm going to argue that a solid language/library will result in a lower overall error rate than inventing the whole stack every time you want to create an application.
posted by axiom at 4:31 PM on June 7, 2013 [4 favorites]


The point of inventing higher-level languages is so that the coder doesn't have to think about what's under the abstraction layer 99% of the time.

I actually agree with this completely. The point isn't that you eschew the high level environments, but that when you're in the 1% of the time you do have to think about what's under the abstraction layer, you have the access and skills necessary to do so.
posted by localroger at 4:45 PM on June 7, 2013 [4 favorites]


I am unsure what language choice has to do with anything you are saying there.

Some languages are tight, stable, and predictable, and you can make your case to the auditor that the code you've written will do what you say it does.

Some languages are loose, make lots of hidden decisions some of which might not be the ones you'd make, and code can do surprisingly different things from what a reasonable person would expect.

When you cannot look at a short segment of code and tell what it does because you don't know what happens inside a class or because you don't know if an operator has been overloaded (and what moron was it who ever thought operator overloading was in any sense a good idea?) then you have a problem.
posted by localroger at 4:52 PM on June 7, 2013 [1 favorite]


If you do not know how to code your application in assembly language, you are not programming.

Eh, I find I can drive a car just fine without knowing the intricacies of internal combustion engines, gear boxes and suspension, and the fact that I *do* know a bit about those things (owning a classic Mini will do that to you) doesn't make me better at driving the car.

When you cannot look at a short segment of code and tell what it does because you don't know what happens inside a class or because you don't know if an operator has been overloaded (and what moron was it who ever thought operator overloading was in any sense a good idea?) then you have a problem.

To carry the metaphor a bit farther, when you have a problem that your limited knowledge can't fix, it's time for a mechanic (or more often these days, Google).
posted by Mooski at 4:57 PM on June 7, 2013


Eh, I find I can drive a car just fine without knowing the intricacies of internal combustion engines

My wife found out the hard way that this is not always the case. When our Geo Metro overheated on a trip she decided, since she'd done the same thing with the '66 Cadillac we once owned, that she would just drive on through. She was quite surprised when it only got eight miles down the Interstate and flummoxed when I told her it wasn't worth repairing. Knowing how the car works can save your ass.

To carry the metaphor a bit further, you have to know enough to know you need a mechanic.
posted by localroger at 5:00 PM on June 7, 2013


It sounds like something is "pure programming" if you already know about it and "highly specialized and esoteric" if you don't.
No, I know a lot of things that are highly specialized and esoteric. What I meant is that it's a skill you'd likely never actually use unless your job was to do that specific thing. Like writing your own OS or programming language. For most programming jobs those sorts of skills will never come into play.
I seriously think that programming is one of the most intellectually (and socially) challenging pursuits that humanity will ever try to deal with. Programmers almost never completely understand their software (that's why bugs are always present). We have no idea how to write large, correct software systems except to spend insane amounts of money--$1000 per line of Space Shuttle code or whatever.
There's all sorts of research going into things like really complex static type systems and so on, and those things are interesting, and learning Haskel is on the list of things I'd like to do at some point - but it is pretty esoteric in terms of any practical application, unless I wanted to become a programming language researcher.

It isn't like I don't want to do these things, I totally think they would be fun. And it's not like I think I wouldn't be able to do it either. It's simply a question of time and priorities, right now I'm working on learning HBase and Hadoop, and I want to do some more in-depth android programming, and I also have projects I'd like to implement

What is it you think an individual programmer (as opposed to society in general) would need to be able to do to qualify as a good programmer in your mind?
If I had written that thing in something like Javascript I'd have been toast.

JavaScript does have a byte array data type now, but in the past if you really needed integer precision you could have used something like hexadecimal coded strings to represent fixed-point numbers if you really needed to.
I am unsure what language choice has to do with anything you are saying there.
It's because JavaScript uses floating point numbers for all mathematical operations, you can end up with subtle mathematical errors when you wouldn't expect. He's complained about it before :P.
posted by delmoi at 5:15 PM on June 7, 2013


To carry the metaphor a bit further, you have to know enough to know you need a mechanic.

I agree - I think that where we disagree is on what level of knowledge is required.

Don't get me wrong - I'm in awe of folks that work at that level, I just don't know that excluding everyone who doesn't from the term 'programmer' is a bit over the top.
posted by Mooski at 5:16 PM on June 7, 2013


A professor once hired me to write a data collection application for her monkey training device, which consisted of a key the animal could press and a joystick it could frob around, and a reward delivery apparatus (monkey biscuit or squirt of orange juice.) And a controller card in her lab PC. The card had documentation! This revealed that key presses or joystick manipulation caused certain values to appear in some on-card registers, while writing to other registers from the PC end worked the reward device. Of the languages available to me in that situation the only one that seemed remotely likely to work was x86 assembler. I knew just barely enough asm to do it. (Not without the help of the Internet, either!) It wasn't a 50,000 lb hopper but it was, technically speaking, bare-metal coding.

Even now I can't think of a way to do it in either html or css.
posted by jfuller at 5:22 PM on June 7, 2013 [1 favorite]


When you cannot look at a short segment of code and tell what it does because you don't know what happens inside a class or because you don't know if an operator has been overloaded (and what moron was it who ever thought operator overloading was in any sense a good idea?) then you have a problem.

Neither of those an inherent problem of JavaScript.

Delmoi has a better argument there about floating points, but I have a strong suspicion you don't know what you're talking about, probably due to being a "programmer".
posted by Artw at 5:24 PM on June 7, 2013 [1 favorite]


> Don't get me wrong - I'm in awe of folks that work at that level, I just don't know that excluding
> everyone who doesn't from the term 'programmer' is a bit over the top.

If you've never programmed in binary by setting front-panel switches you can't really be said to have lived.
posted by jfuller at 5:24 PM on June 7, 2013 [4 favorites]


If you've never programmed in binary by setting front-panel switches you can't really be said to have lived.

HAHA you don't really want me to say it do you.
posted by localroger at 5:27 PM on June 7, 2013


If you do not know how to code your application in assembly language, you are not programming.

Dumb statement. This is why:

Some languages are loose, make lots of hidden decisions some of which might not be the ones you'd make, and code can do surprisingly different things from what a reasonable person would expect.

You're right about this, but your solution is not to understand where the slack lies and how it can be bracketed and controlled, it's to use an iron rod instead of a rope so there's no such thing as slack. More than that, you're suggesting that it's impossible to learn about slack unless you start with iron rods.
posted by fatbird at 5:28 PM on June 7, 2013 [1 favorite]


but your solution is not to understand where the slack lies and how it can be bracketed and controlled, it's to use an iron rod instead of a rope so there's no such thing as slack

Actually you're wrong about this; I might have said more but it was an already long comment. The embedded controller had its own sloppy bits. I have reverse-assembled bits of the firmware to figure out what functions to avoid.

You cannot bracket and control the slack if you do not have the tools to identify the slack.
posted by localroger at 5:31 PM on June 7, 2013


I understand and nominally agree with the core of what you're getting at, localroger, but you're way over-reaching in the specifics.
posted by phearlez at 5:35 PM on June 7, 2013 [1 favorite]


I think we can agree all programming languages suck.

I mean even with assembly you can't really know how the processor breaks things down into uops, how It does branch prediction, how uops are reordered in the buffer. With Intel, they change that stuff all the time. You would need complete control over the target platform, which most of us don't have.
posted by Ad hominem at 6:18 PM on June 7, 2013 [1 favorite]


Delmoi has a better argument there about floating points, but I have a strong suspicion you don't know what you're talking about, probably due to being a "programmer".

Er, when I said "he's complained about it before" I mean he complained specifically about the fact that JavaScript uses only floating point numbers. However, as I said you can work around that by writing your own math library using char strings (or today, byte arrays). You can certainly shoot yourself in the foot with it, mainly because it's dynamic and errors won't cause problems unless you hit that code path. But like I said, you can use stuff like Google's closure compiler to do static testing and that catches a lot of errors.

And JavaScript code can be written in a completely deterministic way. In fact there are people who are starting to think of JavaScript as the "Assembly of the Web" and writing compilers that compile whatever language you want into JS.

In fact, you can write x86 assembly code and run it in this JavaScript PC emulator running Linux (just use the as command) or directly with this JavaScript 6502 emulator
posted by delmoi at 6:41 PM on June 7, 2013 [1 favorite]


Liking localroger's points. What's worth thinking about, however, are the odds of running into a programmer such as localroger and that person has valuable insights into some business or industry, VERSUS the odds of finding a high level coder and that person has the same insights.

I want to think such a thought experiment helps explain the situation discussed here.
posted by JoeXIII007 at 6:42 PM on June 7, 2013


> Even now I can't think of a way to do it in either html or css.

That would make sense, since HTML and CSS aren't programming languages. Something about a tool and a job.
posted by ceol at 6:57 PM on June 7, 2013 [3 favorites]


You really need to be able to build your own transistors and wire them together, building up your own nand gates as you go, to consider what you are doing programming. I mean, sure, you can use higher level things like assembly on someone else's prefabbed circuits, but what are you going to do when one of those off the shelf circuits short out? I've worked with people that use those modern, off the shelf components - and trust me, those people make lots of mistakes.
posted by Bort at 7:23 PM on June 7, 2013 [9 favorites]


And JavaScript code can be written in a completely deterministic way

Yeah, sure, and someone also built an entire microprocessor in MineCraft, but that doesn't mean you want to use it for like actual work and stuff you depend on.

I mean even with assembly you can't really know how the processor breaks things down into uops

This is itself an example of hyperabstraction. This is an artifact of using a RISC architecture to execute CISC code. The purest response to that is to develop for a RISC architecture directly. In this sense x86 isn't really machine language any more.

Assembly isn't really the lowest level of programming. That's hex or bare assembling editor, without label resolution and fancy shit like that, and counting cycles to determine performance. Not a fun way to program at all but enormously rewarding when you manage to make something work.

Actually now that I think about it that's a lie. Counting cycles in raw asm is a fucking blast. Not what I'd want to do as the foundation for an enterprise-level accounting app of course but when it's what you need to do and you're getting it done, it fucking rocks.
posted by localroger at 7:25 PM on June 7, 2013


> That would make sense, since HTML and CSS aren't programming languages.

Note to self: never leave out the :)
posted by jfuller at 7:27 PM on June 7, 2013


Speaking of counting raw cycles, a few weeks ago I decided to open source a version of Conway's Rules of Life that I implemented for the Apple II. From the comments in the code:
2970 * NOTE THAT TO CHANGE A VERTICAL
2980 * COORD, IT MUST BE INCREMENTED
2990 * OR DECREMENTED BY 3. WHILE 3
3000 * INC OR DEC STATEMENTS ARE MORE
3010 * COMPACT THAN THE PROCESS OF
3020 * DOING AN ADD OR SUBTRACT, I
3030 * CHOSE TO USE THE ADDING FOR
3040 * VERTICAL COORDINATES SINCE IT
3050 * TAKES 12 CYCLES, WHILE THE 3
3060 * INC'S OR DEC'S TAKE 18. I AM
3070 * USING INC'S AND DEC'S FOR THE
3080 * HORIZONTAL COORDINATES SINCE
3090 * ONLY 2 ARE NEEDED WHICH IS 12
3100 * CYCLES -THE SAME TIME NEEDED
3110 * FOR THE ADD
posted by plinth at 7:32 PM on June 7, 2013 [4 favorites]


But plinth, how many ops could you get done during the horizontal retrace? -- Oh, wait, Apple II not Stella. never mind.
Same microprocessor though.

posted by localroger at 7:41 PM on June 7, 2013


> Note to self: never leave out the :)

I had a brief moment where I thought you might be joking, but the things I've heard from people who should be knowledgeable on this topic made it impossible to assume. My apologies.

Now you'll tell me localroger and Artw were joking all this time as well. (●´ω`●)ゞ
posted by ceol at 7:49 PM on June 7, 2013


So when are we going to create a Metafilter spinoff startup?
posted by lupus_yonderboy at 8:34 PM on June 7, 2013


> Assembly isn't really the lowest level of programming. That's hex or bare assembling editor,

Eh, the two are isomorphic. You really gain nothing at all in insight or access by directly writing the hex code.

(And yes, I've done it. Indeed, after hand-assembling programs for a few weeks, I wrote a 6809 assembler that ran in the TRS-80 Color Computer in basic 16K - we needed to program to that chip. And yes, I did go in and delete every single superfluous space at some point... :-D)
posted by lupus_yonderboy at 8:37 PM on June 7, 2013


6502 assembler. Ah, those were the days.

You'd buy databooks for chips and pore through them. The 6502 was "funky" - a tiny number of registers and each one allowed you different addressing modes. I remember reading the 68000 databook and being completely blown away - all these registers! - and all of them able to do all the addressing modes (well... there was a distinction between data registers (8! of them) and address registers (7!! of them!) but still it was incredibly heady after a 6502.

Interestingly enough, it appears that this architecture is still in use. I have no understanding of how the crappy, segmented Intel architecture ever beat the amazing 68k series. I felt that at the time, and decades later, looking at them again with a fresh eye, I'm still stunned.

Looking at the 6502 architecture, it's hard to believe that anyone could do anything with it. One 8 bit accumulator; one 8 bit X index register; one 8 bit Y index register; an 8 bit stack pointer (i.e. a 256 byte stack!) and a 16-bit program counter. Oh, don't forget the 8-bit status register. 56 bits total... a modern Pentium has at least 16 64-bit registers, each of which can have hold the entire chip state of a 6502.

Frankly, I'm so much happier writing Python. I can achieve in a day what might have taken me a year in 1978.
posted by lupus_yonderboy at 8:50 PM on June 7, 2013 [2 favorites]


I have no understanding of how the crappy, segmented Intel architecture ever beat the amazing 68k series.

Well, no one codes in assembler so it actually doesn't make any different what it 'looks like', all that matters is that it runs the programs you want.
posted by delmoi at 9:03 PM on June 7, 2013


Yeah, I'd argue that like most things in this field, 'abstraction' is the answer to that question. Hardly anybody actually looks at the the x86 instruction set, instead using something else that compiles to it. I also think Intel won in the speed department, largely because I think they figured out how to do speculative execution and superscalar and pipelining with a CISC instruction set, which made their processors 'seem' faster (more MHz). But I'm not a hardware guy so someone will come along and correct me, I'm sure.
posted by axiom at 9:13 PM on June 7, 2013


It blew my mind when I got a look at the 68k architecture after having only been exposed to x86. It's funny that it took until x64 for the damn thing to stop leaning on the stack so much.
posted by invitapriore at 9:44 PM on June 7, 2013


Yeah, in the p5 when intel introduced decomposing CISC operations into RISC like instructions they call μops and parallel pipelines. So really, as localroger also notes, CISC is just an abstraction now to maintain compatibility.
posted by Ad hominem at 10:29 PM on June 7, 2013


Yeah, the huge amount of non-programmer-visible state like the return stack buffer is a good indication of that.
posted by invitapriore at 10:49 PM on June 7, 2013


The massive tangent this thread has spun off on does illustrate that there's another possibility for the article writer: to learn to love coding (as obsessively and passionately and kinkily as those still posting here), and that it can be just as complex and difficult and profound and awesome as writing human languages.

Better to light one candle than piss into the wind and all that.
posted by titus-g at 3:05 AM on June 8, 2013


Hell, getting paid is gravy. None of us are getting paid to debate program languages and architecture on the internet. Yet here we are. I don't know if any other professions are like that. I'd say for many of us it is a vocation in the latin sense, something we are called to do.
posted by Ad hominem at 5:59 AM on June 8, 2013 [3 favorites]


> Looking at the 6502 architecture, it's hard to believe that anyone could do anything with it.

Guy named Steve Wozniak seems to have agreed with you because he spent some money on the Apple ]['s page zero RAM, making it quite a bit faster than the rest of RAM. Idea being that asm programmers could use page zero as 256 extra 8 bit general-purpose registers. Not as fast as using on-chip registers but it beat writing/reading regular memory by a very respectable margin.
posted by jfuller at 6:00 AM on June 8, 2013 [1 favorite]


I don't know if any other professions are like that.

I doubt there's many professions where you could start the sort of holy war that leads to families blood-feuding to the n+1'th generation by saying something as innocuous and self-evidently true as: "Isn't vintage mode in sublime text just the best code editing environment ever!".

To be honest, I never even RTFA: I came for the brogrammer slapdown and stayed for the willy waving and war stories.
posted by titus-g at 6:46 AM on June 8, 2013 [5 favorites]


Sublime is a pretty wonderful editor, it's true.
posted by Artw at 6:59 AM on June 8, 2013


Interestingly enough, it appears that this architecture is still in use. I have no understanding of how the crappy, segmented Intel architecture ever beat the amazing 68k series. I felt that at the time, and decades later, looking at them again with a fresh eye, I'm still stunned.

The story I've heard is that when Xerox (? someone who was trying to mass produce consumer pcs) went looking for a company that could make a lot of processors for them very quickly, Intel was the only company who was willing and able to meet their somewhat obnoxious demands wrt order speed and priority. This was precisely because their architecture kind of sucked and they didn't have any other big customers. So the crappy, unpopular processor wound up winning precisely because they were crappy and unpopular but hadn't managed to fail just yet at exactly the right time and place. This is one of many stories that I quietly laugh about whenever people go on about "efficient markets."
posted by martinX's bellbottoms at 8:15 AM on June 8, 2013 [2 favorites]


I would assume it was IBM.
posted by delmoi at 9:27 AM on June 8, 2013 [1 favorite]


Guy named Steve Wozniak seems to have agreed with you because he spent some money on the Apple ]['s page zero RAM, making it quite a bit faster than the rest of RAM. Idea being that asm programmers could use page zero as 256 extra 8 bit general-purpose registers. Not as fast as using on-chip registers but it beat writing/reading regular memory by a very respectable margin.

I don't know about the beefed up zero page, but one nice little tidbit about the 6809 (the 6502's smarter sibling; I owe plinth for turning me onto it!) is that it had a direct page register, which let you fix the most significant byte in direct addressing mode so that any of the 256 available pages could essentially be treated as the zero page, saving you a few instructions if you organized things well.
posted by invitapriore at 10:31 AM on June 8, 2013


The story on how x86 got used for anything useful was that when IBM decided to make a personal computer they didn't want to use what any of their major competitors was using, which ruled out Motorola, Zilog, and MOS. That left Intel as the only major player capable of making a big shipping schedule.

The 8088 and 8086 were actually ahead of their time, but also before their time because compared to similar more streamlined products more appropriate to the era they were slow, hard to program, and bloaty. It wasn't until the 80286 came out that PC's started to look clearly superior to 8 and 16-bit products that had more practical but less visionary designs.

Today it seems like a bit of a miracle, if you grew up in the 1970's, that a binary executable built for the IBM PC in 1981 will run natively without emulation (and very, very fast) on a modern WinTel box. That was Intel's vision, and most of what was wrong with the early x86 architecture was preparing it to be compatible with later x86 architecture.
posted by localroger at 1:26 PM on June 8, 2013 [2 favorites]


"In 1999 a dotcom with no revenue could burn $100 million in one year, with $2 million of that going to a Super Bowl ad. Its namesake website could offer a terrible user experience, and still the company could go public. Investors would chase the rising stock price, which would drive up the price further, which in turn drew more investors, feeding a textbook ‘speculative bubble’ that burst the moment everyone realised there wasn’t any there there."

Good times.
posted by homunculus at 5:08 PM on June 8, 2013


Just a quick one here related to Javascript, this extremely well written article by Rebecca Murphey was a godsend this week.
posted by urbanwhaleshark at 12:13 PM on June 10, 2013 [2 favorites]


Good find there.
posted by Artw at 1:37 PM on June 10, 2013


« Older Johnny Moped was a 1970s English punk rock group f...  |  The amenities of the modern wo... Newer »


This thread has been archived and is closed to new comments