In the last 20 years there have been many changes, both in the programming languages used and in the technologies themselves. It is an evolving field with some great rewards as well as challenges.
It is necessary to enjoy this line of work because it requires constant upgrading of skills. Although it can be argued that you should do this in any field, with technology you will be required to keep constantly up-to-date. Failure to do so will lead to obsolescence in a short amount of time.
What programming languages should you learn? How do you go about learning them? The key is to be able to learn new languages quickly. One viewpoint is that companies give too much weight on a programmer’s knowledge of particular programming languages. Knowing the ins-and-outs of a language is important but in today’s environment, a programmer needs to be well rounded; software development requires proper communication. Communication is about 1/2 the job. Gone are the days of sticking a bunch of programmers in a corner and have them crank out code.
How do you go about learning about programming? A course at a local community college can be essential in starting that endeavor. There are also online resources such as Microsoft (for .NET languages) and Sun (for Java) that may prove useful on how to get started.
Even after taking courses there is no better way to learn than by getting a project to tackle. Often, this is a Catch 22 because you cannot get a project without experience and you can’t get experience without prior projects. One way around this is to volunteer to write a program(s) for local organizations such as churches or other organizations. You could even talk to businesses in your area, that have programming departments and offer your services for free or nominal fee to get some learning and experience.
Many technologies that exist today are complicated. There is simply no way to know every aspect of every technology that exists. As an evolving field, new technologies are being introduced constantly. When undertaking a project, you are often under tight time constraints and deadlines. You need to be able to solve the problems within the allocated timeframe. The challenge here is being able to know where to find answers quickly. Services are available that can facilitate quick access to those answers. Two services that have been extremely useful for me are Safari Online http://my.safaribooksonline.com/?portal=oreilly) and Experts Exchange (http://www.experts-exchange.com). For most of your reference needs, you can use Safari and for direct answers to questions, Experts Exchange is the way to go. There are plenty of others but these are my personal favorites.
An article about programming and the software development process would not be complete without a discussion of outsourcing and offshore development. This controversial subject could be the subject of an entire new article and then some. But it is important to know that this trend is here and will continue for many years to come. Some programmers have seen rates drop 30% because of it. Outsourcing is a fact of life. Ignore it at your own peril!
The best way to combat this trend is to embrace it and use it to your advantage. Do this by employing the communications skills that are required by a software developer as discussed above. By understanding the requirements and being able to convey those requirements to an outsource entity you effectively add value to your organization. By understanding the software development process, you can offer to support those outsourcing projects. This too, adds value.
In reading this article you may feel that you are cut out for a career in programming and software development. There are many challenges that a programmer is faced with including those discussed in this article. Constant learning, outsourcing challenges and proper communication are all components that a programmer is exposed to. If after experiencing all these elements it is still something that you desire, programming can indeed be a fulfilling career.