Make productivity a priority in software development
We’ve all had those projects with tight deadlines that had to be met. Once all the code was completed, checked and ready for deployment, the product owner decided to postpone deployment. In many cases, projects were completely shut down even before deploying to live! Maximising productivity is a vital task that should be the focus of any organisation.
Whether you’re coding, doing online marketing or offering a product/service – it is important that everything is done to enhance productivity.
A lot could be said about having the latest technology, automation and systems in place to make changes simple and easy to navigate around. On the other hand, working on the right things will have the right outcome.
We would like to give our customers the best. We all want to make sure that they get value for money. Sadly, most of us don’t know what the customers really want.
One of my clients told me the story where they were told that they had to build a R 1.3 million feature, or they would not be able to use their software. They built the feature. They decided to track the feature usage and discovered that after it was created, it is never used.
Waiting (for requirements, testing, etc.)
When using methodologies such as waterfall, there could be times when the developers have nothing to do. They sit waiting for features to be approved. In other cases, when testing ideas or waiting for customer feedback, it could eat away at our productivity time.
Ideally, a just in time production system makes sense to optimise the time spent.
All processes are optimised for something. These optimisations include stability, performance, extendability and configurability. Each of these has issues that could cost valuable time:
- Stability – unnecessary infrastructure
- Performance – premature optimisation
- Extendability and configurability – added complexity without a definite plan/requirement that the code will be used
In the context of other solutions such as e-commerce, one could easily want to overcomplicate the solution – Shopify might be an excellent solution for a basic e-commerce solution. It would not make sense to add extra complexity such as conditional shipping options and multi-currency support.
Keep your solution as simple as possible.
Scoping and sizing
Some projects never get off the ground. Yet, one can easily spend years in a state of analysis paralysis. If you work in an agile environment, the sizing should never be more than one sprint ahead of the development sprint.
Automation and using underutilised tools
In many cases, one doesn’t need complex consultations and processes to achieve what you need. Many tools exist such as Zapier that can help you automate your business. You could also optimise your deployment cycles with CI/CD software.
Code quality should never be sacrificed to deploy a feature or bug fix. It is vital that processes are in place for unit tests. code reviews and pull requests. These are a safety net in case something goes awry.
Underutilised skills in the team
Every team member brings unique skills to the table. Once the skills matrix is mapped to the team members, one can decide how to optimally use the skills available.
Sometimes, during an incident, all hands need to be on deck. Other times an urgent request requires all work to be stopped and focus be diverted to the new feature. When other features are not finished, it is often left on a new branch – where it is left to die.
Work that is started needs to be completed.
Productivity needs to be made a priority. The focus of a company should be to finish the features that were started.
Make sure that the feature is necessary, concise and completed.
Use all the tools available to the team to achieve the outcome.
Simply be effective.