How to improve your software development even if everything is working

IS IT BROKEN BUT I JUST DON’T KNOW IT YET?
With an extensive testing background I like to break things. Working with DevOps culture over 5 years I also like to improve the whole process and the way software is developed in project I have been working with.
Usually if I can find some problems from the software, it will also break in production. Breaking things is a good way to catch issues before customer or blackhat hacker do it for you.
But how about breaking things during the process or as a part of the culture? Could your culture be broken but you just don’t know it? From time to time it’s good to step back and look and review how things are done in the project.
There might be some hints in the “air” and maybe you have seen symptoms of it. Sprints have ended but you have not gotten your software into production. Team is collaborating, but time is spend on meetings and daily takes 45 min. Feature took 3 months to get from idea to production. Constant firefighting should tell you that something is broken.
Have you enabled your operations team to break things? And are developers allowed to break software when developing new features in rapid pace.
In DevOps culture you should give your team the best possible work environment and infrastructure to develop, test, operate and scale your environments. Also give the team an opportunity to experiment.
The culture is also about having right things in place to do ones work in safe environment, where everything is possible and it’s safe to try new things.
DEVOPS CULTURE and PRINCIPLES
From where to seek improvement.
Culture — let people fail.
Company culture which accepts failure is a key issue when doing things in rapid pace.
Accidents happen. How you handle those hard moments gives your team either good or bad vibes. All this come from leadership. Many times I have heard nice words, but real leadership comes from actions. How you handle failure and how you act when things are hitting the fan?
Enabling safe work environment is vital in building software in a rapid development cycles where failure is always an option.
Continuous learning
Continuous learning is something that might be forgotten if one has been working in a same project for a long time.
It’s really important to challenge yourself and your team by thinking new ways of doing things. Also check if the team is slowly degrading from Agile principles. You should constantly find new better ways to get ideas to actually something working in production.
Lean/Agile
How do we work? Is our Way of Working and using Kanban or possibly Scrum workflow working as it should. Is it optimized?
Do we have necessary steps on our workflow columns to present how we are making our software? Or do we have too many steps so we are wasting time. Do we have Definition of Done/Ready in use and do they reflect on the quality we want to achieve? Have we constantly thought which are our bottlenecks and how to increase velocity/throughput and remove waste.
Collaboration
Team collaboration and information sharing between Product Owners, Scrum Masters, Developers, Testers and OPS/SRE/SysAdmins should be fluent and each team members should have the possibility to grow on their own field of craftsmanship.
Making results and other KPI’s visible for the whole team is a good way of information sharing.
Celebration
Celebration is fun. Celebration is good way to make the team tighter. In my own experience those teams which celebrate the most have been the best places and teams to work with. Remember to celebrate together — both failure and success.
Lean Startup
For the last time — forget those waterfall projects.
MVP, fast build-measure-learn loop, fast failure.
Prototyping new services and features for the customer with a Lean Startup style goes well together with DevOps. When your development cycle is fast your ability to test your business ideas is fast as well. How can making business be easier as this? One does not have to see two years ahead. Try it now and pivot — change your services/features when needed.
Constant Improvement
Many times it’s easy to go through tools and automation practices to improve the processes inside the company. I have been gone through the basic DevOps practices in my previous blog post. https://medium.com/@mikko.jantunen/ways-to-improve-your-software-development-with-devops-92af7570e750
But constant improvement within the culture might be harder to achieve. It needs motivated and dedicated people, who passionately preach and introduce better ways to work in the company.
Enabling those people to do their work and share their insights will do wonders to the company.
Passionate business people, passionate developers, passionate ops people. With the A-team everything is easy. Enable your culture to get motivated people to grow to be the A-team. That is the company where quite many of us like to work in.
How about valuing our employee first? When employee is happy -> the work will be first class -> Product/Service will be mint -> customer will be happy.
