---
title: "Junior Programmer"
content_type: pathway
url: "https://learn.unity.com/pathway/junior-programmer?language=en"
language: en
difficulty: beginner
unity_version:
  - "6.3"
supported_unity_versions:
  - name: "6.3"
    url: "https://learn.unity.com/pathway/junior-programmer.md?language=en&version=6.3"
  - name: "6.0"
    url: "https://learn.unity.com/pathway/junior-programmer.md?language=en&version=6.0"
  - name: "2022.3"
    url: "https://learn.unity.com/pathway/junior-programmer.md?language=en&version=2022.3"
  - name: "2021.3"
    url: "https://learn.unity.com/pathway/junior-programmer.md?language=en&version=2021.3"
last_updated: "2026-09-09T19:04:28.000Z"
---

# Junior Programmer

Welcome to Junior Programmer! Designed for anyone interested in learning to code or obtaining an entry-level Unity role, this pathway assumes a basic knowledge of Unity and has no math prerequisites. Junior Programmer prepares you to get Unity Certified so that you can demonstrate your job-readiness to employers.

## Prerequisites

We recommend that you have basic knowledge of Unity or complete [Unity Essentials](https://learn.unity.com/pathway/unity-essentials)  before starting this pathway.

## [Player Control](https://learn.unity.com/pathway/junior-programmer/unit/player-control?language=en&version=6.3)

In this first mission in the Junior Programmer pathway, you will program a car moving side-to-side on a floating road, trying to avoid (or hit) obstacles in the way. In addition to becoming familiar with the Unity editor and workflow, you will learn how to create new C# scripts and do some simple programming. By the end of the Unit, you will be able to call basic functions, then declare and tweak new variables to modify the results of those functions.

- [Course Introduction](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/welcome-and-install-the-software?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/welcome-and-install-the-software.md?language=en&version=6.3)) — Get an overview of the course structure, goals, and tips to make the most of your learning experience.
- [Install Unity Software](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/install-unity-software?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/install-unity-software.md?language=en&version=6.3)) — Follow guided steps to create a Unity ID and install Unity Hub, the Unity Editor, and Visual Studio.
- [Unit 1 - Introduction](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/unit-1-introduction?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/unit-1-introduction.md?language=en&version=6.3)) — This introductory video to Unit 1 outlines what you will do to implement Player control.
- [Lesson 1.1 - Start your 3D Engines ](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/lesson-1-1-start-your-3d-engines?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/lesson-1-1-start-your-3d-engines.md?language=en&version=6.3)) — Start your first Unity project in Unity Hub, place a drivable vehicle and obstacle, set a following camera, and customize your Unity Editor layout.
- [Lesson 1.2 - Pedal to the Metal](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/1-2-move-the-vehicle-with-your-first-line-of-c?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/1-2-move-the-vehicle-with-your-first-line-of-c.md?language=en&version=6.3)) — Learn to script basic vehicle movement, add physics components for collisions, and duplicate road objects in the Hierarchy window.
- [Lesson 1.3 - High Speed Chase](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/1-3-make-the-camera-follow-the-vehicle-with-variables?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/1-3-make-the-camera-follow-the-vehicle-with-variables.md?language=en&version=6.3)) — Script a C# camera follow system using variables so the camera tracks a vehicle and keeps the road in view.
- [Lesson 1.4 - Step into the Driver's Seat](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/lesson-1-4-use-user-input-to-control-the-vehicle?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/lesson-1-4-use-user-input-to-control-the-vehicle.md?language=en&version=6.3)) — Use methods, vectors, and variables to read arrow key input and drive a vehicle that moves forward, backward, and turns.
- [Challenge 1 - Plane Programming](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/challenge-1-plane-programming-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/challenge-1-plane-programming-1.md?language=en&version=6.3)) — Apply input and camera skills to fly a plane around obstacles with arrow key pitch control and a following camera.
- [Lab 1 - Project Design Document](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/lab-1-personal-project-plan?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/lab-1-personal-project-plan.md?language=en&version=6.3)) — Plan your personal project by defining its concept, timeline, and sketch in a complete Design Document.
- [Introduction to project management and teamwork](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/introduction-to-project-management-and-teamwork?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/player-control/tutorial/introduction-to-project-management-and-teamwork.md?language=en&version=6.3)) — Explore core concepts and best practices for project planning, production phases, project management, and effective teamwork.
- [Quiz 1](https://learn.unity.com/pathway/junior-programmer/unit/player-control/quiz/quiz-1-9s?language=en&version=6.3) — Check your understanding of the skills and concepts covered in Unit 1 of the course.

## [Basic Gameplay](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay?language=en&version=6.3)

In this Mission, you will program a top-down game with the objective of throwing food to hungry animals - who are stampeding towards you - before they can run past you. In order to do this, you will become much more familiar with some of the most important programming and Unity concepts, including if-then statements, random value generation, arrays, collision detection, prefabs, and instantiation. In completing this Unit, you will learn how to program a basic game with the ability to launch projectiles and maneuver the player to keep the game alive.

- [Unit 2 - Introduction](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/unit-2-introduction?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/unit-2-introduction.md?language=en&version=6.3))
- [Lesson 2.1 - Player Positioning](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-1-player-positioning?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-1-player-positioning.md?language=en&version=6.3)) — Create a new prototype project and script side-to-side player movement that stays within the play area using if-then logic.
- [Lesson 2.2 - Food Flight](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-2-food-flight?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-2-food-flight.md?language=en&version=6.3)) — Implement a projectile prefab launched with the spacebar and add boundaries that remove projectiles and animals leaving the game area.
- [Lesson 2.3 - Random Animal Stampede](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-3-random-animal-stampede?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-3-random-animal-stampede.md?language=en&version=6.3)) — Learn to script a spawner that creates random animal prefabs at the top of the screen when the user presses the S key.
- [Lesson 2.4 - Collision Decisions](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-4-collision-decisions?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lesson-2-4-collision-decisions.md?language=en&version=6.3)) — Implement timed animal spawning, collision-based destruction, and a Game Over state in your scene.
- [Challenge 2 - Play Fetch](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/challenge-2-play-fetch?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/challenge-2-play-fetch.md?language=en&version=6.3)) — Tackle a scripting challenge using arrays, random values, collisions, and spawning as a dog catches falling balls before they hit the ground.
- [Lab 2 - New Project with Primitives](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lab-2-new-project-with-primitives?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/lab-2-new-project-with-primitives.md?language=en&version=6.3)) — Set up a new project using primitive objects and colored materials to block out your scene and frame the camera.
- [Quiz 2](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/quiz/quiz-2-z8?language=en&version=6.3) — Use this quiz to check your understanding of the skills and concepts presented in Unit 2.
- [Mod the Cube](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/mod-the-cube?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/basic-gameplay/tutorial/mod-the-cube.md?language=en&version=6.3))

## [Sound and Effects](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects?language=en&version=6.3)

In this Mission, you will program a fast-paced endless side-scrolling runner game where the player needs to time jumps over oncoming obstacles to avoid crashing. In creating this prototype, you will learn how to add music and sound effects, completely transforming the experience of your projects. You will also learn how to create dynamic endless repeating backgrounds, which are critical for any side-scrolling games. Finally, you will learn to incorporate particle effects like splatters and explosions, which make your games so much more satisfying to play.

- [Unit 3 - Introduction](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/unit-3-introduction?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/unit-3-introduction.md?language=en&version=6.3)) — This introductory video previews Unit 3, where you implement Animation, audio, and particle effects in Unity.
- [Lesson 3.1 - Jump Force ](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lesson-3-1-jump-force-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lesson-3-1-jump-force-2.md?language=en&version=6.3)) — Build a simple runner prototype where a player character jumps over spawning obstacles using a spacebar-controlled setup.
- [Lesson 3.2 - Make the World Whiz By](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lesson-3-2-make-the-world-whiz-by?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lesson-3-2-make-the-world-whiz-by.md?language=en&version=6.3)) — Implement a looping background, obstacle cleanup, and collision-based game over using script communication in your runner game.
- [Lesson 3.3 - Don't Just Stand There](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lesson-3-3-don-t-just-stand-there-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lesson-3-3-don-t-just-stand-there-1.md?language=en&version=6.3)) — Animate your character’s running, jumping, and death states with an Animator Controller and sync their timing to gameplay.
- [Lesson 3.4 - Particles and Sound Effects](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/particles-and-sound-effects?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/particles-and-sound-effects.md?language=en&version=6.3)) — Add music, sound effects, and particle systems to make running, jumping, and crashing feel more dynamic.
- [Challenge 3 - Balloons, Bombs, & Booleans](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/challenge-3-bouncy-balloons-bombs-and-booleans-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/challenge-3-bouncy-balloons-bombs-and-booleans-1.md?language=en&version=6.3)) — Use physics, scrolling backgrounds, VFX, and troubleshooting to complete a balloon game that collects tokens and avoids bombs.
- [Lab 3 - Player Control](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lab-3-player-control?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/tutorial/lab-3-player-control.md?language=en&version=6.3)) — Program basic player movement with constraints by researching, testing, and refining your own C# solution.
- [Quiz 3](https://learn.unity.com/pathway/junior-programmer/unit/sound-and-effects/quiz/quiz-3-tt?language=en&version=6.3) — Use this quiz to check your understanding of the skills and concepts covered in Unit 3.

## [Gameplay Mechanics](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics?language=en&version=6.3)

In this Mission, you will program an arcade-style Sumo battle with the objective of knocking increasingly difficult waves of enemies off of a floating island, using power ups to help defeat them. In creating this prototype, you will learn how to implement new gameplay mechanics into your projects, which are new rules or systems that make the game more interesting to play. On one hand, you will learn to program a powerup, which give the player a temporary advantage. On the other hand, you will learn to program increasingly difficult enemy waves, which make survival more challenging for the player. A good balance of powerups and increasing difficulty make for a much more interesting gameplay experience.

- [Unit 4 - Introduction](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/unit-4-introduction?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/unit-4-introduction.md?language=en&version=6.3)) — Get an overview of Unit 4, where you will start implementing new gameplay mechanics.
- [Lesson 4.1 - Watch Where You’re Going](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-4-1-watch-where-you-re-going-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-4-1-watch-where-you-re-going-2.md?language=en&version=6.3)) — Build a prototype where the camera orbits an island and a textured sphere moves forward or backward with player input.
- [Lesson 4.2 - Follow the Player](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-plan-4-2-follow-the-player?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-plan-4-2-follow-the-player.md?language=en&version=6.3)) — Create a textured enemy sphere that spawns randomly, chases the player, and can knock them off the island.
- [Lesson 4.3 - PowerUp and CountDown](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-4-3-powerup-and-countdown?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-4-3-powerup-and-countdown.md?language=en&version=6.3)) — Create a randomly spawning powerup that temporarily boosts player strength and visually indicates its active state.
- [Lesson 4.4 - For-Loops For Waves](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-4-4-for-loops-for-waves?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lesson-4-4-for-loops-for-waves.md?language=en&version=6.3)) — Configure a wave-based Spawn Manager that increases enemy counts and spawns powerups each round.
- [Challenge 4 - Soccer Scripting](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/challenge-4-soccer-scripting-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/challenge-4-soccer-scripting-1.md?language=en&version=6.3)) — Apply Sumo Battle skills to fix a soccer-style prototype where waves of enemy balls attack, powerups boost strength, and rounds escalate.
- [Lab 4 - Basic Gameplay](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lab-4-basic-gameplay?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/tutorial/lab-4-basic-gameplay.md?language=en&version=6.3)) — Configure non-player objects with basic movement, collisions, and prefab spawning to establish your game’s core gameplay behavior.
- [Quiz 4](https://learn.unity.com/pathway/junior-programmer/unit/gameplay-mechanics/quiz/quiz-4-rg?language=en&version=6.3) — Check your understanding of the skills and concepts covered in Unit 4 with this quiz.

## [User Interface](https://learn.unity.com/pathway/junior-programmer/unit/user-interface?language=en&version=6.3)

In this Mission, you will program a game to test the player’s reflexes, where the goal is to click and destroy objects randomly tossed in the air before they can fall off the screen. In creating this prototype, you will learn how to implement a User Interface - or UI - into your projects. You will add a title screen with a difficulty select menu that will control how challenging the gameplay is, you will add a score display that will track how many points the player has earned, and you will add a Game Over screen, which will allow the player to restart and try again. In learning these skills, you will be able to create a fully “playable” experience that the user can enjoy from start to finish without having to restart the application to try it again.

- [Unit 5 - Introduction](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/unit-5-introduction?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/unit-5-introduction.md?language=en&version=6.3)) — This intro video for Unit 5 outlines what you will do to design and implement a user interface in Unity.
- [Lesson 5.1 - Clicky Mouse](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-1-clicky-mouse-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-1-clicky-mouse-1.md?language=en&version=6.3)) — Build a 2D project where good and bad targets spawn with random motion and are destroyed when the player clicks them or they exit the screen.
- [Lesson 5.2 - Keeping Score](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-2-keeping-score?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-2-keeping-score.md?language=en&version=6.3)) — Add a scoring UI, assign point values to targets, and trigger particle explosions when objects are destroyed on click.
- [Lesson 5.3 - Game Over](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-3-game-over-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-3-game-over-2.md?language=en&version=6.3)) — Create Game Over text and a Restart Game button that stop spawning targets, reset the score, and let users replay the game.
- [Lesson 5.4 - What’s the Difficulty?](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-4-what-s-the-difficulty-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lesson-5-4-what-s-the-difficulty-2.md?language=en&version=6.3)) — Build a title screen with styled text and difficulty buttons that control target spawn rates in your finished game.
- [Challenge 5 - Whack-a-Food](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/challenge-5-whack-a-food?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/challenge-5-whack-a-food.md?language=en&version=6.3)) — Debug and refine a whack-a-mole-style UI game by fixing buttons, clicks, score tracking, difficulty, and restart behavior.
- [Lab 5 - Swap out your Assets](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lab-5-swap-out-your-assets?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/lab-5-swap-out-your-assets.md?language=en&version=6.3))
- [Quiz 5](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/quiz/quiz-5-5o?language=en&version=6.3) — Use this quiz to check your understanding of the skills and concepts from Unit 5.
- [Introduction to user feedback and testing](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/introduction-to-user-feedback?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/user-interface/tutorial/introduction-to-user-feedback.md?language=en&version=6.3)) — Learn how to plan, run, and integrate user feedback and testing into your design and development process.

## [Publishing Your Project](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project?language=en&version=6.3)

In this Mission, you'll prepare to continue developing your Unity and C# skills independently, including learning how to complete your personal project and how to prepare for the Unity Certified User: Programming exam, which you can take through your school program, if available.

- [Next Steps - Introduction](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/next-steps-introduction?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/next-steps-introduction.md?language=en&version=6.3)) — Get introduced to the final course section on preparing for the Unity Certified User exam and finishing your Personal Project.
- [Lesson 6.1 - Project Optimization](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/lesson-6-1-project-optimization-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/lesson-6-1-project-optimization-1.md?language=en&version=6.3)) — Explore core optimization techniques to boost project performance, especially for larger mobile and web builds.
- [Lesson 6.2 - Research and Troubleshooting](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/lesson-6-2-research-and-troubleshooting-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/lesson-6-2-research-and-troubleshooting-2.md?language=en&version=6.3)) — Learn to research and troubleshoot online while adding features to Prototype 1, such as switching between two cameras with a key press.
- [Lesson 6.3 - Sharing your Projects](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/lesson-6-3-sharing-your-projects?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/lesson-6-3-sharing-your-projects.md?language=en&version=6.3))
- [ECS Survival Guide](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/ecs-survival-guide-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/ecs-survival-guide-1.md?language=en&version=6.3)) — Get a high-level introduction to entity component system (ECS) concepts and how they compare to typical object-oriented or component-based designs.
- [Career research and preparation](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/career-research-and-preparation?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/career-research-and-preparation.md?language=en&version=6.3)) — Explore roles, skills, and qualifications to define your career goals and focus your professional portfolio.
- [Introduction to portfolios](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/introduction-to-portfolios?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/introduction-to-portfolios.md?language=en&version=6.3)) — Review the purpose of a portfolio, plan your own with a flowchart, and start selecting and organizing content to showcase your work.
- [Debug the App](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/debug-the-app?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/debug-the-app.md?language=en&version=6.3))
- [Counting Prototype](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/counting-prototype?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/publishing-your-project/tutorial/counting-prototype.md?language=en&version=6.3))

## [Manage Scene Flow and Data](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data?language=en&version=6.3)

In this mission, you’ll learn about data persistence, or how to manage the loading and unloading of data between both scenes and sessions. Along the way, you will be introduced to the core pillars of object-oriented programming, which will help you structure your code throughout the mission. There will only be one practical example throughout the mission, which will build on the new functionality you create with each tutorial. At the end of this mission, you’ll take everything you learned and apply it to a new project by building a persistent score system for a small game.

- [Set up version control](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/set-up-version-control?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/set-up-version-control.md?language=en&version=6.3)) — Learn version control fundamentals, Unity-compatible tools, and how they help you maintain a project over time.
- [Explore the sample project](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/explore-the-sample-project?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/explore-the-sample-project.md?language=en&version=6.3)) — Review the project brief, open the Unity project, and identify supporting resources before starting development.
- [Principles of object-oriented programming](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/principles-of-object-oriented-programming?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/principles-of-object-oriented-programming.md?language=en&version=6.3)) — Learn the core object-oriented programming principles and how they support clean, efficient C# code.
- [Create a scene flow](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/create-a-scene-flow?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/create-a-scene-flow.md?language=en&version=6.3)) — Configure scene flow between Menu and Main scenes and script startup and event-based scene loading for your application.
- [Implement data persistence between scenes](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/implement-data-persistence-between-scenes?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/implement-data-persistence-between-scenes.md?language=en&version=6.3)) — Use DontDestroyOnLoad, static constructs, and scripts to persist user-selected data across scenes.
- [Implement data persistence between sessions](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/implement-data-persistence-between-sessions?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/implement-data-persistence-between-sessions.md?language=en&version=6.3)) — Write C# to initialize your app, manage data with lists and dictionaries, and persist user settings between sessions.
- [Submission: Data persistence in a new repo](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/submission-data-persistence-in-a-new-repo?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/tutorial/submission-data-persistence-in-a-new-repo.md?language=en&version=6.3))
- [Quiz: Manage scene flow and data](https://learn.unity.com/pathway/junior-programmer/unit/manage-scene-flow-and-data/quiz/quiz-manage-scene-flow-and-data?language=en&version=6.3) — This quiz checks your understanding of concepts from the Junior Programmer: Manage scene flow and data mission.

## [Apply Object-Oriented Principles](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles?language=en&version=6.3)

In this mission, you’ll refactor the inventory project you completed in the previous mission using the pillars of object-oriented programming as a guide. You’ll deep dive into the inner workings of each pillar individually, so you can better understand its value in developing applications. Next, you’ll learn how to profile your code to identify any optimization bottlenecks that would slow down the final build of your application. To close out this mission, you’ll develop a small application for your portfolio that uses fully optimized code built on OOP principles.

When you complete this mission you will complete the Junior Programmer pathway - CONGRATULATIONS!

- [Abstraction in object-oriented programming](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/abstraction-in-object-oriented-programming-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/abstraction-in-object-oriented-programming-2.md?language=en&version=6.3)) — Learn how abstraction in object-oriented programming hides unnecessary script details and exposes only what users need.
- [Inheritance and polymorphism in object-oriented programming](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/inheritance-and-polymorphism-in-object-oriented-programming-1?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/inheritance-and-polymorphism-in-object-oriented-programming-1.md?language=en&version=6.3)) — Learn how inheritance and polymorphism let child classes share, extend, and override parent class behavior to structure your code.
- [Encapsulation in object-oriented programming](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/encapsulation-in-object-oriented-programming-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/encapsulation-in-object-oriented-programming-2.md?language=en&version=6.3)) — Learn encapsulation in C# to control access with getters and setters and structure classes with clear, single-purpose code.
- [Profile code to identify issues](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/profile-code-to-identify-issues-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/profile-code-to-identify-issues-2.md?language=en&version=6.3)) — Learn to use the Profiler and Stats window to find CPU, physics, and rendering bottlenecks in your scene.
- [Job preparation: Junior Programmer](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/job-preparation-junior-programmer-2?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/job-preparation-junior-programmer-2.md?language=en&version=6.3)) — Review how to show your progress, update your portfolio and resume, and prepare for interviews.
- [Quiz: Apply object-oriented principles](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/quiz/quiz-apply-object-oriented-principles?language=en&version=6.3) — This quiz checks your understanding of object-oriented programming principles from the Junior Programmer mission.
- [Submission: Programming theory in action](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/submission-programming-theory-in-action?language=en&version=6.3) ([md](https://learn.unity.com/pathway/junior-programmer/unit/apply-object-oriented-principles/tutorial/submission-programming-theory-in-action.md?language=en&version=6.3))
