Skip to content

00 - Introduction

What this session is

A 10-minute read. No code yet. Sets expectations honestly so you can decide if this path is for you.

What you're going to build, eventually

By the end of this path you'll have:

  • Written and run small Java programs that print, calculate, and decide.
  • Built a little command-line application that takes input and produces output.
  • Written tests for your own code and watched them pass and fail.
  • Cloned a real Java open-source project, browsed its code, run its tests, and understood roughly what it does.
  • Submitted a small fix to one of those projects as a real pull request.

That last point is the goal. Everything else is preparation.

The deal

A few things to know about how this path works:

It's slow on purpose. Most beginner Java tutorials drop you into Spring Boot by page three. That works for some people. For most, it leaves them able to copy code without understanding it. This path is the opposite - one concept per page.

It assumes nothing. If a word appears that you haven't seen, it's defined there. No glossary lookups.

It does the work where the work is. Some pages are short; some are long. We don't pad.

You have to type the code. Reading without typing is reading sheet music without playing. Type every example.

You will be confused. Often. Especially in the first month. That's normal. Programming is unusual in how often you feel stuck. Confusion is not a sign you're bad at this; it's a sign you're doing it.

What you need

  • A computer (any OS).
  • A text editor - IntelliJ IDEA Community Edition is the most-loved Java environment ever made, and it's free. VS Code with the Extension Pack for Java is the lighter alternative. Either works.
  • A terminal.
  • ~5 hours per week. Less is fine; the path takes longer.
  • A notebook for questions. You'll have lots. Write them down so you can keep going past them.

What you do NOT need

  • Math beyond basic arithmetic.
  • A computer-science degree.
  • A "gift" for computers. There is no such thing.
  • To know any other programming language first.

How long this realistically takes

4 to 6 months at 5 focused hours per week, to get to the "submit a pull request" goal.

The thing that takes weeks isn't "absorbing information" - it's your brain getting used to a new way of thinking. That happens at biology speed, not internet speed.

Java has a reputation problem

You might have heard Java is "verbose," "enterprise-y," "slow," or "old." Let me name each honestly:

  • Verbose. Pre-2017, yes. Modern Java (since 14) has records, sealed classes, switch expressions, var, pattern matching - much less ceremony. We'll use modern Java throughout.
  • Enterprise-y. Java is used in some places where teams over-engineer. The language isn't to blame. Small modern Java code reads cleanly.
  • Slow. Steady-state Java (after JIT warmup) is within 10-30% of C/C++ for almost everything. Startup is slow; per-op throughput isn't.
  • Old. Java is 30 years old. So are C, C++, Python, JavaScript. Old languages have ecosystems older languages don't.

If you've used Java before and bounced off, give modern Java a fresh look.

What success looks like at the end

You'll be able to:

  • Open a Java file you've never seen and read it like a recipe.
  • Open a Java project on GitHub and tell me in two paragraphs what it does and how.
  • Find a small bug or missing feature and fix it.
  • Submit that fix as a pull request matching the project's conventions.

You will not be able to:

  • Build a new application server. (Not in 6 months.)
  • Tell people you're a "senior Java engineer." (Years after this.)

What you will have: the foundation to keep going.

One last thing before we start

If at any point a page feels too dense, stop and re-read it. If it's still too dense, that's a bug in the page - note it, skip forward, come back. The path is alive; it gets fixed when readers say "this part lost me."

Ready? Next: Setup →

Comments