Remove years of agony while learning to program
So you’re interested in learning to program!? Awesome. You’ve made a wise choice. But here’s the thing…that’s incredibly vague.
Most people I’ve met that are interested in programming are actually people who:
- a) Have an idea for something they want to build.
- b) See opportunity in programming as a lucrative career.
Which is totally fine! But knowing how to approach these is entirely different. You, yes you dear reader, need to take some time to truly assess what you’re trying to gain out of ‘learning to program’. I will use myself as an example..
Executing on an idea vs. learning to program
I started learning to program because I was the ‘A’ above. I had a million ideas! And they were all amazing! But then I saw Ze Frank’s video on brain crack. If you have a million great ideas like I did, watch that video.
I was subsisting on brain crack, or the escapist fantasy of executing on ideas, daily at my lame job. I hated that and wanted to do something about it. I thought, “Well if all my ideas revolved around building websites, then I’m going to get off my ass and learn to program damn it!” Which was totally logical right?
But switch that thought process to any other industry:
- I want to open a restaurant, so I need to learn how to make 20 delicious dishes.
- I want to build a custom home for myself, so I better learn architecture.
- I want to eat a tomato, so I better start my garden asap.
But we obviously know each of these to be false.
I feel like I’m part of a generation of people who had an idea, learned to program, and are a bit lost now because we didn’t have a strong grasp of what we were really trying to accomplish by learning to code.
If this group of people actually exists, I think it’s because there wasn’t a strong playbook on building and testing your ideas. Not the mechanical ‘how’ of programming to build your ideas, as we know there are plenty of books and training courses to ‘learn to program’.
But the real goal, and the one that will save you weeks, months, years of time, is how to build your ideas with the specific skill you have or an interest you want to pursue to make your idea tangible.
This ‘lost’ feeling is being filled by a cottage industry of ‘experts and teachers’ who want to teach you all the things you’re missing from whatever you’re working on. And trust me, you’re missing a lot….
But here’s the rub, you’ll always be missing something. Because building, selling, marketing, and supporting a website/app is very hard.
So what does that leave us? Nothing?
The Vicious Circle
My enthusiasm destroyed me in the early days because I was running on pure mid-20’s energy. Program, read, drink, program, read, drink was the general cadence.
I was focusing my effort in not being lazy and executing on learning to program, to make my idea a reality, so I could find out if it worked or not.
I was doing a lot of running without asking myself frequently enough, “Why am I running again?” or even better “Is there a better way to run?”.
So what I was doing, and what I’d recommend you don’t do, is trying to learn everything about SaaS products/building websites, which is like drinking through a firehose.
So what’s a budding programmer/idea person to do?
Sidenote: I wrote a small tongue in cheek piece about this terrible routine on Medium: How to build a SaaS website from scratch solo.
Learning and Testing
I’m a big fan of the Lean Startup, and if you’re not familiar I suggest you buy the book. It’s a good read and especially if you’re green in your entrepreneurial efforts it will give you a much needed guide/framework on how things work. Nothing is gospel, this is just handy to get an idea of where to start.
I’ll write more about these in very practical terms but the basic concept is:
- talk to potential customers before you build (or do something to test the market) to make sure you’re building something people want,
- build the absolute smallest version of you idea (sometimes this looks very different than your end product),
- and talk to any users early to make sure you’re on the right track, and continue talking to them.
Which is awesome, but before you jump right into that young Padawan I’d recommend using the same strategy for your own personal growth.
Test You, Learn You
Just like so many amazing ideas you need to test and validate, you should test and validate your interests, strengths, and weaknesses in everything that revolves around building websites or software.
Before you ‘learn to program’ which I must be clear, is never a bad idea, like learning a foreign language, you should write down some of the more meta goals and narrow in from there. To do this, simply ask yourself “why?”.
- “I want to learn to program!” Why?
- “So I can build my ideas!” Why?
- “So I can be rich!” Why?
- “So I can travel!” Well…you could potentially travel to many places without going down road.
A simplistic example so let’s ground it in reality. My turn:
- “I want to learn to program!” Why?
- “So I can build my ideas!” Why?
- “Because these ideas burn in my brain until I can try making them and watch them fail or succeed.” Why?
- “I see the product in my head and I’m just curious if it could be a thing people use.” Is there a way to do that without learning to program?
- “Probably. Crap.”
It’s just food for thought before you dive into doing the thing that is so popular. It’s popular for a reason. Programming is interesting, challenging, and rewarding. But so is ice climbing… TechCrunch hasn’t covered that in a while though so I feel ya if you don’t think it’s worth it.
So as this ties to talking to customers and building an MVP. It’s really about learning about your marketing and trying it out. For you it’s about taking a little bit of time to learn something and seeing if it’s up your alley or not. My friend Ryan over at The Meteor Chef wrote a great piece on learning to learn.
Ok, let’s say you’re set on building websites or apps and ‘learning to program’.
My mistake in ‘learning to program’ is not knowing what exactly I was trying to do within that realm. For example, your goal may be to ‘going running more’. Which is great! Run more for what purpose? To run a very fast mile or to run a marathon? To run just for the love of running or to lose some weight?
Setting these initial goals is easily said but when you’re venturing into something new sometimes you lose the forest for the trees. Setting the goal doesn’t mean you’re necessarily done. But if you meet the goal it’s a great time to stop, assess what you’ve done for better or worse, and adjust. That might include stopping altogether.
My goal was to build my ideas and so I started ‘learning to program’ but then lead into design, seo, dev ops, UX, social media, blogging, copy writing, etc… When in reality I had achieved my goal much earlier than I realized and I should’ve stopped right then and said, “Cool! Goal complete! Now what?”
Branches of Programming
While you’re learning the fundamentals of building websites, take note of where you’re really engaged.
Are you loving the strict coding? Having a lot of fun designing the look of the site? Eager to get your work out and watch people? Love talking to people before you build anything to make sure you understand something really well? Want to know you have cash in hand before you lift a finger?
These are all well paid careers in the world of ‘tech’. Which solves ‘B’ from above.
Having a grasp of each is import and cool personal grow experiment. But as you continue to build ideas you’ll find yourself gravitating usually towards one or two of them. Take note of that and focus in on where your strengths and interests are. Then consider hiring or teaming up with someone to build the other stuff which solves your ‘A’ above.
I’m kind of all over the place in this post so let me summarize.
- If you want to learn to code, awesome! But remember to make sure it aligns with your larger goals.
- If you want to learn to code, to get to the sales part because you actually love sales and you just haven’t realized it yet, don’t deep dive programming.
- I’d recommend The Joy of Strategy to anyone who isn’t sure what they want to do. Simple exercises and thoughtful questions really help define your real goals.
- I do the exercises once a year and keep them in Evernote. Cool to see what changes and what stays the same.
- There are many areas of tech that require minor to major programming skills. Make sure to focus on the ones that matter to you. An SEO guy doesn’t need to know what a closure is for example.
- Set very specific, small goals. “I want 100 visitors a day.” or “I want to build just a prototype of my idea to show my friends.”
- Try it all and give it a good effort but if it’s not keeping your interest then bail on it. Life is too short to spend time doing stuff you hate plus you won’t have much success compared to someone who gives a shit.