2. Drawing first (tooling)
We didn’t just have Flash, we also had Interface Builder. which didn’t quite have a general canvas, but also very much the workflow of creating the visuals first and then creating structure from that.
The problem with those tools is that they produce horrible programs. I will go into more detail in a post I am currently writing on “What happened to MVC?“, but the gist is that to get a reasonably structured application, you really, really need to focus on the model. In almost every codebase I’ve seen recently. people started with the screens (Product Mgt. talks to design, design creates the screens and throws them over to engineering), and so they have at best an anemic model. And so all the coordination and in the end the application goes somewhere in/above the view layer (iOS: the ViewControllers or something else that’s just as horrible). And so you get an intertwined, unstructured, untestable, unmaintainable mess. Always.
And of course that’s also what happened to MVC, because you can’t do proper MVC that way, and pretty much all the problems people think they have with “MVC”, they actually have because they’re not doing MVC.
What’s really surprising about this is that, as you observed, the development tooling actually has moved the other way, so we no longer really have those draw-first tools. But despite getting rid of the tooling, we stuck with the mess that before was the price of those tools! Worst of both worlds.