Why software is never finished

April 25, 2024

You have an app that you use everyday. You're familiar with it and know how to navigate your way around it like the back of our hand— but one day, it suddenly looks different. Your brain freezes, trying to comprehend the new placement of things, and you find yourself once again going on a journey of discovery to find that one button that accomplishes what you want to do.

When software like websites and mobile apps are made and launched, they are often in their first versions.

What does this mean? Allow us to take The Nature of Software Development’s creative illustration for this:

Imagine being the inventor of the first car in the world. Where do you start?

You know you want something that can take you from Point A to Point B at a faster speed than if you walked the distance so what do you do first? Let’s say you get a board to carry you and attach two wheels underneath that will help you with the speed.

Problem solved, right?

...Not yet. While zooming down the highway, you realize that you want that thing to also go the direction you wish for it to go. You didn’t think about this at the beginning because, well, all you thought you needed was to get from Point A to Point B.

So then, maybe, you add handlebars to the contraption. Now you have something that looks like a scooter!

You keep going, realizing what else can be improved, iterating the vehicle until it is able to solve your problem, and more.

This cycle of create, test, discover-something-you-need-that-you-didn’t-think-of-before, create again, and then test again goes on and on until you come up with something that is close enough to solve your problem.

This is the nature of software development: it’s constantly evolving. Along the way, the web developers will have to fix issues in an app, do changes on current features after getting user validation, and even add more features that the client realizes they need. Oftentimes, the timeline given at the start of the project isn’t the actual timeline the product needs to be at the “perfect” state (if there’s even such a thing).

With this in mind and after 10 years of experience in working with clients to build software, we have adapted our development methodology to follow the agile approach.

💨 What is Agile?

According to, agile software development refers to software development methodologies centered round the idea of iterative development, where requirements and solutions evolve and improve through collaboration.

It’s an approach that expects and plans for changes.

🤔 Why Agile?

We believe that an app truly serves its purpose when its users accomplish what they set to do when they decide to install it.

So instead of delivering the product all at once by a fixed deadline, we deliver versions incrementally so we could get feedback early on how the product is working for the users. From this, we learn how it could serve the users better and work on that on the next cycle of development.

With this, our team and especially our clients don’t have to invest so much resources on building something for so long before putting it into the hands of users, and finding out later that most of what we have built doesn’t really help.

📏 So how is the effort measured?

For our projects at Symph, we measure our effort according to:

1. Block

- 3 hours of design/development work

2. Sprint

- 20 blocks (2 weeks= 10 working days of 2 blocks/day/ person) of design/development work

🔄 How does the process go?

At the first stage of the collaboration, we meet with you, our client, to learn what business goal this project of building an app is targeting to achieve. This is for us to also have a clear picture of how the app is supposed to work by the time it launches.

Once we have that in place, we ask you further about your idea for your app. What app features world best solve your problem? How should the features work together? With this list, we prioritize which features are most essential and prioritize them accordingly. We then work on that list from the top-down.

The sprint, defined previously in this article, is how we measure one round of our development team working to complete a set of features or iterations. With every sprint, we are able to show you a version of the app that you can test and give feedback about- which is what we take as we begin the next sprint in the process.

Aside from regular meetings to demo the updated versions of the app, we also give you access to the project’s development versions so that you can explore it in real-time and see how the project is going.

🚀 How fast do we go?

That depends on you— how fast do you want to go?

The speed of how we deliver features for your project depends greatly on the number of persons you choose to allocate for every sprint. The more team members allocated, the faster the progress will be.

Interested in this kind of collaboration? Talk to us.