Recently I have been reading the DevOps Handbook, and it has been connecting so many ideas and phases of Software Development that it lead me to this conclusion. There is more to designing software than just the patterns and practices to follow for making maintainable solutions. Additional items that one needs to be aware of and consider are:
Testing
Software that does not have a way to validate that it works as expected is software that will be difficult to maintain and add new features. Testing goes beyond unit tests; we need tests that exercise the system in an integrated way to make sure that all dependent parts work together as expected. These feature/end-to-end tests should describe the workflows that end users will use.
Deployment
Deployment is an area that gets overlooked by development. The development team needs to be aware of how to deploy the solution they are developing. Keeping track of external dependencies, system configurations, expected OS to run on, etc.. With all dependencies and expectations tracked it helps ensure that you will have your software solution will operate as expected when deployed.
When we have the list of dependencies, we can then work on steps to automate the deployment process. The more automated the process, the quicker the turn around is for deploying updates.
Tools
These are the tools that development and operations use to manage and implement the solution. Besides, the common types are version control, editors, release management, we need to think about tools that used for post-mortems, ticket management,
Tracking
Have tooling that is easy to put in place by development to give insights into how the application is performing and logging. Performance monitoring is critical in providing feedback to developers, so they know how the system is functioning and how to fix production bugs.
Summary
This list may grow as I continue to dive deeper in to keeping the flow for development of features for users and feedback from the systems performing the. I plan to add links to to examples where each of these has been used as well to other projects that I build.