Oh how time flies! I’ve been quite remiss in providing my yearly predictions in the Software development space. Must be the mini economic depression that we’ve gone through that just doesn’t appear to be ending for many folks. I am surprised myself to find the last time I published my predictions was in 2007 That’s a year before the epic market crash.
Well it does turn out that most of my predictions (or rather observations) came out to fruition. That is,
What is surprising is how little these trends have changed in the last 4 years since I made them. Appears to be just steady improvements (or declines) on a year to year basis. What is interesting to note is that when a concept or technology has a declining, it does persist. The only question is the velocity of the decline. Take for example WS-* Standards and EJB, over the past 4 years progress in this space has slowed to a crawl (EJB) or halted completely (WS-*). Of course these spaces are not entirely dead economically. Massive amounts of investments have been made in these two specific areas and their certainly is a bias and vested agenda to continue to pursue. These are today’s generation’s COBOL legacy apps.
My other 2007 predictions have had made less of a discernible progress. Parallel Programming ( at the CPU level) and Semantic Web. There of course have been massive progress in the CUDA space and in LinkedData, but these technologies are not as ubiquitous as I had predicted.
There however is one prediction that is experiencing a trend reversal. JCR in the years following 2007 made robust progress in that it was common to see many new Java projects based on it. However in recent years, likely because of competition with NoSQL, there seems to be a compelling alternative to document storage.
Despite the economy (which I attribute more to global equilibrium), these are very exciting times for software development. There is a sea change that is happening that will rapidly change the face of the industry. Here are my 2011 predictions for software development.
Enterprise AppStores – Okay, folks have been pointing this out for years using different names ( Widgets, Gadgets, Midlets etc) I mean Java itself got its boost because of Applets. We now know what has come of applets. The Thin Client revolution was hyped a decade ago. Well it turns out, it has arrived, courtesy of faster and more energy efficient processors and gesture driven devices. Enterprise will demand the kind of apps they find on their smart phone and tablets. Gone will be monolithic apps with loads of features that are rarely used. In will be highly specialized applications with high usability. Corporations, the control freaks that they are, will insist on governance. This ultimately implies an AppStore per enterprise basis.
Semantic Indexing – So now that you have these massively horizonally scalable data stores, you are faced with an even bigger problem of finding anything. Full text engines like Lucene/Solr will be standard fare, however the Enterprise will demand higher fidelity in their searches and this will drive demand for indexing beyond inverted indexes. Expect to see servers with hundreds of gigabytes of DRAM to enable this.
Big Analytics BigData will need analysis. Analysis is only as good as the quality of your data. There will be a rising demand for higher quality data sources, data quality tooling and of course alternative ways to analyzing and visualizing data. There will be intense debates between Map-Reduce NoSQL and traditional OLAP vendors. NoSQL will need to progress quickly enough before customers realize their inadequacies. Look to Hadoop to increase its dominance in this area.
Private Clouds – Despite the economic and technological incentives of outsourcing one’s infrastructure, there will always be that organizational and human need to build and own one. Private clouds of course will overlap and need to integrate with public clouds, simply because the dominant business model will be SaaS. Look for OpenStack to emerge as the clear leader.
OAuth in the Enterprise – OAuth is already widely used in consumer applications. With OAuth 2.0, I expect rapid adoption in the enterprise space simply because there is no other viable alternative. Application coordination will be a necessity and OAuth will be its enabler in secure environments.
- Inversion of Desktop Services – Services that we commonly expect on a desktop like the file systems, short cuts, contacts, calendars and programs will increasingly reside in the cloud. This is a consequence for the need for greater security on mobile devices and the need to share information among muliple devices and muliple collaborators. The filesystem of the future will be collaborative shared spaces. We are already seeing Services like Dropbox, Instapaper, Evernote, Springboard, Delicious and Twitter serving as the means of coordination between mobile applications.
Proactive Agents – For decades people have been forecasting the emergence of digital personal assistants that would actively react to the environment on one’s own behalf. The emergence of always present smart mobile devices and cloud computing shared spaces will be the catalyst for the developing of active agent based computing platforms and frameworks. At present, most computing is merely reactive, that is servicing web requests only on command of a user. Future computing will include a proactive aspect that suggests courses of actions to users. Semantic technologies like Zemanta and OpenCalais provide intelligence to writers by suggesting tags that are relevant to a written document.
Migration to Scala – My hunch on the programming language that will have the highest growth in adoption and interest would be Scala. Scala’s appeal is that it is elegant and can express complex constructs succinctly. I see most adopters migrating from serverside developers looking for a new shiny toy to play with. Scala frameworks like Lift and Akka, and IDEs like IntelliJ will be the wind that propels this migration. Alternative JVM languages like Groovy, Clojure and JRuby will likely plateau in popularity as a consequence.
What now is becoming apparent with these trends is greater fragmentation in IT. No more is one kind of database, one kind of programming language, one kind of operating system, one kind of UI framework going to be viable. One cannot control anymore what its built on (specifically for any cloud based service), however one may still have control of the data (see: Dataportability.org) and this will be key.