Typically, a finished product — whether it’s a simple one or something as sophisticated as “Snow Fall,” the New York Times’ immersive multimedia piece on an avalanche — doesn’t give many indications about how it was made, or what challenges the developer faced in creating it. An apparently simple site might have taken hours while you might guess that another site took weeks when it took only hours because there were many available open-source tools to start out with that did a lot of the heavy lifting.
Looking at the finished product — or a tutorial like my Insanely Illustrated Guide To Your First Data-Driven TileMill Map — doesn’t really give you insight into whether something took a little effort or a lot of effort. Or whether it was frustrating or a breeze for the person who created it.
That’s because everybody who’s making things with code experiences The Stuck.
The Stuck happens when you read the instructions, and everything seems like it should be working right…but it’s not.
And you can’t figure out why.
It doesn’t matter if you’ve been coding for 3 months or 30 years, The Stuck, like The Force, is always with us. How happy we are learning to code (or coding at all) has a lot to do with how we respond to The Stuck.
The Stuck has certain side effects, like Desk Flipping Syndrome:
So I’m currently working on an Absurdly Illustrated Guide To Data Apps Using Tabletop.js. Tabletop lets you make web apps fast from data stored on a Google spreadsheet.
Now, that’s not because I know Tabletop.js. I’ve never used it before. To me, teaching is a really effective form of learning. I want to learn things well enough that I can explain them step by step in clear, concise language to a total beginner who’s never used it before. Once I can do that? I know it pretty well.
But that means I have to get to “Hello World” in Tabletop.js — I have to install it and get it up and running for the first time.
In my inexperience, though, I downloaded way more files to get the tutorial working than he intended. So? I asked him about it on Twitter:
I swear, coding gives me more Blanche Dubois moments-per-unit-of-work than any other thing I’ve done:
Mike did more than tell me what I needed to know to get it done — he helpfully uploaded a neatened-up version of my code to my Github repository.
Isn’t that really nice? Mike’s a solid citizen of the Republic of Code, that’s for sure!
Progress is when your code doesn’t work…but it is throwing new & different errors.
So my next step was to throw myself upon the mercy of StackExchange, the great and mighty programming Q&A site.
I tried what folks there suggested — one person even got my code running on their own machine while I couldn’t get it working on mine! But ultimately, I still couldn’t get it to work.
My next step? Go to sleep. Coding while tired is bad. Debugging while tired is a complete waste of time.
The next day, none other than Jonathan Soma, Tabletop’s creator, provided me with the solution that ultimately worked. Turns out I didn’t really understand the instructions about how to make the Google Spreadsheet that Tabletop.js needed to use as a data source available.
Now, my Github repository for my Tabletop experiment shows that I made my first commits on April 19 — but I didn’t get it working until April 23.
Is a lot of that due to my own inexperience? Yes! Absolutely. But I’m putting this up here because I want beginners to understand two things:
- It’s not unusual to get stuck. It can take a lot of time in the beginning.
- When you get stuck, don’t sit there and beat your head against the wall — that’s pointless. Ask for help. Then take a break — go do something else. Take a walk, take a nap, hit the gym, watch Game of Thrones. Whatever.
I don’t think I’m stretching too much to say that even people who have been in the industry decades also get stuck on a regular basis — they just get stuck in more interesting and sophisticated ways than I do.
Lesson? Make friends with The Stuck, because it’s always going to be with you on your journey into the Code Forest. Ask for help — and be sure to pay that forward when the time comes.