Great list. Another that separates the wheat from the chaff is by making yourself replaceable. To an insecure person (in any profession) this is anathema to maintaining a job; to a confident and professional person it is simply a requirement of the job.
- Documenting what you do. If you hoard knowledge or hide it in e-mails or IRC logs you're not helping anybody. If you're guy who changes something that affects other developers but don't send a courtesy e-mail or present your charges (your action being proportionate to the change you're making) -- you're that guy.
- Teaching others your skills. Being a font of knowledge, wisdom and ideas is also important. If the product owner, PM or a junior dev can approach you and get a straight-laced answer tailored to the skill-level individual you're doing really well indeed.
- Every team and company do things differently. Being able to contrast how you're going to do something against what you have done before is another useful skill.
- Caring about the 'boring stuff': release management. configuration management. proper continuous integration. simplifying your build steps. cleaning up hairy code or removing redundant files and gunk from older projects.
> Caring about the 'boring stuff': release management. configuration management. proper continuous integration. simplifying your build steps. cleaning up hairy code or removing redundant files and gunk from older projects.
This. This this this. I just took a senior-level gig as a devops/productivity engineer where pretty much my entire job is figuring this stuff out. It is not stuff that juniors often think about, but it can take up a ton of management and seniors' time to get right so they don't have to.
>Caring about the 'boring stuff': release management. configuration management. proper continuous integration. simplifying your build steps. cleaning up hairy code or removing redundant files and gunk from older projects.
Sigh careful there. I just got the evil eye from my boss for doing just that.
Only care about this kind of maintenance and future-proofing if you work in a tech-savvy company. In other environments where the suits have no understanding of things like technical debt and the value of maintaining a high quality, they will see this as procrastination.
I would argue that something that comes with experience expected of a senior engineer is the ability to communicate the cost of technical debt in terms 'business guys' understand.
- Documenting what you do. If you hoard knowledge or hide it in e-mails or IRC logs you're not helping anybody. If you're guy who changes something that affects other developers but don't send a courtesy e-mail or present your charges (your action being proportionate to the change you're making) -- you're that guy.
- Teaching others your skills. Being a font of knowledge, wisdom and ideas is also important. If the product owner, PM or a junior dev can approach you and get a straight-laced answer tailored to the skill-level individual you're doing really well indeed.
- Every team and company do things differently. Being able to contrast how you're going to do something against what you have done before is another useful skill.
- Caring about the 'boring stuff': release management. configuration management. proper continuous integration. simplifying your build steps. cleaning up hairy code or removing redundant files and gunk from older projects.