top | item 9698870

What Is Code?

1384 points| 1wheel | 10 years ago |bloomberg.com | reply

356 comments

order
[+] dankohn1|10 years ago|reply
I hate to sound hyperbolic, but I can't overstate how impressive this work is. For me, it evokes nothing so much as Tracy Kidder's The Soul of A New Machine [0] for opening up an obscure world (the one many HN posters live in, but obscure to most people). I am amazed both by the technical fidelity and by the quality of the story telling.

[0] http://www.amazon.com/Soul-New-Machine-Tracy-Kidder/dp/03164...

[+] clebio|10 years ago|reply
> Writing this article was a nightmare because I know that no matter how many people review it, I’ll have missed something, some thread that a reader can pull and say, “He missed the essence of the subject.” I know you’re out there, ashamed to have me as an advocate. I accept that. I know that what I describe as “compilation” is but a tiny strand of that subject; I know that the ways I characterize programming languages are reductive. This was supposed to be a brief article, and it became a brief book. So my apologies for anything that absolutely should have been here, but isn’t. They gave me only one magazine.
[+] fit2rule|10 years ago|reply
Keep writing. The space is there for you.
[+] igravious|10 years ago|reply
This is too freaking awesome!

Isn't that a seriously mind-bendy kind of article to appear on Bloomberg? Also, isn't it very cool that a whole class of people who may not know a thing about coding (but may be interested) might get to know something about the craft and culture?

And it's presented in a very fun, off-kilter sort of way. That must have been a hell of a lot of work. I actually skimmed the second half and the little robot told me I read it all in 16 minutes which was not possible and who was I kidding!

I had a thought the other day while browsing Etsy. If software really is a craft, could I fashion a bespoke software creation and sell it on Etsy? I know this might seem like a non sequitur. But, you know, what is code? Why couldn't I do something like that?

It's such a strange but vital profession. (Seriously, I would have thought there are a _lot_ more than 11,000,000 professional coders worldwide) and one that is still coming to terms with itself. Inspiring. Note to self, do not think outside the box, code your way out of the box.

[+] pjc50|10 years ago|reply
could I fashion a bespoke software creation and sell it on Etsy

There's tindie (etsy for electronics), but due to the infinitely cloneable nature of code giving it away works much better than trying to sell it for tiny amounts. In someways the demoscene is this area of software craft for the sake of it.

[+] pavlov|10 years ago|reply
Apple's App Store is the Etsy of software.
[+] glenntzke|10 years ago|reply
The activity on the article's accompanying github (https://github.com/BloombergMedia/whatiscode) is really interesting. Users have suggested edits not only to the code in the article but even to add citation.

This adds another dimension to the content by including the open source community such that the subject matter (coders) can influence (and improve!) their article's content.

[+] marcosero|10 years ago|reply
Thanks for the link! I had no idea it could have been open sourced!
[+] spb|10 years ago|reply
This is supposed to be an introduction just to the abstract concept of code, yet it includes a section that asks the reader to take a test on whether or not they agree with the author on the effectiveness of domain-specific snippets of JavaScript (http://www.bloomberg.com/graphics/2015-paul-ford-what-is-cod...) - one that replies to your selections with obtuse references to the code's use of promises and callbacks.

As an outsider, I just love it when I read something presented as an introductory text and I'm confronted with an elaborate series of self-serving in-jokes that go "ha ha ha, ha ha ha, you don't know what I'm talking about!"

[+] brianpgordon|10 years ago|reply
It's just a fun little quiz. I kind of like it as a "reality check" to show the reader that while they may understand the concepts, the reality is much more difficult and fraught with subtle considerations. It also serves as a subtle reminder to readers (who may be the frustrated business-type from the opening of the article) that there's a reason software projects are so hard and cost so much money. Software development isn't something you can grok from reading an article, even a book-length one.
[+] jameshart|10 years ago|reply
"This is supposed to be an introduction just to the abstract concept of code"

Are you sure that's what it's supposed to be? I mean, the author didn't supply unit tests, all we have to go on is the specification, which was that the editor of BusinessWeek asked Paul Ford "Can you tell me what code is," and Paul Ford said "No", and instead wrote this.

[+] merrickread|10 years ago|reply
My Dad always tells me he flat out does not understand what I do. He respects it, knows it's challenging and fun, but just doesn't get it.

I've sent this to him -- he's about 1/4 of the way through and thoroughly enjoying it.

This is a very fun read that's worth leafing through

[+] cordite|10 years ago|reply
My father sent a small comment chain to me as well on a topic like this on one of his blog posts.

<First guy> June 3, 2015 at 10:12 am I think software developers like to impress people with how many lines of code they can write.

<Second guy> June 3, 2015 at 3:31 pm That is not true. A good day is when you leave the office with more powerful software, but fewer lines of code.

<First guy> June 4, 2015 at 4:31 am So why is software always getting bigger ? Is it because the marketing people want to add new features all the time ? Does this even apply to free software like browsers and email clients ?

-----

Personally, I like writing less code, or reducing code to less code. Less to think about.

[+] tommorris|10 years ago|reply
Same. I sent this to my boyfriend yesterday: he's trying to learn programming (I'm trying to teach him Python; in response, I'm trying to learn some foreign languages) and I'm hoping that this gives him the lay of the land of how our strange world works.
[+] mangeletti|10 years ago|reply
Wow, I did the exact same thing, for exactly the same reason. My dad called me a few hours later and said, "I finished the 38000 word article you sent.". I checked and he wasn't far off; it's around 29000 words.
[+] arxpoetica|10 years ago|reply
> There have been countless attempts to make software easier to write...Decades of efforts have gone into helping civilians write code...Nothing yet has done away with developers, developers, developers, developers.

I still believe. Someday, somewhere, something incredible will emerge for the right-brained bourgeoisie and literati.

[+] tolmasky|10 years ago|reply
Theres tons of successes, we just refuse to count them. Photoshop (as hinted in the article), is a super special purpose language for doing image operations. It no longer "looks" like coding, so we don't count it as coding for the masses. Excel is a much more general purpose language used by tons of "non-coders" (and arguably the most popular programming language on earth). Again, doesn't (often) look like normal programming, but then again, shouldn't this be expected? If it looked like normal programming, it would be normal programming and not successful.
[+] guscost|10 years ago|reply
The trouble is that so much of what we call "programming" is actually the process of identifying all the implicit assumptions that go along with an idea and making them explicit. In other words, if you knew what to ask for in an unambiguous way then most of the "programming" would be done already.

I'm working on a longer essay but that's the short version.

[+] ForHackernews|10 years ago|reply
Not just the right-brained. I want that as a professional software developer. I want a computer that will do what I thought, instead of what I foolishly typed.

Basically, I want a computer as smart as a good junior dev so I can just yell my brilliant ideas at it, and it will do the dirty work for me.

[+] JohnBooty|10 years ago|reply

   I still believe. Someday, somewhere, something incredible will emerge for the right-brained bourgeoisie and literati.
I don't see it ever happening: because the bar of expectations rises at the same rate at which the tools improve.

For example, think about what the NYTimes website looked like in February 2000:

   http://web.archive.org/web/19990202013312/http://www3.nytimes.com/
That probably took millions of dollars and a team of engineers back in the 2000. In 2015, a reasonably computer-literate person could do something close to that with SquareSpace or Wordpress.com in probably.... a week?[1]

But that site would never pass muster in 2015. Something 10x (if not 100x) more complex is required for NYTimes.com in 2015, plus various native apps, plus a subscription service, and so forth. So you still need a team of engineers...

____ [1] I'm talking about the act of putting the articles onto a website, not reporting and writing the articles, obviously.

[+] jordigh|10 years ago|reply
Scratch seems to me like an example of what a "real programming language for everyone" could look like.

Indeed, Lego Mindstorms is based on a similar principle, and it's used for programming robots!

[+] Confusion|10 years ago|reply
I don't understand why people believe 'everyone' should be able to write code without much trouble. Virtually every activity requires focus and exercise to learn. Example: you can't just take a hammer and start building furniture or you will create a mess. If you want something nice and useful, you need to think about what you want to build, how you are going to construct it, which materials you need, which tools you need. You need to experience how the materials behave, try out certain subconstructions, research what specialized tools exist. I believe this idea that 'everyone' should be able to code is like expecting everyone to be able to build furniture. If you want to, you can learn how to build furniture, but it's not easy and will never be easy. Why would coding be any different?
[+] harperlee|10 years ago|reply
I believe one area of improvement for the excessive need for precision (most of us can agree that it is excessive) is that our current tools don't use context information enough. Humans deal a lot in uncertain areas and context is what helps us.
[+] m52go|10 years ago|reply
Love it or hate it, Meteor has empowered a number of sales-types and small-business owners to create real tools to solve their own real problems.

I've seen it happen in front of my own eyes!

[+] Kaizyn|10 years ago|reply
The wrong people are working on this problem. The only ones who think about it are typically programmers who have made their peace with the machines as they are today. The interface of code seems simple and logical with little reason to try to improve on it. It would take a team of artists, musicians, human factors engineers, ethnographers and some clever computer scientists to do it. Such an enterprise would be high risk and very difficult to fund because of it.
[+] mathattack|10 years ago|reply
The precision required in programming makes it hard for the right brained person who won't meet the computer at least part of the way.
[+] Too|10 years ago|reply
Not likely.

I've seen non developers try to write specs in whichever format they like: word, excel, drawings, hand written, in speech, mockup tools, anything. They decide exactly how they want to express their idea without any constraints. And yet, they always fail.

There are always too many edge cases they do not think of. They only cover the "happy path" and quite often not even that. Just take the email conversation from the article as example, they didnt even touch the subject of implementation and it was already jibberish even for a developer. You need someone to actually sit down and squint their eyes over something, do research and run some test cases for a few hours before these emerge. Once you start doing this you are already by defition a software developer.

[+] danpat|10 years ago|reply
Taken to the extreme, could you not consider raising a child the ultimate programming exercise for humans?

Perhaps the "right-brained" are already very good at programming other people, working with faulty, non-deterministic, somewhat chaotic computing environments where "left-brained" patterns of software development fall short....

[+] randyrand|10 years ago|reply
AI that takes natural language as input as spits out binaries for you =P
[+] michaelvkpdx|10 years ago|reply
"something incredible will emerge for the right-brained bourgeoisie and literati."

Yes, a real quantum computer. As long as we're dealing with 1's and 0's, there's an insurmountable barrier for those who would get creative with computing.

[+] markbnj|10 years ago|reply
I've always wanted to attempt this piece: to take all the many layers of abstraction that we deal with, parse them, convert them, and render them through my formidable linguistic talents into one elegant, beautifully constructed piece of prose that magically makes it all comprehensible to lay readers. I haven't yet attempted it, but I give props to Mr. Ford for trying. I'm not surprised he ended up with a novella.

Oh, and why does bloomberg.com want to use my web cam?

[+] ChuckMcM|10 years ago|reply
That was an interesting piece of journalism. I think though that more and more VPs and SVPs actually do know what 'code' is. While there was a time when it was all mysterious to upper management we're rapidly filling in folks in senior positions (up to CEO even). What new coders don't always get though is that there aren't a lot of new problems in computer science or developing code. Sure people have tried different methodologies to get around the problems in different ways, but the problems were the same (how do I test, how do I track defects, how do I schedule, Etc.) This is good and bad, good because companies get more effective at getting things done, and bad because it can lead to some tension if you can't explain in a quantifiable way why the new way is better than the old way.
[+] egocodedinsol|10 years ago|reply
What an ambitious and beautiful piece!

A story like this is probably dangerous - it touches on so many ideas everyone will find something to gripe with, and it's hard to make a comprehensive and consistent story.

The last time I read something that so awesomely bridged high level abstractions and low-level implementations with a human touch was Godel, Escher, Bach (albeit with a very different feel). Well done.

[+] ryandrake|10 years ago|reply
It's 2015. The audience of this article shouldn't even exist. The reader, as described in the article, is a VP who has so little understanding about what it is his company does, that the only meaningful abstraction he can mentally picture is that of his employees "burning barrels of money".

Imagine an auto company VP who says "I don't know anything about engines and drivetrains and all that technical stuff. All I know is that when you guys are in a meeting talking about your variable valve timing system, all I smell is money burning!"

That would not be acceptable. Yet, here we are, over 30 years after the original IBM PC was released, and there's still a corner-office audience for "what is a computer?"

[+] michaelvkpdx|10 years ago|reply
You're living in a pretty isolated world, my friend. I'd say 90% of my friends would be the audience for this. I've been coding 20 years, most of my friends are successful, grad-degree educated people in a variety of fields, and some of them are even my coworkers.

Who is supposed to teach people what code is? Our schools? Who with a CS degree and programming experience would willfully choose to teach in the USA's education system?

Or maybe the companies who make all their money from code? I think not- it wouldn't help the economic position of Apple, Google, FB, or Microsoft if everyone knew what code is and how it works. It strengthens the tech economy's stranglehold on society when code is treated as something inscrutable.

So there's really very few resources for people- even educated, successful, technically literate folk- to grok "what is code?"

Many coders would do well to read a similar article, if there was one, called, "What is Society?"

[+] Tenhundfeld|10 years ago|reply
What? I imagine there are many, many auto manufacturing VP's who think, "I don't know anything about engines and drivetrains and all that technical stuff [– and I don't need to]."

Why should the VP of Human Resources need to know how a drivetrain works? Or the CTO? Or the CFO?

They are experts in their area focus. It's ridiculous to expect every manager to understand everything about their business. Would you expect the CTO of Starbucks to be able to tell you how all of their drinks are made?

I wouldn't. And I wouldn't care if they could.

In general, a good executive doesn't need to know the minutiae. They need to know how to motivate people, how to keep projects on track, how to recognize talent, how to delegate, how to budget, how to distill information for other executives, etc.

Sure, knowing the minutiae usually helps. It's easier to sniff out all the BS people feed you, etc. But it's far from the most important knowledge and skills a great leader needs.

I've only skimmed the article so far, but the part that stuck out to me was this (technical manager talking to the VP): “My people are split on platform,” he continues. “Some want to use Drupal 7 and make it work with Magento—which is still PHP.” He frowns. “The other option is just doing the back end in Node.js with Backbone in front.”

Now, that's an example of a terrible trait for an executive. TMitTB clearly has very little ability to communicate with people outside of his area of expertise. The ability to convey complex ideas simply is crucial. Why would a non-technical executive care about the framework you're using? That's asinine. Worrying about the implementation is TMitTB's job. When meeting with the VP, TMitTB should talk about the business impact of options. This option is cheapest but doesn't give us these features that the marketing department says they must have. This option is best, but it's much more expensive to hire developers with those skills right now.

[+] eropple|10 years ago|reply
> there's still a corner-office audience for "what is a computer?"

There's a technical audience for "what is sales?", and that's thousands of years old. Generalists, especially good generalists, are rare.

[+] spb|10 years ago|reply
There are always going to be people like this, in any field. TSR (of Dungeons & Dragons fame) actually had a CEO who forbid her employees from playtesting their products during work hours, calling it "playing games on company time." http://1d4chan.org/wiki/Lorraine_Williams
[+] nickpsecurity|10 years ago|reply
Yet, they do: many VP's in this position are promoted from parts of the company that have nothing to do with tech. I even wonder if this is the majority. Not sure. A huge chunk of VP's out there, though.
[+] npalli|10 years ago|reply
> auto company VP

The VP is not in charge of a software company. Presumably some sort of widget/manufacturing operation ("cycle reduction"), so it is unfair to accuse him of not knowing what is going on in IT (at the level of engines/drivetrains for an auto company).

[+] stephengillie|10 years ago|reply
I think of Minecraft as a visual representation of a database. Every block you see has a set of values, starting with the 3 that determine its location within the world (coordinates) and extending to include block type, which determines other values.

And too, even the open spaces. For Minecraft reminds you that a block can occupy any space. Indeed, an open space is a set of blocks whose block type is "open", which makes it both transparent to light sent from neighboring blocks, as well as not blocking player movement.

[+] whyaduck|10 years ago|reply
Most games are essentially just massive databases of pretend stuff with an enjoyable alternative to SQL as the interface.
[+] TruthSHIFT|10 years ago|reply
I love how the page calls you out for skimming it instead of reading it.
[+] thebiglebrewski|10 years ago|reply
Computer don't hurt me, don't hurt me, no more
[+] leaveyou|10 years ago|reply
It's easy: the code is that part of the computer which can't be grabbed and slammed but only cursed.
[+] aswanson|10 years ago|reply
I did not expect this good of an article on this subject from a business publication. Well done.
[+] base698|10 years ago|reply
I kind of like my answer better: http://qr.ae/7NEnT9

The whole post is just a stream of consciousness brain dump that a layman would never understand. I believe it's possible to explain these things without circular reasoning.

[+] andars|10 years ago|reply
In my opinion, this is what society today needs. I don't feel like we need everyone to be able to code, but rather just have a sense on some level that computers are nothing mysterious or magical, unconquerable or incomprehensible, but rather just machines of human creation.
[+] Kabukks|10 years ago|reply
Holy CPU time! That site consumes 100% of my CPU (presumably 100% of one core) whenever it is in the front tab (Firefox/OS X).

Anyone else experiencing that or is it just my laptop running wild?