💼 Snowflake (career tool)

GitHub - Medium/snowflake: Medium’s engineering growth visualization tool
Medium’s engineering growth visualization tool. Contribute to Medium/snowflake development by creating an account on GitHub.

Snowflake is a F/OSS tool developed by Medium to track and evaluate growth of employees, in particular engineers at Medium.

https://camo.githubusercontent.com/942b3aa6ac0311532120377eb502f72e5dc4e7c3f416b6e6d92a49802eb1f687/68747470733a2f2f692e696d6775722e636f6d2f653944594c42722e706e67
Snowflake (source: medium/Snowflake github)

It has nothing to do with data analytics (the other Snowflake), but is rather more like a career progression management/readout tool, which can help teams, managers and HR department coordinate with engineers about career growth and what people can do with it.

The project hasn't had a commit in quite a while (~5 years), but it's Apache 2.0 licensed and definitely something that could still be used by companies looking for a place to start.

Medium stopped using this tool and wrote up an article as to why:

🌠 Features

There are many reasons to use Snowflake:

  • Manage career progression of engineers
  • Clarity around requirements to advance in careers for everyone involved (engineers, managers, HR, etc)
  • Clear points and rating based system

That said, the code-base hasn't been updated in quite a while so integrating it means choosing to develop the software actively (and deal with bugs/security issues yourself).

🤖 As described by AI

ChatGPT actually had quite a bit of trouble trying to figure out what Snowflake was being described (it kept referring to the ID generation mechanism)... So I had to get creative – I gave it the image of the app above and asked it to describe the application.

The app in the picture is a performance evaluation tool for a software engineer named Cersei Lannister. It displays various metrics including total points (89), current level (4.3), and points to next level (1). Skills and attributes are rated across several categories such as Mobile, Web client, Foundations, Servers, Project management, Communication, Craft, Initiative, Career development, Org design, Wellbeing, Accomplishment, Mentorship, Evangelism, Recruiting, and Community.

The section "Evangelism" is highlighted, showing a score of 3 out of 5, with descriptions of behaviors and tasks related to promoting Medium externally. Example behaviors include mentoring in external organizations and building partnerships, while example tasks involve representing Medium at industry events.

📺 Watch this

As you might imagine it's pretty difficult to impossible to find videos about this now-shuttered part of Medium's internal engineering career program... And searching for "medium" produces terrible results.

There's this video about why developers should blog that is interesting though:

👟 Getting started

Snowflake doesn't have a dedicated docker image but it is a normal NodeJS project, so it's somewhat easier to get started with, even in it's abandoned state.

🟢 Starting the NodeJS project

Generally the NPM, NodeJS and other regular toolchain pieces work as normal in this project:

npm install -g yarn
yarn
yarn dev
yarn export

The script names they've chosen are a little interesting, but after running the above commands, you should be able to find the static version of the site in out/.

If you really want to figure out how things work, take a look at package.json:

snowflake/package.json at master · Medium/snowflake
Medium’s engineering growth visualization tool. Contribute to Medium/snowflake development by creating an account on GitHub.

It's a NextJS application, which means that changes can be made (and probably will have to be made) within the bounds of that framework. React users rejoice!

🧑‍💻 Want to contribute?

It doesn't look like there's much activity going on in the repo, so rather than contributing it looks like it will be more you taking on the codebase and developing it going forward.

Medium's team did leave a note about this:

You are free to use, change and build on this work to make it useful for your organisation. We will happily consider unencumbered code contributions to improve functionality, but as this is the actual tool we use within Medium, acceptance is likely to be intentional, and deliberate. Meaning, slow. As such, you may prefer to fork the codebase for your own needs. We will not accept any contributions that modify the text of the application (but, thank you in advance for pointing out any typos).

📬 Want Awesome F/OSS in your inbox?

We'll send you new articles as soon as they go live.