Practical .NET

Keeping Your Next Developer Job

You don't need to worry about keeping your current job -- it will be gone, eventually. What you want to worry about is keeping your next job. That means developing the right skills to the right level for the package you intend to provide to employers.

In my last column, I suggested that the important questions to ask about your career development are: "What skills should I be developing?" and "How much time should I spend on each?" I suggested that you spend most of your time building skills I classified as "current" and "developing."

In that last column I implicitly concentrated on programming/development skills. However, it's not just your programming skills that have put you in your current job … or are keeping you there. When your employer assesses your performance in your current job it looks at you as a package of skills, only some of which are technology-related. While those skills will vary from one job to another and one employer to another, your ability to, for example, "play well with others" is almost always part of the assessment.

Developing a Unique Package
When I was head of the IT department for my last full-time job, my employer assessed me on the basis of several of my skills: programming, administration, project management, communication, training, leadership and business understanding (among others). Some of these skills were less valuable to my employer than others (programming skills in a department head, for example) and so contributed less to my assessment. I was also better at some of those skills than others and that also contributed to how my employer assessed me (we won't go into the details of the skills at which I was poorer).

And the key word in that last paragraph is "package." While my employer would have liked to have the ideal employee who was good at everything, my employer recognized it had to settle for me: someone who excelled in some areas and had deficiencies in other areas. My salary reflected that assessment.

Your job, therefore, is to put together a package that's attractive to your current and to potential employers. In fact, you shouldn't be working on the package your current job requires. After all, you have that job and, presumably, deserve it. You should be working on the skills package that will allow you to move into your next job. As you put together your package, in addition to considering which skills are current and developing (see my last column), you also need to consider four other things: uniqueness, base skills, essential skills, natural aptitude.

Uniqueness is the most important factor to consider. You are a unique individual. In fact, in your immediate environment, there's probably no one quite like you. You need to develop your skills to make you more unique: If you look like someone else then there is no reason to treat you better than that other person. In fact, that other person could replace you.

In my consulting practice I've put together a combination of skills that include technology knowledge, communication, programming ability and training. In any one of these areas there are people better than me; there are very few who have my level of expertise with that combination of skills. There aren't a lot of employers who value my combination of skills, but the employers who do value it have very little choice but to hire me.

As you look at the skills you'll develop you should look to some combination of skills that employers will desire and no one else can do as well as you (or very few people can do as well as you).

Base Skills, Essential Skills and Natural Aptitude
As you look at that "no one else can do as well" part, begin by looking for base skills. These are the skills that improve performance in other, more specialized skills. Examples of base skills include communication, empathy, problem solving, planning and logical thinking. When you look at the package you're putting together you want to look at any skills that drive other skills in your package and invest in those skills first.

Essential skills are those skills that employers require you to have at -- at least -- an "acceptable" level. These skills are relative to the package you're assembling: time management is an essential part of a "project manager" package, but is less important to my "software consultant" practice (primarily because I work at home and no one can see me working until 2 a.m. to meet a deadline).

Where you aren't "good enough" in an essential skill, you'll need to invest time and effort in getting "good enough" or develop coping skills (I transfer administrative tasks to other people: I pay for an accountant to handle all of my taxes, for example). Essential skills are your second priority.

Finally, you should divide the skills in your package into the ones where you have no natural aptitude (as I don't in administration) and the ones where you do. You'll need to invest enormous time and effort to get to "acceptable" levels in those areas where you have no aptitude; where you do have an aptitude, very little effort will give you extraordinary results.

This division of skills controls how you divide your time. Initially, you need to spend a lot of time getting to "acceptable" in the essential skills for which you have little aptitude. However, once you get to "acceptable" levels in those areas you must stop investing in those skills. In the long run, you want to spend most of your time developing the skills where you have a natural aptitude.

To develop those skills, you need charity clients (or charity projects). Charity clients are people who are willing to have you perform a task even though both of you acknowledge that you don't really have the skills to do the job well. Because you lack the skills, allowance will need to be made for your productivity (you'll be doing things two or three times before you get it right) -- things will take longer.

These are called charity clients because they're willing to settle for poor performance and you're willing to be paid less than someone who is actually good at the skill. Back when I had a job, I moonlighted for a variety of small businesses for very little money (often for family and friends) to develop the skills I felt that I needed.

Your Next Skill
The original question that started this discussion was "What skill should I learn next?" so I suspect I'm obliged to answer that. For most developers, as far as technology skills go, I'd concentrate on JavaScript, which should be one of your current skills (and consider TypeScript as a developing skill).

If you're looking at one non-technology base skill to develop, can I suggest communication skills? In addition to driving other skills, it's also a skill that is unusual among developers, so it helps make you unique. I'm even willing to suggest that it drives technology skills: The same skills that support effective communication are critical to effective UX/UI design.

But, really, it comes down to how you think you can leverage your own abilities to create unique value for your employers. For me, developing my communication skills paid off handsomely. For you, it's ... ?

About the Author

Peter Vogel is a system architect and principal in PH&V Information Services. PH&V provides full-stack consulting from UX design through object modeling to database design. Peter tweets about his VSM columns with the hashtag #vogelarticles. His blog posts on user experience design can be found at http://blog.learningtree.com/tag/ui/.

comments powered by Disqus

Featured

  • Full Stack Hands-On Development with .NET

    In the fast-paced realm of modern software development, proficiency across a full stack of technologies is not just beneficial, it's essential. Microsoft has an entire stack of open source development components in its .NET platform (formerly known as .NET Core) that can be used to build an end-to-end set of applications.

  • .NET-Centric Uno Platform Debuts 'Single Project' for 9 Targets

    "We've reduced the complexity of project files and eliminated the need for explicit NuGet package references, separate project libraries, or 'shared' projects."

  • Creating Reactive Applications in .NET

    In modern applications, data is being retrieved in asynchronous, real-time streams, as traditional pull requests where the clients asks for data from the server are becoming a thing of the past.

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

Subscribe on YouTube