Ben Popper is the Worst Coder In The World – by Ben Popper
I’ve spent the better part of the last decade immersed in the world of technology. I could give a lengthy lecture on the history of LIDAR and the future of self-driving cars. I could explain what’s so fascinating about artificial intelligence that can beat humans in poker and why we shouldn’t be afraid of robot overlords just yet. I’ve got a cocktail party’s worth of witty things to say about the potential for brain-computer interfaces and our very cybernetic future.
Despite all my years as a journalist covering technology, however, the closest I got to working on the code that makes all this amazing innovation possible was putzing around with some HTML when trying to tweak the layout on an article I was writing. Since joining Stack Overflow, I’ve decided it’s time for that to change. We have a great program here where any employee can sign up for coding lessons facilitated by our engineering staff. If I’m going to try to learn a challenging new skill in my mid-30s, I want to be sure that all my embarrassing mistakes are broadcast to as wide an audience as possible.
Week 1 – FreeCodeCamp – Basic HTML and CSS
I breezed through the first half dozen lessons, but I didn’t feel any sense of pride about it. Changing the color or size of a font? Adding images and links? This is stuff I have been doing for years inside various content management systems. Sure, I’m writing a few commands to make it happen instead of pushing a few buttons in a GUI. But this doesn’t feel like actual capital C “CODING!” I’m not gonna build anything useful here that I couldn’t whip up in a Google Doc.
But then I got to the buttons. Just that tiny sprinkle of interactivity made it all feel very different. A few buttons, a few images, and you could build yourself a Facemash. A little viral traction, and I could raise my first round of VC funding. Right? RIGHT? A text field and a submit button. Strangers would be arriving from every corner of the internet to share their deepest desires with me soon.
My celebratory mood passed quickly. Sure, I could copy and paste some code, tweak a few nouns, and have a button pop up. But what if I needed to setup my own server to host the website? What if I actually wanted store data from users somewhere and not have it stolen? Or run analysis on that data to understand what my users loved or hated about the product I had built? Stepping up to the first ridge on this mountain only made it clear how far I was from the summit.
I thought back to my favorite aphorism from jiu jitsu training: A black belt is a white belt who never quits. I’ve woken up with my head in a stranger’s lap, covered in drool, unsure exactly what room I’m in or what day it is. If I can get choked unconscious and come back to training the next day, how bad could this coding stuff be?
That night I went home and tried to continue the lessons, but I didn’t have a laptop. I had an iPad with a bluetooth keyboard, a recipe for true misery. FreeCodeCamp should have a large, prominent warning reminding folks that trying to code on an iPad is a dumb idea. But at the moment, I was determined not to quit.
My job was to declare the doctype. Which means the “document type.” They’re always concatenating things in codeland. This required a <…!”
I dutifully entered these characters. I ran the code and failed the test. I tried it again. I tried it six different ways. I tried to copy and paste the sample a few lines higher in my IDE. Nothing worked. I spent half an hour stuck in this loop.
Eventually, I did what any human being does in a time of crisis and threw myself at the mercy of a higher power. I googled the question.
There, nestled in the featured snippets, was an answer from Stack Overflow. It said I should use <…! I copied the characters from this new location. I pasted them. It worked.
15 minutes later, I started laughing like a madman. My wife gave me a quizzical look. I understood now. I could become one of them. It took me about another week to realize the difference was that my iPad automatically rendered curly quotes, while the code editor required straight quotation marks in order to give me a passing grade on my test.
Over the next few days, as I continued through the HTML and CSS lesson, I kept coming back to that nagging insecurity. I didn’t want to be some pixel pusher moving boxes around a webpage with nouns and adjectives. Where was the math and the algorithms, functions and for-loops? How long until I could leave the sandbox and play with the big kid toys?
The next day I was working to finalize The Overflow newsletter. It was a big project that we had been working on behind the scenes for months and I wanted it to be great. The only problem was, at the last minute, my colleague who was supposed to move everything from my Google Doc into the HTML template wasn’t available to help. And so I had to roll up my sleeves and get my hands dirty.
It was one of the moments where you understand, with deep humility, the value of learning the basics. In Jiu Jitsu, I’m always yearning to try out the latest reverse, inverted spider guard techniques, even if they are beyond my current abilities and flexibility. But when things get tough in a sparring session, it’s the simple stuff, the bits stored in my muscle memory, that always show up to save me.
I looked through the HTML template for the newsletter and realized, I know what this is. I can do this. It wasn’t pride I felt at that moment, but relief. There are lots of codes you can learn in life, and lots of systems you can master. I’m still a long way from feeling like a software developer, but it’s always nice to realize there is a new arena in which you are beginning to be self-sufficient.
The Stack Overflow blog could use a nice renovation. There are designers and developers on the team who have the skills to do it far better than I can. But after they’ve done the heavy lifting, when the foundation is in place and the lattice work is laid, maybe I’ll sneak in and tweak the padding in a few places, align things just a little more to my taste.
Now, where should I add some buttons?
Awesome, man. You can not only create a doctype, you can also waste my time. Maybe you didn’t know about this skill before. Just wanted to tell you.
Thanks for the kind feedback! I’m always trying to learn new things.
and can deal with rolling pretty well too.. dont forget that.. but seriously. good job. always better yourself. with every new thing learned is one more piece of the puzzle to become indispensable
You guy, this is awesome. As I was reading this I saw myself as I was learning to code. Actually the same history as yours. Thanks for sharing.
Ignore Thomas W, you’re learning new stuff and enjoying it which is the mark of a coder IMO
“If you don’t have anything nice to say, don’t say anything at all.” Clearly the energy you spent posting that comment would’ve been better spent learning how to be polite and respectful.
I want to learn coding that’s web development but it seems impossible and boring. I just need motivational advice and easier technique to learn it.
Ignore the haters, this was quite an article! Welcome to DevLand, the driveway is long but once you make it to the front door, it’ll feel just like home.
Cheers from the D.R.
I hate that ‘haters’ thing that’s become popular during the Trump Administration. Just because somebody doesn’t agree with you doesn’t make them a ‘hater’. You should look up the word ‘hate’ in a good dictionary and you might realize how freighted ‘haters’ is. We don’t need that dude, especially not now.
Where’s the Like button? There, an answer to your question: add some button for folks to click. No, it doesn’t have to be Facebook, just a thumbs-up will do.
Soo… what is this? People have different interests which naturally leads to different skill sets. Just because you don’t want to be a “pixel pusher moving boxes around a webpage with nouns and adjectives” (*major eye roll*) doesn’t make that skill set any less important. For somebody with an enormous amount of knowledge about the future of technology (did I mention that somebody seemed to be really humble as well?), it surprises me that you don’t seem to understand the magnificent machine that IS software development. Each cog has it’s own important role in the system. I may be assuming a bit about your intent, but that’s most likely due to the fact that this article has no real direction and leaves a bad taste in my mouth as an actual software developer who loves his part in the system. All the best!
I wasn’t trying to put down “pixel pushers” – I was more just exploring my own insecurity about what it means to be a real coder and how it feels to be at the very start of a journey when you see people all around you with far more experience. As I mentioned at the end, I came to see that there was a lot of value in even the basic HTML and CSS I was learning, so my intention was not to leave you with a takeaway that front-end or web development is somehow a poor choice for a career.
Ahh, thanks for the clarification. Apologies for the initial “knee-jerk” response. (Though no excuse/ recent Stack Exchange problems have been frustrating to put it lightly 😉) As one good developer once put it, solving the problem at hand is all you need to focus on, then expanding your toolset to solve a wide variety of problems makes you an invaluable developer. Good luck on your path
Umm….Ben wrote an article that was joking about the journey and showing how difficult and what grand expectations are in development. He wasn’t taking a jab at anyone. Maybe try to lighten up a bit, life/work isn’t so serious.
Sooo, are we to assume there’s going to be a part 2 & 3 & … ?
I have a lot on my plate these days between launching the newsletter, rebooting the podcast, and trying to grow the blog. But my goal is to produce one of these every two weeks, so hopefully there are more editions to come.
I’m new to coding with a capital C, just poking around out of interest and for fun.
I’m early 30’s with an established career that is ok I guess, but I’m too far behind to make a career of code, missed the boat.
Or did I?
Heartfelt thanks for the timely and apt inspiration!
You’re not too late. (Incidentally, my name is also Michael S, how weird!)
I’m 35 and in my 3rd year as a programmer. Wrote my first line of code maybe just over a year before that, then spent *all* my free time (evenings, weekends) learning to code, and all the trappings that come with it (software design, unit testing, etc etc). Thought up interesting projects, then designed and wrote them – great practice.
Eventually I applied to join our development team – it helps I was already working at a software company, in another role – was accepted, and never looked back.
Ben, it’s not your iPad that renders double quotes as curly quotes; it’s just a dumb device that does what a programmer told it to do and chances are they were once just like you. It’s the editor you were using. Try a proper code editor like Codea.
Thanks Ben, it’s delightful to hear about someone’s joyful experiences in learning to code! One of us… one of us…
Came for the title (which gave a good laugh), stayed for the article. Also I found a grammatical error :O oh no! Credibility Lost.. ha ha second paragraph – “We have a great program here were any employee can sign up for coding lessons facilitated by our engineering staff.” – the word ‘were’. Anyway, keep on learning!
I think I felt this way in high school. Good luck on your path!
Exactly – never too old to learn. I’ve been a software developer, architect, team lead and more for 35 years and I’m still learning new stuff and most importantly, enjoying it. Tech is an amazing industry, we’re lucky to be able to operate in it and (usually) achieve amazing things. Mostly!
Re “…add some buttons?”:
Bring suggested edits to the blogging world. Going through pull requests on GitHub is far too cumbersome, inefficient, and slow. (This blog is now better in that respect than it used to be, though.)
print(“Ben Popper might actually be better at coding than a lot of us.”)
Funny how much of this had me nodding my head and thinking “Ayup, been there, done that”. Ah, memories…
If you’re serious(ish) about learning web development (or, at least the HTML & CSS part), you’ll probably find this handy: https://www.mozilla.org/en-US/firefox/developer/
The MDN also has a lot of learning resourses: https://developer.mozilla.org/en-US/docs/Learn
If it’s not obvious, I likes me some Mozilla…
Thanks – hoping to put it out in two weeks!
“a great program here were any employee can sign up” – I spotted the deliberate mistook ‘-)
> I’ve woken up with my head in a stranger’s lap, covered in drool, unsure exactly what room I’m in or what day it is.
I sincerely hope this is related to Jiu Jitsu 😉
Yes, back in my white belt days. Tap before you nap, as they say.
Hey Ben, thanks for the smile of recognition: I see myself and a lot of other people in that mirror!
Now this is the kind of humor I enjoy!
Next time write a blog post on how a white belt performed a forward roll after going through a warm up routine.
They rolled crooked and over their neck.
I love the title of this and that you’re willing to broadcast your mistakes to the world. I’m in the last semester of my comp sci degree and you have a much better attitude than when I started 5 years ago, good luck with everything!
So is Stack Overflow trying to attract new users by selling programming as a temporary hobby, like hipsters taking a pig-butchering class?
I don’t think the people now running this thing understand it at all, or even like it. It’s clear that to the management, “answering technical questions about programming” is a secondary consideration, if they see any value in it at all. Good luck with those priorities. If you try de-emphasize the only reason anybody ever came here, they’re not going to change their own priorities to match. They’ll just ignore you and go on as they were, until you try force them. You may eventually succeed in breaking something unique and valuable, if you keep trying. Good luck!
I got my first computer and learned to program at age 10 (almost 40 years ago) and I still marvel at the miracles computer technology has brought us. I’m a tool developer, an IT person, a performance person, and most importantly, a *user* all rolled into one. Learning any discipline “closer to the metal” is always a kind of crucible. It has tremendous power to spark interest as well as to frustrate the crap out of you. Time and obligations permitting, it sounds as if your interest has been sparked and you will certainly benefit from exploring the power and educational heft of programming (or as I like to call it, “playing computer”).
Am going to say something controversial… but first, I love your writing style. You have a great balance of laughs and useful metaphors in here. Top notch job!
And now for the controversial part… as soon as you get your basic coding experience, I highly suggest you look at http://www.bubble.is. This isn’t a sales pitch, just advice. Coders have been engaging in tedium of craft for far too long by rebuilding the same parts of applications and libraries over and over and over again. Bubble let’s those with a medium programming background excel at making apps that would otherwise take years to learn to build by having already coded up the things like how to align divs up to user Authentication and the harder parts you mention. It’s less wrestling pixels and more “actually build something useful”. Figured I’d let you know about since it’s been so useful for me.
Ehh…You’re going from wrestling pixels to wrestling with the design tool, which is more frustrating. At least, that’s how it always feels to me.
Awesome job getting started. I think all developers go through the emotions of thinking we are coding masters after solving a problem and then quickly get bought down to earth as soon as the nxt problem occurs.
Keep going…at least untl u realise HTML and CSS arent programming languages…pixel pushers are, well, pixel pushers
Nice Job. It’s cool to see other people from Brazilian Jiu Jitsu who are interested in coding.
I loved the references to jiujitsu too.
In our bjj gym, almost half the people are coders 😀
plus some scientists, students and other people close to IT 🙂
It’s a wonderful place! guess you would enjoy it too 😉
I always learn something very useful on stackoverflow. Thank you for very helpful article.
It is interesting to note how many lines of COBOL are still running in the world, but much more interesting to ponder on how many of those lines were yours or which ones survived.
Welcome to the journey!
I’m also learning this stuff in my mid 30s. I went to school for it, drank a lot of beer, barely graduated and then joined the military. Let’s just say it is hard to start over from square one, and it was comforting to find out that I’m not the only one out there.
I’ve been coding for 35 years, and I was recently bitten by curly-versus-non-curly quotes.
Suggestion for a coding task: at the top of the Comments section, add a count of the number of comments after the “Comments” heading.
“I’ve decided it’s time for that to change”
“I was determined not to quit […] spent half an hour […] took me about another week to realize”
“Where was the math and the algorithms, functions and for-loops? How long until I could leave the sandbox and play with the big kid toys?”
“Sure, I could copy and paste some code, tweak a few nouns, and have a button pop up. But what if I needed to setup my own server to host the website?”
With just these few sentences you already proved to have all necessary traits to be an excellent programmer, I think. Determinism, perseverance and – most important – thirst for knowledge. The rest is just a matter of time. And probably not even too much of that.
Have a lot of fun with your new “power” 🙂
The title is clickbait and doesn’t correspond to contents at all, I feel deceived
HTML+CSS is not programming. It is markup.
“…. It took me about another week to realize the difference was that….”
You can’t be the worst coder in the world if you wanted to / did take that week to realize the difference.
Ben, just let all those humorless and I-am-so-serious people “in hun sop gaarkoken” (Dutch saying). Great article, don’t apologize for hurting feelings. The problem is their’s. Love reading it.Nothing better than self reflection and humbleness.
As an early 60’s “teenager wannabe” I can so relate! I did HTML when Noah was but a wee lad and now learning the HTML 5 and CSS and “coffee” something (Java!
ROFL) and it is so much harder when one is 60!!
As to the rude and sarcastic people who posted – give em the middle digit and rise above them as you’ve done all along!
Migrating out of necessity from electronic hardware design in 1972 to microprocessor assembler coding I’ve learned from books etc. C, C++, VB, MsSQL, then retired. Here I am 5 years later at 72 having learned php, MySQL, java, SQLite and now Kotlin so I can carry on coding for pleasure! I’m not sure you’ll want to go that distance but I feel very lucky to have had a career doing what I enjoy. I hope you do too.
We have a great program here where (not were)…
Fixed, thanks for the catch.
Echte leuke reacties hier te mogen horen!
Secure/Safety Internet for all!!
Free broncode for all!
Hacker lol/ blob /new world
HaHaHa! I’ve been making a living as a coder for about 38 years now, many times I feel the exact way you described in this article. Very entertaining, Thank you!