A regular conversation I’ve seen around the web lately, and in conversations with friends, is the fact that those who study Computer Science see a disconnect between what lecturers are saying & what appears to be possible in the real world.
Any sufficiently advanced technology is indistinguishable from magic. — Arthur C. Clarke.
Take this great post, for example, in which Stephen Radford reverse-engineers the API for a podcasting app to create a great experience on macOS. Something that isn’t really available for ordinary folks. There are plenty of amazing podcast apps on iOS (and, presumably, Android), but none on macOS. This post outlines the process for reverse-engineernig a non-public API and then creating a slick UX for users.
You’ll never learn this in your CS101 course. A lecturer is going to teach the basics of reading syntax, understanding core concepts and some discrete maths. But that’s it. No cool hacker shit!
Even clued-in students (which I never was; youth is wasted on the young) will wonder when they’ll have the necessary skill to go from writing a simple ATM app in Java to creating a slick macOS app, podcasting or otherwise.
But in reality, doing some cool hacker stuff isn’t going to be something you learn in any class. Instead, that white hat hacker stuff is something folks need to explore for themselves.
Take this post by Lance Newman, who describes how he reverse-engineered the Instagram API to post photos without a phone. Couple that with this post about creating beautiful UI, and you’re further down the road than you would be had you waited for your lecturer to impart this knowledge upon you.
To summarise, doing an online course in programming, or taking a full college course isn’t going to teach you the magic of what can be done with code. Go forth & hack!