Best Software Development Practices- Kaizen is the name of the game
As a Software Engineer, I have had the pleasure of working in many software development environments, projects and teams. These experiences have shown me that the following of best practices are experienced in different ways. One of the challenges is to identify the best method of recognising these best practices.
By way of background, I am an avid supporter of good practices such as working Agile within self-organised teams and applying good practices within software engineering. This includes all the industry de-facto practices and principles and certainly not excluding individual traits and personal experiences contributing to better ways of working.
In this article, I’ll be sharing my observations and recommendations on best practices. So as a start, what value can be instilled in a software development team that will allow the formulation of practices to achieve the desired outcome?
What does this mean?
A core value of best/good practices is Kaizen,
Improving is not easy
Kaizen (改善) is the Sino-Japanese word for “improvement”. In business, kaizen refers to activities that continuously improve all functions and involve all employees from the CEO to the assembly line workers. — Wikipedia
To start any journey to improvement you need to first understand the desired outcomes of the change and be able to identify what is not working as ideally as you would like it to. Having this conviction allows the willingness to make the change and to review it objectively when enough time has been invested to evaluate the change.
What is the improvement we want?
Best refers to saying it is the only right way (In truth there is no right way). We should rather be thinking about good practices — meaning we apply kaizen to find a set of good principles resulting in the desired outcomes we need right now. Reviewing these practices as the answers to the questions change will allow faster adaption, however, attempting to evolve too quickly can have the opposite effect that no method is ever around for long enough to be seen as a good practice. (Meaning a benchmark of practice formulation is required to give viable improvements enough time to be properly evaluated.)
We should always improve the way we work and perform our daily actions and interactions better. Once we feel we cannot improve anymore we should take a step back to review, explore and discover innovation. I would say that this is where the actual work begins. (By the way, in Agile methodologies this is referred to as the work that happens outside the workplace.)
Good practices go much further than writing better code, creating resilience and striving for more sustainable and maintainable development practices. This means that there are many ways to apply good practices. As an example, Agile theoretical practices translate differently for small versus large companies. Small companies can take the basic Agile framework and adopt a version suited to their interactions and requirements. In large organisations, the SAFe framework has been adopted since it allows much-needed strategy and some form of planning compatible with development teams’ requirements to work Agile. Working Agile means something different to almost all organisations and the version adopted changes on a yearly if not monthly basis.
Let’s now review some of the practices that are contained at the core of good practices in software development teams:
Agile Scrum team practices
- Sprint Ceremonies
- Sprint Planning
- Technical Planning
- User Story Reviews
- Daily Stand-ups
- Use of Source Control (Git and others)
- Build Pipelines (CI/CD) — Allowing continuous integration and delivering potentially shippable artefact’s for testing and evaluation of the developed product
- Clean Coding principles
- SOLID Principles
- Unit Testing — TDD preferably ( not always possible btw. )
- Architectures and Design Patterns
- Many more
Character traits for good team work
Team members need to be:
- Confident about the skills they possess yet humble in their interactions with their team, business and at a technical level
- Approachable, friendly and collaborative
- Willing to learn and teach amongst themselves
- Open-minded to different approaches
- Involved in your team’s interests, creativity and fun
- Open to questions around your designs, solutions and work in general
- Curious about proposed solutions, designs and people’s ideas and work
Additionally, other character traits include the ability to:
- Ask relevant and constructive questions
- Remain persistent in your experiences and strengths, yet willing to adapt, adopt and change based on new activities and requirements
Apply Kaizen in your lifestyle
The ultimate good practice to unlock your potential is Kaizen. Grow your understanding, capabilities and ways of thinking. Goals and business requirements have not changed as much as we think in the past decade. They have evolved due to the acceleration of technology innovation. The answers and potential solutions have been changing faster than companies can adapt. Make sure that you are part of these mindset changes by allowing yourself to improve every day.
This article was originally posted on Medium's DVT Engineering publication. Read Article