Skip to content
Getting Digital

Programming and Software Development

Software engineering practice

Engineering practice is what separates a program that works today from a codebase a team can still change in three years. It covers the habits around the code rather than the code itself: version control, review, tests, the shape of modules and the decisions written down about them. No exam certifies it, and code review and the later interview rounds are mostly probing for it.

Why this topic exists: Version control, code review, testing habits, architecture, design patterns and clean code: the slow layer hiring quietly filters on (SFIA Systems and software lifecycle engineering; MDN version-control module).

SFIA separates writing software from the conditions it is written under. Programming is one skill. Lifecycle engineering, SFIA's term for setting up how a team develops, improves and safely operates what it builds, is another. Software design, shaping code to meet requirements within agreed standards, is a third. Engineering practice lives in the second and third. It is the set of agreements that let several people change the same code without tripping over each other, and it is learned mostly by working inside a team that already has good ones.

  • Version control as a record. Git commits that each do one thing and say why, branches that live for days rather than months, and a history someone can search when a bug surfaces. MDN places version control among its core modules alongside HTML and JavaScript, not as an optional extra.
  • Review as a conversation. A pull request small enough to read in one sitting, a description of what changed and how it was checked, and reviewers who ask about structure and risk instead of formatting a tool could fix.
  • Tests as a safety net. Enough automated checks that a change which breaks something fails before it merges. The discipline of software testing goes much further; the habit starts here.
  • Decisions written down. A short note of why one approach beat another, kept beside the code, spares the next person from reopening a settled argument.

Patterns and architecture

Design patterns are named solutions to recurring problems: an adapter wraps an awkward interface, an observer lets parts of a program react to events without knowing about each other. Their main value is shared vocabulary, so a reviewer can say 'this wants a strategy' and be understood. Principles such as SOLID play the same role for class design. Treat both as descriptions of code that proved easy to change, not as rules to apply in advance. Architecture asks the same question at a larger scale: how the system splits into parts and how those parts talk. A single deployable application with clean internal modules serves most teams for longer than fashion suggests. Splitting it into separately deployed services buys independent releases and pays for them with network failures, distributed data and more operational work.

Where newcomers go wrong

The early mistake runs in two directions. Some newcomers keep the habits of solo work: one enormous commit, no tests, a branch drifting for weeks. Others discover patterns and stack layers of abstraction for requirements nobody has stated, so a small change touches eight files. Both come from the same missing experience of maintaining code over time. Contributing to an established open-source project, even with documentation fixes, is the fastest way to see a working set of conventions from the inside.

A habit to start this week

Before opening any pull request, read your own diff top to bottom as if a stranger had written it. Most of what a reviewer would flag, from leftover debugging lines to a function doing two jobs, shows up on that first read.

Practice feeds straight into DevOps and CI/CD, which automates many of these agreements, and into the structural choices that shape a back end.

Next to this topic

Concepts to know

Glossary entries with the reason each one matters here.

  • Git

    Version control is the first engineering habit.

  • Containers

    The ordinary unit of deployment.

Certifications that test it

Vendor exams and free certificates; facts, cost and the preparation path are on each page, and the certifications hub has them all.

Tools of the trade

  • Git

    Version control is the first engineering habit.

  • GitHub

    Where code review happens.

  • GitLab

    Merge requests and review, hosted or self-managed.

Frequently asked

Do junior developers need to know design patterns?
Know the handful you will meet in your codebase well enough to recognise them, and learn the rest when a problem calls for one. Reaching for patterns before the code needs them is a more common junior fault than not knowing them.
Monolith or microservices for a new project?
Almost always a well-structured monolith first. Separate services pay off when teams need to release independently or parts of the system scale very differently, and both of those are easier to see once the product exists.
How can a self-taught developer show engineering practice to an employer?
Through a public repository that looks like team work: small commits with clear messages, a test suite that runs in a pipeline, a readable README, and ideally merged contributions to someone else's project. Interviewers read history as closely as code.

Courses in the directory

748 courses are filed here; the top 6 by our ranking, details and the provider link on each course page.

Browse the directory shelf

Last reviewed 26 September 2026 · Getting Digital