I had an
interesting discussion about junior developers recently with a group of grizzled IT veterans, and the conversation morphed into a lively debate on advice to give new developers. 

There were many valid points raised, and I narrowed them down to three tips that cover these main
areas: technical, personal, and learning.

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. 

To sum it up, I
advise new developers to work with multiple platforms. For instance, C# developers should
get familiar with truly open source alternatives like PHP or Ruby, and web
developers should get to know more than just one JavaScript framework like
jQuery — they should get to know MooTools, Prototype, and more. Another consideration is that doing consultant work often means working within the client’s environment and technologies, so the ability to dive into new (or new to you) technologies is a must.

2: Do application support work

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

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