All articles

Guides

What is software development? A practical guide for 2026

How software gets built in 2026, stage by stage, with the methods, roles, tools and costs, and what AI agents and new security laws changed.

By Madhumita S31 min read

Software development is the work of turning a need into software that people can rely on. It covers deciding what to build, designing it, writing and testing the code, releasing it, and then running and changing it for as long as anyone uses it. Writing code is the visible part, but most of the effort and most of the money go into everything around it, especially the years after the first release.

We build software for clients, and this is the overview we'd give a new client or a new member of the team. It goes through each stage of the work, the methods teams use to organize it, who does what, and the tools. It also covers what changed in 2025 and 2026: AI coding agents became normal, OWASP published a new Top 10, and the EU's Cyber Resilience Act started to apply to software makers. Every figure links to its source. We last checked them on October 22, 2026.

On this page:

Programming is only one part of software development

The three terms overlap, and job ads use them loosely, but they mean different things.

Programming, or coding, is writing the instructions a computer runs, in a language such as Python, JavaScript or Java. Software development is the whole job of producing working software: programming, plus requirements, design, testing, release and maintenance. Software engineering is the discipline of doing that job systematically, with the measurement, standards and trade-offs you'd expect in any other branch of engineering.

The term "software engineering" took hold after a NATO conference in Garmisch, Germany, in October 1968. Large projects were running late, over budget and full of defects, and attendees debated what some of them called the "software crisis". The organizers chose the phrase, in the report's words, "as being provocative": software should be built on the foundations and disciplines "that are traditional in the established branches of engineering". Today the field's reference is the IEEE Computer Society's SWEBOK Guide (Software Engineering Body of Knowledge). Version 4, from 2024, has 18 knowledge areas. Software architecture, operations and security are the three new ones.

In job titles the difference mostly disappears. The US Bureau of Labor Statistics counts developers and testers as one occupation, and many companies use "developer" and "engineer" for the same job. If you're hiring or job-hunting, the job description tells you more than the title does.

The main kinds of software

Textbooks split software by what it does:

  • System software runs the machine: operating systems, device drivers, firmware.
  • Application software does a job for a person or a business: web applications, mobile apps, desktop programs, games.
  • Embedded software runs inside devices such as cars, medical equipment, routers and washing machines, often with tight limits on memory, power and timing.
  • Development tools are the software used to build software: compilers, editors, test runners, build systems.

If you're commissioning software, a more useful split is by who owns the code. Off-the-shelf products and SaaS (software as a service, such as an accounting package or a CRM) are built once and rented to many customers. Low-code and configurable platforms let you assemble an application from building blocks inside someone else's product. Custom software is written for one organization, which owns it and pays for every change.

Buy software if you can, build it when you must

Whether to build at all is the first decision, and it often gets skipped because the person asking for software is already picturing a custom app.

Buy when the process is standard. Payroll, accounting, email marketing and helpdesk ticketing work much the same everywhere, and a mature product has already met the edge cases you haven't thought of yet. A subscription is almost always cheaper than building and maintaining your own version. If a product already does what you need, you don't need a development company, us included.

Use a low-code platform for internal tools made of forms, tables and approval steps, with a modest number of users. The catch is lock-in: your application lives inside the vendor's platform, under its pricing and its limits.

Build when the software is what sets you apart from competitors, or when nothing on the market fits your process without painful workarounds. Building also makes sense when per-seat subscription fees at your scale cost more than owning the code would. In exchange you own the roadmap. You also own the bugs, the hosting, the security patches and the bill for every change, for years.

Most real systems end up mixed: a custom application at the core, connected to bought services for payments, email, sign-in and analytics.

The software development life cycle, stage by stage

The software development life cycle (SDLC) is the name for the stages software goes through. Sources list anywhere from five to seven, depending on whether they split planning from analysis or count documentation separately. The work underneath is the same:

StageThe questionWhat it produces
RequirementsWhat problem, for whom?User journeys, acceptance criteria, constraints
DesignHow will it work?Prototypes, architecture, data model
BuildingIs each change safe to merge?Reviewed code in version control
TestingDoes it work? Did we break anything?Automated tests, fixed bugs
ReleaseHow does it reach users safely?A deployed version, a way to roll back
MaintenanceHow does it stay useful?Fixes, updates, new features

In a waterfall project these stages run once, in order. In most teams today they repeat in small loops: a feature goes from requirement to release in days or weeks, and the next one starts behind it. The stages haven't gone away. They overlap. Even the international standard for software life cycle processes, ISO/IEC/IEEE 12207, whose 2026 edition replaced the 2017 one in April, now describes itself as applicable to agile methods, "which are most widely used for software development".

Requirements: agree on the problem first

Requirements say what the software must do and for whom. A useful set describes the users, the jobs they need to get done, and how you'll know each job works (the acceptance criteria). It also lists the non-functional requirements, which apply to the whole system: how fast it must be, how many users it must handle, which laws and security rules apply, which devices it supports, and how accessible it must be.

ISO/IEC 25010, the standard for software product quality, makes a good checklist for those. Its 2023 edition names nine quality characteristics: functional suitability, performance efficiency, compatibility, interaction capability, reliability, security, maintainability, flexibility and safety. Safety is new, and interaction capability and flexibility replace the older usability and portability.

The most common mistake at this stage is writing down the solution someone asked for instead of the problem they have. "We need a dashboard" is a solution. "The operations manager can't tell which orders are late until a customer complains" is a problem, and it might be solved by a daily email.

Our projects start with a short discovery phase that aims for agreement on two things: the critical user journey and the biggest technical risk. Both are written down in plain language and agreed before any production code is written. The rest of our process is in From initial brief to production release.

Design: the shape of the system before the details

Design has two halves that depend on each other. User experience (UX) design decides what people see and do: the screens, the flow between them, the wording. Technical design decides how it works underneath: the architecture, the data model, the interfaces (APIs) between parts, and where it will run.

Prototype the risky parts. A clickable prototype of the main workflow surfaces misunderstandings faster than any amount of document review, and changing a prototype costs almost nothing. We prototype the single workflow that matters most before committing to the rest.

On architecture we're conservative. Start with one well-structured application, sometimes called a modular monolith, unless you have a specific reason not to. Microservices, where the system is split into many small services that deploy independently, solve the problems of large organizations with many teams. For a team of five, they mostly add network calls, deployment pipelines and new ways to fail.

Write down the big decisions and why you made them. A one-page architecture decision record ("we chose PostgreSQL because…") stops the next developer from reopening a settled question, or from quietly undoing it without knowing why it was made.

Building: small changes, reviewed, in version control

This is the stage people picture when they hear "software development", and a few habits separate professional teams from hobby projects.

All code lives in version control, almost always Git, hosted on a service such as GitHub, GitLab or Bitbucket. Every change is recorded and can be undone.

Changes are small and reviewed. A developer works on a branch, opens a pull request, and at least one other person reads the change before it's merged. Review catches bugs, but its bigger job is spreading knowledge, so that no part of the system is understood by only one person.

Every change is built and tested automatically. This is continuous integration (CI): when a change breaks the build or a test, the team finds out within minutes, while the change is still fresh in its author's head.

And most of the code isn't yours. A modern application pulls in hundreds or thousands of open-source packages. Black Duck's 2026 audit of 947 commercial codebases found open source in 98% of them, with a mean of 1,180 open-source components per application. That's an enormous saving. It's also a large share of your security exposure, which we come back to below.

Testing: automate the checks, keep people looking

Testing checks that the software does what the requirements say, and that a new change hasn't broken something that used to work (a regression). Teams test at several levels:

  • Unit tests check one function or component in isolation. They're fast, so there are many of them.
  • Integration tests check that parts work together, such as the code and its database.
  • End-to-end tests drive the real application the way a user would, in a browser or on a phone. They catch the most realistic problems, but they're slow and brittle, so there are fewer of them.
  • Non-functional tests cover performance under load, security and accessibility.

Automated tests run on every change. Manual testing still matters for what scripts are bad at judging: whether a flow is confusing, or whether a screen looks wrong on a real phone.

An example from the site you're reading. Its test suite must cover 100% of the code's lines and branches, or the run fails. A second script loads every page in the sitemap at desktop and phone widths, in light and dark mode. It fails if any page returns an error, logs a console error, or comes out wider than the screen. That catches things like a table that overflows on a small phone before a visitor sees it. Full coverage doesn't mean bug-free, though. It means every line ran during some test, which says nothing about whether the tests asked the right questions.

Release: ship small and keep a way back

Release is everything between "the code is merged" and "users have it". Most teams use three environments. Development is each developer's own machine. Staging is a copy of production where the team and the client try the new version. Production is the live system that real users depend on.

With continuous delivery, every merged change is built and tested automatically, ready to deploy. Continuous deployment goes one step further and releases it to production without a manual step. Either way, releases become small and routine.

The practices that make releases safe are unglamorous. Release to a small share of users first (a staged or canary rollout). Hide unfinished features behind feature flags. Keep a tested way to roll back.

July 2024 showed what one release can do at full scale. A faulty configuration update for CrowdStrike's Falcon security sensor was live for 78 minutes, and in that time it crashed an estimated 8.5 million Windows devices, by Microsoft's count. CrowdStrike's root-cause analysis traced it to an update that supplied 21 input fields to code expecting 20. That's a small bug, and staged rollouts exist so that small bugs reach a small number of machines.

Our projects deploy every week to a staging environment the client can use directly, so the people paying for the software are looking at it long before launch day.

Maintenance: the longest and most expensive stage

Software is never finished while people use it. After launch the work shifts to:

  • fixing the bugs users find;
  • patching security vulnerabilities, in your own code and in its dependencies;
  • keeping up with the platforms: new operating system and browser versions, app store rules, APIs your software depends on being retired;
  • monitoring uptime, errors and performance, and responding to incidents;
  • adding the features users ask for once they actually use the product.

How much of the total cost goes to maintenance is a famously shaky number. Articles quote 60%, 80% or 90%, usually without a source. The original research is thin. A 1978 survey by Lientz, Swanson and Tompkins got answers from 69 organizations and reported "rough estimates" of maintenance and enhancement "as high as 75-80 percent". A harder recent figure comes from the US Government Accountability Office: federal agencies report spending about 80% of more than $100 billion a year on operating and maintaining existing IT. That covers all IT, not only software, but it points the same way. Plan for maintenance in the first budget conversation, not after launch.

Technical debt is the name for shortcuts that make today's work faster and tomorrow's slower: duplicated code, missing tests, an outdated framework. Ward Cunningham coined the metaphor in a 1992 conference report: "Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite." Some debt is a sensible trade. Unpaid debt is why a change that should take a day ends up taking two weeks. The Consortium for Information & Software Quality put the accumulated technical debt in US software at about $1.52 trillion in 2022, its latest estimate.

Documentation runs through every stage

The documents worth keeping current are the ones someone will need under pressure:

  • a README that gets a new developer from an empty laptop to a running app;
  • architecture decision records, so the reasons survive staff changes;
  • API references, ideally generated from the code so they can't drift;
  • runbooks: how to deploy, roll back, restore a backup, rotate a password or key;
  • help pages, for products with non-technical users.

Long specifications that nobody updates after sign-off do more harm than good, because they mislead the first person who trusts them. This website keeps its build rules and known pitfalls in a single file at the root of its code repository, and it's updated whenever the code it describes changes.

Development methodologies: waterfall, agile and the rest

A methodology, or process model, decides how the stages are arranged in time: once in sequence, or over and over in small loops.

Waterfall runs each stage once, in order, with a sign-off before the next one starts. It's usually traced to Winston Royce's 1970 paper, which is ironic. The word "waterfall" isn't in the paper, and Royce drew the sequential diagram in order to criticize it. "I believe in this concept," he wrote, "but the implementation described above is risky and invites failure." His fixes included feedback between stages and building a pilot version first ("do it twice").

The V-model pairs each design stage with a test stage: requirements are checked by acceptance tests, architecture by integration tests, and so on. You'll find it where every requirement has to be traceable to a test, such as automotive and medical software.

Iterative and incremental development builds the system in usable slices and revises it as the team learns. Most modern methods are varieties of it.

The spiral model, from Barry Boehm (1986, expanded in 1988), repeats cycles of planning, risk analysis, building and evaluation. Boehm called it "a risk-driven approach": effort goes wherever the risk is highest. It suits large projects with big unknowns.

Agile is a set of values. The Agile Manifesto, written by 17 people at Snowbird, Utah, in February 2001, says:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Scrum, Kanban and Extreme Programming are the common ways of putting those values into practice.

Scrum organizes work into sprints of one month or less, with a product owner who orders the work, developers who do it, and a scrum master who helps the team improve. Every sprint ends with a usable increment, a review and a retrospective. The official Scrum Guide is still the November 2020 edition. The "Expansion Pack" published in 2025 is an adaptation by Jeff Sutherland and two co-authors, not a new edition of the guide.

Kanban has no sprints. Work items move across a board (to do, in progress, done), and the team limits how many can be in progress at once, which exposes bottlenecks quickly. It fits support and maintenance work, where requests arrive continuously.

Extreme Programming (XP) is about engineering practice: tests written first, pair programming, continuous integration, small releases. Many of its practices are now standard in teams that never use the name.

Lean software development borrows from Toyota's production system. It treats half-finished features, waiting and handoffs as waste, and aims to deliver quickly so the team learns quickly.

DevOps is closer to an operating model than a methodology. The people who build the software share responsibility with the people who run it, and they automate the path between the two: CI/CD, infrastructure defined in code, monitoring. Platform engineering is its current form in larger companies. An internal team builds a self-service platform, so product teams can deploy and monitor without every developer becoming an infrastructure expert. Google's 2025 DORA report found that 90% of organizations have adopted it.

Two more show up in textbooks: rapid application development (RAD), whose prototype-first ideas live on inside agile, and "big bang" development, which skips planning and is only sensible for throwaway experiments.

How to choose a methodology

MethodFits whenWatch for
WaterfallRequirements are fixed and change is costlyFinding out at the end that you built the wrong thing
V-modelEach requirement must trace to a testPaperwork that slows small changes
ScrumA product evolves with regular feedbackCeremonies with no real feedback in them
KanbanWork arrives continuouslyNo natural point to step back
SpiralA large project has big technical unknownsToo heavy for a small team
DevOpsYou run what you build and release oftenTools bought without shared ownership

Two questions decide most of it: how stable the requirements are, and how expensive a change is after release. Firmware in 100,000 shipped devices, or a system a regulator audits, calls for more design up front. A web app you can redeploy in minutes calls for short loops and early users.

In practice most client projects are hybrids, and that's fine. A client needs a budget and a rough date, which sounds like waterfall. Inside that frame the team still works in one- or two-week increments, and everyone adjusts what fits in the budget as they learn. What matters is how soon the people paying see working software and can say "no, not like that".

Who does the work

On a small project one person may cover several of these roles. On a large one, each can be a whole team.

  • Product manager or product owner: decides what gets built and in what order, and speaks for users and the business.
  • UX/UI designer: researches users and designs the screens and flows.
  • Developers or engineers: front-end (what runs in the browser or app), back-end (servers, databases, APIs and business rules), full-stack (both), mobile, embedded, and data or machine learning engineers.
  • QA or test engineer: plans testing, writes automated tests, and looks for the failures developers didn't imagine.
  • DevOps, platform or site reliability engineer (SRE): builds the deployment pipeline and infrastructure, and keeps production running.
  • Security engineer: threat modeling, security reviews and testing, incident response.
  • Tech lead or engineering manager: technical direction, hiring, coordination.

Someone also has to keep the client and the engineers talking to each other. In our team that's my job: I coordinate each project between the two.

The job market in numbers

The Bureau of Labor Statistics counted 1,905,400 US jobs for software developers, QA analysts and testers in 2025, with a median pay of $134,040. Software developers alone had a median of $135,980 in May 2025. BLS projects the occupation to grow 10% from 2025 to 2035, "much faster than the average for all occupations", with about 106,100 openings a year. Many pages still quote the older 2024–2034 projections, which were higher.

Worldwide, GitHub's Octoverse 2025 report counted more than 180 million developers on the platform. India had 21.9 million of them, the second-largest community, and added more than 5.2 million in 2025 alone.

Tools and languages in 2026

The core toolkit has been stable for a decade. What's new is the AI layer on top of it.

JobCommon tools
Write codeVS Code, JetBrains IDEs, Visual Studio, Xcode, Cursor
Version controlGit, on GitHub, GitLab or Bitbucket
Track workJira, Linear, GitHub Issues
Build, test, deployGitHub Actions, GitLab CI, Jenkins
Host and runAWS, Azure, Google Cloud, Cloudflare; Docker, Kubernetes
MonitorSentry, Grafana, Datadog, OpenTelemetry

In the 2026 Stack Overflow Developer Survey (30,903 valid responses from 169 countries), the most used languages were JavaScript (62.0%), SQL (58.4%), HTML/CSS (58.2%), Python (58.0%), Bash/Shell (51.3%) and TypeScript (43.8%). GitHub measures something different, active contributors to repositories, and by that count TypeScript overtook both Python and JavaScript in August 2025, which Octoverse called "the most significant language shift in more than a decade". The most used web technologies in the survey were Node.js (46.4%), React (41.5%) and Next.js (20.6%).

For web products our default is Nuxt, built on Vue, with TypeScript. We pick Next.js when a client's team already works in React, and Astro for sites that are almost entirely content. The reasons are in why Nuxt is our default. The general rule we'd give anyone choosing a stack: pick widely used, well-documented tools that you (and whoever comes after you) can hire for. Whether someone can still maintain the code in five years matters far more than a framework's benchmark results.

How AI is changing software development

Until 2024, AI in software development mostly meant autocomplete and chat: a tool suggested the next few lines as you typed, or answered questions in a side panel. During 2025 the major tools added agents. You give an agent a task in plain language, such as "add CSV export to the reports page". It reads the codebase, edits files, runs the tests, and returns a set of changes or a pull request for a person to review. GitHub's Copilot coding agent, which takes an assigned issue and opens a pull request, became generally available in September 2025. Other widely used agents include Anthropic's Claude Code, OpenAI's Codex, Cursor, and Google's Jules and Antigravity.

Use is now the norm. In the 2026 Stack Overflow survey, 65.9% of respondents used AI coding assistants or agents at work, and only 17.2% used no AI tools at work at all. Of those using coding assistants or agents, 73% used them daily. The most used coding agents and assistants over the past year were Claude Code (65.5%), GitHub Copilot (58.7%), OpenAI Codex (29.5%) and Cursor (25.5%). Google's DORA 2025 report, from a survey of nearly 5,000 technology professionals, found that 90% use AI as part of their work.

Trust lags behind use. In DORA's survey, 30% reported little or no trust in the code AI generates. Stack Overflow's respondents trust it conditionally: 48% trust AI when they can easily check its answers.

Does AI make developers faster?

The honest answer is that the evidence is mixed, and it's changing quickly.

  • In a 2025 randomized trial by METR, 16 experienced open-source developers took 19% longer on tasks when they were allowed AI tools. Afterwards they still believed AI had sped them up by 20%.
  • METR's 2026 follow-up, with 57 developers and more than 800 tasks, estimated speedups of 18% and 4% for two groups. Both confidence intervals include zero, and METR calls the data "only very weak evidence" for the size of the gain. One reason is that developers who didn't want to work without AI declined to take part.
  • DORA found that AI adoption now improves delivery throughput, but "it still increases delivery instability". Its summary: "AI's primary role in software development is that of an amplifier. It magnifies the strengths of high-performing organizations and the dysfunctions of struggling ones."

Our reading of the evidence is that AI makes producing code cheaper. It does little for deciding what to build, and it makes review more important, because someone still has to read and take responsibility for every line an agent writes. Teams with good tests, small changes and clear requirements gain the most, because they can check an agent's work quickly. Teams without them now produce code they don't understand, faster.

Security is part of the job, and in the EU it is the law

Security used to be a test near the end. It's now expected at every stage, an approach usually called secure by design or DevSecOps: threat modeling during design, secure coding and automated scanning while building, dependency checks on every change, and a plan for handling vulnerability reports after release.

The main reference points:

  • The OWASP Top 10:2025, published at the end of 2025, is the most widely used list of web application risks. Broken access control is still first. Software supply chain failures (A03) and mishandling of exceptional conditions (A10) are the new categories.
  • NIST's Secure Software Development Framework (SP 800-218) groups practices into four areas: prepare the organization, protect the software, produce well-secured software, and respond to vulnerabilities. A revised version was published as a draft in December 2025.
  • CISA and the NSA's June 2025 guidance calls adopting memory-safe languages "the most comprehensive mitigation" against memory-related vulnerabilities. In practice that means Rust, Go, Java, C# or another modern language for new code, rather than C or C++.

The supply chain is where the risk has grown fastest. Black Duck's 2026 audit found at least one known vulnerability in 87% of the codebases it examined, with a mean of 581 per codebase, more than double the year before.

The xz Utils backdoor (CVE-2024-3094, scored 10.0 out of 10) showed how deep the problem goes. In March 2024 a developer noticed that the release files of a small compression library used by Linux systems contained a hidden backdoor. The files had been created and signed by one of the project's own contributors, under the name Jia Tan. The basic defense is knowing what you ship. A software bill of materials (SBOM) is a machine-readable list of every component in a product, usually in the SPDX or CycloneDX format. CISA published its 2026 minimum elements for SBOMs in July.

Then there's the law. The EU's Cyber Resilience Act (Regulation (EU) 2024/2847) covers software and hardware products sold in the EU, together with their remote data processing. Its timeline:

  • 10 December 2024: the regulation entered into force.
  • 11 September 2026: manufacturers must report actively exploited vulnerabilities and severe incidents: an early warning within 24 hours, a full notification within 72 hours. This already applies to products on the market today.
  • 11 December 2027: everything else applies. Products must meet the essential security requirements, and get security updates through a support period that's normally at least five years. Manufacturers must keep an SBOM covering at least the top-level dependencies, and products need a CE mark. Fines go up to €15 million or 2.5% of worldwide annual turnover.

Two other EU laws matter to software teams. The European Accessibility Act has applied since 28 June 2025 and covers e-commerce sites and apps, among other consumer products and services. The AI Act adds duties for AI features. Its rules for high-risk systems were postponed in July 2026, to December 2027 and August 2028. This is a summary, not legal advice. Whether your product falls under each law, especially a purely online service, is a question for a lawyer.

How to tell whether a team is working well

Counting lines of code or hours logged tells you how busy a team is, which isn't the same as how well it works. The most widely used research-based measures come from Google's DORA program, which now uses five delivery metrics in two groups:

  • Throughput: change lead time (from commit to production), deployment frequency, and failed deployment recovery time.
  • Instability: change fail rate (the share of deployments that cause a failure in production), and deployment rework rate (the share of deployments that are unplanned work to fix bugs), added in 2024.

DORA's research has repeatedly found that "speed and stability are not tradeoffs". Teams that ship small changes often also tend to break less and recover faster. The 2025 report describes seven team profiles in place of the old elite, high, medium and low tiers.

A client doesn't need a dashboard to apply this. Ask three questions. How often do I see working software? When something breaks in production, how long until it's fixed? How often does a release cause a new problem?

What drives the time and cost of software

Nobody can give an honest price for "an app" without knowing what it has to do. The generic price ranges online are mostly agency marketing, and ours would be too. These are the factors that actually move the number:

  • Scope: the number of user roles, workflows and screens. This is the biggest driver by far.
  • Platforms: a web app, an iOS app and an Android app are three front ends, though a cross-platform framework such as React Native shares most of the code between the two phone apps.
  • Integrations: every payment provider, ERP or legacy system adds work and risk, especially old systems with poor documentation.
  • Data migration from an old system, which is routinely underestimated.
  • Compliance: GDPR, HIPAA, PCI DSS, accessibility, audit trails, and the CRA from 2027.
  • The quality bar: test coverage, performance targets, uptime commitments.
  • The team: rates differ several times over between countries and seniority levels.
  • What happens after launch: hosting, monitoring, support and maintenance.

An honest estimate is a range, and it narrows as the work is understood. Before requirements and design, a wide range is the truth. A precise number at that point is a guess dressed up as a fact.

Time follows scope just as directly. A large system that replaces an old one, with migrations and integrations, takes months or years, and it's usually safer to replace the old system piece by piece than all at once. A focused first version can be in production within weeks, which is what we aim for.

That's also the cheapest way to cut both time and cost: make the first version smaller. Build the one workflow that matters, put it in front of real users, and let what they do decide the next version.

Why software projects fail

The most quoted failure statistics come from the Standish Group's CHAOS reports. Treat them with care. The reports are sold rather than published openly, and researchers have criticized their definitions of success and failure as misleading. We'd rather not repeat a percentage we can't check.

The causes themselves are well known, and anyone who has worked on a struggling project will recognize them:

  • The goal was never agreed, so different stakeholders expected different products.
  • Scope grew without the budget or the date changing.
  • Users saw the software for the first time at launch.
  • Integrations and data migration were treated as details.
  • There were no automated tests, so every change got slower and riskier.
  • Releases were large and rare, so each one carried months of risk.
  • Nobody budgeted for maintenance, so the software decayed after launch.
  • One person understood the system, and then they left.

Almost every practice in this guide exists to prevent one of them. Getting quality wrong is expensive at any scale: CISQ estimated the cost of poor software quality in the US at $2.41 trillion in 2022.

Frequently asked questions

Is software development the same as coding?

No. Coding is one activity within software development. The rest is working out what to build, designing it, testing it, releasing it and maintaining it, and on most projects those take more time than writing the code.

What is the difference between a software developer and a software engineer?

In theory, an engineer applies a systematic, measured discipline to the whole system, while a developer may focus on building particular features or products. In practice, companies use the titles interchangeably, and the US Bureau of Labor Statistics counts them in one occupation.

What are the stages of software development?

Requirements, design, building, testing, release and maintenance. Some sources split planning from requirements analysis, or count documentation as its own stage, which gives seven. In agile teams the stages repeat for every feature rather than running once.

What are development, staging and production environments?

Development is where developers write and run code, usually on their own machines. Staging is a copy of the live system used to test a new version before release. Production is the live system that real users depend on.

How long does it take to develop software?

It depends almost entirely on scope. A focused first version of a web or mobile app can be in production within weeks. A large system with many integrations takes months or years. The fastest route is to make the first release smaller.

How much does software development cost?

There's no meaningful average. The cost depends on scope, platforms, integrations, compliance needs, the quality bar and the team's rates. Then there's ongoing maintenance, which over a system's life usually costs more than building it did. Ask for a range based on your actual workflows, and expect it to narrow after discovery.

Will AI replace software developers?

Not on the current evidence. AI agents now handle a growing share of routine coding, but someone still has to decide what to build, review what the agent produced, and answer for it in production. BLS still projects the occupation to grow 10% from 2025 to 2035. The job is shifting toward specification, review and testing.

Do you need a degree to become a software developer?

The BLS lists a bachelor's degree in computer and information technology or a related field as the typical entry-level education, and some employers prefer a master's. Plenty of working developers are self-taught, but a degree still helps with large employers, and many work visas require one.

Which programming language should you learn first?

Python or JavaScript. Python reads clearly and is used everywhere from scripting to data science and AI. JavaScript, ideally followed by TypeScript, is the language of the web. Both were among the four most used languages in the 2026 Stack Overflow survey. The language matters less than building something real with it.

If you're planning a project, start with one paragraph: who the users are, the one workflow they need most, and how you'll know it works. That paragraph is also where our web application development work begins.