Software engineering is programming with the added dimension of time: programs that can evolve and scale, be maintained and be operated by multiple people over a longer period of time. What does it take to do software engineering in a professional manner - beyond mere programming?
As programmers, our main goal is to make IT work. To translate functional specification into executable code. And sure, that is the least we can do. But we have more responsibility than this. We have to produce software that is robust and will reliably handle expected and unexpected cases. Software that is scalable and can handle expected and somewhat unexpected load gracefully. With minimal operating costs and in the greenest way possible. Software that is observable and manageable and that can be evolved with changing and new functional requirements and with changing technology. Software that will be legacy in the original, positive meaning of the word. That does not depend on the one big brain in our team or on the guy that has been around for three decades. Software that we know is good and can comfortably be modified in a controlled and productive way. We have to grow from excellent programmers to professional software engineers.
This session talks about what it takes to create our code with honor. It discusses automation at every level in the build, rollout and monitoring of infrastructure (as code), platform and application, using CI/CD pipelines and DevOps procedures and tools. The session talks about testing – before and during development as well as after each change anywhere in the system and for both functional and non-functional aspects. Test driven development, regression testing and smoke testing are among the concepts discussed. The term ‘clean code’ refers to code that is readable, testable and maintainable. Through code analysis and peer reviews and by performing refactoring we constantly refine our software to be collectively adaptable.
The session demonstrates the concepts discussed with code samples in the context of cloud native programming.
As software engineers, we have an obligation to society, to our peers and to ourselves to not only write software that does the job, but to create code that is good. Ours is a great and meaningful line of work, especially if we raise our game professionally to code with honor.