I want to pass along some advice, but I first should share where I am coming from. I have enjoyed developing pieces of code and working with computers since my first experiences with them in high school and college. The challenge of making a program function exactly as I want it to provides a perfect way for me to compete each day. I have a very specific goal in mind each moment as I tackle each new requirement and that challenges me at work. This is a great segue into my first piece of advice.
1) Understand the type of field you are getting into.
I would describe my typical work day as spending about 2 hours with people and 6 hours sitting at my desk with my computer. As I have become older and gained more responsibility by being a senior developer or architect, I do spend more time meeting with clients and in meetings. Still, the majority of my time is at my desk working with my computer. You have to be ok with a very quiet day at your computer while thinking very hard about how to develop your program. If your skill is to be around people all day or to be active and outdoors, then being a software developer will not be the best career for you. The best way to figure this out is to take programming classes in high school or college and then find an internship where you can experience first-hand the typical day of a software developer.
2) In one of your first jobs, find a company that will expose you to a wide variety of projects and technologies
Being exposed to a wide variety of projects and technologies is extremely valuable as you build your career. Being involved in many different projects will expose you to how different projects are run and to all of the different technologies within those projects. That isn’t to say that one single project cannot have a lot of variety to keep you busy, intrigued and learning. But over the course of the first 3-5 years of your career, I would tell you to find those companies that will train you well and expose you to a variety of projects. With this knowledge you will then be able to set your path and use those experiences to gain access to the projects and technologies that you enjoy the most.
3) Dive into the technology of your current project head first.
This ‘head first’ is of course a typical statement, but you really need to fill your head with the technology you will be working with. It is great to be able to understand the business requirements and to be able to articulate them back to the end user. In the end you have to be able to solve the problem in an effective and efficient manner. The only way to do this is to build your knowledge in the technology. This will usually come in two parts. One part is to read as much as you can. This may come in the form of books, magazines, blogs, wikis or documentation. You can tell my age a bit by listing the traditional paper options first, but sometimes I still like the way a book or magazine can be carried with me and read to show myself that I have attained a specific piece of subject knowledge. The point is simply to soak your brain with as much knowledge about best practices and what is possible with a given technology. Once you remember that something is possible you will be able to go back and figure out the specifics on how to implement it. If you don’t know that something is possible, then you will never be able to go down that road.
4) Concentrate on the technology areas that you are working with.
5. Know that your true worth as a developer will be how well you work with others.
Learning technology is great and those skills are important, but you cannot solve problems in a vacuum. You need to build up your verbal and written communications so that you can be in the important meetings where exciting problems are being solved. Being able to talk to both technical and business users in the same meeting is a skill that gets you to become a go-to person in those important projects. Work on your writing skills by taking the time to do it right. Re-read your emails and be able to organize your emails well. End your emails with what you expect to accomplish and what others need to accomplish so that expectations are in order. Take a class on written communication if needed. Join Toastmaster or volunteer whenever you can to speak in front of groups. This is an important skill to get you remembered when a group is working together. Finally, be up-front, honest and hard-working on your projects. Those who are self-starters and who do not need to be followed-up upon are so easy to work with and those co-workers will be given the trust to take projects and run.
I wish you the best with your career decisions. Dive in and enjoy the ride!