Pick one target role. The five common titles look similar from outside and lead to quite different curricula. Trying to prepare for all of them at once is one of the more common reasons people stall. Treat the table as a guide to the work. Employers use these titles inconsistently.
| Role | What the day looks like | Qualifications to check in actual vacancies | Fit for a developer |
|---|---|---|---|
| AI Engineer | Products using foundation models: context, tools, retrieval, evaluation, cost and latency | Software experience and product judgement. Degree filters vary | Application skills transfer directly |
| ML Engineer | Data pipelines, training, serving and scaling. Model performance under deployment limits | Proven software and statistics skills. Degree filters vary | Good, with more statistics and systems work |
| Data Scientist | Experiment design, causal questions, metrics and communicating decisions | Statistics, domain knowledge and sometimes a quantitative degree | Good, with the most statistics |
| Applied Scientist | Research alongside production code | Some employers require a graduate degree or equivalent research experience | Needs a stronger record of experiments and research |
| Research Engineer | Frameworks, distributed training and implementing new methods | Systems ability and research experience. Publications and graduate degrees depend on the role | A demanding route for developers with relevant systems experience |
Data Engineer is worth considering as well: ingestion, data quality, modelling, orchestration and reliable analytical systems. Your SQL, backend and infrastructure experience can transfer.
If you cannot decide, AI Engineer is a reasonable first choice for someone who already ships applications. Revisit it after checking local vacancies and after your first project. A title alone does not show hiring demand or an employer's degree requirements.
Know what interviews can assess. Eugene Yan has published his own hiring rubric. He assesses software engineering fundamentals, data literacy, comfort with uncertainty, evaluation frameworks, and breadth of knowledge. It is one practitioner's rubric, so expect other interviews to differ. The projects in this book are built to show the two skills in bold.
Set up your tools. Use one documented workflow, and check version-sensitive examples against current documentation.
-
Environments: use uv. It manages dependencies, virtual environments and Python installations. First follow its installation instructions for your operating system, reopen your terminal if needed, and check
uv --version. Then create the project:uv python install 3.14 uv init --python 3.14 my-learning-repo cd my-learning-repo uv add pandas numpy jupyterlabCheck that the installed packages import:
uv run --locked python -c "import numpy as np; import pandas as pd; print(np.__version__, pd.__version__)"Both version numbers should print without an error. Open notebooks with
uv run jupyter lab. Commitpyproject.toml,uv.lock,.python-versionand the generatedsrc/package. Note the Python patch version, uv version and operating system. Useuv sync --lockedanduv run --locked ...for a reproduction check. The flag fails if the lock disagrees with project metadata, rather than quietly changing it. See locking and syncing. A lock does not pin your data, GPU driver or every hardware-dependent result.Two details trip people up. Since uv 0.12,
uv initcreates a small package undersrc/, which suits the tested cleaning functions you write in Chapter 2. Add--no-packageif you want the older single-file layout. For the Python version, pick the newest one that PyTorch, the deep-learning library you meet in Chapter 4, has ready-built packages for. In September 2026 that is 3.14, as the official PyTorch installation guide shows. If a needed library lacks a compatible wheel, choose a supported Python version and regenerate the lock on purpose. -
pandas 3.0 changed some defaults. Copy-on-Write is now the only mode, so chained assignment cannot update the original dataframe. Use a single
.loc[...] = ...assignment. Text columns also default to a string dtype. Some operations still supportinplace=True, so seeing it does not date a tutorial. Check the pandas migration guide. NumPy's old aliases such asnp.int,np.floatandnp.objectexpired in 1.24. NumPy 2.0 reintroducednp.boolwith boolean dtype semantics. Use explicit dtypes when precision matters. -
Editor. VS Code with the Python and Jupyter extensions is a practical default. Select the project's
.venvinterpreter and notebook kernel. Its data science tutorial also covers conda and TensorFlow. Those are valid, but use one documented environment here.
A note on package sources. At work, follow your organisation's package and licensing policy. Anaconda's commercial terms depend on the service and organisation, so read its current terms if you use it. Miniforge with conda-forge is another option if you need conda.
Where your compute comes from.
Nothing on the main path of this book needs a GPU you have to buy. "I cannot learn deep learning without a GPU" is a common worry and, happily, not true.
| Option | Cost | Good for | Worth knowing |
|---|---|---|---|
| Your computer | No additional service cost | Chapters 1–3 and small CPU experiments | Keep the dataset small and note memory use and runtime |
| Google Colab | Free tier | Quick interactive notebooks | GPU type, availability and limits change. Save work and checkpoints outside the runtime |
| Kaggle Notebooks | Free tier | Public datasets and notebook experiments | Check account eligibility, the current accelerator allowance and session limits |
| Lightning AI | Free tier or credits where offered | Persistent development projects | Check which machines use credits and how saved work is billed |
| Modal | Starter credits, then usage charges | Scripted CPU/GPU jobs and services | Credits and endpoint billing follow different rules. Set a spending limit and check current pricing |
Start locally or in a free notebook. Choose a GPU service later, to fit the exercise's memory, runtime and storage needs. A provider's allowance can change, so keep a CPU fallback and checkpoint training so it can resume. Official compute links are in this chapter's resources.