Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reinventing the wheel ... as a service

Reinventing the wheel ... as a service

In software engineering it happens very frequently that good, or even not so good, ideas are periodically reinvented, possibly rebranding them with new and cool-sounding buzzwords. These trends follow a few recurring patterns. Sometimes we try to simplify core concepts up to a point where oversimplification leads to something impractical to use in real-world situations. Even more often our architectural choices, like in the cases of centralized vs. distributed or fat vs. thin clients, keep swinging like a pendulum between 2 positions. Finally other times we explore different solutions but at the end of this cycle we find ourselves at the starting point or very close to it. During this presentation, mostly delivered as a rant of a 50 years old engineer who for some reasons insists on writing software on a daily basis, we will go through and try to make sense of these trends.

9eafc29df96e6aaf4a3eb4c0209086ae?s=128

Mario Fusco

May 01, 2022
Tweet

More Decks by Mario Fusco

Other Decks in Programming

Transcript

  1. Reinventing the wheel … as a service Recurring trends in

    software development and architecture by Mario Fusco @mariofusco
  2. Disclaimer: this talk is NOT about methodologies

  3. Disclaimer: this talk is NOT about methodologies I have ethical

    principles …
  4. Disclaimer: this talk is NOT about methodologies I have ethical

    principles … therefore I don’t shoot on the red cross
  5. Early 2000s

  6. Hierarchical DB vs. Relational

  7. Hierarchical DB -> Tamino

  8. Recurring trends

  9. Unnecessary complexity

  10. Straightforward simplicity

  11. Straightforward simplicity

  12. Simplify ... beyond the reasonable

  13. The Markup Language War

  14. The Markup Language War

  15. The Norway Problem Shortcuts are great Except when they break

    horribly
  16. None
  17. Simplicity is the ultimate sophistication. - Leonardo da Vinci

  18. Simplicity is the ultimate sophistication. - Leonardo da Vinci Oversimplification

    is the ultimate idiocy. - me
  19. A static typing system makes everything more complex isn’t it?

  20. A static typing system makes everything more complex isn’t it?

    Dynamic Typing
  21. Dynamic Typing The best way to discover that a duck

    cannot bark ...
  22. Dynamic Typing The best way to discover that a duck

    cannot bark ... ... in production ...
  23. Dynamic Typing The best way to discover that a duck

    cannot bark ... ... in production ... ... on a Friday evening
  24. Fallacies of distributed computing • The network is reliable •

    Latency is zero • Bandwidth is infinite • The network is secure • Topology doesn't change • There is one administrator • Transport cost is zero • The network is homogeneous
  25. The nocode / lowcode myth

  26. The nocode / lowcode myth

  27. Intelligent systems

  28. Intelligent systems Changing random stuff until your program works is

    “hacky” and “bad coding practice”.
  29. Intelligent systems Changing random stuff until your program works is

    “hacky” and “bad coding practice”. But if you do it fast enough it is “Machine Learning” and pays 4x your current salary.
  30. Machine Learning ML is the thing suggesting to buy laundry

    detergent together with your new washing machine because they're statistically related ...
  31. Machine Learning ML is the thing suggesting to buy laundry

    detergent together with your new washing machine because they're statistically related ... … or more often the one thinking that, since you want to buy a washing machine, you decided to start up a whole new laundry.
  32. Why not Machine Learning + Symbolic Reasoning ? + ML

    to find statistical correlations and discover new patterns SR to filter away the ones not making sense under a business point of view SR to filter away the ones not making sense under a business point of view
  33. Why not Machine Learning + Symbolic Reasoning ? + ML

    to find statistical correlations and discover new patterns SR to filter away the ones not making sense under a business point of view ML AI SR to filter away the ones not making sense under a business point of view
  34. Why not Machine Learning + Symbolic Reasoning ? + ML

    to find statistical correlations and discover new patterns SR to filter away the ones not making sense under a business point of view ML AI SR to filter away the ones not making sense under a business point of view Your business domain knowledge lives here!
  35. Often the right questions is not “should I use the

    old way or the new one?” ... … but “how can you combine the two and take the best of both?”
  36. Pendulum of innovation • Fat vs.Thin clients terminals • Centralized

    vs. Distributed systems • Outsourcing vs. Insourcing
  37. Pendulum of innovation Mainframe

  38. Pendulum of innovation Mainframe Desktop Innovation

  39. Pendulum of innovation Mainframe Desktop Server side webapps Innovation Innovation

  40. Pendulum of innovation Mainframe Desktop Server side webapps Applets Innovation

    Innovation Innovation
  41. Pendulum of innovation Mainframe Desktop Server side webapps Applets Server

    side HTML rendering Innovation Innovation Innovation Innovation
  42. Pendulum of innovation Mainframe Desktop Server side webapps Applets Server

    side HTML rendering Microfrontends Innovation Innovation Innovation Innovation Innovation
  43. Concurrent Programming in Java Spiral of innovation

  44. Concurrent Programming in Java Spiral of innovation Green threads

  45. Concurrent Programming in Java Spiral of innovation Green threads Native

    threads
  46. Concurrent Programming in Java Spiral of innovation Green threads Native

    threads Events ( actors / message passing )
  47. Concurrent Programming in Java Spiral of innovation Green threads Native

    threads Events ( actors / message passing ) Reactive programming
  48. Concurrent Programming in Java Spiral of innovation Green threads Native

    threads Events ( actors / message passing ) Reactive programming Virtual threads (Project Loom)
  49. Rebranding

  50. Cloud Cloud Computing is Mainframe Architecture which used virtualization in

    the 70s
  51. None
  52. None
  53. None
  54. Remote calls / inter process communication • RPC • Corba

    • SOAP • REST • gRPC
  55. Modularization • Code – Package – OSGi – JPMS •

    Architecture – distributed computing – SOA – microservices
  56. Software Engineering / Architecture “innovation” patterns • (Over)Simplification

  57. Software Engineering / Architecture “innovation” patterns • (Over)Simplification • Recurring

    trends – Pendulum – Spiral
  58. Software Engineering / Architecture “innovation” patterns • (Over)Simplification • Recurring

    trends – Pendulum – Spiral • Rebranding
  59. … and what you can do about it • Beware

    of stretched narratives and analogies
  60. … and what you can do about it • Beware

    of stretched narratives and analogies • Beware of NIH syndrome
  61. … and what you can do about it • Beware

    of stretched narratives and analogies • Beware of NIH syndrome • Think with your head
  62. … and what you can do about it • Beware

    of stretched narratives and analogies • Beware of NIH syndrome • Think with your head • Ask yourself: where have I seen this before?
  63. Mario Fusco @mariofusco