Data Rebellion is all about getting your programming abilities to the point of usefulness as quickly as possible. And when it comes to learning programming, some paths up the mountain are shorter than others. If you’ve ever watched Anime, think about when characters make their greatest improvements. Sure, training often helps them get stronger and faster. And assisting others in fights gives them valuable experience. But their biggest evolutions almost always occur when they’re fighting their own arch-enemies (think Goku going Super Saiyan against Frieza). They’re being pushed to their physical limits by their nemesis, and unless they achieve new heights, they or their friends or their world will surely perish.
Now, a majority of the time the fate of the planet won’t depend on your latest Python project. But if you’re serious about learning, it’s worth thinking about how you’re allotting your time. So let’s consider what your learning options generally are. You can:
- take an online course (i.e. Codecademy)
- read a book (i.e. Think Python)
- try some exercises (i.e. HackerRank)
- or do a sample project that someone else has devised
All of these things are helpful, and I’ve made use of all of them myself. But have you ever had the experience where you start a course and get through the first few lectures, only to forget about it the next week? Or download an ebook and never get around to opening it? Or get bored of artificial exercises? Or lose interest in a project you know isn’t really useful to you or that you don’t truly care about? Personally, I’ve lost count of all the things I’ve started and never finished. And I think that’s perfectly fine. Why? Because those things aren’t what actually matters.
When I first decided to learn programming, I enrolled in Udacity’s Intro to Computer Science course. How far did I get through it? Maybe a third of the way. Then I heard about Codecademy, and got maybe two-thirds of the way through their Python track. Sounds kind of pathetic, doesn’t it? But at that point I was starting to get a feel for the language, and I came up with a personal project I was genuinely interested in: writing a program that composed music.
To start, I didn’t have a clue if you could even do anything related to music with Python, but I was obsessed with the concept. After working on it here and there over the course of several months I produced a script that was able to “evolve” unique musical passages based on a genetic algorithm. It didn’t win any Grammy’s, but going through the entire process of envisioning an ambitious (for me at least) project, methodically working through it, and ending with an actual working product brought me to a whole new level in programming, more so than any course or ebook ever did.
I’ve now gone through this process a number of times. For example, there was a time when my boss at my day job needed to get a ton of data from a website with a really shoddy interface. As far as we knew, manually copying and pasting each individual data point into a spreadsheet was the only solution, something which probably would’ve taken at least a couple weeks (and most of my sanity) to accomplish. So instead I tried to find a way to get the data via programming. I didn’t even know at the time that webscraping was a thing, but after about a week or so of hacking together a monstrously ugly R script, I had my data. Again, this project brought my abilities to new (if still modest) heights.
So if you’re in the beginning-to-intermediate stages of your programming journey, here’s my suggestion to you: find a need or passion of yours that you think might just be possible to address with code and start working on it ASAP. Here’s a list of projects to jump-start your thinking. Use courses and ebooks and such just enough to get you to the point where you have some idea of where to start. If you can’t see exactly how to get from point A to point B, good! That means you’re going to learn something along the way.
Maybe you want to automate a query on a government website so you can spend more time playing Tetris. Maybe you want to remotely command your office’s high-tech espresso machine to start up so that it pours as soon as you walk over there. Or maybe you feel clinically depressed every morning you arrive at work and want to write a script that tells a new joke whenever you log in. Whatever it is, be creative and ambitious, and don’t underestimate what can be accomplished with a little effort, Google, and Stack Overflow.
If you enjoyed this post be sure to subscribe, and feel free to comment or email me with any questions or suggestions.
Great article! I can definitely agree that a lot of my programming skill has come from the ability to just not be able to give up, even though I’m still not great, haha!
Thank you a lot
This is so helpful
Great advice! Keep up the good work.
Great post, thank you for coming thru with doing what you do, because in turn I become lit for my passion again.
I’m a 45-year-old guy who started writing code (though it was always called “computer programming” then) in BASIC on my Apple IIc (128k of RAM) back in elementary school. I remember quite vividly the very first time I put my hands on a computer (TRS-80) in fourth grade. Computers were awesome then; they’re awesome now. It’s just that now the average person can do SO much more of consequence with just some logic, knowledge, and persistence (more persistence than knowledge, I think).
In the last several years, I’ve kludged together apps in VBA/Excel, Visual Basic, C#, and (most recently) Python that have put the data-driven portion of my work life into overdrive. Things I couldn’t have imagined automating are … well, automated, and now I just look for ways to tweak and expand anywhere I can. Large, data-driven projects which take others in my field weeks/months to complete? They take me about a single workday or two. Sometimes just hours. The results of that efficiency have led to easy-to-measure revenue increases of thousands of dollars per month for my employer and myself. All because I love to program — though it has never been more than a hobby for me — and I love to solve problems and “find a better way” to do mindless, mundane, error-prone office crap.
I look forward to reading more here!
Grayson Stanton says
Thanks for your comment Michael, it’s great to hear you’ve had so much success with automation!
I just started programming by doing a bunch of small projects in Java. This seems like an interesting thing to do, try something truly interesting to me personally, and force it to work. Thanks!
This is exactly what I suggest to fellows who want to learn R, Python or both. Courses, books and classes can take you just as far, to really learn we have to focus on something “hard” (relative to current knowledge) and make mistakes, a ton of mistakes. I was able to learn R in little more than a year, and by learning R I mean I’m developing my first packages, I was able to do it by focusing on small projects I cared about. For instance, I remember spending a week to draw a chord diagram for a post I was writing, oh boy it took a while…
Wow, great article.
Is there anything similar to that projects list in the area of Big Data?
I wanted to learn it but had the same problem: couldn’t make all the courses, abandoned it, etc.
Grayson Stanton says
Thanks very much. Just searching briefly, here are a few pages I found that might give you some ideas:
Huy Truong says
I still remember that Goku had spent days and nights for self-training on the spaceship before the final fight with Frieza. Otherwise, Frieza would’ve one-shot him… That said, I still think the best way of learning something is through some formal training. Once done, you can improve your skills by doing a project.
P.s.: What made Goku stronger is his passion to be the stronger (what made Vegeta also become a Saiyan though he didn’t have a good deed?) Without this passion, you can’t even get your hand on something you’re passionate about.