I've been fortunate enough, so early in my career, to have been a part of many tech teams of varying sizes, ages, experiences, and specialties. In the process, I've developed a labeling system to categorize all the good people I have worked or work with. I've been doing this since my retail days in college so, it can be applied in any setting or industry. The gist is to identify the different roles within a team that people — in this case, developers — perform on a team.
Imagine you're a Senior Engineer who writes code for the server, client and kills bugs all day. That's cool. From the outside looking in, you're a full stack engineer. Now what about your fellow co-workers? Do they see you as just a Senior Engineer? Probably not. Each one of your colleagues probably has a different name for the role you have on the team — it's really all about perspective.
I've realized that good developers (bad developers are just bad developers, period) can be labeled any or a combination of these four labels: the visionary, the captain, the builder, and the facilitator.
This is the Jack Dorseys of the world — technical people with an affinity for product design and development. This developer can build a prototype without any shortage of features. In fact, he/she is always thinking about new features and ideas. When it comes to scaling an MVP, help is definitely in the cards.
This is your CTO or tech lead (CTO is such a pretentious term in early stage startups); he/she knows exactly how to build your product/service to scale. He/she guides other developers and can be "on the front lines" to help build things as well.
Every team needs plenty of these! The builder is the person that stays glued to a computer screen for hours building new features. Whether it be solving a technical problem or fixing that cross-browser bug, this developer does not shy away from a problem. The majority of your product is built by the developers in this role.
This developer is the x-factor on a team. If tech teams had a designated hitter, this is it! This person handles the unsexy tasks in development — setting up a repository, building that CLI utility from source, and/or integrating with that shitty 3rd party SOAP API. This role allows the rest of the team to focus on things they do best — the visionary on product, the captain on architecture, and the builder on creating new features.
One thing to keep in mind, is that these labels are not black or white. There is definitely a gray area between them among all developers. If you think more roles should be included or have some thoughts, let me know in the comments.