Skip to content
Getting Digital

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

Concepts to know

Glossary entries with the reason each one matters here.

  • Python

    The language most first courses teach, and a career decision rather than a syntax preference.

  • Git

    Version control from the first week, not the first job.

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.

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.

Browse the directory shelf

Last reviewed 26 September 2026 · Getting Digital