Bob Martin - The Future of Programming


https://www.youtube.com/watch?v=ecIWPzGEbFc

History Lesson (taken from a youtube comment):

Alan Turing:

  • “We shall need a great number of mathematicians of ability” because “there will probably be a good deal of work of this kind to be done"
  • "One of our difficulties will be the maintenance of an appropriate discipline, so that we do not lose track of what we are doing”

Timeline:

  • 53 - Fortran, penciled coding forms -> punch cards
  • 58 - Lisp, functional programming
  • 60 - O(1E2) computers in the world, O(1E3) programmers that are 30yo mathematicians, scientists, accountants and the like. No OS, libraries, etc.
  • transistors
  • 65 - 10’000 1401 / O(1E4) computers (rent $2500/mo $20k/day), 4000 bytes memory. O(1E5) programmers, still learned adult trusted and disciplined people if not mathematicians, not 22 yo people out of school :)
  • 68 - Dijkstra says goto bad, enter structured programming
  • C - K&R, mathematicians
  • 70 - 1E5 computers / 1E6 programmers, 25 years from 1 to 1’000’00 programmers. Now CS courses, new are mostly male students (due to university limitations) in early 20s
  • Hardware has evolved rapidly and at exponential pace but software has remained the same since then. We have wrappers and generics and transcompilers, and nice syntax, but its essentially the same.

51:42 - Number of programmers doubles every 5 years. Tens of Millions of Programmers. Half of whom have less than five years experience. If we’re doubling every 5 years, we always have half the programmers with less than 5 years experience, which leaves you with perpetual inexperience with not enough teachers to teach, which leads you to repeat the same mistakes.

57:45 - If we have made any advances in software, since 1945, it is almost entirely in what not to do. Structured Programming was in what not to do - don’t use unrestrained goto. Functional Programming - don’t use assignment. Object Oriented Programming - don’t use pointers to functions. What we have learned over the last 70-some years is more about what not to do, than what to do. There have been no radical advances in software technology. The craft of writing software remains roughly the same as it was in 1945 - a little more modern, but not essentially any different

1:02:53 - Agile Principles are disciplines, not process steps. Promises you make, not tasks to follow.

1:04:11 - Business understands Scrum because it mirrors typical workflows. Programming at a high level isn’t a typical workflow.

1:06:55 - “Scrum without technical practices becomes an efficient business discipline coupled to an undisciplined engineering team, which will very rapidly make a mess.”

1:07:29 - Certification for project managers turned into a siren song, which attracted all the wrong people. Agile split and shifted towards kan-ban and tasks, not technical discipline.

Catastrophe will happen, its just a matter of when (it did, with Boeing 737 Max). With that comes legislation and bureaucracy and everything antithetical to the Agile philosophy. Instead of letting that happen, software dev’s should regulate themselves and develop principles/ethics/standards, and have something akin to a bar for law, or a doctors oath, to hold yourself to some standard, and saying no to people when it conflicts with it.