Software developer
Write, test and ship the programs people use, from small tools to big systems.
What it is day to day
- Turn a feature request or a bug report into working code, usually in small pieces that each get reviewed.
- Read a lot more code than you write: other people's, old code and library code.
- Write tests so a change today does not break something from last year.
- Debug: reproduce a problem, narrow it down, fix it and prove the fix.
- Work with a team through version control, code reviews and short planning meetings.
The courses, in order
Each course builds on the one before. Every lesson runs in your browser, free, with nothing to install.
- Step 1
Python from zero
Beginner Python on a Raspberry Pi: print, variables, decisions, loops, lists, functions, dicts and strings, then a button with gpiozero and a working pedestrian crossing.
- Step 2
C++ on a board
The language, one idea per lesson, on a board that shows you what your code did.
- Step 3
Fix the bug
Short puzzles on an Uno: one planted fault each, in the wiring or the code. Find it, fix it, and see it work.
- Step 4
C++ that scales
The habits that keep a big program sane, on the Uno: references and const, classes, a ring buffer, a state machine class, templates, and logic split from pins so it tests itself. Ends with a tested calculator.
- Step 5
Python with real habits
Advanced Python on a Raspberry Pi, after Python from zero: modules, classes, exceptions, files and logging, tests with plain assert, generators, and a sensor logger that uses them all.
- Step 6
Data structures and algorithms
The ideas every programmer is asked about, built and measured on an Uno: big O, linked lists, stacks and queues, hash maps, sorting and binary search. Ends with a leaderboard that needs them all.
- Step 7
Software design and testing
How teams keep firmware right as it grows: readable code, modules behind narrow interfaces, fakes, tests on boot, test-first fixes, safe refactors and code review. Ends with a messy sketch refactored under test.
- Step 8
Portfolio and interviews
Turn finished projects into a job search: choose and document portfolio pieces, share links that run, read job posts and answer technical questions out loud.
Your skills checklist
- Variables, loops, conditions and functions in PythonPython from zero
- A second language: C++ types, functions and memoryC++ on a board
- Find and fix a bug from its symptomsFix the bug
- Classes, containers and code split into filesC++ that scales
- Modules, errors and tests in PythonPython with real habits
- Pick the right data structure and reason about speedData structures and algorithms
- Design code that is easy to change, and test itSoftware design and testing
- Show your work in a portfolio and explain it in an interviewPortfolio and interviews
Projects to build and show
Open one, run it, change it, then share your version as a link that runs. The last course in this guide shows how to write each one up.
Calculator
Parsing input, state and an error case (divide by zero) handled on purpose.
API lab: fetch JSON
Calling a web API, reading JSON and handling a response that is not what you expected.
Traffic lights with gpiozero
Python on a Raspberry Pi with a library, events and a clear state machine.
After Mokxi, in the real world
Mokxi teaches the skills; employers, schools and licensing boards set their own rules. These are the common routes, and they vary by place.
Training and education
- There is no single required route. People get hired from computer science degrees, community college associate programs, bootcamps and self-teaching backed by a strong portfolio.
- A degree helps most for large companies and some roles that filter by it. Many other employers weigh projects and interviews more.
- Learn Git and put your code on a public profile. Contributing a small fix to an open source project is real, reviewable experience.
Certifications
- Most software jobs do not require a certification.
- Some people take cloud certifications (from the big cloud providers) for roles that run software in the cloud. They help most alongside projects, not instead of them.
Entry-level titles to search
- Junior software developer
- Software engineer I
- Associate software engineer
- Junior Python developer
- Software developer intern
- QA or test automation engineer
Questions you may be asked
Short answers drawn from the courses. Say each one out loud, then check it on a circuit.
What is the difference between a list and a dictionary in Python?
A list keeps items in order and you find them by position. A dictionary maps keys to values, so you find an item by its key, usually much faster than searching a list.
What happens when you pass a variable to a function?
In Python the function gets a reference to the same object, so changing a list inside the function changes it outside too. In C++ you choose: by value makes a copy, by reference shares the original.
How do you find a bug you cannot see?
Reproduce it reliably, then narrow it down: print or log values, or use a debugger, and cut the problem in half until one line is left. Then fix it and add a test so it stays fixed.
What is a class, and why use one?
A class bundles data with the functions that work on it. It keeps related state together and hides details behind a small interface, so the rest of the program depends on less.
Why write tests?
A test checks that code does what you meant, and keeps checking every time the code changes. It lets you change code with confidence instead of hoping nothing broke.
What is the difference between a compile error and a runtime error?
A compile error is caught before the program runs, like a type mismatch in C++. A runtime error happens while it runs, like dividing by zero or reading past the end of a list.
How would you handle bad input from a user?
Never trust it: check it at the edge, reject or correct it with a clear message, and make sure the rest of the program only sees valid values. The calculator showing Err on divide by zero is a small example.
What is the difference between a stack and a queue?
A stack is last in, first out, like a pile of plates. A queue is first in, first out, like a line at a store.
Tell me about a project you are proud of.
Pick one project and tell it as a story: what it does, one hard problem, how you found and fixed it, and what you would do differently. Have the link ready.
Step 1 is Python from zero
Beginner Python on a Raspberry Pi: print, variables, decisions, loops, lists, functions, dicts and strings, then a button with gpiozero and a working pedestrian crossing.