Deanna Stanley
Configuration Management Lead @ Lockheed Martin
I control and manage all the elements that go into a software release - the who, what, when, where, and why of software development. It is my responsibility to know who did what; when they did it and why; and who approved the work. Without good configuration management (CM) you don't know what went into a software release and may end up missing new work that wasn't properly tracked.
How I Got Here
ShowI started out in geological engineering but realized I couldn't hack the hard sciences. At first I jumped in to CS simply because I didn't have to transfer schools but didn't have to do so much physics! Amazingly it turns out I liked the work and am quite good at it.
I couldn't have gotten into software engineering without the degree. My first job was in tech support, but as soon as one of the engineers realized I had a degree they found me a job up in engineering. Three weeks later they fired the existing sustainment engineer and moved me into his job - I was suddenly responsible for maintaining the software of a dozen different products! With very little experience. Happily my education helped me work through the problems and become successful.
I spent my first decade as a software engineer and never expected to end up in configuration management. But after we had a disaster of release - so bad that no one knew what we included in it, or even if the customer could compile it successfully - I realized something needed to be done. Good CM is invisible - you're only noticed when things go bad. But you can prevent so much from going bad with a little work. I find it quite rewarding. And it pays well too!
The Ups and Downs
ShowCons: If you're doing release management as part of your CM role you should expect to work some odd hours trying to get a release out by deadline. Expect your work to be appreciated by management and often resented by developers.
Pros: No one has more intimate knowledge of the product being released - you literally know every thing that was done along the way, and you participated in each and every step that went into making your software product.
Recommendations
ShowProcess. You learn how to program, but there's not enough emphasis on the software development lifecycle. You need to know how to turn high level requirements into detailed requirements, and then into a design and test cases. The actual programming is the easiest (and smallest) part of the job.