1: Develop a broad level of expertise
There are often numerous ways to solve programming dilemmas; this includes solving a problem within one language or using other languages and/or technologies. A broad range of experience with languages and technologies gives you a better perspective when facing new projects and situations.
Many years ago, I had an internship where I worked extensively with Lotus Notes/Domino, OS/2, and DB/2. While some of these technologies are no longer with us and others only have a faint pulse, working with them was a major shift from my days in school working with C, Pascal, and other traditional languages. Later I moved into this new thing called the World Wide Web, along with Java and Microsoft .NET and SQL Server much later.
I think working with such varied technologies early gave me a good foundation for thinking outside of the box (we did things with Domino that was well outside its defined scope). Furthermore, diving into the Internet waters early and jumping into Java gave me a great perspective for working with Microsoft .NET (specifically the Java knockoff C#) much later.
2: Do application support work
Developers often provide support for their own solutions, but what about supporting third-party applications or apps created by other developers? I worked as a developer for many years before I shifted gears and joined and eventually led an application support team within a large company. One of the biggest challenges of supporting a random collection of applications (which included custom and off-the-shelf solutions) was interfacing with development teams. It was an eye-opening experience; I knew QA groups and development often collide, but the animosity between support and development is on the same level.
From a development perspective, a positive aspect of playing the application support role is the chance to gain insight into development mistakes and how to (hopefully) avoid them. Also, supporting an application often leads to direct interaction with users (depending on the type of support provided) as well as using the application, so it provides the opportunity to learn how applications are used and common development mistakes with user interaction.
After a few years I returned to development, but my stint with support made me a better developer. Based on that experience, I encourage developers to spend time in application support with applications they did not develop, or at least support the applications they roll out. Get ready to have your eyes opened.
3: Work on your interpersonal skills
A common stereotype for programmers/developers and all IT pros is that they lack people skills, and TV shows like The Big Bang Theory propagate this nerd phenomenon. When I worked at a consulting company, I observed why there is this stereotype -- some developers were never put in front of clients because of their inability to communicate.
It is imperative to be able to properly communicate, especially when you have a great idea or do consulting or application support work. Personal connections via networking are also valuable for getting work and advancing your career.
Developing people skills is not easy, but I tell young developers to work at it -- take the initiative to speak to others, join user groups, take classes on public speaking, and polish their written communication skills. (Read: Geeks and communication skills)
More advice for new developers
A good suggestion mentioned during my chat with IT veterans was to never stop learning (which goes along with not pigeonholing yourself with just one technology). Another great point was to get involved with open source projects, because some companies will not hire a developer who isn't active within the open source community. The suggestion to change jobs early in your career to get a feel for different environments and cultures is also sound advice. A hot topic of discussion was learning how to navigate office politics, but this quickly turned into a rant, so I decided to leave it off my list; plus, it can be included in my recommendation to develop interpersonal skills.
You may be shaking your head in consternation or loudly agreeing with everything I suggest. What advice would you give a person embarking on a career in application development?
Also read on TechRepublic: Five tips for starting a programming career and 10 tips to go from a beginner to an intermediate developer
Tony Patton has worn many hats over his 15+ years in the IT industry while witnessing many technologies come and go. He currently focuses on .NET and Web Development while trying to grasp the many facets of supporting such technologies in a production environment on a daily basis.