5 Key Trends in Application Development
There are undoubtedly more people able to write code today than ever before. The explosion of free “learn to code” resources such as Coursera, CodeAcademy, and Code.org have helped to drive the increased interest and education. As the prevalence of programming skills has grown, key trends have emerged in the application development landscape that go beyond new programming language features and framework enhancements. In modern application development, developers are expected to go the extra mile and contribute value beyond coding responsibilities. They are now tasked with translating the business needs into the tools, the technologies, and the solutions that will empower business operations and contribute to organizational growth. In short, application developers have more influence on the enterprise than ever before. With this new found influence, deep technical skills combined with communication and collaboration with management can help capitalize on the following 5 key trends to ultimately build better software.
1. The Rise of Containers
At Kenway Consulting, we are excited by the growth of container management systems because we have seen many organizations struggle with manual software migrations across different environments.
An open source project called Docker is helping to address these types of issues by packaging applications with their associated dependencies, thus allowing them to run anywhere. These “docker containers” wrap up the code, runtime libraries, system tools, etc. to guarantee the software will always run the same, regardless of the environment in which it is running. Docker can run on any major Linux distribution or on Microsoft OS, and it can run on any infrastructure, including the cloud.
What are the key benefits of containers?
- Easily deploy software across multiple servers
- Eliminate manual reconfigurations across multiple servers
- Automation of deployments
- Software is not dependent on infrastructure
As Docker matures, enterprises will be adding the use of Docker to IT roadmaps and developers will need to be ready to embrace this era of containers. This could be the necessary solution to finally implement Continuous Delivery and to move past the struggles we have all faced with “environmental issues.”
2. Real-Time Data: Search, Store & Analyze
Today’s ultra-competitive business landscape has fueled the need for real-time data and analytics for decision-making. A great tool that has been gaining popularity among application development teams is Elasticsearch, which offers the capabilities to search, store, and analyze data in real-time. Elasticsearch is an open source search server based on the Apache Lucene project. It offers the ability to search through many different document types and it includes a “full-text” search engine. The beauty of Elasticsearch is that it offers a scalable search solution through its distributed data storage architecture. This means you can start small and easily scale horizontally (i.e. shard) as you grow.
Once you’ve stored your data in Elasticsearch, there is another related product in the Elastic suite called Kibana, a data visualization engine that allows you to explore your data on custom dashboards. The tool is incredibly useful for data discovery and creating visualizations to drive decision-making and real-time insights. Furthermore, these insights can be shared across your organization, providing accessible and consistent insights to multiple individuals or business units.
While Elasticsearch and Kibana are great tools for real-time data and analytics, there are other solutions worth considering such as Apache Storm and Apache Solr. Before committing to a tool, we recommend assessing the strengths, weaknesses, and cost of each tool to understand which one is the best fit for your business needs.
3. Integration of Legacy Applications
The ability to integrate disparate applications and services is a common problem facing many businesses, especially those whose legacy technology stands in the way of modernizing applications and building new features to capitalize on revenue opportunities. Fortunately, there are now some mature products able to connect these applications and offer an easy way to communicate.
One of these products is the open source solution Mule ESB, an enterprise service bus (ESB) to help with system integration. For those new to this concept, an ESB is a software architecture that allows for communication between independent (but mutually interacting) applications in a service-oriented architecture (SOA).
Let’s take a simple example: Firm X is in financial services and has three distinct applications for valuing investor portfolios on a daily basis. As a result of various acquisitions, these applications are on the following platforms: 1) Java/JMS app, 2) .NET app, and 3) Mainframe (COBOL) app. All three of these business applications perform similar business functions, but they need to communicate with each other as Firm X proceeds to build out new products. In this example, Firm X is a candidate for an ESB to orchestrate the communication between applications and to implement an architecture that can scale with business growth.
ESBs are gaining popularity because they are platform-independent and they can provide a common security model to help with authenticating, authorizing, and auditing the communications on the bus. An ESB may be a software architecture worth exploring in order to modernize your legacy applications if a complete re-write is not feasible.
4. Design and User Experience
Many years ago, application developers focused their efforts on building business applications based on the idea of functionality over form. Well, expectations have changed! Today, the success of many business applications hinges upon its user experience. The driving force behind the user’s experience goes beyond how it looks, but also how it works. To continually improve the user experience, techniques to track metrics need to be in a place and developers need to take an analytical approach to gain insight as to how people use the application.
Let’s use an example: capturing analytics on your application’s “bounce rate” can provide insights regarding users that only visit one page of the site, and then leave before viewing other pages. Likewise, capturing analytics on your “exit rate” can provide insights into users that have left the site without completing their intended journey. Capturing these metrics can help determine if a particular page causes a multitude of users to abandon the site. Application developers can be thought leaders in this area by finding potential user experience issues and recommending creative ideas on how they can be fixed. Although this example might be most directly applicable to eCommerce websites, other business applications can benefit from similar analytical approaches (e.g. customer service applications, procurement and supply chain processes).
A great recent example of this trend is the Salesforce acquisition of an application development firm, AKTA, which differentiates itself by providing a superior user experience. By mixing the development expertise of Salesforce with AKTA’s user experience knowledge, Salesforce should be able to better empower their users to use their tools to their full potential.
5. Continued Investment in Java and C#
Open source software continues to build its robust user community on GitHub, the premier hosting site for open source projects. To gain an understanding of software trends on GitHub, we reviewed the raw data and visualizations GitHub produced in to understand trends and make actionable recommendations.
Here are a few quick observations:
- Java continues to gain in popularity and is ranked #2
- C# jumped two spots in the ranking over the past year to #8
At Kenway Consulting we think that the rise in popularity of Java and C# re-affirms that your organization should continue to make investments in application development in these areas. We also think that both of these programming languages will continue to dominate the market as they are well suited for developing web applications and web services that can be accessed via the Internet.