---
title: "软件开发指南"
canonical: https://wavect.io/zh/software-development-guide/
language: zh
description: "这份指南回答创始人在动手开发前真正会问的问题：该做什么、要花多少钱、该由谁来做、又通常会在哪里出错。它由真正写代码、交付产品的人撰写，而不是营销团队。目标很简单：少一些昂贵的意外，少一些外包公司的表演。"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

软件构建指南

# 软件构建决策，从头到尾讲清楚

这份指南回答创始人在动手开发前真正会问的问题：该做什么、要花多少钱、该由谁来做、又通常会在哪里出错。它由真正写代码、交付产品的人撰写，而不是营销团队。目标很简单：少一些昂贵的意外，少一些外包公司的表演。

11 篇指南

56 已解答问题

4 种语言

> “诚实的选型指南，不是包装成建议的落地页。”

// 01

## 这份指南是为谁准备的

做软件是一连串的决策，而最昂贵的错误往往发生在最早期，在一行代码都还没写之前。这些指南用大白话把每一个决策讲清楚：预算、构建方式、技术栈、流程和交接。没有空话，没有清单文，只是把它当成我们自己的钱时会怎么想。

需要先选择交付模式？ [比较软件开发方案](/zh/software-development-options/) 。

// 02

## 十一篇指南，按你要做的决策分组

### [在奥地利开发软件要花多少钱](/zh/software-development-guide/software-development-cost-austria/)

在奥地利做定制软件到底要花多少钱，预算又实际流向了哪里。

### [如何挑选软件开发公司](/zh/software-development-guide/how-to-choose-a-software-agency/)

在签约之前，怎么分辨一家是真正的交付伙伴，还是一台销售机器。

### [自由职业者、外包公司还是自建团队](/zh/software-development-guide/freelancer-vs-agency-vs-in-house/)

哪种构建方式适合你当前的阶段、预算和风险，哪一种又该避开。

### [固定价格还是按工时计费](/zh/software-development-guide/fixed-price-vs-time-and-materials/)

什么时候固定价格的 Werkvertrag 更划算，什么时候按周计费的服务更适合你。

### [为 MVP 选择技术栈](/zh/software-development-guide/how-to-choose-a-tech-stack-for-mvp/)

为什么对几乎所有 MVP 来说，朴素、好招人的技术都胜过新潮。

### [定制软件还是现成软件](/zh/software-development-guide/custom-software-vs-off-the-shelf/)

为什么大多数公司应该买现成的，以及什么时候自建才真正值得的决策账。

### [什么是探索阶段](/zh/software-development-guide/what-is-a-discovery-phase/)

探索阶段能交付什么，以及它为什么能在开发开始前帮你省钱。

### [软件交接清单](/zh/software-development-guide/software-handover-checklist/)

一次干净的交接包含哪些内容，让你永远不被某一家供应商绑死。

### [上线前的质量保障清单](/zh/software-development-guide/software-qa-checklist-before-launch/)

区分一个能上生产的产品和一个一碰就崩的演示，靠的就是这些检查。

### [把 vibe coding 原型推向生产](/zh/software-development-guide/vibe-coded-prototype-to-production/)

如何把 AI 生成的原型加固到能面对真实用户，而不必推倒重来。

### [软件开发流程](/zh/software-development-guide/software-development-process/)

从第一次通话到完整交接，每一周会发生什么。

// 03

## 这些指南不是什么

- 不是包装成建议的获客噱头。如果我们不合适，我们会直接告诉你。
- 不是从网上抓来的通用清单文。它们来自 75+ 个已交付的产品。
- 不是营销团队写的。是真正交付代码的人写的。
- 不是销售漏斗。如果某篇指南说现在还不该做，那就是诚实的答案。

// 04

## FAQs

### 这份软件构建指南是给谁看的？

给正在决定要不要做、做出来要花多少钱、又该由谁来做的创始人和经营者。它默认你想要的是直话直说，而不是销售话术。如果你已经有一支成熟的工程团队和清晰的计划，那你大概用不上它。

### 这份指南是在向我推销什么吗？

我们是一家软件开发公司，所以确实，这些活儿我们也做。但这些指南是为了帮你做出好决定而写的，哪怕那个决定是不雇我们。每一篇都会诚实说明在什么情况下 Wavect 并不合适。

### 这些内容有多新、多可信？

每篇指南都经过审阅并标注日期，事实都来自我们自 2018 年起在奥地利蒂罗尔真正交付过的产品。凡是我们没把握的数字，我们宁愿略去，也不会编造。

### 我该从哪里看起？

如果你还不清楚范围，先看探索阶段那篇。如果你知道想要什么、但不知道怎么做，从构建方式和成本那两篇开始。一次短期的探索冲刺（EUR 3,500 起）通常能很快把大部分问题理清。

## 还在纠结该怎么构建？

避免一次昂贵开发失误最便宜的办法，就是在投入之前花几周把思路想清楚。这正是探索阶段的意义所在。

## 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/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/zh/software-development-guide/#webpage",
      "@type": [
        "WebPage",
        "CollectionPage"
      ],
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-06-26",
      "description": "这份指南回答创始人在动手开发前真正会问的问题：该做什么、要花多少钱、该由谁来做、又通常会在哪里出错。它由真正写代码、交付产品的人撰写，而不是营销团队。目标很简单：少一些昂贵的意外，少一些外包公司的表演。",
      "hasPart": [
        {
          "@id": "https://wavect.io/zh/software-development-guide/software-development-cost-austria/#webpage",
          "@type": "WebPage",
          "headline": "在奥地利做定制软件要花多少钱？",
          "name": "在奥地利做定制软件要花多少钱？",
          "url": "https://wavect.io/zh/software-development-guide/software-development-cost-austria/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/how-to-choose-a-software-agency/#webpage",
          "@type": "WebPage",
          "headline": "如何挑选一家软件开发公司",
          "name": "如何挑选一家软件开发公司",
          "url": "https://wavect.io/zh/software-development-guide/how-to-choose-a-software-agency/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/freelancer-vs-agency-vs-in-house/#webpage",
          "@type": "WebPage",
          "headline": "自由职业者、外包公司还是自建团队：你该选哪个？",
          "name": "自由职业者、外包公司还是自建团队：你该选哪个？",
          "url": "https://wavect.io/zh/software-development-guide/freelancer-vs-agency-vs-in-house/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/fixed-price-vs-time-and-materials/#webpage",
          "@type": "WebPage",
          "headline": "固定价格还是按工时计费：哪种合同适合你的软件项目？",
          "name": "固定价格还是按工时计费：哪种合同适合你的软件项目？",
          "url": "https://wavect.io/zh/software-development-guide/fixed-price-vs-time-and-materials/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/how-to-choose-a-tech-stack-for-mvp/#webpage",
          "@type": "WebPage",
          "headline": "如何为 MVP 选择技术栈",
          "name": "如何为 MVP 选择技术栈",
          "url": "https://wavect.io/zh/software-development-guide/how-to-choose-a-tech-stack-for-mvp/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/what-is-a-discovery-phase/#webpage",
          "@type": "WebPage",
          "headline": "什么是软件探索阶段，为什么它要先于代码？",
          "name": "什么是软件探索阶段，为什么它要先于代码？",
          "url": "https://wavect.io/zh/software-development-guide/what-is-a-discovery-phase/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/software-handover-checklist/#webpage",
          "@type": "WebPage",
          "headline": "软件交接清单：构建结束时你应该拿到什么",
          "name": "软件交接清单：构建结束时你应该拿到什么",
          "url": "https://wavect.io/zh/software-development-guide/software-handover-checklist/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/software-qa-checklist-before-launch/#webpage",
          "@type": "WebPage",
          "headline": "上线前的软件质量保障清单",
          "name": "上线前的软件质量保障清单",
          "url": "https://wavect.io/zh/software-development-guide/software-qa-checklist-before-launch/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/vibe-coded-prototype-to-production/#webpage",
          "@type": "WebPage",
          "headline": "如何把一个 vibe coding 出来的原型推向生产",
          "name": "如何把一个 vibe coding 出来的原型推向生产",
          "url": "https://wavect.io/zh/software-development-guide/vibe-coded-prototype-to-production/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/custom-software-vs-off-the-shelf/#webpage",
          "@type": "WebPage",
          "headline": "定制软件还是现成软件：该自建还是购买？",
          "name": "定制软件还是现成软件：该自建还是购买？",
          "url": "https://wavect.io/zh/software-development-guide/custom-software-vs-off-the-shelf/"
        },
        {
          "@id": "https://wavect.io/zh/software-development-guide/software-development-process/#webpage",
          "@type": "WebPage",
          "headline": "软件开发流程，一周一周讲清楚",
          "name": "软件开发流程，一周一周讲清楚",
          "url": "https://wavect.io/zh/software-development-guide/software-development-process/"
        }
      ],
      "headline": "软件构建决策，从头到尾讲清楚",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-06-26",
      "name": "软件构建决策，从头到尾讲清楚",
      "reviewedBy": {
        "@id": "https://wavect.io/team/christof-jori/#person",
        "@type": "Person",
        "name": "Christof Jori",
        "url": "https://wavect.io/team/christof-jori/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".cmp-hero__headline",
          ".cmp-hero__lead"
        ]
      },
      "url": "https://wavect.io/zh/software-development-guide/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/",
          "name": "首页",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/software-development-guide/",
          "name": "软件开发指南",
          "position": 2
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "给正在决定要不要做、做出来要花多少钱、又该由谁来做的创始人和经营者。它默认你想要的是直话直说，而不是销售话术。如果你已经有一支成熟的工程团队和清晰的计划，那你大概用不上它。"
      },
      "name": "这份软件构建指南是给谁看的？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "我们是一家软件开发公司，所以确实，这些活儿我们也做。但这些指南是为了帮你做出好决定而写的，哪怕那个决定是不雇我们。每一篇都会诚实说明在什么情况下 Wavect 并不合适。"
      },
      "name": "这份指南是在向我推销什么吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "每篇指南都经过审阅并标注日期，事实都来自我们自 2018 年起在奥地利蒂罗尔真正交付过的产品。凡是我们没把握的数字，我们宁愿略去，也不会编造。"
      },
      "name": "这些内容有多新、多可信？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "如果你还不清楚范围，先看探索阶段那篇。如果你知道想要什么、但不知道怎么做，从构建方式和成本那两篇开始。一次短期的探索冲刺（EUR 3,500 起）通常能很快把大部分问题理清。"
      },
      "name": "我该从哪里看起？"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
