---
title: "Why people think agencies are bad"
canonical: https://wavect.io/blog/why-agencies-are-bad/
language: en
description: "We all know the horror stories around software agencies. Faulty software, missed deadlines, expenses way higher than expected."
image: "https://wavect.io/img/blog/headers/header_why-agencies-are-bad.png"
---

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

11 min read · 07 June 2024

[**Next**](/blog/agile-fixed-pricing/)

# Why People Think Agencies Suck

TL;DR

Agency horror stories usually trace back to bad communication, lack of reporting, unforeseen risks, and tasks that were never accounted for. The Devil's Quadrangle (time, cost, scope, quality) explains the trade-offs: optimizing one constraint degrades the others, and misaligned expectations are a big reason agencies get a bad reputation. Structure budgets into work-package estimates, contingency reserves, and management reserves so risks have an assigned budget.

We all know all these horror stories around Software Agencies. Agencies that deliver faulty software. Software hasn't been delivered at the said deadline. Or expenses were just way higher than expected.

But what's the real issue at hand? Usually it's a combination of bad communication, lack of reporting, unforeseen risks and tasks that have not been accounted for.

So how do we build better software, while keeping costs low? (dream outcome)

## The Devil's Quadrangle

Let's have a look at the so-called Devil's Quadrangle.

You might have heard about the Magic Triangle. The Magic Triangle consists of three project constraints: Time, Cost and Scope. These constraints need to be balanced against each other to deliver a project. Changing one of them will impact the other two.

Harry Sneed, a Software Engineering professor has extended this model by a fourth constraint "Quality". This extended version is usually referred to as the Devil's Quadrangle of Project Management or Sneed's Devil's Quadrangle. It splits out the quality from the Scope, which now solely focuses on the content of the scope and not the quality of the scope delivery.

Let's think this through. If we want to have software delivered in a very short amount of time, we probably need to hire way more developers, possibly reduce the scope and even sacrifice software quality.

![The Devil's Quadrangle](/img/blog/posts/pm_devlis-quadrangle.svg)Focusing on the Expenditures of developing software results in lower software quality, a tighter scope and slower speed of delivery. As such does focusing on quality by spending more, having a tighter scope and most likely a delayed project launch. And you have to deal with much higher software development costs by optimizing for quality, scope and speed of delivery (see figure). One of the many reasons why Software Agencies have a bad reputation is misalignment on expectations. Always make sure to set realistic expectations and to choose the trade-offs you're willing to make.

![Kevin Riedl](/img/team/kevin.webp)

"Fast, Cheap or Good. You can only pick two."

### Cost of Quality

Another great way to showcase this is the graph below.

![Cost of Quality](/img/blog/posts/pm_cost-of-quality.svg)

The more time your team spends testing and optimizing the software, the less defects it will have. As a consequence prevention costs will be higher. As such Prevention costs are exponential. This means the more stable you want your software to be, the exponential more time your developers need to spend on testing and optimizing.

If your Software is being used in airplanes for example, you definitely cannot risk any errors - for that reason you may want to invest much more time in prevention. The same applies to applications in [Web3](/glossary/web3/) since you are usually dealing with large amount of customer funds. Depending on where your software is used, you want to be somewhere on that curve - usually within the operational range.

Let's switch to Failure costs. The more errors happen in production, the more has to be evened out. This can be damage to your brand, [technical debt](/glossary/technical-debt/), additional maintenance overhead or actual monetary damage by people suing you for example.

As a consequence you usually want to just spend enough on Prevention to have reasonable failure costs. This is called the economic equilibrium.

### What about Risks?

Doing anything in life comes with risks. Things we are aware of, and risks that we recognize when it's too late.

Unfortunately, we also have to deal with that in [custom software development](/services/software-development/). As a consequence project risks can put significant pressure onto any project budget. Let's have a quick look.

![How to budget a Project](/img/blog/posts/pm_budget-project.svg)

Every project budget should be structured into three buckets. Work package estimates (features - things you want to have built), Contingency reserves (work that needs to be done if some identified worst case scenario occurs) and Management reserves (a flat budget that hopefully covers all unforeseen and actually occurring worst case scenarios). Accounting for risks significantly reduces the overall project risk as there is a clear budget assigned for solving the problem.

See also: most agency dysfunction comes from misaligned incentives. Our [Fractional CTO Austria](/services/fractional-cto/) model fixes that by aligning a senior CTO directly with your outcomes, on a Werkvertrag rather than a billable-hour treadmill.

## Final thoughts

In conclusion, Software Agencies are not bad per se. Most often it's the misalignment of expectations and the lack of communication that makes them look bad. Always make sure to set realistic expectations and to choose the trade-offs you're willing to make.

So next time when engaging with a Software Agency, ask them how they plan to update you on their progress and if they set proper expectations.

## You may also like..

[**Pricing Software the Right Way** Most people know the downfalls of hourly pricing and instead ask for fixed prices. What if we tell you fixed pricing on software projects is no better?](/blog/agile-fixed-pricing/) [**Wavect vs a generalist dev agency** Generalists sell capacity; we sell product judgment plus the engineering to ship it.](/compare/wavect-vs-dev-agencies/)

Software buying and funding

## Continue through this cluster

Agency selection, contracts, pricing, grants and the commercial mechanics of delivery.

[Start with the cornerstone**Software Agency Proposal Teardown: 12 Clauses That Change Price, Scope and Ownership**](/blog/software-agency-proposal-teardown/)

- [Software Project Takeover: A 30-Day Provider Change Plan](/blog/software-project-takeover-provider-change/)
- [What "Dienstleister" Commits Your Vendor To](/blog/werkvertrag-vs-dienstvertrag-software-austria/)
- [Software Agencies in Tyrol Compared 2026](/blog/software-agencies-tyrol-comparison-2026/)
- [Software Agency Proposal Teardown: 12 Clauses That Change Price, Scope and Ownership](/blog/software-agency-proposal-teardown/)
- [AI Consulting in Austria 2026: An Honest Guide for SMEs](/blog/ai-consulting-austria-2026/)

Inbox, without the noise

## Follow the work that matters to you

Get a short email when we publish something new. Follow the whole blog or only the problems you care about.

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

11 min read · 07 June 2024

[**Next**](/blog/agile-fixed-pricing/)

New posts by email ×

×

Get new posts by email

A short email when we publish. Free, no tracking.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/blog/why-agencies-are-bad/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-07-07",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-07-07",
      "url": "https://wavect.io/blog/why-agencies-are-bad/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "Agency horror stories usually trace back to bad communication, lack of reporting, unforeseen risks, and tasks that were never accounted for. The Devil's Quadrangle (time, cost, scope, quality) explains the trade-offs: optimizing one constraint degrades the others, and misaligned expectations are a big reason agencies get a bad reputation. Structure budgets into work-package estimates, contingency reserves, and management reserves so risks have an assigned budget.",
  "articleBody": " Blog overview/Business and regulation/Software buying and funding Why People Think Agencies Suck TL;DR Agency horror stories usually trace back to bad communication, lack of reporting, unforeseen risks, and tasks that were never accounted for. The Devil's Quadrangle (time, cost, scope, quality) explains the trade-offs: optimizing one constraint degrades the others, and misaligned expectations are a big reason agencies get a bad reputation. Structure budgets into work-package estimates, contingency reserves, and management reserves so risks have an assigned budget. We all know all these horror stories around Software Agencies. Agencies that deliver faulty software. Software hasn't been delivered at the said deadline. Or expenses were just way higher than expected. But what's the real issue at hand? Usually it's a combination of bad communication, lack of reporting, unforeseen risks and tasks that have not been accounted for. So how do we build better software, while keeping costs low? (dream outcome) The Devil's Quadrangle Let's have a look at the so-called Devil's Quadrangle. You might have heard about the Magic Triangle. The Magic Triangle consists of three project constraints: Time, Cost and Scope. These constraints need to be balanced against each other to deliver a project. Changing one of them will impact the other two. Harry Sneed, a Software Engineering professor has extended this model by a fourth constraint \"Quality\". This extended version is usually referred to as the Devil's Quadrangle of Project Management or Sneed's Devil's Quadrangle. It splits out the quality from the Scope, which now solely focuses on the content of the scope and not the quality of the scope delivery. Let's think this through. If we want to have software delivered in a very short amount of time, we probably need to hire way more developers, possibly reduce the scope and even sacrifice software quality. Focusing on the Expenditures of developing software results in lower software quality, a tighter scope and slower speed of delivery. As such does focusing on quality by spending more, having a tighter scope and most likely a delayed project launch. And you have to deal with much higher software development costs by optimizing for quality, scope and speed of delivery (see figure).One of the many reasons why Software Agencies have a bad reputation is misalignment on expectations. Always make sure to set realistic expectations and to choose the trade-offs you're willing to make. \"Fast, Cheap or Good. You can only pick two.\" Cost of Quality Another great way to showcase this is the graph below. The more time your team spends testing and optimizing the software, the less defects it will have. As a consequence prevention costs will be higher. As such Prevention costs are exponential. This means the more stable you want your software to be, the exponential more time your developers need to spend on testing and optimizing. If your Software is being used in airplanes for example, you definitely cannot risk any errors - for that reason you may want to invest much more time in prevention. The same applies to applications in Web3 since you are usually dealing with large amount of customer funds. Depending on where your software is used, you want to be somewhere on that curve - usually within the operational range. Let's switch to Failure costs. The more errors happen in production, the more has to be evened out. This can be damage to your brand, technical debt, additional maintenance overhead or actual monetary damage by people suing you for example. As a consequence you usually want to just spend enough on Prevention to have reasonable failure costs. This is called the economic equilibrium. What about Risks? Doing anything in life comes with risks. Things we are aware of, and risks that we recognize when it's too late. Unfortunately, we also have to deal with that in custom software development. As a consequence project risks can put significant pressure onto any project budget. Let's have a quick look. Every project budget should be structured into three buckets. Work package estimates (features - things you want to have built), Contingency reserves (work that needs to be done if some identified worst case scenario occurs) and Management reserves (a flat budget that hopefully covers all unforeseen and actually occurring worst case scenarios). Accounting for risks significantly reduces the overall project risk as there is a clear budget assigned for solving the problem. See also: most agency dysfunction comes from misaligned incentives. Our Fractional CTO Austria model fixes that by aligning a senior CTO directly with your outcomes, on a Werkvertrag rather than a billable-hour treadmill. Final thoughts In conclusion, Software Agencies are not bad per se. Most often it's the misalignment of expectations and the lack of communication that makes them look bad. Always make sure to set realistic expectations and to choose the trade-offs",
  "articleSection": "Business & Legal",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "dateModified": "2026-07-07",
  "datePublished": "2024-06-07",
  "description": "Agency horror stories usually trace back to bad communication, lack of reporting, unforeseen risks, and tasks that were never accounted for. The Devil's Quadrangle (time, cost, scope, quality) explains the trade-offs: optimizing one constraint degrades the others, and misaligned expectations are a big reason agencies get a bad reputation. Structure budgets into work-package estimates, contingency reserves, and management reserves so risks have an assigned budget.",
  "headline": "Why People think Agencies suck",
  "image": "https://wavect.io/img/blog/headers/header_software-project-budgets.svg",
  "inLanguage": "en",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/blog/why-agencies-are-bad/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/blog/why-agencies-are-bad/",
  "wordCount": 1105
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/overview/",
      "name": "Blog overview",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/topics/business-regulation/",
      "name": "Business and regulation",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/clusters/software-buying-funding/",
      "name": "Software buying and funding",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/why-agencies-are-bad/",
      "name": "Why people think agencies are bad | ",
      "position": 5
    }
  ]
}
```
