The rise of DevOps has given rise to a new type of developer, what I call the full spectrum engineer (FSE). In my previous blog post in this series, I looked at the evolution of software development from requiring specialists to developers who can do it all. So what does it take to thrive in a DevOps environment and succeed as a full spectrum engineer? Here are five things you need to do to make it as an FSE.
1. You must be a good software engineer. That means keeping up with the latest trends in design and implementation. You need to quickly assimilate new frameworks and open source libraries into your first-party code to build software quickly.
2. Test for quality and performance. Quality is not only about meeting functional requirements, but encompasses non-functional requirements as well. Well-written unit tests are just the beginning. An FSE must think about how to create automated regression tests that can be run in a staging environment to ensure that the entire system won’t be negatively impacted by their deployment. Furthermore, you must understand scale and performance of the system under load. Creating services that scale out and back based on demand will prevent a negative user experience.
3. Understand the complexities of deployment. Whether that be containers, cloud, or infrastructure as code, you need to know where and how the software runs and be able to create those environments from scratch. Using stable, version-controlled configurations for the running environment will ensure that Dev, QA, Staging, and Production all look and behave the same.
4. Take responsibility for operating your applications. As part of a DevOps team, you will be expected to take part in pager duty with the rest of the team. When writing new functionality, consider how to debug it remotely and whether your teammates will be able to do that same. That means logging and other telemetry are critical to the development plan. You have to do more than simply dump data. Turn that data into information that can be consumed by both people and machines. Can the software detect that it is not running properly? Can it heal itself? Can it call for help?
5. Focus on security throughout the development lifecycle. The fast pace of software development means that there is no longer time to wait for a security analysis when your release candidate is ready to deploy. Consider security concerns as part of the acceptance criteria and security scanning in your definition of done. You need tools that can provide quick feedback and diagnosis of security vulnerabilities while writing code. This preventative scanning will not only train you to write secure code – it will also allow the software to run successfully through the assurance scans that are part of any good CI/CD pipeline.
In my next blog post, I’ll offer my advice to development managers looking to hire top talent and train specialists to become FSE generalists. Read the first part of the blog series here: Get Ready for the Full Spectrum Engineer.