Where this came from

Open since 2017, because someone asked where to start

On 4 August 2017 we wrote this list down in a Google Doc, made it publicly accessible, and shared the link with anyone who asked how to get into software development. There was no course to sell and no sign-up to complete - the document was simply open.

It stayed open. That original document is still live, and everything that came afterwards - the classes, the internships, the community - grew out of the habit of answering that question properly rather than brushing it off.

View the original 2017 document →
Learn · build · earn

How we support interns starting out

The guide tells you what to learn. This is what we provide alongside it - a route from knowing nothing to being paid for delivery work, with someone experienced alongside you at each stage.

  1. 1 Start

    Learn the ground

    Work through the foundations and the first three areas of this guide. Free online classes cover the same ground with someone to ask. No approval, no cost, no commitment.

    Browse the classes →
  2. 2 Intern

    Build your skills and gain experience

    Join as an intern and work on structured exercises with review from an experienced developer. This is where the development-process area stops being theory - you write the specification, the tests and the bug reports for real.

    Apply to join →
  3. 3 Intermediate

    Work on real projects with our teams

    Contribute to systems that are actually in use, alongside people who maintain them. You get code review, and you get to see how a delivered system behaves after handover - the part most training never shows.

    Request access →
  4. 4 Advanced

    Receive contract offers and start earning

    Members who reach this stage join project teams as consultants and take paid delivery work. The business prospecting area of the guide is what makes this stage possible rather than accidental.

    Talk to us →

Internships are structured, reviewed and unpaid at the earliest stage - we are honest about that. What we commit to is real work, real review and a defined route to paid project work rather than an indefinite queue.

Before anything else

The basics

Start here even if it looks beneath you. Almost every stalled beginner we have met was missing something on this list rather than something advanced.

  • Accept that you cannot know everything - the skill is knowing how to find out
  • Learn how to research any topic, and how to seek information deliberately
  • Learn how to document what you find, so it is useful to you and to others later
  • Understand computers: hardware, software, input and output devices
  • Understand operating systems and application software
  • Understand the internet, and what a website actually is
  • Understand networks: wifi, local area networks, and the types of each
  • Be fluent with files and folders - creating, renaming, organising, deleting
The six areas

What you need to be knowledgeable in

Work through them in order. Each one assumes the one before it, and each is broad enough to take months rather than evenings.

01 Infrastructure 11 topics

What the machine and the network are actually doing. Everything above this layer is easier once this is not a mystery.

  • The function of each hardware component: RAM, hard disk, ROM, input and output devices
  • What operating systems are and how they work
  • What a server is, and the different types - both software and hardware
  • Virtualisation, and how virtual machines function
  • Networking, network types, communication links and data-transfer protocols
  • How a web browser works
  • How browser, operating system and network link combine to let you browse
  • Why port numbers, MAC addresses and IP addresses exist
  • How to check network access - pinging, on more than one operating system
  • What firewalls are, why they exist and how they work
  • Remote desktop connections and what they are useful for
02 Web hosting 10 topics

Where an application actually lives, and how it is reached. The gap between "it works on my machine" and "it works".

  • Web server technologies: Apache, Nginx, IIS, Node.js
  • Creating a local web server environment, and why you need one
  • Changing environment parameters: IP address, port numbers, root directories
  • Installing a database server and connecting to it
  • The different ways of accessing data in a database server
  • Connecting several remote clients to data on a local web server
  • Domain names - what they are for and why they are necessary
  • The HTTP, HTTPS and FTP protocols, in practice rather than in theory
  • Hosting types: shared, dedicated, virtual private server
  • Retrieving and saving data over the web: GET, POST, PUT, DELETE

Web hosting explained (video) →

03 Development technologies 10 topics

The tools themselves - and, more usefully, which kind of tool solves which kind of problem.

  • The difference between client-side technologies (HTML, CSS, JavaScript), data-exchange formats (XML, JSON), server-side languages (PHP, Java, Python, Ruby, Go, Node.js) and databases - relational and object-oriented - including the strengths and limits of each
  • The difference between interpreted and compiled languages, and how to run programs in both
  • At least the basic syntax of the ten most popular languages - enough to read and edit code in any of them
  • How to use photo editing software
  • Office productivity suites: word processing, spreadsheets, presentations
  • Familiarity with WordPress and at least one business platform
  • Setting up WordPress locally, customising a theme, and migrating to a live server
  • Registering a domain name and pointing it at a server
  • User interface design for web, web application and mobile
  • A JavaScript framework, and a mobile framework alongside it
04 Development process 11 topics

How software gets built by a team rather than by one person - the part that separates a hobbyist from a professional.

  • Systems analysis - and practice analysing real business systems
  • The agile and waterfall software development life cycles
  • Converting client requirements into system requirements, and back again
  • Preparing a detailed requirements specification and a systems architecture document
  • Database modelling and normalisation
  • Class modelling with object-oriented techniques
  • Turning a class model into code in any language
  • Creating a test plan and test cases
  • Carrying out tests, and writing a bug report someone can act on
  • Generating reports by querying databases
  • Managing client expectations - and client frustration
05 Business prospecting 11 topics

The skills that turn a developer into someone who can win and close work. Rarely taught, and the reason many good developers stay junior.

  • Business proposal writing
  • Technical proposal writing
  • Creating a project schedule and project plan
  • Reporting project progress
  • Preparing business and technical presentations
  • Finding business prospects, opportunities and investment funding
  • Closing out a project properly
  • Preparing training manuals, user guides and tutorial videos
  • Contract agreements and service level agreements
  • Invoices and receipts
  • Project cost analysis and costing
06 Marketing & sales 3 topics

The last stage, and deliberately the one we teach through project work rather than reading - it is learned by doing it alongside someone who has.

  • Positioning a solution against a real business problem
  • Pricing, negotiation and the commercial conversation
  • Client relationships that outlast a single project
Next step

Do not work through this alone

The guide is open to everyone and always will be. But the people who get furthest with it are the ones who join a cohort, ask questions, and put their early work in front of somebody who will tell them what is wrong with it.