- Your code is spaghetti!
When he said that, I squeezed hard my hand in my hoodie’s pocket and forced myself not to throw a comeback line. I mean who the fuck is he? 😮
He is that guy who has a full agenda and you rarely see him. He’s often at conferences where he presents on panels. Than he tweets and writes about them on his LinkedIn page where he has hundreds of geek followers crazy opinionated. I roll my eyes every time he takes pictures of the: “AMAZING audience @ the panel on #digitalentrepreneurship @RazorfishTechSummit.” Looking at the nerdy faces in the public I secretly wish to be there as the woman in the red dress. Devil laugh. I can’t remember which one of my belovers planted this idea into my head, but it’s on my todo list.
Anyway, back to my code. And my guy.
- You know what code is?
I furrow my brow. What is he expecting me to answer? That’s a rhetorical one, but I will let him be the smartass now. He eyes me sympathetically and explains:
- We are around 18 million programmers. The world needs programmers for everything that surrounds you and if not, it will. For example, programmers write the code that runs your TV and if your floss doesn’t need a code now, I can bet you it will in the future. I am gonna tell you my view of software development as an individual among millions. Code has been my life and it has been your life, too. Don’t you think it’s time to understand how it all works?
I am looking at his mouth, he has nice lips. I am checking his eyes. Never noticed how blue they are. I am laying back on my chair and grin. I think I am gonna unexpectedly enjoy this convo.
- It becomes easier with every month to do things that have never been done before, to create new kinds of chaos and find new kinds of order. Every month code changes the world in some Interesting, Wonderful or Disturbing way. You know that someone, somehow, enters a program into the computer and the program is made of code. Computers usually “understand” things by going character by character, bit by bit, transforming the code into other kinds of code as they go. Every character truly, truly matters. Every single stupid misplaced semicolon, space where you meant tab, bracket instead of a parenthesis—mistakes can leave the computer in a state of panic. The trees don’t know where to put their leaves. Their roots decay. The boxes don’t stack neatly. For not only are computers as dumb as a billion marbles, they’re also positively Stradivarian in their delicacy.
Trees, leaves and roots? Stradivarius and delicacy? Where is this going? I feel romance…
- That process of going character by character can be wrapped up into a routine—also called a function, a method, a subroutine, or component. And that routine can be run as often as you need. Second, you can print anything you wish, not just one phrase. Third, you can repeat the process forever, and nothing will stop you until the machine breaks or, barring that, heat death of the universe. Obviously no one besides Jack Nicholson inThe Shining really needs to keep typing the same phrase over and over, and even then it turned out to be a bad idea.
Boy, he talks a lot. I though programmers are only good at coding, not explaining it… and this good.
- Coding is a broad human activity, like sport, or writing. When software developers think of coding, most of them are thinking about lines of code in files. They’re handed a problem, think about the problem, write code that will solve the problem, and then expect the computer to turn word into deed. Code is inert. How do you make it ert? You run software that transforms it into machine language. The word “language” is a little ambitious here, given that you can make a computing device with wood and marbles. Your goal is to turn your code into an explicit list of instructions that can be carried out by interconnected logic gates, thus turning your code into something that can be executed—software.
- Oh, there’s no magic, no matter how much it looks like there is. There’s just work to make things look like magic. And it’s crazy in there! The hardest work in programming is getting around things that aren’t computable, in finding ways to break impossible tasks into small, possible components, and then creating the impression that the computer is doing something it actually isn’t, like having a human conversation. This used to be known as “artificial intelligence research,” but now it’s more likely to go under the name “machine learning” or “data mining.” When you speak to Siri or Cortana and they respond, it’s not because these services understand you; they convert your words into text, break that text into symbols, then match those symbols against the symbols in their database of terms, and produce an answer. Tons of algorithms, bundled up and applied, mean that computers can fake listening.
Fake listening? Is that what I am doing right now? Cuz a lot of other things run into my head…
- Enough talk. Let’s code!
No, let’s let you talk some more… I am truly listening. Your language is amazing!
- A language is software for making software. Truly understanding a language’s standard library is one of the ways one becomes proficient in that language. Typically you just visit Web pages or read a book. A coder needs to be able to quickly examine and identify which giant, complex library is the one that’s the most recently and actively updated and the best match for his or her current needs. A coder needs to be a good listener (like you, right now). Code isn’t just obscure commands in a file. It requires you to have a map in your head, to know where the good libraries, the best documentation, and the most helpful message boards are located. If you don’t know where those things are, you will spend all of your time searching, instead of building cool new things.
I want a programmer right now and for life! Command: redirection of the man of my dreams! ❤
- Dream of 10x programmers if you will. But I wouldn’t hold out hope that one will come to work for you. You can’t hire them for the same reasons you can’t coach the Chicago Bulls and you aren’t often called upon to date supermodels of your preferred gender. They’re not interviewing at your crappy company for your crappy job. They’re not going to come and rescue your website; they’re not going to make you an app that puts mustaches on photos; they’re not going to listen to you when you offer them the chance to build the next Facebook, because, if they exist, they are busy building the real Facebook. Sometimes they’re thinking about higher mathematics, or how to help a self-driving car manage the ethical choice between running over a squirrel and driving off a cliff. Or they’re riding their bikes, or getting really into pottery. It’s hard to have a better life than a great programmer, as long as they’re unencumbered by physical or mental illness.
Why are you making this harder??
- As a class, programmers are easily bored, love novelty, and are obsessed with various forms of productivity enhancement. God help you if you’re ever caught in the middle of a conversation about nutrition; standing desks; the best keyboards; the optimal screen position and distance; whether to use a plain text editor or a large, complex development environment; chair placement; the best music to code to; the best headphones; whether headphone amplifiers actually enhance listening; whether open-plan offices are better than individual or shared offices; the best bug-tracking software; the best programming methodology; the right way to indent code and the proper placement of semicolons; or, of course, which language is better. And whatever you do, never, ever ask a developer about productivity software!
He completely outranks me now. Not with his 500+ LinkedIn connections, his highly profitable company nor his age. He strokes his short beard with his tanned hands (he hikes a lot) and continues:
- If coders don’t run the world, they run the things that run the world. Print something on our screen now.
Hello World! Needless to say how I enjoyed this guy stories and perspectives on programming. Read Paul’s whole story here.