# Rapid Application Development (RAD)

Rapid Application Development (RAD) is an agile project management strategy that prioritizes rapid prototyping and quick feedback over long, drawn-out planning and testing cycles.

## 1. The Core Concept

Unlike the Waterfall model, which requires strict planning before any coding begins, RAD developers build prototypes early and often. The goal is to reduce the planning phase and focus on iterative design and construction.

*   **Focus:** Speed, user feedback, and adaptability.
*   **Motto:** "Build it, show it, refine it."

## 2. The Four Phases

### 1. Requirements Planning
Instead of a massive requirements document, developers and users agree on a rough scope and constraints. The focus is on the business problem, not specific technical details.

### 2. User Design (Prototyping)
This is the heart of RAD. Developers build prototypes (mockups, wireframes, or working beta versions) and show them to the user.
*   **Feedback Loop:** Users review the prototype -> Developers fix it -> Users review again.
*   This cycle repeats until the user is satisfied.

### 3. Construction
Since much of the code was already written during the prototyping phase, this phase focuses on converting the prototype into a production-ready system.
*   Tasks: Connecting to real databases, optimizing performance, writing documentation.

### 4. Cutover
The final deployment. It includes data conversion, testing, and switching over to the new system. Because users were involved throughout the design, training time is often reduced.

## 3. Pros and Cons

| Pros | Cons |
| :--- | :--- |
| **Speed:** Drastically reduces development time. | **Scalability:** Can be difficult to scale for large, complex systems. |
| **User Satisfaction:** Constant user involvement ensures the final product meets their needs. | **Commitment:** Requires heavy user involvement throughout the process. |
| **Reduced Risk:** Early feedback catches misunderstandings before they become expensive bugs. | **Spaghetti Code:** The focus on speed can sometimes lead to messy, unoptimized code (Technical Debt). |

## 4. When to use RAD?

*   **Time is critical:** You need to ship something fast (2-3 months).
*   **Budget is flexible:** RAD can be expensive due to the cost of skilled developers and modeling tools.
*   **Requirements are unclear:** If the user doesn't know exactly what they want, prototyping helps them figure it out.

[[programming/software-development-life-cycle]]
[[programming/agile-methodology]]
[[programming/technical-debt]]