A year ago I was mostly convinced that I would never have a job in the industry as a web developer. I was certain that I would always be a web hobbyist and I was O.K. with that. It wasn't until this past May, in my post entitled "No Longer a Web Hobbyist," that I announced my career as a web professional was about to begin. A lot had happened in that last semester of college. First, I decided to stop pursuing jobs in Computer Engineering and make a serious effort to find a job in the web industry. Second, I interviewed and received an offer for a position that fit what I was looking for (it was my only offer, and I got it in my last month of college). Third, I agreed to spend my summer working for a startup with a group of Cornell students in Silicon Valley.
Now I am in my second week at my new job and my title is officially "Web Developer." I had it changed because my skillset expanded a lot in the past few months and I am doing a lot of work that I didn't think I would be able to do when I interviewed. I've been thinking a lot today about all the things I did that really prepared me for my position, and I would like to share my advice with you.
The first thing I should mention is that, while I did take some courses related to web programming and information science, my coursework alone did not prepare me for my job. There are a lot of reasons for this:
- Most web programming courses are months — even years — behind what is going on in the industry
- These courses are also impeded by those students who don't have a solid programming background.
- There are a ton of things to learn in web programming that your courses alone can't cover.
That being said, courses are essential and I don't want to make anyone think that they aren't worth taking. My advice, however, is to go beyond your coursework, especially while you are in college. Here are the things that really helped me prepare for my career:
- Learn concepts, not syntax. Some people have the misconception that you should try and pick up as many programming languages as you can. The truth is that a lot of things work pretty much the same way across all the programming languages out there; you have your loops, your conditions, and some handful of data structures at your disposal. What you should know are the concepts… learn object oriented programming. Build something with the MVC model. Manipulate files and work with databases. Learn as many concepts as you can, because when you do, you will have learned a lot of techniques for solving problems and you will be able to pick up new languages quickly.
- Get some experience programming off the web. It might be hard to believe that you can learn a lot from writing a "classic" language like C and making software that runs on a computer (or a video game console, or an embedded chip), but you can learn a lot from it that you will find yourself applying to anything programming-related that you do.
- Learn XML and play with APIs. APIs are where the web is headed right now so it's good to have some experience with them. Some really good ones to play with are Flickr and Facebook. Along with APIs, you should learn how to work with the various data formats that are used to send information, such as XML and JSON (but don't try to write your own parser unless you are a masochist).
- Practice good coding principles. One of the most important things I learned about programming is how to write clean code. If you are not accustomed to keeping your code organized (functions go in one place, SQL queries in another, etc. etc.) and commenting the things you do, you really need to change your habits. Otherwise you will regret it a lot down the line when you are working with teams and building large, complex applications.
- Learn to read bad code. I hate to break it to you, but more often than not you are going to have to look at code that someone else wrote and usually it will look horrendous. Regardless of how much you might want to delete it all and write it again from scratch, you are going to have to figure out what it does and work with it. It's good to get used to this early on and save yourself the head-to-desk episodes when it happens at your job.
- Teach yourself as much about design as possible. On the web, everything you do is user-centric. Even if you don't have the natural artistic talent that a designer needs, you should still try to learn everything about design you possibly can. Pick up some Photoshop techniques, learn about user interface design principles, and get a mind for conveying messages visually. It will help a lot in understanding the design phase of every website, and it will expand your skillset too.
- Run your own website(s)/do some advertising/build your own web app(s). There are a lot of things that you can learn only through experience. Start a blog and see how many readers you can attract. Run some advertising and figure out what works. Build some web apps and cover the steps of making user account systems and developing both the front-end and the back-end. The time I put into my websites and into building my first web application really paid off in terms of how much I learned, especially since I learned things that I could never have learned in class.
- Work freelance. It's easy to build websites for yourself; it isn't until you work for clients that you realize how difficult it is to take someone else's idea to implementation. Plus, maintaining good client relations is a great way to build your people skills.
- Work at least once on a team. Regardless of what the work itself entails, you should definitely get some experience working with others. It will teach you to rely on other people for portions of projects and write code that others can work with.
- Get on the chatter. You can become very knowledgeable about web development simply by listening to what others are saying on the web. Read blogs, follow mailing lists, join discussion boards, etc. Doing so will allow you to learn about things you never would have heard about on your own and keep you ahead of the fast pace of the web industry.
That conveniently makes for 10 points, and we all know how popular 10-lists are… anyway, I hope everyone finds that advice useful. If you are a web developer, share your own advice for others in the comments.