I often lament the transition from desktop to web application development. The web development ecosystem was so inferior to the desktop that we are still trying to catch up with the state of the art 20 years ago. One of the earliest victims of the move to web was performance. In desktop apps the expectation was immediate (maximum of a hundred milliseconds) response times. When the world wide web arrived we were suddenly facing 10-20 second response times. Dark days for user experience. Since the late 90s the web has slowly improved. We are now able to experience near-desktop performance with our web apps. Most of this is due to dramatically improved bandwidth. Another contribution was the move to ajax, web services and single page apps. Rather than making page requests for each transition we are now making very small, efficient data requests. In spite of these improvements I still find teams setting very low expectations for performance (example: "3 second" service ...
In my formative years as a coder and architect I was mentored by several very talented engineers. One of them helped me understand a general goal of all engineering: simplicity. The best engineering is elegant in it's simplicity. Vehicles are my favorite example. The wheel itself? Incredibly simple, cheap and by far the most important component of a rolling vehicle. The internal combustion engine? A massively complex, polluting machine which we still struggle with more than 100 years after it's invention. I am so excited to see the electric motor become the heart of the automobile! In software engineering our goal is to create highly functional systems without creating great complexity. This is hard enough in itself but sometimes we needlessly create complexity by misuse (or lack of use) of borrowed code (e.g., libraries). Good engineers are always on the lookout for borrowed code which solves a problem. The boon in open source in the last couple decades has made this a rou...