Tips for Aspiring Programmers04 Aug 2015
Every so often I have friends ask me to talk to the someone who is interested in computers and programming. I’m always eager to run my mouth so I, naturally, always jump on the opportunity. But after telling the same story multiple times I figured it’d be more efficient to just write down my definitive TIPS FOR ASPIRING PROGRAMMERS here and just share this instead.
It’s never too late to start. You don’t need to decide to become a programmer early in life. A lot of people don’t even study computer science in college and just pick up programming on their own. Some people don’t even go to college, although I highly recommend college as it was a great academic and personal learning experience. I have worked with many talented people who have taken many different paths to becoming strong programmers.
Don’t get hung up on picking your first language. Lots of people are intimidated by how expansive the programming world is. You can program for micro-chips, phones, computers, servers, and even networks composed of many computers. The number of programming languages out there is also ridiculous. But don’t get bogged down by all the options you have. Just pick a language and go with it. The first language I learned was Java and I think it’s still a decent first language to learn.
There are lots of free, online resources to get you started. But where do you start? Fortunately there are tons of great and free resources available online. With the emergence of Massive Open Online Courses (MOOCs) available on sites like Coursera and Kadenze, you can sit in (i.e. watch videos) of real college courses from the comfort of your home. Watch the videos, do the homework assignments, and you’ll be pumping out code in no time. If you require more structure see if there is a local college that offers introductory programming courses.
Build something, even if it’s small and inconsequential. Once you’re comfortable with a programming language, try building something! It doesn’t need to change the world. Just pick a problem and solve it. Out of ideas and into space? I really enjoyed working on N-body Simulations and the Traveling Salesman Problem during my first college computer science course.
Learn to use version control early. Version control lets you do work and “commit” progress. Committing basically is like a save point for your work; if you do something terrible after making a commit, you can easily see what you did since that commit and undo it if necessary. It also makes working with multiple people on a project (the norm in most projects) much easier. I only started using version control when I started working, but wish I had done so from the get-go. It lets you do work and get to a good point, save that point, and continue working. It reinforces good behavior in programming: build out things incrementally and make sure they work before moving on. Like programming languages there are many version control systems. Git and GitHub are pretty popular right now; git is the system used to version control your code and GitHub is where you can remotely host your code and share it with others.
If you’re getting a computer to program, just get a Mac. This is definitely just my opinion because I know a lot of people are very sensitive over this issue. I grew up on Windows and switched over to Macs in college. I’ve used a few flavors of Linux in college. When it comes to finding the sweet spot between user-friendliness, usability, and “ease of jumping into programming” Macs leave Windows and Linux in the dust. Also, if you’re planning on programming for iOS or Macs, you’ll definitely need a Mac. For what it’s worth, the vast, vast, vast majority of engineers I’ve met in the Bay Area use Macs.
Start a blog and just write! I think writing is great for reflection and growth. Maybe you had a lot of trouble figuring out how to do X but searched around and found A, B, C solutions and decided to go with C because of this and that reason. Writing is a great skill to have. I found once you start working as a programmer, you’ll spend most of your time just writing code. That said, being able to effectively put your thoughts in writing will make you a better communicator and engineering is not only about writing code. Another benefit of having a blog is it increases your visibility. If an employer is Googling you (pretty common - I do it for interview candidates just to see what pops up), it’s good to be out there and have a voice. You don’t need to write exclusively about technical stuff. Write about things you care about. I write not only about technical stuff, but also random things that interest me (food, video games, etc). In short, writing will help you more effectively learn and grow as a programmer and put a more human face to you when you are sending your resume around town for jobs.
There you go! It’s a lot, but I hope it helps you get started if you’re interested in programming. If you have any more questions feel free to send me a tweet!