Background
We are an established, CMMI-certified software engineering services company that strives to maintain the positive elements of a start-up culture. We support both commercial and government customers with their challenges and this variety of clients drives the need for us to deeply understand our staff’s current skill sets and identify their areas of interest. This is essential for us to stay ahead of the latest trends and technologies, attract and retain the best engineers, and promote a culture of continuous learning. These are all keys to our past success as well as our ability to continue to grow as an effective and capable company with a multitude of expertise.
As the number of projects and staff increase, it becomes impractical for everyone to know each others’ skills and who to reach out to for expertise on a topic in a field with constantly changing technical landscape. Additionally, different components of the company such as Operations, Business Development, and Recurring need to properly understand staffs’ skill sets and customers’ needs in order to maximize effectiveness.
Tracking Skills and Interest
As knowledge workers, we all have an individual responsibility to continue to grow our existing skills and to add new ones. At Prominent Edge, we created a Learning & Skills portal in order to maximize Prominent Edge’s effectiveness at quantifying these skills and to provide a centralized place for our team to record and maintain their skills. We define Key Skills and Skill Categories, as well as each staff member’s Skill Levels and their level of interest in each skill. Such a portal can be implemented in different ways. The simpler approaches include leveraging SharePoint, Google Suite, or wiki pages, and more comprehensive implementation can leverage platforms that enable comprehensive queries and reporting.
Benefits
The following use cases benefit from our approach and are by no means an exhaustive list:
-
Determine who to ask for expertise with a particular topic be it internal or even external with a client call or conference (e.g., who should I talk with about Golang concurrency?). This in-house directory of internal “consultants” has been one of the most widely-used features of our skills portal and works well in our culture, where engineers are eager help one another.
-
Determine, as a company, where our strengths and weaknesses lie. If for example, PE is collectively strong in Geospatial technologies, but has limited personnel experienced in GoLang (relative to demand and identified needs), this information can be used to drive training.
-
Allow staff to self-evaluate their skill level against defined expertise levels in order to help them understand where they can improve. Just because someone has worked with a technology for 10 years, it doesn’t necessarily mean that they have Subject Matter Expertise in the topic. The definition of the expertise level can identify where an individual can focus to improve their level of expertise in the particular topic.
-
Determine who can do Tech Talks on which topics during our regular learning sessions.
-
Support Business Development: is a future opportunity that requires expertise in a certain topic (i.e., skill) a good fit for our current staffing? Could staff achieve the required level of skill in, e.g., 3 months?
-
Project staffing: e.g., a new project requires one senior Python developer and two intermediate Python developers. Which members of staff are candidates to add to that project?
-
Recruiting; e.g., can Prominent Edge fill a potential skills gap by hiring new talent? Which skills should be focused on during interviews? Which candidate is an overall better fit for us?
-
Identify individual’s interest in learning and working with specific skills. Good engineers want to learn new skills. Alternatively, some engineers may be highly experienced with a particular skill but have low interest in using it. Aligning these desires with business needs makes us a better company, aids in job satisfaction, and helps us retain the best people.
-
Compile terminology, training, and material to help increase expertise level of staff in particular topics
-
Support management and updating of our staff resumes to ensure they meet project needs
Definitions
-
Key Skill: A topic or technology that has been identified as a Key Skill is one that is currently in use on active projects or will be in use imminently on future projects. The current list of Key Skills is maintained in a matrix that is curated by Category Maintainers. Note that not every skill used is necessarily considered a Key Skill. Key Skills are those which relate to our core competencies and are often sought after in our projects.
-
Skill: Important topics or technologies which are not currently identified as Key Skills, do not appear in the matrix, but may be captured as sub-categories of one or more associated Skill Categories. While a Skill may currently be in use, it is not considered (yet) a core competency for Prominent Edge.
- Skill Level: Each Key Skill has defined Skill Levels associated with it. These levels are generally categorized as follows:
- Basic: Can be on a project paired with more experienced members
- Intermediate: With some oversight, can be the main person on a project
- Advanced: Can be the only one / SME on a project
- Skill Category: A Skill Category is an artificial construct to associate and group individual Key Skills and optionally, skills, at a higher level
- A single Key Skill (e.g., Git) may associate with multiple Skill Categories (e.g., Source Control, UI/UX, …)
- Example Usage Scenario: Project Management needs a React developer but all React developers are currently tasked. By looking at the Modern Frontend Skill Category, one can easily identify candidates to learn React (e.g., current Angular developers).
-
Skill Maintainer: An individual or group of individuals with expertise in a Key Skill and assigned as a Skill Maintainer in the Key Skill matrix. A Skill Maintainer has additional responsibilities which are described below.
- Category Maintainer: An individual or group of individuals with knowledge of a number of related Key Skills and assigned as Category Maintainer in the Key Skill matrix. When no Skill Maintainer is assigned for a particular Key Skill, the Category Maintainer(s) will act as Skill Maintainer for that particular Key Skill.
Skill Category & Key Skills Samples
The following is a view of the types of Skill Categories and Key Skills we capture. There is a fine line between having too much and too little based on our organization’s needs.
Skill Category | Key Skills |
---|---|
Programming Languages | Java, JavaScript, TypeScript, Python, GoLang, C, C++, C#, .NET |
Databases | RDS, PostgreSQL, SQLite, Oracle, Redis, Elasticsearch, Accumulo, HBase, BigTable, Cassandra, Redis, RocksDB, DynamoDB, MongoDB |
Data Science | AI, ML, Statistics, Probability, Optimization, Programing DS, Data Visualization |
Frontend | JavaScript, TypeScript, CSS, HTML, UX, Bootstrap, Angular, React, Vue, Elm, Jekyll, Electron |
Backend | Spring Framework, Sprint Boot, Node, Express, Django, Flask |
Data Engineering | Hierarchy of Needs, Data Pipelines, ETL, Apache Airflow, AWS Athena |
Enterprise | Architecture, Data Modeling, Source Control, Enterprise Service Bus, Microservices, Spark |
UX | Wireframing, Mockups, Prototyping, Usability Testing, Mobile First |
Mobile Development | Android, React Native, Ionic, Java, Swift, Kotlin |
Cloud | AWS, GCP, Azure, Cloud Foundry |
DevOps | Kubernetes, Docker, Helm, Rancher, Jenkins, Elastic Cloud Kubernetes, Kinesis, Terraform, Kafka |
Geospatial | PostGIS, Geoserver, ESRI, Opelayers, MapBox, Vector Tiles, OGC, OSM, Raster, Analytics |
Capturing Information
We associate a landing page with each Key Skill and each Skill Category. The Skill Category landing page is a great place to give staff an overview of the related Key Skills and also capture terminology, technologies, tutorials, and the must-know information. We do the same for each Key Skill. For example, our Geospatial Skill Category page covers Feature, Geometry, GeometryType, FeatureType, Layer, Style, Vector, Raster, WMS/WFS/WCS/WPS, OGC, Tiles, VectorTiles, OSM, Client Libraries, Servers, Serverless Approaches, Common Formats and databases, geocoding, projections and coordinate systems, popular software, and basic tutorials. The individual Key Skill pages are usually much simpler. On both Skill Category and Key Skill pages, we define what Basic, Intermediate, and Advanced mean. The following is an example of how we’ve defined the skill levels for the Key Skill of Java:
Defining Skill Level
The following shows examples of what experience one should have for each Skill Level of the Java Key Skill. You can tailor your definitions to meet your use cases and needs:
Skill Level | Requirements |
---|---|
Basic | Java SE 8 Programmer I Exam, Learning the Java Language, Classes, Objects, Enum Types |
Intermediate | Java SE 8 Programmer II Exam, Nested Classes, Essential Classes, Collections, JDBC, Maven, Gradle |
Advanced | Java SE 8 Upgrade Exam, Generics, Concurrency, Packaging Programs in JAR Files, Internationalization, Reflection, Security, JMX, JNDI, JAXP, RMI |
How Much To Capture
We want to capture limited but concise information about each Skill Category and Key Skill in order to define the expertise level as well as provide a baseline to accelerate learning. Our goal is not to replicate content available on the internet. Instead, we want enough information on each item to help cut through the noise and be efficient in what should be focused on. Instead of copy and pasting paragraphs from the internet, we use a few sentences to concisely explain a Skill Category or Key Skill effectively and link out to good content on the internet. This is an important line to hold because the more information, the more time is needed to to maintain it.
We like to think about it this way:
-
Imagine you are new to a Skill Category or Key Skill in which you already have expertise: what do you wish someone had told you to focus on when you were learning?
-
If you catch yourself explaining a topic multiple times, it is likely that it should be captured so that others can benefit from it.
I’m a Maintainer, Now What?
As a maintainer, you should always look for opportunities to add content to the pages while working on your projects:
- Important terminology
- Helpful tutorials you find while researching a topic
- Issue resolutions while debugging an issue on your project
- Interesting conversations about the technology on Slack and in The Daily meetings.
These are 10 minute meetings open for anyone available to join for "water cooler converations" to bring us closer in the remote environment. We use it for Tech Talks, round tables, project show and tells, learning about each others' hobbies, and more.
Roles and Responsibilities
- All Staff:
- Contribute to Key Skill’s content.
- Use the Key Skills to shape conversations in our daily 10-minute meeting (“The Daily”) and capture important items from The Daily accordingly.
- Maintain and update your individual Key Skills periodically. At a minimum, this should be done at time of hire and during review self-assessments. Ideally, anytime a new Key Skill is mastered or significant advancement is made (e.g., improving from Intermediate to Advanced level), a corresponding entry should be recorded.
- Skill Maintainer: Eventually, each Key Skill will have one or more Skill Maintainers associated with it. A Skill Maintainer is expected to do the following:
- Act as an in-house resource to field questions concerning that Key Skill.
- Be aware of and share industry Best Practices relative to that Key Skill.
- Maintain currency and expertise on that particular Key Skill.
- Vet and provide links to relevant tutorials so that others may gain proficiency in a Key Skill.
- Maintain pages with relevant information and get help in capturing the information (definitions, examples, etc.) to assist others with learning a particular Key Skill.
- Mentor others in learning a particular Key Skill.
- Define Skill Level characteristics, with oversight from the appropriate Functional Manager.
- Category Maintainer: The Roles and Responsibilities of the Category Maintainer are similar to those for a Skill Maintainer, but are typically at a higher level of abstraction and relate to multiple skills and Key Skills.
- Maintain pages typically at a subject area level (e.g., Geospatial) that provide relevant definitions, examples, and links to assist others in gaining expertise in this subject area.
- Vet and maintain links to relevant tutorials for this subject area.
- Assist others in learning skills for a particular subject area.
- Assist in identifying individuals to act as Skill Maintainers
- The Category Maintainer will act as Skill Maintainer for all Key Skills within a Skill Category for which a Skill Maintainer is not currently associated.
Wrapping It Up
Here we have explained how we build and manage our staff’s strengths, interests, and weaknesses to maximize our effectiveness as a company. We hope that you have found it useful and can share your thoughts.