This video by Glenn Vanderburg about “Software Engineering” and this one by Sandi Metz about Object-Oriented Design provide more educational value than most university courses on software development ever will. They exceptionally well transport two main messages:

  1. Detailed, rigorous software planning (as known by “Waterfall” and seemingly loved by university professors) does not work.
  2. Software design is emergent, evolutionary and very much a process of trial and error and constant refinement. There’s no way to build quality software by designing it upfront and let it be implemented by others.

That both points contradict what’s tought in universities speaks volumes about the values of formal education and learning this stuff on your own.