By working for 15+ years for different clients I found that there are common mistakes in the design of the software and the development process that could slow down implementation of new features.
This is especially visible in the areas regulated by the government, where the time pressure is big and requirements are not so clear.
I collected 10 mistakes and proposed 10 ways to avoid them, in order for you to implement new features faster and easier. I really hope this will be a benefit for you.
-
10 software mistakes – 1 manual deployments
Manual deployment process is a risk of human errors
Problem
When doing manual deployment, it takes time and could introduce accidental errors.
Solution
Set up the Continuous Deployment pipelines upfront, with the very first release.
Benefit
You will automatically and safely deploy the application in minutes.
-
10 software mistakes – 2 manual testing
Manual testing takes time and is a risk of human errors
Problem
When doing manual testing, it takes a long time and one could make a mistake or forget about something
Solution.
Just use Test Driven Development or Test First with a full suite of automated tests.
Benefit
You will be sure that the application works properly in a much faster UAT phase.
-
10 software mistakes – 3 no time travel testing
Monthly reports take month to build
Problem
When doing time sensitive UAT testing it could take weeks to test some features.
Solution
Just use time travel testing and control application time.
Benefit
You will be able to test monthly reports on UAT in minutes instead of weeks.
-
10 software mistakes – 4 avoid feature branches
Feature branches make developers take days to merge to main branch
Problem
When developing a long-lasting project in feature branches, merging into the main application could take a day or two to resolve all conflicts.
Solution
Just use Continuous Integration and merge daily to the main branch.
Benefit
You will resolve smaller conflicts easier and faster and the new code could be hidden behind the Feature Toggle.
-
10 software mistakes – 5 avoid overnight deployments
People do more mistakes working at night
Problem
When a new feature has to start working on a given day, you have to pay for night duties to deploy it after working hours.
Solution
Just use Feature Toggles and enable them on specific time automatically.
Benefit
You could deploy disabled code at any time and enable it at any convenient moment with no additional costs and you can go back and forth.
-
10 Software Mistakes – 6 – Avoid microservices
You are not Amazon and probably don’t need microservices
Problem
When new requirements have to be implemented, you waste time on redesigning
the application with the wrong architecture. If you use microservices
because of hype then you are doomed.Solution
Just use the modular monolith architecture.
Benefit
You could redesign the code faster without worrying about network and
communication issues. All your modules should be aligned with business. -
10 Software Mistakes – 7 – Avoid knowledge siloes
Keep the bus factor small
Problem
Your developers are not your business experts, but they should be. They are writing code to run the business.
Solution
Just use Event Storming to share knowledge inside the company.
Benefit
You will be amazed how fast developers can get in-depth knowledge of the business domain. You will save time and avoid exchanging emails back and forth.
-
10 Software Mistakes – 8 – Make decisions too early
You can start development without the details
Problem
When government regulations have to be implemented, the details could be not known upfront and this blocks the development.
Solution
Just use Clean Architecture and postpone decisions as long as possible.
Benefit
You will be able to start development right away and implement storage and UI when you have the most knowledge available.
-
10 Software Mistakes – 9 – Avoid too much DRY
Simple is better than over engineered
Problem
When government regulations have to be implemented, they could accidently force regression testing in not related departments.
Solution
Just don’t use DRY too much.
Benefit
You will be able to safely introduce changes only for those departments that really need them. Other departments don’t need to know about any changes.
-
10 Software Mistakes – 10 – Losing facts
You could build any report if you don’t lose the facts
Problem
When government regulations have to be implemented, there are always new tables in the Data Warehouse required. And new processes to feed those tables. It takes additional time to implement.
Solution
Just use Event Sourcing and store all the facts.
Benefit
You can replace audit logs and application state with a projection from all the facts. This way any new report is a no-brainer, just another projection.