Many of us work inside an organization that has a process for building and deploying software. We may find our org doing this well, or we may feel our process is poor with lots of room for improvement.
A lot of the discussion around how to be better at building software in the last ten years has been around the philosophy of DevOps. This concept doesn't really prescribe how to build software, but give you goals to aim for. That means you still need to take the ideas of flow, feedback, and learning and decide how you implement them with your staff. What practices do you follow to ensure you can deploy quickly anytime your code is done? These can include ensuring you've tested code, getting feedback from customers, and more.
I ran across a post on recommended software engineering practices for an organization. The list includes seven things you should do:
- Keep documentation in the code repo
- Have a mechanism for test data creation
- Use rock solid database migrations
- Create templates for new projects
- Automate code formatting
- Automate a process for new dev environments
- Automate preview environments
This is a set of things I often preach to customers as well, especially 2, 3, 6, and 7. I often focus on the database and having curated test data, migrations you can count on and easy setup is important. And, of course, with SQL Prompt, you don't need formatting ;). Just kidding, that's important, too.
These are solid practices, and none of them are that hard to set up, but they do require some discipline and willingness to work as a team and maintain your process across time. Each of these items needs some care and feeding across time to remain relevant and helpful to your staff.
Do you have good software engineering practices? Are you proud of them and would you bring them to a new position? Or perhaps you wish your team would adopt better habits and a different mentality towards building software.