Programming Isn't Hard
Programming isn’t hard, it’s as easy as baking cookies.
Almost everyone I meet tells me coding is hard. Answers to programming questions on Quora discourage the original poster: first you have to skydive without parachute, then you must swim through shark-infested waters, conquer Scylla and Charybdis, before you can face that Programming Challenge, and make it safe back home. You may as well not start at all.
A lot of professional programmers I know are self-taught. They’ve learned computer science, but learned how to code in their own time. It’s awesome to see that they’re so fluent in it, they think and breathe in computer code. Some of them have an air of arrogance around them: they treat their ability to code as elites, something only they are capable of.
I think a lot of programmers mistake the difficulty of programming with the effort it takes them to solve programming problems. In my work as a developer, I’ve faced many bugs I couldn’t solve. This led me to believe that programming is hard, but then I realized it isn’t: the problems I try to solve are hard.
Many aspiring coders try to build projects that are too big. Unfortunately, no one ever tells them! Instead, when the aspiring coder asks for help, they say: You shouldn’t code, it’s too hard. The aspiring coder agrees, mistakes the tool for the problem, and gives up.
It’s as if you’re trying to create fresly-baked cookies out of thin air, and you don’t know how the oven works. Instead of acknowledging that you suck at handling an oven, you blame your lack of effort, and throw out the plans to bake cookies. You could have had nice cookies, if you would have broken up the project in smaller steps and learned how to execute those individual steps.
How do you make a difficult problem easier to solve?
- You ignore the problem
- You divide it up in smaller pieces and tackle them one by one
- You get someone else to solve it
I once heard a story from Anansi The Spider, about an army. He said that an army is strong because a soldier on it’s own is weak. Anansi showed me a twig and broke it. Easy, he said, twigs are weak and rigid. Then he grabbed a whole bunch of twigs and tried to break them. Harder, he said, because a bunch of twigs are strong and flexible.
People mistake programming for the bunch of twigs. Instead, programming is the hand you use to break the twigs. Try to break a problem that’s too hard to solve: you get stuck and give up. It won’t work. Take the twigs one by one, use programming to break them, and you’ll find that the problem breaks too.
Everbody is an app founder these days. We want to make clones of Facebook, Instagram and Twitter. We expect to be equally successful, we tell ourselves: “They can do it, so I can too. As long as I work hard enough!” It’s what the inspirational quote said, right? We feel entitled to success, because we work hard. We glorify failure, because we think that if you fail enough you eventually succeed.
You start to work on your app’s landing page, try to get a team together, read up on how to pitch to investors, all while listening on the newest growth hacker podcast at 2x speed. You move in with your parents, get a year worth of savings, forget to see your friends, and now only hang out with cool soon-to-be-billionare entrepreneurs like yourself.
If you just would have sat down and wrote one line of code. You’d be closer to becoming a billionaire than after any of the steps above. You’d have a smaller chance at failing, because you wouldn’t have tried so many things at once. Instead of letting your imagination blow up, you’d have gained self-respect and self-confidence by doing the smart work.
Listen to Anansi The Spider:
- Take a bunch of twigs
- Throw them on the ground
- Break the twigs one by one
You’re not going to get there by working hard at it. You have to work smart, too. Don’t believe anyone who tells you programming is hard. They simply mean: the problems I solved with programming were hard.
Don’t discourage yourself by thinking programming is hard, because the problems you solve are hard. Instead, make the problems easier to solve by breaking them up in smaller pieces.
Photo credit: Sean MacEntee, CC BY 2.0
Hi, I'm Reinder.
I help developers play with code.
Most Popular Content
- How To Launch Your App
- How To: Pass Data Between View Controllers In Swift (Extended)
- How To: Displaying Alerts With UIAlertController In Swift
- How To: Random Numbers in Swift 4
- How To: Build A Real-Time Chat App With Firebase And Swift
- Creating A Simple iOS Game With Swift In Xcode
Comments & Questions
Got a comment or question? Let me know! I read and respond to every one. Thanks!