The other day, I received an email from one of my blog readers asking what he should do in college to become a software developer. After thinking about it for a while, I realized that there isn't much information out there as far as career guidance. The problem with careers in the Information Technology (IT) field is that the field changes so frequently, that colleges and universities rarely have time to react with curriculum updates. Furthermore, the fundamentals of computer science may help in some select career paths like low level software development, but will often not touch areas such as systems administration or network engineering. With that said, I'll delve into the software development sphere with some advice for class selection and/or self-learning topics.
Software Development can be further divided into several sub-categories like device driver development, operating system development, application development, web development, and more. Each type of development has it's preferred programming languages and styles, and each language has it's own benefits and disadvantages. Most colleges and universities will offer programming courses that focus on structured programming (like ANSI C) and object oriented programming (OOP) (like C++, Java & C#). These languages are good for anything from low level programming (like device drivers) all the way up to enterprise applications. The new trend in development, however, is web development, and scripting languages are currently the leaders in this field.
For a long time, computer hardware was very expensive and not all that powerful. This forced software developers to focus on writing extremely efficient applications in languages like C to run as fast as possible. Today, computer hardware is very cheap and very powerful by all standards. Because of this, code doesn't have to be as efficient to run as fast as it did on older machines. Higher level scripting languages like Ruby, Python, PHP or even ASP.NET allow much faster development for web platforms but sacrifice in efficiency and execution speed because they are scripting languages and not compiled like C or C++. Powerful web frameworks like Rails (for Ruby) and Django (for Python) make the development process even faster while removing much of the tedious repetitive pieces out of traditional web development. The current generation of Web 2.0 sites are taking advantage of these scripting languages and frameworks to deploy web applications faster and allow for easier scalability. The popular Yahoo! owned photo sharing site Flikr was written and deployed through Ruby on Rails.
So here comes the advice. Seek out colleges and universities that offer programs catering to the type of software development you want to get into. For web developers, look for programs that teach Ruby, Python, PHP or ASP.net. Try to take classes that introduce you to object oriented programming. If you can't find a program that teaches web development, it is ok to take a traditional object oriented programming class like C++ or Java to get an understanding of OOP and then get some books on Ruby on Rails or Python to learn those languages on your own. Any software developer will tell you that the best way to learn to code in a new language is to see others' code, understand it and try to use it within your own code. Many new programming books for web development languages like Ruby and Python are using the 'learn by example' method of presentation. They often start with a sample project and then have you build it in phases as you learn the different parts of the language. At the end of the book, you should have a functioning application and a good sense of how the language works. That's about the best advice I can think of for future web developers. If you have any other questions, feel free to ask.