Skip to main content
Back to Tags

Software Process

104 items tagged with "software-process"

Filter by type:

Best Practices13

Best Practice

IBM Garage Methodology

End-to-end practices merging agile, DevOps, and design thinking for cloud transformation.

Best Practice

Continuous Modernization Playbook

Iterative roadmap for refactoring, re-platforming, and replacing legacy systems using automation and AI.

Best Practice

Microsoft Security Development Lifecycle (SDL)

A set of security practices integrated across every phase of software development, from training and design through implementation, verification, and response.

Best Practice

Release Train Model

A delivery cadence where releases ship on a fixed schedule and any change not ready in time simply catches the next train, decoupling release timing from feature completion.

Best Practice

Behavior-Driven Development (BDD)

A collaborative practice that expresses requirements as concrete, executable examples in plain language shared by business, development, and testing.

Best Practice

Code Review Best Practices

Guidance for effective, fast, and respectful code review, drawn from Google's engineering practices, to improve code health over time.

Best Practice

Definition of Done

A shared, explicit checklist of conditions a work item must meet to be considered complete, ensuring consistent quality across a team.

Best Practice

Scrum Framework

Scrum is a lightweight agile framework for delivering products in short, fixed-length iterations called sprints, using empirical inspection and adaptation to manage complex work.

Best Practice

Kanban Method

The Kanban Method is an evolutionary approach to managing knowledge work that visualizes flow, limits work in progress, and improves delivery continuously without prescribing fixed iterations.

Best Practice

Lean Software Development

Lean Software Development applies Lean manufacturing principles to software, emphasizing eliminating waste, amplifying learning, deferring decisions, and delivering fast to maximize customer value.

Best Practice

Team Topologies

Team Topologies is a model for organizing business and technology teams using four team types and three interaction modes to optimize fast flow and reduce cognitive load.

Best Practice

Platform Engineering

Platform engineering builds and runs internal self-service platforms and paved roads that let product teams ship software faster with lower cognitive load and consistent guardrails.

Best Practice

Internal Developer Platform

An Internal Developer Platform (IDP) is the self-service product built by platform teams that gives developers golden paths to provision, build, deploy, and operate software with built-in guardrails.

Anti-Patterns26

Anti-Pattern

Premature Optimization

Optimizing code or architecture before understanding actual performance requirements

Anti-Pattern

Not Invented Here (NIH)

Rejecting perfectly good external solutions in favor of building custom ones

Anti-Pattern

Cargo Cult Programming

Using patterns or practices without understanding why they work

Anti-Pattern

Big Ball of Mud

A system with no discernible architecture, where code is haphazardly structured, tangled, and duct-taped together, making every change risky and slow.

Anti-Pattern

Accidental Complexity

Complexity introduced by the solution rather than the problem — overbuilt tooling, layers, and abstractions that obscure logic that is actually simple.

Anti-Pattern

Inner-Platform Effect

Building a configurable system so general it becomes a poor reimplementation of the platform it runs on, reinventing a language, database, or framework badly.

Anti-Pattern

Reinventing the Wheel

Building from scratch a solved, well-supported capability — like crypto, date handling, or an ORM — instead of using a proven, maintained library or standard.

Anti-Pattern

Boat Anchor

Keeping a piece of obsolete software, hardware, or a dependency that no longer serves a purpose but is retained and maintained out of inertia or sunk-cost thinking.

Anti-Pattern

Dependency Hell

A tangle of conflicting, version-pinned, or transitive dependencies that makes upgrading or even installing software fragile, slow, and unpredictable.

Anti-Pattern

Over-Engineering

Building more generality, flexibility, or sophistication than the problem requires, adding cost and complexity for capabilities that are never actually needed.

Anti-Pattern

Premature Abstraction

Extracting abstractions before enough concrete cases exist to know what they should be, locking in the wrong shape and adding indirection that obstructs change.

Anti-Pattern

Copy-Paste Programming

Duplicating blocks of code instead of factoring out shared logic, so every fix and change must be repeated across each copy, and some are missed.

Anti-Pattern

Hardcoding

Embedding values that should be configurable, such as URLs, paths, credentials, and limits, directly in source, forcing code changes to adapt.

Anti-Pattern

Analysis Paralysis

Overanalyzing a decision or design to the point that no decision is made and no progress occurs, trading action for endless deliberation.

Anti-Pattern

Bikeshedding (Law of Triviality)

Spending disproportionate time debating trivial, easy-to-understand details while important, complex decisions receive little scrutiny.

Anti-Pattern

Hero Culture

A team that depends on a few individuals heroically saving the day, rewarding firefighting over the boring, systemic work that prevents fires.

Anti-Pattern

Bus Factor of One

Critical knowledge or capability concentrated in a single person, so the project halts if that person becomes unavailable.

Anti-Pattern

Knowledge Silos

Information and expertise trapped within individuals or teams, blocking collaboration and forcing others to rediscover what is already known.

Anti-Pattern

Water-Scrum-Fall

A hybrid where agile ceremonies are bolted onto a waterfall lifecycle, with up-front planning and big-bang release bookending a thin layer of Scrum.

Anti-Pattern

Big Design Up Front (BDUF)

Specifying a complete, detailed design before any implementation begins, betting that requirements are fully known and will not change.

Anti-Pattern

Gold Plating

Adding features, polish, or sophistication beyond what was requested or needed, spending effort on value no stakeholder asked for.

Anti-Pattern

Technical Debt Denial

Refusing to acknowledge or pay down accumulated technical debt, treating short-term delivery speed as if it carried no compounding cost.

Anti-Pattern

Rubber-Stamp Code Reviews

Approving pull requests without meaningful inspection, performing the ceremony of code review while providing none of its protective value.

Anti-Pattern

Meeting Overload

Filling calendars with so many meetings that there is little uninterrupted time left for the focused work the meetings are meant to coordinate.

Anti-Pattern

Blame Culture

An environment that responds to failures by finding someone to punish rather than understanding causes, driving problems underground.

Anti-Pattern

Resume-Driven Development

Choosing technologies for their appeal on a resume or their hype rather than their fit for the problem, optimizing careers over systems.

Glossaries51

Glossary

Migration

The process of moving data, applications, or infrastructure from one environment to another

Glossary

Lift and Shift

Moving an application to a new environment with minimal or no changes to its architecture

Glossary

Replatforming

Making targeted modifications to an application to take advantage of cloud capabilities without changing core architecture

Glossary

Refactoring

Restructuring existing code without changing its external behavior to improve quality and maintainability

Glossary

Technical Debt

The implied cost of additional rework caused by choosing an easy solution now instead of a better approach

Glossary

Strangler Fig

A migration pattern where new functionality wraps and gradually replaces the legacy system

Glossary

Backward Compatibility

The ability of new versions to work with data or interfaces from older versions

Glossary

Modernization

The process of updating legacy systems, applications, or infrastructure to leverage current technologies and best practices

Glossary

Automation

The use of technology to perform tasks with minimal human intervention, often applied to testing, deployment, and infrastructure management

Glossary

Canary Deployment

A deployment strategy that rolls out changes to a small subset of users before deploying to the entire infrastructure

Glossary

Cloud Migration

The process of moving data, applications, and workloads from on-premises infrastructure to cloud-based services

Glossary

Code Cleanup

The process of improving code quality by removing dead code, fixing style issues, and improving readability without changing functionality

Glossary

Compatibility

The ability of systems, software, or data formats to work together without modification or special adaptation

Glossary

Dark Launching

A deployment technique where new features are released to production but hidden from users, allowing testing in real conditions

Glossary

Database Per Service

A microservices pattern where each service owns and manages its own database, ensuring loose coupling between services

Glossary

Domain-Driven Design

A software design approach that focuses on modeling software based on the business domain and its logic

Glossary

Deployment

The process of releasing and installing software applications to a target environment where they can be accessed by users

Glossary

Deprecation

The process of marking features, APIs, or components as outdated and planned for removal in future versions

Glossary

Digital Transformation

The integration of digital technology into all areas of a business, fundamentally changing how it operates and delivers value

Glossary

Facade Pattern

A structural design pattern that provides a simplified interface to a complex subsystem, hiding its complexity from clients

Glossary

Feature Toggle

A technique that allows teams to modify system behavior without changing code, enabling features to be turned on or off dynamically

Glossary

Go-Live

The moment when a system, application, or migration goes into production use, marking the transition from development to operational status

Glossary

Incremental Migration

A migration approach that moves systems or data in small, manageable pieces rather than all at once

Glossary

Legacy Modernization

The process of updating or replacing outdated legacy systems with modern technologies to improve performance and maintainability

Glossary

Lift, Tinker, and Shift

A migration approach that combines lift-and-shift with minor modifications to optimize applications for the target environment

Glossary

Optimization

The process of improving system performance, efficiency, or resource utilization through code changes, configuration, or architecture modifications

Glossary

Pipeline

An automated sequence of processes that move code from development through testing and into production deployment

Glossary

Rehosting

A migration strategy that moves applications to a new infrastructure with minimal or no changes, also known as lift-and-shift

Glossary

Sidecar Pattern

A design pattern where a helper container runs alongside the main application container to provide supporting features like logging or networking

Glossary

Switchover

The process of transferring operations from one system to another, typically during migration or disaster recovery scenarios

Glossary

Transition

The process of moving from one state, system, or approach to another, often describing the period during a migration

Glossary

Undo

The capability to reverse changes or operations, returning a system to a previous state

Glossary

Adapter Pattern

A structural design pattern that allows incompatible interfaces to work together by wrapping an object in an adapter

Glossary

Anti-Corruption Layer

A pattern that isolates a system from external systems by translating between their models, preventing corruption of internal domain models

Glossary

API

Application Programming Interface - a set of definitions and protocols that allows software components to communicate with each other

Glossary

Blue-Green Deployment

A release strategy that maintains two identical production environments, allowing instant switching between versions with zero downtime

Glossary

Breaking Change

A modification to software that causes existing functionality or integrations to stop working as expected

Glossary

DevOps

A set of practices combining software development and IT operations to shorten development cycles and deliver high-quality software continuously

Glossary

Interoperability

The ability of different systems, devices, or applications to connect and exchange information effectively

Glossary

Parallel Run

A migration strategy where old and new systems operate simultaneously to validate the new system before full cutover

Glossary

Phased Migration

A migration approach that divides the transition into distinct phases, each with specific goals and deliverables

Glossary

Version Control

A system for tracking and managing changes to files and code over time, enabling collaboration and history tracking

Glossary

Branching

Creating parallel lines of development in version control to work on features or fixes independently

Glossary

Documentation

Written materials that describe how software works, including guides, references, and specifications

Glossary

Integration

The process of combining different systems, components, or software applications to work together as a unified system

Glossary

Planning

The process of defining goals, strategies, and steps to achieve successful project outcomes

Glossary

Standards

Established norms, specifications, or requirements that ensure consistency and interoperability

Glossary

Domain-Driven Design

Domain-driven design (DDD) is a software design approach that models software closely on the business domain, using a shared language between developers and domain experts and organizing the system around bounded contexts.

Glossary

Dependency Injection

Dependency injection is a design technique in which an object receives the other objects it depends on from an external source rather than creating them itself, improving testability and decoupling.

Glossary

Test-Driven Development

Test-driven development (TDD) is a software practice in which developers write a failing automated test before writing the code to make it pass, then refactor, repeating in short cycles.

Glossary

Mocking

Mocking is a testing technique that replaces a real dependency with a controllable stand-in object, letting a test isolate the code under test and verify how it interacts with that dependency.