Open-source software engineering competency and career plans.

Software Engineering Competency Matrix

This repository contains an "Open Competency Matrix" for Software Engineers. It includes a standard data structure as well as a basic tool for transposing that data structure into friendlier formats like job postings and tables for human consumption.

This is an open-source project and all contents here are licensed appropriately. You are encouraged to add your own organizations skills matrix to this repository. You can do so by making a copy of the existing stride matrix model and modifying it to suit your organization.

Getting Started

$ git clone [email protected]/stride-so/matrix.git

What is a Competency Matrix?

A skills comptency matrix is a tool that is used to provide team members with information on what a roles expectations are. By extension the matrix also communications what skills and capabilities are required in order to to advance to the next stage of their career. While a compentency matrix not a comprehensive list of every single skill, it is a framework that helps you have conversations with your managers to get more actionable advice and information.

If you or your team do not have a competency matrix in place, you should encourage them to adopt one.

How do I read a Competency Matrix?

This repository contains a models directory which contains JSON encoded representations of a competency matrix. Each matrix file encodes several dimensions of information.

  1. The levels and titles used within the matrix.
  2. The title and body of any number of skills. Skills may be technical skills or they may be essential skills.
  3. Skills are grouped into areas called 'themes'

The JSON representation is a transposition and 'structured' encoding of a table like this one. The linked table is parsed to generate the JSON file whose format and layout is described in this document.

FAQ

Can I add my companies matrix?

Yes! Please!

How do I make my own matrix?

You can do make your own matrix by copying what already exists and changing it to something that suits your organization better. You can copy the stride open compentency matrix to something you can edit then use that without limitation. You can also copy the JSON representation in the models folder and change your new file.

If you would like to include your matrix in this repository there is a tool that lets you convert the matrix layout of the example comptency matrix into the JSON representation.

  1. Copy the Google Sheet
  2. make your edits then export the sheet as an .xlsx file.
  3. Then run the tool against that file.

You will need go installed on your machine.

$ go install github.com/stride-so/matrix/tools/cmd/stride@latest
$ stride parse -in filename.xlsx > filename.json

Why don't the role titles match my organization?

Titles mean a lot to some people, but titles are not the same across all organizations. For this reason the titles in the provided model are an attempted standardization across multiple organizations. This was done by collecting, and reading through a list of about 20 different competency matrixes, career tracks, etc from several software organizations. If you have friendly suggestions on more appropriate titles please open a pull request or feel free to add your own matrix.

What is the difference between Essential and Technical Skills?

Essential skills are sometimes referred to as transferable or 'soft' skills. Technical skills apply to a specific domain. For example, writing documentation, being a project leader, understanding budgets, leadership, mentoring, communication, etc are all essential skills. No matter which role you have at any company you will likely need to employ some (or all!) of these skills depending on your role. In a software capacity, technical skills includes composition and comprehension of code as well as understanding testing, security, hardware, constraints, trade-offs, etc.

Similar Resources

Bayesian text classifier with flexible tokenizers and storage backends for Go

Shield is a bayesian text classifier with flexible tokenizer and backend store support Currently implemented: Redis backend English tokenizer Example

Nov 25, 2022

Training materials and labs for a "Getting Started" level course on COBOL

COBOL Programming Course This project is a set of training materials and labs for COBOL on z/OS. The following books are available within this reposit

Dec 30, 2022

A curated list of Awesome Go performance libraries and tools

Awesome Go performance Collection of the Awesome™ Go libraries, tools, project around performance. Contents Algorithm Assembly Benchmarks Compiling Co

Jan 3, 2023

Deploy, manage, and scale machine learning models in production

Deploy, manage, and scale machine learning models in production

Deploy, manage, and scale machine learning models in production. Cortex is a cloud native model serving platform for machine learning engineering teams.

Dec 30, 2022

The Go kernel for Jupyter notebooks and nteract.

The Go kernel for Jupyter notebooks and nteract.

gophernotes - Use Go in Jupyter notebooks and nteract gophernotes is a Go kernel for Jupyter notebooks and nteract. It lets you use Go interactively i

Dec 30, 2022

Library for multi-armed bandit selection strategies, including efficient deterministic implementations of Thompson sampling and epsilon-greedy.

Library for multi-armed bandit selection strategies, including efficient deterministic implementations of Thompson sampling and epsilon-greedy.

Mab Multi-Armed Bandits Go Library Description Installation Usage Creating a bandit and selecting arms Numerical integration with numint Documentation

Jan 2, 2023

A program that generates a folder structure with challenges and projects for mastering a programming language.

Challenge Generator A program that generates a folder structure with challenges and projects for mastering a programming language. Explore the docs »

Aug 31, 2022

Gota: DataFrames and data wrangling in Go (Golang)

Gota: DataFrames, Series and Data Wrangling for Go This is an implementation of DataFrames, Series and data wrangling methods for the Go programming l

Jan 5, 2023

Example of Neural Network models of social and personality psychology phenomena

SocialNN Example of Neural Network models of social and personality psychology phenomena This repository gathers a collection of neural network models

Dec 5, 2022
The open source, end-to-end computer vision platform. Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises.
The open source, end-to-end computer vision platform. Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises.

End-to-end computer vision platform Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises. onepa

Dec 12, 2022
An open source embedding vector similarity search engine powered by Faiss, NMSLIB and Annoy
An open source embedding vector similarity search engine powered by Faiss, NMSLIB and Annoy

Click to take a quick look at our demos! Image search Chatbots Chemical structure search Milvus is an open-source vector database built to power AI ap

Jan 7, 2023
Spice.ai is an open source, portable runtime for training and using deep learning on time series data.
Spice.ai is an open source, portable runtime for training and using deep learning on time series data.

Spice.ai Spice.ai is an open source, portable runtime for training and using deep learning on time series data. ⚠️ DEVELOPER PREVIEW ONLY Spice.ai is

Dec 15, 2022
Path to a Software Architect
Path to a Software Architect

Contents What is a Software Architect? Levels of Architecture Typical Activities Important Skills (1) Design (2) Decide (3) Simplify (4) Code (5) Docu

Dec 28, 2022
A tool for building identical machine images for multiple platforms from a single source configuration
A tool for building identical machine images for multiple platforms from a single source configuration

Packer Packer is a tool for building identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs o

Oct 3, 2021
Go types, funcs, and utilities for working with cards, decks, and evaluating poker hands (Holdem, Omaha, Stud, more)

cardrank.io/cardrank Package cardrank.io/cardrank provides a library of types, funcs, and utilities for working with playing cards, decks, and evaluat

Dec 25, 2022
Genetic Algorithm and Particle Swarm Optimization

evoli Genetic Algorithm and Particle Swarm Optimization written in Go Example Problem Given f(x,y) = cos(x^2 * y^2) * 1/(x^2 * y^2 + 1) Find (x,y) suc

Dec 22, 2022
k-modes and k-prototypes clustering algorithms implementation in Go

go-cluster GO implementation of clustering algorithms: k-modes and k-prototypes. K-modes algorithm is very similar to well-known clustering algorithm

Nov 29, 2022
Probability distributions and associated methods in Go

godist godist provides some Go implementations of useful continuous and discrete probability distributions, as well as some handy methods for working

Sep 27, 2022
On-line Machine Learning in Go (and so much more)

goml Golang Machine Learning, On The Wire goml is a machine learning library written entirely in Golang which lets the average developer include machi

Jan 5, 2023