SWDev Story

SWDev Story Prologue

starting, story content, references

0.0 Prologue

Software Development is the discipline of taking an idea and turning it into working, maintainable software. It spans concept to deployment and involves design decisions, implementation choices, tooling, and process - all working together to produce a reliable product.
Why study Software Development?
  1. Good design decisions made early prevent expensive rework later. A clear architecture is easier to implement, test, and extend than one that grew without intent.
  2. Development processes - waterfall, iterative, agile - give teams a shared language and rhythm for coordinating work across people and time.
  3. Tools like git, Docker, and CI/CD pipelines reduce manual effort, catch errors earlier, and make it possible to deploy with confidence.
  4. Understanding structural patterns (basic, data flow, factored, type erasure, plugin) gives you a vocabulary for describing and evaluating design tradeoffs before committing code.
  5. Comparing implementations of the same design across Rust, C++, C#, and Python builds intuition about how language features shape the code you write.
This story is intended to help you understand the key activities of professional software development, from initial concept through design, implementation, and deployment. It uses a concrete example project - TextFinder - throughout to keep discussion grounded and practical.

0.1 Getting Started

To follow along with this story you need a few tools:
  1. A text editor or IDE:
    VS Code works well for all the languages discussed in this track. Install extensions for your language (rust-analyzer for Rust, C/C++ or clangd for C++, C# Dev Kit for C#, Pylance for Python).
  2. Git:
    Install git and create a GitHub account. Every project in this track lives in a git repository.
  3. A language runtime or toolchain:
    Install at least one of: Rust, a C++ compiler (MSVC, GCC, or Clang), .NET SDK for C#, or Python 3. TextFinder is implemented in all four, so you can pick the one you know best.

0.2 Story Content

This story orders the concepts of software development into a sequence of chapters. Each chapter is a single web page accessible from the Pages list at the lower right. Chapters progress from design concepts through structural patterns to deployment tools and practices. Chapters:
  1. Prologue

    Motivation, getting started, and layout of the SWDev story.
  2. Software Design

    Concept development, architecture, specification, and design documentation.
  3. Design Structure

    Packages, components, dependencies, coupling, and interface design.
  4. Structural Patterns

    Monolithic, data flow, and factored structural design patterns.
  5. Advanced Patterns

    Type erasure and plugin structural patterns.
  6. Development Process

    Waterfall, iterative, agile, and scrum development process models.
  7. Configuration Management

    Git commits, branches, merges, pull requests, and GitHub workflows.
  8. Automation and Scripting

    Bash and PowerShell for build automation and process management.
  9. Deployment

    Containers, CI/CD pipelines, and deployment to local and cloud platforms.

0.3 References

Reference Description
Refactoring Guru - Design Patterns Clearly illustrated catalog of creational, structural, and behavioral design patterns.
Pro Git (free online) Complete reference for git from first commits through advanced branching and collaboration.
Agile Manifesto The original four values and twelve principles of agile software development.
Docker Get Started Docker's official tutorial - images, containers, Dockerfiles, and Compose.
SWDev Track References Curated external links organized by topic within this track.