Imagine being able to create anything you want, using only your mind as a tool.
Just about everything that utilizes electricity – from space ships, to washing machines, to the Internet – is dependent upon, and has been built using, some sort of computer program. And if you can learn how to read and write them, the world around you changes from something you experience, to something you can create.
Anyone who can write a simple list of instructions can write a program, as that’s all programming is: writing a precise set of instructions for a machine that cannot intuit anything. Knowledge of mathematics is definitely not necessary. In fact, I can’t think of a pre-requisite skill you’d need beyond basic knowledge of how to operate a computer (if you can turn it on and open an application, you’re probably fine).
If I was starting again from scratch here’s what I’d do:
- Start by learning the Python programming language. It’s a beautifully simple language that’s really easy to learn, and just as powerful as any other language. I’d recommend taking the CS101 course on Udacity (it’s free and wonderful), then reading through the Python language reference to see all the cool stuff you can do with it, and then taking CS253 to learn about building things for the web. It really doesn’t matter what language you start with; what matters is that there are no obstacles that get in the way of jumping right in (Python comes pre-installed on your Mac), and that you have a good set of materials that are both well made and interesting.
- Learn how to use your computer’s command line. It feels very primitive when you start – typing ‘cd’ and the name of a folder is a command to move you into that folder – but knowing how to use it is extremely handy if you ever want to run your applications, or install and work with stuff other people have created. Also, it’s kind of fun to interact with your computer on such a deep level! (On macs, the command line is accessed via the ‘terminal’ app, which by default uses an interface called ‘BASH’ – the Bourne-Again SHell). You can google around for ‘bash commands’ and material about VIM - the command line’s built-in text-editor – to learn the basics, or just read the reference.
- Understand how the Internet works, and learn HTML and CSS. HTML is a ‘markup language’ that tells web browsers (like Chrome, Firefox, and Internet Explorer) how to format content that’s published on the Internet. To specify that a block of text is a paragraph, you would surround your text in ‘<p>’ tags, which tell the browser to present that text as a paragraph. Then you would use CSS – a language for styling web pages that you’ve formatted in HTML – to tell the browser that paragraphs should be bold and use the Times New Roman typeface.
- Learn about databases (a popular one being MySQL). Databases are how information is stored online and offline, and they have their own simple language that allows you to interact with them (to store, retrieve, and delete data). Google uses databases to store their index of the Internet, Amazon uses them to store their catalogs of products, and Facebook uses them to store information about their users. A command to pull a user’s data from a database might look something like this: SELECT * FROM users WHERE first_name = Justin AND last_name = Wohlstadter.
Programming is a craft, just like woodworking. While it takes years to become a master craftsman, it doesn’t take long at all to figure out how to use nails and wood to make something simple and useable. If you give it a shot, you’ll be amazed at how quickly you can create real things, and just how incredibly fulfilling that experience is.
Juventas Fugit is designed and written by Justin Wohlstadter, who, when not writing in the third person, can be found in a coffee shop talking about startups, thinking about the future of education, and generally procrastinating something important.
- Passions: startups that positively affect the world, education innovation, good design, learning, and meeting those with an equally insatiable curiosity.
- Play: working on something really neat....
- Previously: was director of product design at Enterproid. Before that I built the early-stage venture arm of Penny Black and co-founded BOLDstart Ventures, where I was lucky enough to invest in some awesome startups including Rapportive (sold to Linkedin), Blaze (sold to Akamai), GoInstant (sold to Salesforce), Klout, Indiegogo, Enterproid, ShowMe, LocalResponse, and many more. And before all of this I was involved in a bunch of other crazy, less successful startup ventures involving fire extinguishers, measuring philanthropic impact, and creative spaces.
- Pedantry: most of the important stuff I taught myself or learned from friends, but I’m fortunate to have also (barely received) degrees from Harvard and Oxford. At Oxford I wrote my dissertation on how internet innovation will disrupt access to higher education.
- Procrastination: can be found on Twitter, Linkedin, AngelList and other web spaces, and be reached via email at my first name at this domain.