Make Your Software Development Flow More Efficient

Building software is fun, unless if it is not efficient…

Satrio Wibowo
5 min readJun 24, 2022
Photo by Lukas: https://www.pexels.com/photo/turned-on-laptop-computer-574073/

Every programmer who has built their own software must understand the pain of needing to abandon a project after long hours spent building it. Or worse, some businesses closed because they simply were not able to produce the software with the resources they have at the time.

Developing software, either solo or as a team, always have a series of process and any of them can cause inefficiencies. This raises the question, how to develop software efficiently? Here are a few tips to make your software development process more efficient:

Start small

It is tempting to add features based on your ideal standard of how the software must be created. However, there will be certain limitations on how many features can be developed in one period, whether limited by budget or work hours in a day. So it is important to organize which features are important to be added and which features can be added later.

For example, when you are creating a web page like Medium, while it is ideal to have features to embed video, it can be added later because adding a good text editor is more important and have more impact on the users.

To make it easy to fully map which features are important, you can use the “Effort vs impact” matrix to analyze, add important features, and postpone non-important features.

Effort vs Impact Matrix. Source: https://buildd.co/product/2x2-impact-effort-matrix

Better Planning, Better Outcome

While developing software, especially the one that will be used for a startup/business, it may look quicker to just create and do it. However, without clear and good planning when you start, your application may not survive the market. Take a look at the infamous Windows Vista Development Reset or what happened to Zoom at the beginning of its growth, Eric Yuan (Founder of Zoom) said:

“We did not design the product with the foresight that, in a matter of weeks, every person in the world would suddenly be working, studying, and socialising from home”

What this means is that we need to have a clear vision of how the product will be in 1 to 5 years from now and keep track of your plan by creating a software development roadmap.

Software Development Roadmap. Source: https://inmoment.com/blog/5-guidelines-for-structuring-your-product-roadmap/

Do NOT overwork

Whether you work alone, or with teams, never ever ask yourself or your programmers to work until late at night. Research shows that overworking hurts both yourself and the companies you work for. Quoted from Harvard Business Review, overwork can lead to all sorts of health problems, including impaired sleep, depression, heavy drinking, diabetes, impaired memory, and heart disease, which in turn raises absenteeism, turnover, and rising health insurance costs.

Even if you enjoy coding and work long hours voluntarily, you’re more likely to make mistakes and later produce more bugs, which in the long run will cause you to add more hours to fix those bugs.

So to all programmers out there:

Coffee exist to help you awake, but not to replace your sleep.

Photo by Ron Lach: https://www.pexels.com/photo/an-elderly-male-drinking-coffee-and-working-on-his-laptop-at-home-10223587/

Reuse Codes if Possible

As a programmer, you may work on multiple projects in your programming life. And between those projects, there may be some elements that you can reuse in your new projects. However, there is some caveat to this, that is to ensure that your old code is safe and free from bugs itself. There is no use in reusing your old code if it is full of bugs. That just adds more technical debt to your new project.

https://getcomposer.org/

The alternative to this is to pack your dependencies as a package in the package manager. The benefit of splitting your code into packages is you can reuse the packages without the need to copy-pasting your code. A few examples of package managers you can use are Composer (PHP), Go Modules (Go-Lang), Node Package Manager (NodeJS), and Dart Package (Flutter / Dart).

Automate as many things as possible

As a programmer who works on multiple projects myself, it is a blessing to have an automation system in place. You may think, “Automating things just adds more time for me to write code”, and you may be right. Unless you don’t. Before having automation in place, the time required to just update the source code in the server is painstakingly long and required to be supervised. This can take about ~3 hours just to update and upload the source code & packages, and it doesn’t even include the downtime, AND it also doesn’t include the time required to do manual testing. Compare that to just under ~5 minutes after having an automation system in place.

2074 test cases, 3310 Assertions! Imagine if you must test this one by one

Common examples of automation that you can implement in your project are automated testing (PHPUnit, JUnit, etc.) and “Continuous Integration/Continuous Delivery” or CI/CD (Jenkins, Gitlab CI/CD, Github Actions, etc.)

If you work on teams, try out Agile Software Development

Agile Software Development Methodology (commonly just called Agile), is an alternative to traditional project management that focuses on being an incremental and iterative process. Agile is just a term that wraps popular methodologies such as Lean Development, Scrum, and Crystal. Learn more about Agile Methodology here. For managing Agile teams, there are a few tools that you can use such as Quire, Jira, Github Projects, etc.

Conclusion

Building software without a proper plan and efficiency in mind may look efficient enough for your case. However, again and again, the time has proven that building applications without proper planning mean bringing the software to the path of failure. So, take your time to plan and efficiently work on your projects, and again, DON’T OVERWORK 😄

--

--

Satrio Wibowo
Satrio Wibowo

Written by Satrio Wibowo

Just a programmer that loves coding and learning new tech

No responses yet