It may seem like you're stuck fixing the same broken code or creating the same stale edit pages. It may seem like you're not going to be able to get to where you want in life if you stay stuck where you are. Back in 2005, I wrote an article entitled "Standing Out from the Crowd". The article talked about ways to help you stand out from the crowd; but what it didn't address is how to develop your skills in a way that would help move your career forward directly. In this article, I'll address an approach to improving your development career with a "T."
In "T-Shaped" career development, you're looking to create depth in an area such that you're one of the experts in that chosen field. This is the vertical part of the "T." You also get broad exposure to the key points in multiple different areas. You bring a broader perspective to every problem that you try to solve. This is the horizontal part of the "T."
On the expert side, if you're doing embedded programming, you get really good at that. If you're a user experience developer, you get really good at that. Whatever it is that you're going to specialize in, get very good at it. For instance, I've chosen to specialize in SharePoint.
On the broadness side, it's about leaking out and exploring the areas around where you are. You may expose yourself to a different kind of development than you're used to, or play with your home network, or anything that allows you to work with the areas that are around where you are specializing in. For me, personally, this includes playing with solar panels, Raspberry Pi, implementing VLANs on my own network, and so on.
It's this "T-Shaped" approach to your career development that will lead you to your next position. You'll be recognized for your breadth and potential employers will understand that you're capable of going deep when you need to.
Five Tips for Advancing Your Career
Hearing that you should develop your career with "T-Shaped" development is great, but how do you actually make that happen? Here are five tips to help you expand your career:
1. Learn the Fundamentals
Many developers started out with their chosen language's equivalent of "Hello World" and were off and running. Few developers have had the opportunity to spend time focusing on the fundamentals of their craft. How many have read Fredrick Brook's classic work, The Mythical Man Month?
We expect that basketball stars will practice free throws. But there isn't an expectation that developers will review the fundamentals of object-oriented development or good development patterns. You can learn more about some fundamentals by reading Lightweight Objects, Class Acts, Fragile Code, Handling Exceptions, and Focus on Functions.
2. Learn another Language
Sure, you may know Perl, Ruby, Python, C#, F#, and ten other software development languages, but do you know how to speak with your infrastructure brethren? To move forward in development, you'll need to learn more than just about software development languages. Often times being a software development lead is about understanding how what you're building will work in the broader context. You can read more in Software Developers-Learn Another Language.
3. Understand the Big Picture in Software Development
What kind of a developer are you? Moving your career forward sometimes means clarifying what type of a developer you are. You can learn about different specializations in The Many Faces of a Developer. Although being a developer is at the core of the software development process, it's not the entirety of the software development process. There are other tools, techniques, and skills other than running a compiler. Evaluate software development roles and evaluate whether you can or should move to another role. Cracking the Code: Breaking down the Software Development Roles lists some of the roles you can find in a typical software development process. You should also consider being a different type of developer—or even change where you're a developer at to get broader experience. The type of organization influences how development is done, as discussed in Understanding the Differing Goals of Software Development.
4. Understand the Dynamics of Performance Management
In today's world of powerful processors, SSD hard drives, and seemingly limitless memory, it may seem odd that you should spend some time working on performance. However, just as PCs are powerful, mobile devices are not. Today's environment is moving more and more toward mobile device, including tablets and mobile phones that are more resource constrained. A healthy respect for performance management can help you build better applications. You can find out more with a series of performance improvement articles: understanding, session state, caching, and bigger and better.
Even if you're not convinced mobile is the right answer for you, consider that low-power devices are now becoming more popular. Arduino and Raspberry Pi devices might just be the next thing that you're developing for.
The best way to learn something has always been to teach it. You don't have to be an author or a conference presenter to be a teacher of what you're good at. You simply have to decide that you're ready to teach your expertise. You can build a set of flash cards, create a flow chart, or have an informal chat with some interested parties.
It's not how you choose to teach or what you create that's important. What's important is that you think about the topic differently. When you learn a topic to teach it, you're always looking for the key models that make the system work.
Putting It Together
Advancing your development career today isn't about putting in your time until someone leaves or retires. Advancing your career is about developing the skills and disciplines necessary to do more for the organization. Hopefully, these five tips will help you reach your goals—sooner rather than later.
About the Author
Robert Bogue has been awarded the Microsoft MVP designation more than twelve times. Rob holds numerous certifications and has recognition as a Microsoft patterns & practices Champion. He has written over more than 25 books covering the gambit of information technology. Robert leads and coaches teams on how to be more effective in development and technology in general. You can see more of Rob's continuing journey on his blog at http://www.ThorProjects.com/blog/. You can also email him at Rob.Bogue@ThorProjects.com.