A brief exploration of the radical differences in contract software engineering quotes.

Software companies are everywhere these days. If you add in the number of freelancers on contractor sites, craigslist, or the guy your friend knows, they are like grains of sand on the beaches. And they all get the same question every day: “How much would it cost to build an app?”

This is a question that has been addressed on a thousand blog posts, mainly by frustrated engineering firms who struggle to understand how people can ask such a question. They give answers like, “How long is a piece of string?” or “How much does a house cost to build?” These examples are designed to show that the cost of something custom varies wildly based on what the specification is. This, however, is only the most surface level answer to that question. The real cost multiplier, and the hardest part to explain and quantify, is quality.

Quality of development is not simply a measure of your experience (e.g., How nice were your agency’s offices? Did they perform frequent check-ins? Did you feel good about the process? etc.). I’m talking about the actual quality of the code itself – not just the final product’s look-and-feel.

If you are paying a lot of money (relatively speaking) for a custom built application, it should be obvious that it was made with a thoughtful user experience and appropriate graphic design, while not throwing errors or leading to dead ends. Right? Unfortunately no. Even though this should be the bare minimum, getting the basics handled correctly is rare in my experience. As sad as that is, these signs of quality are something that you can shop for. You should be able to see examples of your potential agencies’ previous work or of your freelancer’s portfolio. But you need to test them in real life, as if you were a real user, before committing. Do not believe anything you see in a PowerPoint presentation.

The biggest difference in software design company prices is the quality you don’t see. These are the tougher to articulate items. What I’m talking about here is the commitment to engineering best practices and processes, the quality of the code, and the thinking behind that code.

A decent developer can build many of the same applications that a great developer can – especially your typical business software system. It might even take the two teams the same amount of time to complete the same project. And the apps might be indistinguishable when they launch. Great code, a real belief in process and best practices, and solid team management is not as apparent in the first iteration of a product, but it becomes glaringly obvious in later releases.

As a product matures, new features are added, interactions with other systems are required, and user bases grow in size. These three fundamental points are rarely considered by your average development firm or freelancer.

When you add new features to a piece of software, you will often need to change the database structure or the APIs of the original design. These can result in large scale, breaking changes; meaning updates will break previous versions of the application. This type of work often requires huge time commitments to testing the new versions, providing triggers and fail-safes for existing users, and of course writing all new code. Top class developers on the other hand design their systems from the get go to be extensible. They plan multiple API versions from day one, have contingencies in place for breaking changes at inception. They may have already built your system to be multilingual (even though it is only launching in one language) because they know it would be a huge undertaking to add on later. They will take into account accessibility standards, security, and data optimization.

The ability to interact with systems outside of the application’s native environment is another frequently overlooked engineering problem. Abstracting your APIs with middleware might take an extra day or two at the beginning of your design process, but it might save you months of work down the line when you want to change out a data provider. Documenting the process as you go along, explaining to future developers how this should work, is easy when you’re building it. It becomes a huge task of reverse engineering if you have to do it a year later.

Finally, we should talk about scalability. A well-designed system will have architectural structures in place that are designed to expand or to leverage scalable hardware systems, while balancing the long-term costs of growing. A lesser development firm will have a “cross that bridge when we come to it” attitude or will throw expensive additional monthly hardware costs at a problem that could have easily been avoided in the design process.

Conclusion

The problem with picking a software engineering firm is that they are not going to bore you with the details of their documentation process in the sales pitch. I haven’t even touched on things like automated testing of code, good relationships with distribution partners, well qualified project managers, and penetration testing as a standard practice. The problem is that almost no one is going to include these invisible quality requirements into a specification they put out for bid. Yet, these are the strongest determining factors in the long-term success of any software project. I promise.

Your options are to have a really solid technical lead on your team to evaluate the work being done or to pick a company that does go into these details in their sales pitch. You should be aware that doing things the right way is going to cost more up front, but it will save you double or even triple the time in the future if you do it the wrong way.

Previous ArticleNext Article
I help companies turn their technical ideas into reality.

CEO @Sourcetoad and @OnDeck

Founder of Thankscrate and Data and Sons

Author of Herding Cats and Coders

Fan of judo, squash, whiskey, aggressive inline, and temperamental British sports cars.

The Internet Doesn’t Have Enough Love In It (And How We Can Fix It Easily)

I’ve been thinking about all the wrong things when it comes to AI writing code.

Everyone else seems to be too. Job displacement. Security vulnerabilities. The ten-times-faster developer who now bills the same and delivers four times as much. These are real conversations worth having, just not the one I want to have right now.

The one I want to have is about teaching a six-year-old multiplication.

Here’s what I mean. Imagine you’ve been sitting with your kid every night for two weeks trying to explain multiplication. You’ve tried drawing rows of dots. You’ve tried songs (don’t judge me). You’ve tried the “just think of it as groups of things” approach that works for literally every other math concept but, mysteriously, not for your kid. Then one night, something clicks. You found the explanation, YOUR explanation, the one that worked for your actual kid with your actual kid’s brain, and it finally, beautifully, clicks.

Now imagine you could spend a Saturday morning turning that into a small web app. Not a startup. Not a SaaS platform. No login. No backend. No one’s going to hack it (there’s nothing to hack). Just a little thing that walks through multiplication the exact way you figured out it works, step by step, the way you’d explain it. You send it to the WhatsApp group for your kid’s class. Some of those other parents, also quietly losing their minds over multiplication, try it. And it helps.

You just made the world a tiny bit better. That’s it. That’s the whole thing.

Claude Code exists now, and a handful of other tools like it, and the reason I think this matters isn’t productivity. It’s access. The barrier between “I have an idea for something that could help people” and “I have a thing that helps people” used to require knowing how to code, or hiring someone who does, or talking a developer friend into your project over enough beers that their guilt exceeded their better judgment. Now it’s a Saturday morning and a good description of what you want to build.

The internet already has beautiful things in it that were built out of love. Free coding education for kids. Open-source video editors. Someone’s incredibly detailed home-brewing app with no monetization plan whatsoever. Artists making interactive experiences because they wanted to see if they could. These things exist because someone cared more about making the thing than making money from the thing. I think that ratio is about to shift dramatically in favor of the people who just want to make something good.

I’m not saying we should all stop paying for Salesforce (we should probably keep paying for Salesforce, there’s a reason that thing costs what it costs). I’m saying the category of software that was previously not worth building because it wasn’t commercial enough to justify the cost, that category just got a lot more interesting.

What’s in that category? Things like:

  • An app that helps beginning judo students understand the concepts behind a throw, not just the mechanics, because judo is where I learned confidence and discipline and I want other kids to find that
  • A private family memory vault (not Instagram, not Facebook, not anything with an algorithm deciding what matters), just a place where the people who love my son can send photos and stories somewhere safe, for him to open when he’s older (Maybe I’ll turn this into something?)
  • A system that reminds companies to send their employees gifts on the days that actually matter to them, because I know from running a company that it fills the cup of the person giving just as much as the person receiving (Thankscrate, if you’re curious, and yes, that one is turning into something real, but that is genuinely not why I built it)

None of those were commercial ideas first. They were just things I cared about.

I think the most interesting software that gets built in the next few years won’t come from developers moving faster. It’ll come from people who previously had no path from “I care about this” to “I built something about this,” and now they do. Parents. Coaches. Teachers. The person in your office who could explain that one complicated process better than anyone and has always secretly wanted to turn it into something.

The stakes are low. The bar to launch is low. The cost is low. The only thing required is that you actually give a damn about what you’re building.

One small caveat before you go off and change the world. If your passion project involves storing the medical records, credit card numbers, or personal information of vulnerable people (childhood leukemia patients, say, or really anyone who has enough going on without also becoming the victim of a data breach), please, for the love of God, do not take that on as a Saturday morning vibe-coding exercise. That is not a passion project, it’s a terrifying lack of judgment and a huge liability. Please hire professionals, follow compliance frameworks, and treat the security of people’s sensitive data with the seriousness it deserves. The whole spirit of what I’m describing here is low stakes, and nothing raises the stakes faster than a database full of information that could ruin someone’s life if it leaks. Build the multiplication app. Build the judo app. Do NOT build the “I’ll just store some PHI real quick” app.

So… What do you give a damn about?

Go build it. I still sometimes have to count on my fingers, but I’m told the app helps.