Bram
Software engineer
from Belgium
We focus on improving live software, with real users. And that's no easy feat.
Building software from scratch is awesome. You start with an idea. And then, you turn that into a Minimal Viable Product in no time. All it takes is the right skills and frameworks. Turning that idea into a product is an almost magical experience. From zero to one.
Those first months are your product's honeymoon phase. The team can pivot easily and make huge, impactful changes as they go along. Change is easy and fast—until you press that button and put the product in the hands of your users.
In the rock' n roll of building that first version, we often forget that this is the easy part. The launch of the first iteration is only the beginning of the ride. It's where the challenges start.
Once software gets actively used, change becomes a lot harder. You can't just wildly pivot, as you will impact paying customers. You can't just quickly drop the database or reboot the server when people rely on your product. And you can't just build new features, as customer support and feedback take up a big part of your team's attention.
Legacy code, brownfield projects, migrations, and upgrades. Working with real users is software development on hard mode. And that requires a different set of skills. Yet most agencies seem to treat greenfield and brownfield alike. As if building an MVP and operating an actual product require the same skills. Madewithlove has a rather different approach.
We focus on live software. Our developers are drawn by the challenge of working on software that's being used by real people.
Our engineers understand how you got here. We understand the trade-offs you needed to make to go to market. You can't wait for ideal conditions, but make the best of the cards you've been dealt.
We feel software delivery follows a similar pattern. Your current architecture might not be ideal, but we can't wait to rewrite it from scratch. We never start from ideal situations. We start from where you're at and take it from there.
Reducing technical debt isn't enough. We need to change the processes and habits that caused it in the first place. That's why our engineers embed in your teams and guide them towards the better solution. We don't just improve your product but show your teams how to keep doing it in the future. Also without us. Because our ambition is to get your own team to flourish again.
Building software is a team sport, and we love to combine our engineering expertise with yours. Our developers bring their technical know-how to the table and introduce valuable processes and practices, such as extensive use of version control, code reviews, pair programming, continuous integration, and continuous delivery. They are there to elevate your team's performance, not just to build features.
Reliability is the hallmark of great software products. That's why we always keep your users in mind when working on your software. Customers really dislike downtime and bugs. Preventing those is not a matter of magically writing perfect code. It requires the right processes, tools, and test automation. Our engineers set up these processes to keep quality high during this period of change. And long after.
... and about 150 more.
The cost of technical debt
Technical debt accumulates when speed is prioritized over quality, similar to financial debt. While it can help your business move quickly in the short term, ignoring it can hinder growth, leading to performance issues and higher long-term costs.
A productivity killer
Unchecked technical debt and legacy code can harm your team's productivity, leading to slower feature development and higher costs for bug fixes. Over time, this can erode your team morale and make it difficult to retain or onboard new talent.
Don't lose knowledge
Good documentation is critical for managing legacy code. Without clear, up-to-date records of how the code works, your company risks losing valuable knowledge when developers leave, making future updates or fixes more challenging and time-consuming.
Balancing innovation with stability is key in managing SaaS legacy code. You explore phased implementations, leveraging existing assets, and continuous learning to maximize legacy code potential. Ideal for tech leads and founders.
Discover effective strategies for managing technical debt and legacy code in software development. This comprehensive guide for founders explores the causes, impacts, and solutions to maintain sustainable growth and high-quality code.
We discuss the challenges of using PHPStan at its strictest level for type checking, particularly with 'mixed' types. It explores solutions like using strval() and creating custom functions, but ultimately, the author opts to lower PHPStan's strictness due to complexity, ending with mixed feelings.
to answer all your questions on your technical debt
Arrange a free, 30-minute call with our CEO to find out how we can help you.
There’s no commitment—we just want to understand your needs.
We’re getting booked up pretty quickly, so the sooner you get in touch, the sooner we can help you…