As a technical manager, you know full well that your staff needs to continuously grow their skills or they become obsolete. Your team knows this as well. It becomes too easy to sit back and let your staff run with it - to self direct their own professional development. When this happens, when professional development is not managed, I often find that A) employees learn new skills only on an as-needed basis, B) professional development aligns more closely with hobbies, or C) teams are drawn to expensive conferences (in warm places) that substitute for professional development.
Learning on an as-needed basis - On the surface, this type of on-the-job learning seems like a good idea. What better way to learn than by doing? And obviously the skills are directly applicable to the business. This works fine for little things - maybe using LINQ for the first time in a project, or perhaps runtime image resizing in a Django web service. But when it comes to larger areas of growth, say database optimization theory, usability, design patterns ... you need to focus on such things with purpose. Don't think you can just let them happen organically.
Leaving it to your staff - generally, when left to guide their own professional development, you'll find that your technical team members gravitate to those areas they feel are fun - the shiny new objects. This isn't true for everyone, but generally, you'll find it holds. The problem here is that this time spent learning and growing skills that aren't applicable to your business is either time wasted, or worse yet, results in forced application of technology and techniques that don't fit the needs of the organization.
Conferences - Conferences can be great - they can introduce your teams to new technologies, new ideas, and new ways to go about their work. But do keep in mind that conferences and those hosting them have an agenda - they want to push particular solutions, products, technology, or vendors. This isn't aways in the best interest of your company.
Approaching Professional Development with a Purpose.
There is something you can do to help focus the energy of your team onto professional development activities that more closely align with your business needs. Consider the following five steps to get you started.
Step 1 - know what skills you need. What skills do you need from your staff? Make a list. If you've never done this before, it is a good exercise - you'll find this list handy when you're writing job descriptions as well. Just go ahead and list every skill you need from your staff -don't get too specific, think high level (knowing how to perform GREP search is too specific ... perhaps broader, like understanding of Linux). Account for theoretical skills, for example object oriented design, database optimization theory, algorithms, etc. Consider soft skills too - communication, teamwork, leadership skills.
Step 2 - break them down by role. Depending on the size of your organization you'll have different levels of specialization. A small startup may require their team members to have a broad set of skills. A large company will have greater specialization - DBAs, server administrators, technical architects, programmers, project managers, testers, etc. Know what kills you need from each role.
Step 3 - For each role, identify expectations. Depending on the size of your company, you may have a well defined hierarchy (e.g. Programmer level 1 - 6) while smaller organizations have more of an implied hierarchy (e.g. Karen is our top developer). Whether you have formal labels for your hierarchy, or simply a gradient from entry level to expert, think about what you expect from each level. For example, you may expect an entry level programmer to have moderate C# programming skills, a basic understanding of database design, a basic understanding of the Windows operating system, basic communication skills, negligible leadership skills and a strong knowledge of object oriented programming. On the other hand, you might expect your senior most programmer to be an expert in the programming language, have strong knowledge of operating systems, decent communication skills, strong mentoring ability and an expert understanding of algorithms. Now think of all the gradients in between - what might it look like as your entry level developer grows to become an expert over the years.
Step 4 - Map it out. I've always preferred to use a table to map out the skill expectations. Create a row for each skill and a column for each level within the organization (formal or informal). For each level, identify the expectation for the skill from none at all through expert. Here what such a table may look like:
Do this for each role within your team. Once you do this you will have created a roadmap to guide each team member's professional development.
Step 5 - Make a plan. Perhaps you make it part of a formal employee review process or perhaps you make it part of informal mentoring discussions. Sit down with each member of your team and have a discussion about where they best fit on this chart - which column best describes them. For example, in my sample table, a programmer may best fit as a level 4. Now look at what differentiates a level 4 from a level 5. You've just identified what skills this individual should focus their energy on. Once you've done that, you can begin the discussions surrounding how they improve the skills - perhaps it is on-the job training, maybe it is taking some classes, participating in professional organizations, conferences, etc.
You'll find that once you can identify specific areas of growth it will be much easier to create action items to include in a professional development plan. You'll also find that your teams own self-directed professional development activities will better align with your business needs.
You can download and modify these files to get you started:
Template - Professional Development Planning Matrix
Sample - Professional Development Planning Matrix
Professional Development Worksheet
Need some help getting started? Want someone to come in and help you work through the process? Contact Olive Branch Technology at email@example.com or call (414) 436-9110.