So you have your shiny English degree in hand and upon strolling into the job market, have just realized
you've made a huge mistake
. Maybe your hope was to become a great writer, but by now you probably already know that a) there's no money in it, and b) You don't need
tens hundreds of thousands of dollars worth of classes explaining Jonathan Swift's metaphorical commentary on 18th century politics. Maybe you wanted to be a teacher. That's delightful, but you're probably going to end up teaching a science course anyway. So let's just agree you don't have a good justification for your degree and move on to making you not a foolish person who just spent loads of money for the privilege of being in debt longer than virtually any other degree holder (hey, buck up kiddo – at least you're not a philosophy major).
I'm going to suggest something that's going to sound crazy, but hear me out:
"Like with computer machines?"
I've had a lot of people asking me lately how I got into "computer stuff" and what they should do to learn programming 1. Software Engineers in their enthusiasm and well-intentioned desire to solve a problem will often respond with a list of books to read and languages you should learn. For the technically minded, this is all well and good, but creatives often lack the confidence to pursue the standard path to becoming a programmer. So, for those starving poets out there, I've outlined what you need to know before you even begin, based on my own experience:
(For the purposes of being realistic, I'm going to mostly talk about web development. This will help you get started if you want to build a custom website or a simple program, but if you're looking to build a new operating system from the ground up, you'll probably need a more robust lesson plan.)
Engineering is hot.
Since the era of Ricky Martin, there's been a lot of job security in programming, but right now it's particularly in demand. There are a lot of reasons for this, mostly involving the evolving shifts of our economy (and the mysterious plots of the otherworldly beings who live among us, unknown and unseen), but regardless, there are simply not enough engineers out there right now to satisfy demand, and it's getting vicious. Companies are poaching from each other, recruiters are offering bounties on programmers, and "idea people" are languishing from the inability to make their "next great thing" into an actual thing. So if you want to stand out from the glut of BA degree-holders entering the job market every spring, learning even the most basic development skills will help (HTML, for example, is fast becoming a required skill even in non-technical fields).
Adopt engineering philosophies.
As you learn to code, you'll also want to take some time to learn about engineering culture. The community highly values self-motivation, discovery, information sharing, and creative problem solving. Engineers are not inaccessible geniuses. Just like you, they've developed a specialty, and are often enthusiastic to welcome you into the
Coding is not all math.
Math is, unfortunately, scary to most people, but it's rarer in programming that you probably imagine. Most programming (at least early on) is more about logic and syntax. When you do need to leverage mathematics, you'll discover that it is typically straightforward and often already solved by others who have put together libraries (not those kind of libraries) or modules to handle common tasks (engineers don't like to rebuild the wheel). In other words, if you can learn iambic pentameter, you can learn this.
Start by doing, not reading.
Obviously, you'll need to understand some basic concepts to make anything work, but before you delve into best practices and the nuances of whatever you're learning, build something simple. Don't worry about doing it "the right way", just get it working (no matter how perfect you think your code is, your future self will look back on it and find it laughably bad). This will give you the confidence to push onward and keep you from getting overwhelmed by information.
You're not going to learn everything.
No developer has a mastery of every programming language (they're not ninjas, no matter what their title implies). Most stick with the prevailing languages for the type of work they want to do.
You're never done learning.
Unlike many fields, programming demands that you continue to develop your skills as new technologies emerge. The languages you learn today are probably not going to be the languages you're using in ten (or even five) years. Don't panic though (unless you really want to) – programming languages typically share many core concepts, so you're never starting over completely from scratch 2.
Google is your #1 programming tool.
There isn't a developer alive who doesn't need to look things up occasionally. Knowing how to search for and find information is the most important skill you'll learn (see, your high school librarian was right). Never ask the community for help without searching for a solution yourself first. Before you start building out a complicated chunk of code, check to see if anyone else has done it already (spoiler alert: they have) and try to understand their solution.
Collaborate and listen.
Don't be afraid to post your code. Make judicious use of communities like Stack Overflow and maintain a portfolio of your work at GitHub. Embrace failure; don't be afraid to get things wrong. Rare is the engineer who will mock you for learning.
Coding should be fun, but isn't for everyone. It can be frustrating to learn a new skill, but you should feel a sense of accomplishment and pride with each success. If that feeling doesn't inspire you to keep going, coding just might not be for you. If it does, you'll discover programming to be more rewarding than you likely expected.
Now, if you're still
reading convinced this is something you want to do, you're in luck, because the Internet will help you make it happen. You should start here.
1 Answers: 1) I've been doing light web development since the 90s (god, those GIFs were majestic), but only got really serious about it a few years ago. 2) Go to my website and read the blog post I just wrote on english majors learning programming.
Coming soon! The sequel to this post!
"HTML and CSS – How Initialisms Will Transform Your Love Life"
(or, err... maybe with a different title, but yeah, HTML/CSS will be the topic)