The nascent of social media, web content proliferation, as well as resurgence in idea centric startup businesses naturally has led to a formation of a hybrid software development ecosystem that reaches across business borders, offers a sort of technological liberation to software developers, and architects.
A community of software engineers and technology incubators are continuously looking for and creating better frameworks and tools to develop that next billion-dollar app to solve utilitarian life problems. Having a private Github repository or active contributions to one of open source projects has become almost a prerequisite for developers seeking employment at startups.
Post IPO companies, such as PayPal, Facebook, Netflix, Twitter, etc. are a hot bed for technological innovation within software development arena and are heavy adopters and evangelists of open source. Another set of startups and spinoffs have formed around technology solutions integrated within a platform as a service (PAAS) offering, for example Pivotal (Spring, GemFire), Typesafe (Akka, Scala), etc.
Old guard firms using open source APIs are frequently advised to establish a community presence and a stable relationship with open source developers by attending meet-ups, sponsoring social gatherings, contributing to open source from within, etc. Moreover, even most traditional enterprises with stuffy IT departments have realized that innovation and tactical adoption of new technologies is key to their survival in today’s marketplace.
All of these forces have produced (and continues to produce) a tremendous number of new frameworks, APIs, and platforms to consider when faced with architectural decisions and choices on green or brownfield software projects. For example, just reviewing web frameworks – there are over 20 in Java, 7+ JavaScript based, 3+ in Scala, 6+ in Ruby, etc.
These shifts have also supported interest and innovation among existing and new programming languages – according to Github, besides Java, C++ and C#, JavaScript and Ruby were at the top of the repository leader board, moreover Scala, Clojure, Haskell and Lua were in the top 20!
However frustrating (buggy and impossible to learn all), abundance of languages and frameworks is ultimately a good thing. There are certainly forces of technology evolution through natural selection at play here. Better and stronger survive and thrive, weaker die off. It takes wisdom and foresight on a tech leadership’s side to make right choices when building extensible and maintainable software, be it a Single Page App or a large enterprise system.
Having worked for over 10 years with Java SE and EE, developing and designing traditional enterprise systems with a sprinkle of open source frameworks and APIs, as well as having had an opportunity to manage software development teams and vendor relationships, I would like to present a series of posts attempting to explore current trends and review some of the important technologies from architect’s and tech management’s perspective.