Nethy left a comment the other day on my From Idea to Reality post where he asked how I got my start in programming. I thought about it, and figured it was worthy of a post because I don’t think I took a very typical path to being a web developer. Most of the other web developers I know got a start at a real early age because they just had an innate love for the creativity of programming and immediately were drawn to it the first time they used a computer. I was most definitely not like that.
In high school I excelled in math and science, which led to me being placed in a then experimental (and now very big) high school engineering program called Project Lead the Way, where I was one of the first group of five students in the country to complete the program. Naturally this led to me seeking out engineering as a career and I ended up at RPI majoring in Industrial Engineering. I chose industrial over civil or mechanical or electrical because I knew that the idea of building an efficient system could be applied to anything: a financial banking system, an assembly line, software, or just about any other industry. There’s always a need for industrial engineers because there’s always a need for things to be more effective and more efficient. My dream job at the time was to work for Disney or Six Flags on engineering the flow of people throughout the park…and yea, those jobs exist, they pay really well, and they’re really cool.
By chance, the head of our department ran a software company and saw the value in having us take programming classes in addition to more traditional things like quality control, statistics, dynamics, statics, and the like. So as a sophomore I struggled through my first programming class, Computer Science I where we programmed in C++. From there, I learned a decent amount of VB.net to build software for an embedded control project I took on as an intern. But still no web stuff, and I honestly didn’t have any interest in it.
Until my senior year when we had to take a course called Information Systems. Industrial engineering students were paired with web programming students to essentially create a web start-up. The first half of the class covered large scale systems design (like how Amazon developed their product database, or FedEx uses operations management principles to route their trucks), and the second half of the class we spent presenting our projects. It was a rather large class (there were maybe 15 teams of 4 people), and right away I saw that if I could learn to program I could have a huge advantage. The programmers had all the power – we could design all of the systems we wanted, but at the end of the day were clueless as to how to build them. Our teacher showed us how to set up Apache and install MySQL and PHP. A few of the presentations led to people starting their own businesses, which led me to think “if I knew how to program, I could do that too”.
After having no luck in a few business plan competitions, I came up with the idea for SportsLizard. The original idea was to become the “Amazon of sports cards” where you could find any card or collectible on the web. I wanted a buy/sell system similar to eBay’s but not in an auction format. At that time (2004), I couldn’t find any off the shelf software that did what I wanted, so I picked up a few books on programming and got started myself. I only chose PHP/MySQL over ASP or Cold Fusion because I was slightly familiar with it. At that time, PHP hadn’t established itself the way it has now.
That original SportsLizard launched over the summer of 2004 (screenshot here) and over time I’ve just slowly but surely gotten better at web programming. There really wasn’t any magic to it. My engineering background gave me a slight advantage, but I firmly believe that it’s something anyone can learn if they want to…probably in less time than they think.
If you’re looking to get started with web programming today, here’s what I would recommend:
- Start with just learning HTML and CSS. This can be done with an online tutorial like the free ones on W3Schools. Then buy a domain on GoDaddy for $10 and put up a simple site.
- Learn PHP as your server side language. It has it’s faults, but it’s become the standard. Most open source projects are done using it in conjunction with MySQL, and the communities for support are massive.
- Learn advanced stuff with books. The reason I prefer books over the web is that they generally guide you through real projects. The web (PHP.net in particular) is great for finding quick answers to small problems, but not so good for teaching you how to put together a large web project. Books are written by some of the best programmers in the world. If you can learn how to develop a project the way that they do, you’ll become better than most rather quickly. You also can get some great re-usable code from books, that I personally trust more than a piece of code I picked up from a Google search. My favorites are the Head First books by O’Reilly for getting started and the Wrox books for more advanced stuff.
- Shop for books based on what major projects they cover. Almost all programming books have a few major projects that tie things together at the end, like building a blog or forum or e-commerce site from scratch using what you’ve learned throughout the book. I always make sure that I find books that cover an end project that’s similar to mine.
I hope this helps some people and also clears up any questions about my programming background. If you’re serious about web business and just getting started, I think you absolutely need to seriously take up programming for a while. You’ll have a much better understanding of your business if you have a hand in creating the software that runs it.