Entry No. 11

The 3 skillsets: Programming, Design, Product

There are 3 skill sets in this industry - development, design and product.

These skills exist in every attempt to build software. They exist in Google, and Facebook, and Intuit, and small dev shops. It’s useful to recognise skills as falling into one of the three buckets, because then you know what to optimise for.

Development is the simplest to understand. Programmers write code while building software. Most of the software produced today is complex and demand coordination between different programmers, and sometimes different teams. So at the higher levels of this skill tree, development includes skills necessary to coordinate between many programmers.

Design is also relatively easy to understand. Interfaces can be easy or difficult to use. A good interface designer is able to come up with user interaction flows that make sense to the user. Often, designers are the ones who have a first stab at a feature, because asking a programmer to design the UI for a feature is a Really Bad Idea.

Software companies hire less designers than they do developers. It’s normal to have 1 designer for a team of 5 or more programmers. Often, the configuration of teams in software companies is one designer attached to every team. So the iOS team has one designer, and the Android team has another designer, and so on.

Some designers are able to code. The Django team built their web framework with the assumption that their designers would be able to write simple HTML and complex CSS. Other designers use tools like Sketch, due to its ability to export assets for direct use by the developers.

At the higher levels of this skill tree, designers are able to do A/B tests, user interviews and are able to set tone via a design language, for the entire company. It’s no accident that Facebook uses the same shade of blue and the same icon style everywhere, for instance.

The last skill set is harder to explain. It is also the rarest in Asia. “Product” is the skillset that glues together developers, designers and business concerns in a given product.

Product managers operate in between the core concerns of a product. Have you ever seen a building where the developers kept adding wings and extensions and towers, all in slightly different styles? The building eventually becomes ugly and unwieldy. The same goes for products. Product managers prevent this from happening.

It would take a whole blog post to describe what a PM does, so I’ll leave you with this one, possibly the best I’ve seen on the topic: The Product Management Triangle. Dan Schmidt does an incredible job describing the challenges and tensions of the role, and why it’s tricky to define the PM’s workload.

The upshot of this is that you have the 3 basic roles that are directly involved with building a modern digital product. What role you’d like to take would be defined by these silos, and it should be a useful tool to evaluate the skills that you are learning today, for the job description you want tomorrow.

This post is part of the FCS Career Playbook for Software Engineers in Vietnam. Check the guide for more software engineering career advice.