Early in my software career when I was coding Windows user interface components I would often use 2 colors and flat look for icons and bitmaps. I did so because it was expedient and I knew my programmer stand-ins would eventually be replaced with professionally designed graphics. For me, playing around with pixels to create 3D and other lighting effects was an exercise in utter frustration.
It's now many, many years later and it is hard to believe that my pathetic programmer graphics now represents the latest user interface design paradigm. Flat two color graphics: I invented that... and probably so did many other developers around the world now scratching their heads. In software development if you stick around long enough eventually everything becomes in vogue. Even ideas that were considered silly, bad practice or obsolete a few years ago become the latest rage.
I remember just starting to code for the earliest versions of Windows and making fun of coworkers still stuck using vi on dumb terminals connected to VAX machines. Today, the Terminal and Vim are in. I thought we left the days of dumb terminals, insert mode and command characters behind us forever but If there is one thing we do well in software development it's recycling old technology and old paradigms. Even the Atari game console and Commodore 64 are back in flashback versions and my kids enjoy playing Galaga at the local movie theater.
Today, technology and software development practices change faster than the latest fashion. XML web services today, JSON tomorrow; PHP today, RoR tomorrow; RoR today, Express tomorrow; Java and C# today, Node and JavaScript tomorrow; Node is out, Go is in. Remember Angular? A little premature? Perhaps, but isn't React and isomorphic JavaScript the latest thing? It wasn't too long ago that only a single page load was needed for the entire application even the login. Now it's considered taboo because of initial load time and SEO but do we need a virtual DOM and isomorphic JavaScript applications as the solution? Not to worry, probably in a few months I'll change "remember Angular" to "remember React" and the cycles continues.
We've gone from proselytizing writing highly typed and highly structured code to writing untyped terse code. Multiple inheritance is back: derive from Circle and Button to create a round button. We've been through all this in our C++ days only to ditch the approach in C# and Java. We went from inheritance galore in C++ to all-out interfaces with COM/COM+ and CORBA only to return back to inheritance in C# and Java. Interfaces made a comeback with SOAP but quickly replaced with JSON web services and dynamic JavaScript.
In software development, we quickly move from one paradigm to another often forgetting the history of how we got to where we are now. We identify a problem, go overboard with a solution only to throw out the baby with the bath water and revert back to the old ways with a modern twist. This cycle is endless and accelerating.
In this blog I hope to shed light on new technologies that are quickly becoming the latest fashion. What seems popular today can quickly become obsolete tomorrow. Pick the wrong horse - and it's never the best horse - and a lot of effort will be wasted. In this blog, I want to take an objective look at new technologies and software development practices and share my two cents.
Hope you find this blog to be informative or at least entertaining.
No comments:
Post a Comment