Software Engineering Best Practices
Some might think that The Secret Developer is enjoying a summer vacation when they are seen out on the beach. You might even see them reading the latest crime novel on Kindle or at least think you’ve seen that.
This vacation season, The Secret Developer started to read about software engineering practices and picked up a few tips on the way.
“Actually I’m also reading the Musk book. Turns out he’s not a nice person. Who would have thought?”
Software Engineering As a Discipline
Software development needs to be viewed as a discipline rather than a craft to ensure scalability, reliability, and maintainability. We need a standardization of methodologies, practices, and QA to create software that is fit for purpose.
While the current craft allows for creativity and innovation, we need to move forward. We need to get better.
“It’s about time. We’ve been developing software for decades now, and it seems things are not getting better.”
The Areas To Improve
Here are four critical areas where software engineering needs to improve to become a solid discipline rather than a craft.
Software Security
We need to raise the security levels of applications by including better security features in programming languages as well as applications. We need to improve access control and permissions which are weak links in software engineering.
“Our security guys don’t know how to disable AirDrop on a Mac.“
Defects
We need to work on quality. Poor software quality has damaged the whole economic subsystem that supports software engineering, and this cannot continue. Applications need to make use of inspection, static analysis, and testing. Testing alone is inadequate to achieve high-quality levels.
“Defects are one of the best ways to track poor code. We can also use them to track poor coders.”
Measurement
We need to gain a better understanding of the true economic picture of software development and maintenance; we should move to activity-based costs.
We need to analyze the flaws of cost per defect and lines of code and get to the real economics of software development.
“What is not measured cannot be improved.”
Economics
We need to better understand the economics of software creation and maintenance. We need to evaluate the cost of updating legacy applications as this becomes more important as there are simply more of them in the rear-view mirror.
“If you don’t have the business case how can you know something is worth doing?”
Conclusion
If software development is going to evolve into a true engineering discipline, we need to make a change.
“Much like writing code, it requires focus”