NBA Star Chris Bosh: “Everyone Should Learn to Code”

Major props to Chris Bosh for writing this piece in Wired about the importance of computer programming/coding in his life:

For most athletes, the sport they end up turning into a career was decided in school. For me it all started in high school. This is where it all happens. On one end, you are growing fast and becoming very good at sports, on the other end grownups all around you say you need to try out different things, to discover your likes and dislikes, you need a plan. It’s a lot of pressure for that age.

Despite knowing my highly decorated jersey hung in Lincoln High’s gymnasium I knew well before I was in the NBA that to feel secure with my future — our future, really — I would need to be able to manipulate those 1s and 0s. Luckily, having extremely geeky parents that were constantly testing gadgets and flashing mad AutoCAD skills helped push my hands towards a keyboard and learning to code when they weren’t palming a basketball or blocking an opponent.

For as far back as I can remember, my mom had a business called Computer Help. So I pretty much grew up around computers. Later on, she worked for Texas Instrument. We used to come back home after school and my mom would bring all these new TI gadgets for us to test and play around with; I still remember the first digital cameras! When people were still using AutoCAD, my dad did professional plumbing, engineering, and designing for a couple different companies.

I’m lucky because my parents held us to a very high standard when it comes to education, and they were very science driven. In high school I joined a club called Wizkids, a computer graphics club for two years. I always felt like I was in my element, my environment there. I also joined the Association of Minority Engineers and NSBE the National Society of Black Engineers during my senior year.

Bosh spent a year at Georgia Tech before he declared for the NBA draft, so this story hits a bit closer to home (having graduated from Georgia Tech).

Love his philosophy:

I’m the Miami Heat player with “1” on my team jersey back. For me winning isn’t “winning” — it’s 01110111 01101001 01101110 01101110 01101001 01101110 01100111 (that’s W-I-N-N-I-N-G in binary code).

 

On the Difficulty of Writing and Working at Start-Ups

James Somers considers the worthiness of coders in Silicon Valley. But it was a section on writing that caught my attention from the start:

When, in 1958, Ernest Hemingway was asked: ‘What would you consider the best intellectual training for the would-be writer?’, he responded:

Let’s say that he should go out and hang himself because he finds that writing well is impossibly difficult. Then he should be cut down without mercy and forced by his own self to write as well as he can for the rest of his life. At least he will have the story of the hanging to commence with.

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’s all so hard that it’s actually painful, the way a long run is painful. It’s a pain you dread but somehow enjoy.

Some of this is existential angst that comes with working at a start-up:

When I go to the supermarket I sometimes think of how much infrastructure and ingenuity has gone into converting the problem of finding my own food in the wild to the problem of walking around a room with a basket. So much intelligence and sweat has gone into getting this stuff into my hands. It’s my sustenance: other people’s work literally sustains me. And what do I do in return?

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.

He comes back to the difficulty of writing:

The price of a word is being bid to zero. That one magazine story I’ve been working on has been in production for a year and a half now, it’s been a huge part of my life, it’s soaked up so many after-hours, I’ve done complete rewrites for editors — I’ve done, and will continue to do, just about anything they say — and all for free. There’s no venture capital out there for this; there are no recruiters pursuing me; in writer-town I’m an absolute nothing, the average response time on the emails I send is, like, three and a half weeks. I could put the whole of my energy and talent into an article, everything I think and am, and still it could be worth zero dollars.

And so despite my esteem for the high challenge of writing, for the reach of the writerly life, it’s not something anyone actually wants me to do. The American mind has made that very clear, it has said: ‘Be a specialised something — fill your head with the zeitgeist, with the technical — and we’ll write your ticket.’

And so he will continue coding, coding, coding. Thoughtful piece.

Bret Victor’s Learnable Programming

I spent some time last night perusing Bret Victor’s post titled “Learnable Programming.” It’s a through but easy-to-follow post on introductory programming. Writes Victor on the challenge of programming:

  • Programming is a way of thinking, not a rote skill. Learning about “for” loops is not learning to program, any more than learning about pencils is learning to draw.
  • People understand what they can see. If a programmer cannot see what a program is doing, she can’t understand it.

Thus, the goals of a programming system should be:

  • to support and encourage powerful ways of thinking
  • to enable programmers to see and understand the execution of their programs

A live-coding Processing environment addresses neither of these goals. JavaScript and Processing are poorly-designed languages that support weak ways of thinking, and ignore decades of learning about learning. And live coding, as a standalone feature, is worthless.

Alan Perlis wrote, “To understand a program, you must become both the machine and the program.” This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one.

How do we get people to understand programming?

We change programming. We turn it into something that’s understandable by people.

If you haven’t ever got started with programming, set aside one to two hours and go through the post. It’s aesthetically pleasing, incredibly detailed, and best of all: fun! I guarantee you’ll learn a ton.

Should You Learn to Code?

There’s a meme out there this year on learning to code (proliferated by sites like this). Jeff Atwood is against this idea. He has a great post at Coding Horror where he elaborates his idea:

To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer, and at least high school level math are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can’t see it.

Look, I love programming. I also believe programming is important … in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing. That’d be ridiculous, right?

He continues with an excellent bullet list:

The “everyone should learn to code” movement isn’t just wrong because it falsely equates coding with essential life skills like reading, writing, and math. I wish. It is wrong in so many other ways.

  • It assumes that more code in the world is an inherently desirable thing. In my thirty year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can’t get behind that. You should be learning to write as little code as possible. Ideally none.
  • It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it’s not. Their job is to solve problems. Don’t celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
What are your thoughts on programming? Have you taken the initiative to learn to code sometime in your life?