Learning to Code - One Year Later
This original essay was written for the Designli.co blog.
I bought my first domain name about one year ago on 11/10/2013. Since then I've spent hundreds of hours staring into my computer screen, but this time it was in a different way.
I was helping to create the internet, not consume it.
I was coding.
I was (and still am!) learning how to build things the best way I know how - by diving in with my hands and tinkering.
Considering that this adventure has consumed a majority of my free time over the past year, I thought I'd share some insights. I won't be answering the "how" question here, but rather:
Why did I start?
What did I learn?
Should you learn how to code?
I had just kicked off the Autumn semester of my junior year in college. I was told this was going to be my most difficult semester in the Mechanical Engineering program (that turned out to be true). Fresh off the most challenging seven months of my life, I felt exhausted but insanely motivated to continue challenging myself.
School felt like more of the same, long days in the lab doing seemingly mundane tasks that only required manipulating formulas without an ounce of deep, creative thought that I've come to enjoy today.
Then, I had a million dollar idea (of course - ha!).
It was a website for small-to-medium size businesses to outsource business tasks to local university students. Think short term projects (5-20 hours) that could provide students with internship-like experience while eliminating the overhead costs small businesses would normally take on by hiring these students.
I thought, "Hey, why not go for this? What's the worst that could happen?".
It seemed like I just had one problem - I didn't know how to make it. [aside: I've come to learn that "If you build it, they will come" is not a successful model for any venture]
To some, that is an insurmountable wall of confusion. To an engineer, that is a challenge.
Actually, it is more than just a challenge. It's simply painful for an engineer to sit on the sideline and observe without gaining some deeper understanding of what's going on.
It's an itch.
So like a true engineer, I embarked on a journey to learn to code websites without fully understanding the landscape I was entering.
I scratched the hell out of that itch.
After about twelve months, I've assembled a small portfolio of web based projects. None are huge successes by any stretch of the imagination, most are just fun side projects I started to learn new skills related to web development. With that said, one of my favorites is a unique eCommerce solution for a social-good venture that is helping track the money they raise for cancer research.
Some of them include:
-Niche job board using web scraping
-Social website with DIY project sharing
-Wordpress job board
-Wordpress theme (coming soon)
-A location based task outsourcing website
-3D printing service directory
Outside of these personal side projects, I'm now a Project Manager at Designli.co, managing the design and development of mobile applications and websites. This drives me even more as the projects I work on at Designli will touch more people than I could on my own.
Designli is taking the power, reach, and growth possibilities of mobile apps and putting them into the hands of more hustling entrepreneurs and small-to-medium sized businesses. I couldn't imagine a more exciting place to be as mobile grows.
So, what are some random lessons that can help you on your coding learning journey, or any learning journey for that matter?
Think simple, and then go even simpler.
I could have started testing the underlying idea for my social DIY project website within 10 minutes of idea conception by starting a Facebook Group. Looking back, I probably should have done this anyway to start building a community for "launch".
Instead, I spent about three months coding after school and work to have a full featured product I could show people. For me, it was more of a learning experience, so the three months was going to happen regardless.
With that said, three months is a huge amount of time. if you're really serious about taking your idea somewhere, start early, start simply, start now.
Avoid the "Deer in the Headlights" at the start of projects.
When people think about starting to code, they fret over what language to learn and end up never learning any language.
Do some simple research. Search your favorite products and see what they were built on. Ask friends who program what they use. Figure out which is projected to be the most useful. Don't stall at decision time, pick a modern language with a large user base, or one that a friend knows, and just run with it.
The same goes for any project start. Focus on organizing the seemingly huge amount of info into something you can use to make a decision on, and move on. Revisit it later and iterate if needed.
You can't avoid the nitty-gritty.
If you start any technical project where you put yourself on the far edge of your skill level, something WILL break. If you are the only one working on it, be prepared to put in the legwork to fix it. Especially if other people are counting on your code (thus, counting on you!).
Go heads down, but don't miss the important things.
Learning anything takes patience, a desire to learn, and a willingness to put blinders on and focus. Especially if you are working or going to school while learning any new skill. You will have to reduce or cut something out of your life. TV, College Football, hanging with friends every night, and/or drinking late every weekend all command large percentages of your time. Unless you sacrifice sleep (I don't recommend this), you'll have to re-balance your priorities to fit this new "thing" into your life.
What's it going to be?
With that said, it's also crucial to keep yourself in check and make sure you don't miss out on the important or spontaneous things. I was guilty of spending way too many nights working on coding when I should have gone out and had fun with friends to relax and de-stress.
Want to really confuse yourself about your priorities? Read this.
Expect the unexpected.
Take every personal project time estimate, and double or even triple it. You're fresh in the game, and you don't really know how things work yet! Ten hours of work will turn into twenty or thirty after running into unexpected issues along the way.
Save yourself the headache later on by erring on the side of caution up front.
Pay for the things you find useful.
If there is one thing I've come to appreciate more than anything, it is the legwork that goes into building good software.
All of the apps and websites that you find fun and useful took hours of someone's time to build. If you find value in something, pay for it.
A mobile app can take hundreds of hours to code, and the truth is, most developers don't strike it rich. Support the developer behind your favorite apps and allow them to continue making awesome things for people.
The same goes with the world outside of apps/websites. If you find something worthwhile, support the people behind it.
Should You Learn How to Code?
The best reasons you should learn how to code:
1) Learn a new skill
2) Deepen your understanding of the internet + technology
3) Make a career change
4) Build interesting things
The worst reasons:
1) Get rich
2) World domination
3) You need to build transformative software in a short amount of time
If you're curious, I suggest just dipping your toes in and seeing what happens. At the very least, you'll walk away with an appreciation of the software you use everyday and a deeper understanding of the tech world around you.