So You Don’t Have Time To Read “What is Code?”…

Anita Joseph
Interactive Mind
Published in
14 min readJun 12, 2015
Yuri Samoilov via flickr.com

Paul Ford’s 38,000-word essay on code for Bloomberg is a magnificent mix of history, sociology, science, and lived experience.

The title is cheekily simple as the essay doesn’t offer just an explanation of code, but a vivid description of programming culture. Ford is trying to bring a dose of sense and understanding to the sometimes-troubled relationship between coders and their business counterparts. Here are some main takeaways, and then a full outline is below.

Takeaway #1: Coding is the process of developing and scaling sequenced instructions to a computer.

A computer needs to be instructed to do anything, and can only process one tiny instruction at a time (but very quickly). Coders develop and scale sequenced instructions to a computer. The “sequenced” part is important because computers work from general instructions to more specific ones. Instructions are nested into steadily larger groups (functions, classes, algorithms), and leveraging these groups enables coders to work at scale.

Takeaway #2: Coding is fundamentally collaborative, so coding well is partly about being a good solo coder and partly about finding and using the appropriate existing code.

The debugging site Stack Overflow, the collective coding site GitHub, standard libraries, language frameworks, and open-source code like Apple’s Xcode are a testament to how collaborative the coding enterprise is. In general, the profession operates with a spirit of making something for common use (or, as Ford says, glory and influence) as well as to accomplish a specific end. This is why creating a new language is one of the most prestigious things a developer can do. (And indeed, the only programmers who are named in Ford’s article are those who developed new languages.) It’s also why Apple, Microsoft and others make so much code available for programmers to work with — because they want to attract talented independent programmers to work in their computing environment.

Takeaway #3: The choice of a programming language is a highly contentious subject for coders and one companies should consider closely.

A coder’s job security and identity is closely tied to the languages they know and work in, so they have strong opinions on which is better. Plus, since coding is such a collaborative exercise, like-minded people tend to code in the same language. (E.g. according to Ford, people who code Ruby are outcome-oriented, people who code Python are fun, people who code Java are serious or boring, and people who code Clojure are fancy.) When a company chooses a language, it will not only choose a set of technical functionalities and limitations, it will also affiliate itself with a programming “culture.”

Takeaway #4: Programming languages and protocols are always changing and popular languages may not always be relevant

Just like Node.js was rapidly adopted by developers after it was developed out of parts of the Chrome browser, new programming languages and techniques could be invented tomorrow that make today’s status quo irrelevant. Part of the beauty of programming is that languages can be innovated so that old languages which seemed obsolete (like Lisp) come back and are relevant again (in the form of Clojure) and others become hated and nearly extinct (Cobol).

**In the spirit of collaboration, if you think I missed or misrepresented something, feel free to let me know, and I’ll adjust the article if it seems appropriate and credit you.**

FULL OUTLINE

Chapter 1:

They say the key to brokering understanding is standing in the other person’s shoes, and Ford intersperses his essay with the point of view (POV) of a business lead. Specifically, this business lead is a VP at a large company who oversees a technical lead who keeps asking for more money and time to complete projects and speaks incomprehensibly. The VP’s core question is: “why isn’t it ready to ship?”

Chapter 2: Let’s Begin

A computer can only take one small, basic step at a time. It’s powerful because it takes billions of these steps very quickly.

2.1: How do you Type an A?

The computer goes through many steps to execute something you see as very simple e.g. pressing “a” on the keyboard. A coder troubleshoots by understanding the rules governing the sequencing of these steps.

2.2: From Hardware to Software

Software has better margins than hardware because it costs nearly nothing to reproduce (that’s why Steve Ballmer chanted “developers, developers!” like a mad person at one Microsoft meeting.) Expectations around whether software and hardware should be bundled or not have changed; currently hardware comes with some software but not necessarily an ideal amount. (Ex. Your iPhone comes with software but people often download a bunch of new software in the form of apps.) Software is hard to write and it’s everywhere.

2.3: How Does Code Become Software?

Code is “A sequence of symbols (using typical keyboard characters, saved to a file of some kind) that someone typed in, or copied, or pasted from elsewhere” and is activated by going into a compiler that translates it into machine lower-level instructions. The machine instructions are in the form of a “tree.” In fact, the “tree” structure (many leaves to a couple branches to one root) is the cognitive framework for how computers think. Code that repeats is a function/method/subroutine/component, and this allows the computer to implement instructions at scale.

+Fun fact, Ford paraphrases William Blake’s poem The Tyger here, “What framed that fearful symmetry.”

2.4 What is an Algorithm?

An algorithm is a set of code/group of instructions that solve a particular issue. Algorithms look different in different computer languages — the writer goes through three different ways to write Euclid’s formula for getting the greatest common divisor between two numbers in Forth, PostScript, and Python. “A huge part of computer science is understanding the efficiency of algorithms — how long will they take to run.” This is why Google, Facebook etc. pay a lot of money to CompSci PhDs, who presumably can find the small efficiencies that they haven’t yet. Ford makes an interesting distinction between computer scientist vs. programmer, says the latter can be a middling mathematician and excel by borrowing the work of others.

A programming language must wrap up lots of algorithm that can be reused, and make it easy for other programmers to do the same thing.

2.5 The Sprint

The way this translates into human work, is that programmers break down their work into the small steps it takes for a user to work through their product (wireframing), and they scenario-plan so that this is comprehensive. Ford says some things programmers like are Slack, remote work, standup meetings, conferences, and tweeting.

2.6 What’s With All These Conferences, Anyway?

Speaking of conferences, sexual harassment of women at conferences is a small part of the larger hurdles facing women who program. 92% of coders are male. (*Update: This statistic was taken from a Stack Overflow survey, and this site’s users lean more heavily male than the coding population at large. The survey results themselves admit that the gender gap in coding is isn’t as large as its particular result suggests, although it’s still a large gap. If we’re going to address a problem we should start with a correct baseline.) Educational and mentorship initiatives are present, but they’ve been started very late in the boom.

I’m going to quote Ford directly here because it’s important:“Given that a significant number of women work as journalists and editors, perform surgery, run companies, manage small businesses, and use spreadsheets, that a few even serve on the Supreme Court, and that we are no longer surprised to find women working as accountants, professors, statisticians, or project managers, it’s hard to imagine that they can’t write JavaScript… Which leads one to the inescapable conclusion: The problem with women in technology isn’t the women.”

Chapter 3: Why Are Programmers So Intense About Languages?

Programmers care a lot about languages because programmers are more competitive in the job market when they are good at highly used languages. Java, C, and C++ are the most used languages, although there are global geographic variations. (E.g. people in Iran use a lot of C#.) Also, the writer thinks Ruby is a “startup bro” language.

3.1 The Beauty of the Standard Library

The standard library for a language is the set of pre-made functions that a programmer can access as a shortcut for their work. You can learn the basics of a standard library from a book about a language. For example, if you need to edit 1000 photos in Python, you can access a library/module/package called “Pillow” which contains dozens of functions that you can integrate into code. A good programmer doesn’t just memorize as many functions as they can — they are good at leveraging public resources such as libraries and message boards so they don’t have to remake everything from scratch.

3.2 What Do Different Languages Do?

Different languages are good for different things (e.g. Java is great for search). It would be beneficial for everyone on a team to code in the same language, but it’s not necessary for every team in the organization to code in the same language.

3.3 The Importance of C

C is an old but strong language. It can manage memory, hard drive, and files. It’s a simple operating system whose creation coincided with the creation of the Internet. The C Programming Language by Dennis Ritchie and Dennis Kernigham is an important programming text. Fun fact, this is where “hello world!” came from. Most people who code seriously can code C or one its Vulgates (C++, Objective-C, C#, Java) well.

3.4 The Corporate Object Revolution

Object-oriented programming is a filing system for code. Code can be difficult to organize, because coders don’t use uniform names when they code. Objects solve this, as they are boxes in which you put groups of related code. (E.g. a box called “Customer” for all data relating to a specific customer segment.) Then, you can connect objects/boxes, in order to relate them with each other.

The archetypal object-oriented language is Smalltalk, from the 1970s. It allows the programmer to organize however they want, there are none of the normal boundaries — like between data and code, between files and executables, between the operating system and applications, between closed and open software.

3.5 Look How Big and Weird Things Get with Just Python

Python is more abstract, easier to use, and slower than C. It’s a good “wrapper” language, so you can wrap older languages in Python and make the code work in a newer system. Python is hard to connect to Java. Ford makes the point that you pick a language not just for the job opportunities it presents or its technical merits, but because of the culture of the people already programming in it. Ford thinks the Python community is pretty cool as it as collectively done a great deal of work on the language and made a lot of tools available for free.

Chapter 4: Why Are Coders Angry?

Programmers are often angry because they’re often scared that their skills (the languages and techniques they know) will become irrelevant and unprofitable.

4.1 The Legend of the 10x Programmer

The 10x programmer is a myth, but some people like this may exist. However, Ford says “They’re not interviewing at your crappy company for your crappy job.”

Also, Ford says coding requires intense focus so may lead to some self-serving self-diagnoses of Asperger’s syndrome.

4.2 The Thing About Real Artists is that They —

“Programmers are easily bored, love novelty, and are obsessed with various forms of productivity enhancement,” says Ford.

Programmers are often trying to convince their (overpaid) managers to switch languages, but this doesn’t often happen because managers fear being able to “ship” a product in time. This isn’t petty, as the language one uses is genuinely a source of happiness or unhappiness. Language choice is one thing that leads programmers to quit, as they can find jobs anywhere (especially if they’re young).

4.3 We Still Need to Choose…

Business POV: The coding guy asks the executive to switch languages but doesn’t know which one he wants to switch to.

4.4 Why Are There So Many Languages

In 966 there were 1700 languages that mostly repeated each other, and now there are hundreds more. Some notable ones:

Cobol: Horrible, verbose, largely caused the Y2K problem. Banks like it

Fortran: Comically computerish. Physicists and astronomers use it

Lisp: From math research, superfluous parentheses, largely extinguished by Fortran but still lives on ex. In air-travel data system.

Chapter 5: The Time You Attended the E-Mail Address Validation Meeting

Business POV: Meetings with coders can be exhausting because there are so many options to consider and meetings don’t seem to happen productively.

5.1 What is the Relationship Between Code and Data?

Software and data are caught in a vicious/virtuous? cycle; software produces data and data requires more software to analyze it.

5.2 Where Does Data Live?

The most prevalent database is the relational database, using SQL. Oracle’s commercial enterprise database costs thousands of dollars, but more and more of the world runs on free or permissively licensed databases.

5.3 The Language of White Collars

Java is the language of corporate programming, was born at Sun Microsystems, and debuted in 1995. Java has done well because a) it’s a big language with built-in classes b) automatically generated documentation (class/method lists) c) lots of manuals, workshops, and trainings d) runs on many different operating systems

5.4 Briefly on the Huge Subject of Microsoft

Microsoft doesn’t like Java because they like products that work better on Windows than other places. Microsoft’s value is that they deliver services for almost any market-labeled computing end (statically typed, data-driven etc.)

5.5 Liquid Infrastructure

High-performing companies like Google and Amazon have cultures that know how to make software; they have whole departments dedicated to testing.

Java is a language that fits well with the collaborative, creative world of coding; it has the infrastructure to support big corporate products, but it also can be useful for midsize tasks. So people in the free software community might code a small project in Java and put it out to the digital commons, where corporate coders can pick up on it and use it.

Languages can be updated to use code from other languages; this is the case for Clojure, which is a Lisp language adapted by Rich Hickey. This transmutable property of code makes its infrastructure very fluid.

5.6 Off the Shelf

Business POV: Often you seem to be faced with a situation where you can’t use any off-the shelf material.

5.7 What about Javascript?

“JavaScript’s relationship with Java is tenuous; the strongest bonding between the languages is the marketing linkages of their names.” Javascript makes webpages interactive. Javascript became important when people came to understand Ajax, which turns web pages into software and enables the Internet to be not just a publishing platform but an app-delivery platform.

Google uses a Javascript engine called “V8” to power its Chrome browser, to outperform Safari. Then, in 2008 a developer named Ryan Dahl modified V8 to run outside the browser. It was was now called Node.js and it was powering many more features of the computer and making them all more efficient. Node.js was rapidly adopted by thousands of developers because it’s good for handling simultaneous users and listening to many things going on in the web browser.

Javascript is now used for many things, such as making web pages, web servers, or APIs.

5.8 What’s the Absolute Minimum I must Know About PHP?

PHP is fast to write. It’s fairly prevalent (it powers Etsy, Facebook, and Wikipedia). But “Reading PHP code is like reading poetry, the poetry you wrote freshman year.”

Chapter 6: How are Apps Made?

IDE, or Integrated Development Environment, is a tool for writing software for a particular product. The Mac and iPhone’s IDE is called Xcode. Microsoft’s is called Visual Studio.

Within Xcode, there are Software Development Kits made up of APIs that you can use to make apps. One API may be for keeping track of a user’s location, another one for animating etc.

Many corporate functions like HealthKit end up in IDEs, so that they can be used to make enhancing software (although some, like the heartbeat one from Apple, may be reserved for the manufacturer).

So much software is free because it stimulates the development of even more software. This is why companies need to build loyalty among developers to their platform.

The coding enterprise is a symbiotic relationship between corporate coders and freelance ones, each of who put in work to develop, maintain different important parts like APIs and documentation.

6.1 The Framework: Wilder, Younger Version of the Software Development Kit

Frameworks enable an app developer to code in a specific language more easily; they are constraining but they also make work much more efficient. Good programmers understand this and decide whether or not to use a framework based on how much speed, control, and convenience they need for a specific task. A popular Web framework is Django, which is used for coding in Python.

6.2 What is Debugging?

Bugging is difficult and exhausting.

A stack overflow is when a bug causes a program to quit, fills up the memory of a computer and uses all its resources, so the computer has to be restarted. Stack Overflow is the name of a website where programmers go to answer questions and help each other solve bugs.

6.3 Nothing is Built

Business POV: The project needs to be shut down, it’s way behind schedule.

6.4 How Does Testing Work?

Testing is code that checks the functions in other code. It’s very important.

D. Richard Hipp developed a piece of code called SQL Lite and has been working on it and testing for 15 years; it has over 33K tests and is one of the most widely used and respected pieces of software.

6.5 And Now for Something Beautiful

GitHub enables people around the world to collaborate on code and make changes that are rigorously documented. In Ford’s words, here are some roles for deploying fresh code:

“1.All programming work must happen in a branch.

2.When work is done, we will merge it back into the main branch; and

1. a. Run tests;

2. b. Then “push” the code over to GitHub.

3.At which point an automated service will run; and

4.A service running on each of the 50 computers will “check out” the code; and

5.Install it, overwriting the old version;

6.Then stop the computer’s Web servers;

7.Then restart them, so the new code can load and get to work.”

Chapter 7: The Triumph of Middle Management

Business POV: Businessman makes the coder work more, pay more attention to optics, not overpromise on milestones and accept that they’ve made a platform that will keep growing and will never be complete.

7.1 How Do You Pick a Programming Language?

Every language can do everything, so you should customize your language choice to your team’s preferences so that your coders will stay and finish the project. Instead, most companies go with Java or PHP because if their coders quit it will be easy to get more of them.

“The choice of a main programming language is the most important signaling behavior [to programmers] that a technology company can engage in.”

7.2 Welcome to the Scrum

Business POV: Work is going better.

7.3 Managing Programmers

Ford advocates managing programmers via Agile through the following steps:

a) break down products into set of simple user stories, file in tracking system

b) divide work into segments and give each a name

c) check in every day and help each other.

7.4 “We Are Going to Ship”

Business POV: The product starts working. Everyone is fulfilled and happy!

7.5 Should You Learn to Code?

Yes! There’s even a small coding exercise you can do here.

Thanks to Paul Ford for a fantastic and informative read! And just in case you were wondering, this is what it looks like when you finish reading 38K words in one evening…

--

--