Programming and Software Development
Programming fundamentals
Fundamentals are the part of programming that carries over into every language you will ever use: how a program keeps state, makes decisions, repeats work and organises data, plus the unglamorous skills of reading an error and hunting down a fault. They take one language learned slowly, a working command line and the patience to write small programs from an empty file rather than typing along with someone else.
Why this topic exists: One language learned properly plus enough of the machine beneath it: variables, control flow, data structures, debugging and reading code (SFIA Programming/software development; MDN's getting-started modules).
Every language dresses the same few ideas in different syntax. A value is stored under a name; a condition chooses between paths; a loop repeats until something changes; a function packages steps so they can be reused and checked; a collection holds many values in a shape suited to the questions you will ask of it. SFIA calls the resulting skill programming and software development, the building of software components, and assumes these ideas are settled before any of its higher levels begin. They are the grammar. Every framework is vocabulary built on top.
The machine under the language
Fundamentals also include enough of the surrounding computer to stop it feeling like magic. MDN's getting-started material deals with environment setup, the file system and the command line before any page is written, and that order suits every kind of programming. You need to know where a file is saved, which program runs it, how the code you wrote differs from the output it produced, and why one script behaves differently in two folders. Whether a language is compiled ahead of time or interpreted as it runs, whether a variable holds a value or a reference to one, and what an exception does as it climbs out of a function: these questions arrive in the first month and never stop arriving.
- Data structures chosen on purpose. A list when order matters, a dictionary or map when you look things up by key, a set when all you ask is whether something is present. The wrong choice is the commonest cause of slow, tangled beginner code.
- Debugging as a method. Read the whole error message, go to the line it names, form a guess, change one thing at a time. Printing values is a legitimate tool; a debugger that pauses the program mid-run is a better one.
- Reading other people's code. Most working hours go on existing code, and following an unfamiliar function through three files is a skill that needs practice of its own.
- Decomposition. Breaking a vague task into steps small enough to write and check one at a time, which is the part no syntax reference can teach.
The tutorial loop
The most common beginner trap is finishing course after course without ever starting a program from nothing. Following along builds recognition, not recall. Set a rule early: for each tutorial, build one small thing it did not show you, and keep it under version control so your own progress stays visible.
Fundamentals do not need a particular language, but they need one held long enough to stop fighting its syntax. Python and JavaScript are the usual picks because both run with little setup. C, which Harvard's CS50x opens with, exposes more of the machine at the price of more friction. Cisco's free Python Essentials 1 is graded on code that actually runs, which makes it an honest self-check. From here the field opens up: programming languages is the question of which one to be hired in, and software engineering practice is what turns working code into code someone else can maintain.
Next to this topic
- Programming languagesPython, JavaScript, Java, C#, C and C++, Go, TypeScript, Rust, Kotlin, Swift: what each is for and where it is hired, so the first choice is a career decision rather than a syntax preference (Udemy's Programming Languages shelf names the market).
- Web developmentHTML, CSS and JavaScript, then a framework and the browser's APIs: MDN's core and extension modules are the syllabus of the largest development field.
- Back-end development and APIsServers, frameworks, databases behind them and the HTTP and REST contracts between services (MDN server-side modules; DVA-C02; the freeCodeCamp back-end certificate).
- Mobile developmentiOS, Android and the cross-platform frameworks are their own toolchains, stores and review rules (SFIA Systems development; Udemy's Mobile shelf).
- Databases and SQLThe relational model, SQL, schema design and the document and key-value stores next to it: the layer every application and every analyst stands on (SFIA Database design; DP-900 relational concepts).
- Software engineering practiceVersion 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).
- Software testing and QATesting as a discipline: the ISTQB Foundation syllabus v4.0.1 (fundamentals, testing through the lifecycle, static testing, analysis and design, managing test activities, tools) plus the automation frameworks (Selenium, Cypress, Playwright).
- DevOps, Git and CI/CDVersion control workflows, pipelines, containers for developers and the culture that joins build and run (AZ-400; GitHub Foundations and Actions; the cloud field owns infrastructure as code and operations).
- Game developmentEngines, graphics, physics and the design loop are a development field with its own tooling and job market (Udemy's Game Development shelf; SFIA Animation development).
- No-code and low-code developmentBuilding software without writing most of it (Bubble, Webflow, Zapier, Make, Airtable) is a recognised route into shipping products; Microsoft's Power Platform is the office-suite version of the same idea.
- AI-assisted developmentAssistants changed how fast plausible code appears, not what makes it correct; reading, testing and correcting generated code is now part of the craft (GitHub certifies Copilot use and, on its 2026 credentials page, agentic AI development).
Concepts to know
Glossary entries with the reason each one matters here.
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.
- Harvard University · Graded projects · freeCS50's Introduction to Computer ScienceHarvard's free introduction, from C to Python and the web.
- Cisco · Online exam, not proctored · freePython Essentials 1A free structured Python start with a badge.
- freeCodeCamp · Online exam, not proctored · freeJavaScript CertificationfreeCodeCamp's free JavaScript certificate.
Frequently asked
- How much maths does programming need?
- For most web and business software, arithmetic and plain logic are enough. Graphics, games, data science and cryptography ask for considerably more. If maths put you off at school, that is no reason to avoid programming; the logical habits it trains are learned by writing code.
- Should I study algorithms and data structures before building anything?
- Learn the common structures as your programs need them, and build from the first week. Formal algorithm study pays off later, mainly for interviews at large employers and for work where speed or memory is tight.
- Is the command line really necessary for a beginner?
- Yes, at a basic level. Moving between folders, running a script, installing a package and reading what a tool printed are daily tasks in every kind of development, and the editors and pipelines you will use later assume them.
Courses in the directory
252 courses are filed here; the top 6 by our ranking, details and the provider link on each course page.
Last reviewed 26 September 2026 · Getting Digital
