I have found that software engineers tend to divide themselves into 2 broad categories:
- Builders (selfish)
- Maintainers (selfless)
This is of course an oversimplification. Most of the time we do a bit of both, but in my experience engineers tend to lean towards one or the other.
The beef I have with this is that maintainers rarely do this consciously. They also enjoy building, it’s just that they typically have some trait (perfectionism, humility, shyness, …) that prevents them from pushing to get the opportunity to be a builder.
Conversly, the builders come in 2 types: the ones that do this purposefully (selfish), and the ones that build from scratch because they’re incompetent.
I believe that a big part of growing from Junior Engineer to Senior Engineer is figuring out how to rebalance your ratio from maintaining other people’s shit towards building your own.