1. A system for teaching software development processes, comprising: a simulation server that keeps track of a current state and time of a simulation of a software development process, and generates random and scenario-driven events in the simulation that simulate a project as part of the software development process; two or more simulation clients associated with two or more users, each simulation client including a graphical user interface (GUI) for displaying the current state of the simulation, enabling the associated user to perform simulated process actions as part of the simulation, and enabling the associated user to interact with other users to learn the software development process; and a network that facilitates communication between the simulation server and the two or more simulation clients.