2017 Trends in Software Development

With the New Year now upon us, it becomes a great time to take a look at some of the major trends impacting the world of software development. Understanding the shifts in a continually evolving industry helps position your application engineering team for success both now and in the future. Maybe your shop is already part of making these trends the new reality in the technology sector?

Chat-based Tech becomes Commonplace for Developers

Last year, we talked about the use of ChatOps for software development teams, allowing engineers and QA staff to use smart chatbots to streamline portions of the process. Users can easily start builds, test scripts, automate virtual environments, and more using a simple messaging app that keeps the entire team in the loop.

One of the most popular technology trends for 2017 is the increased use of chatbots and Business Bots throughout the business world. Expect chatbot usage to greatly expand among software developers. The era of DevOps requires efficiency, communication, and collaboration, with chatbots and ChatOps making life easier for all.

Another notable 2017 business trend is Advanced Collaboration, and the use of chatbots is helping to make this reality happen for developers and other departments within many technology businesses.

Mobile App Development grows in Importance at Businesses

Mobile apps have been around since before the introduction of the iPhone. Their increased use at businesses of all sizes – especially at smaller organizations – is a predicted trend in the tech world for 2017. Nearly half of all small businesses are expected to leverage mobile apps in their daily operations over the next year, according to the mobile development platform, Biznessapps.

Software development shops focusing on business apps need to look at ramping up their Android and iOS development efforts. Java remains the language of choice for the majority of Android projects, while Swift is gaining on Objective-C for iOS initiatives.

Docker becomes Mainstream at Development Shops

Many businesses strive for continuous deployment to stay competitive in the modern business world. This is one of the reasons for the popularity of Agile as a methodology and DevOps or Tribes as an organizational structure. This places the onus on development teams to leverage a wide variety of tools to make processes more efficient, like Docker for migrating applications across virtual production, development, and QA environments.

In 2017, Docker, as well as other package-based tools, are expected to become commonplace at shops across most business sectors. Vagrant, which works like Docker but is able to package an entire environment, is another similar application now becoming the standard for managing virtual development environments. Virtualization and packages are now a must for nearly all application engineering shops.

Functional Programming keeps Cloud Servers running Smoothly

As more and more mobile devices connect to the Internet – with their users expecting a seamless experience – servers on the Cloud need to prevent becoming bogged down in a massive amount of traffic and requests. Enter functional programming. Functional languages, like Clojure and Scala, are essentially stateless, allowing them to run more efficiently in parallel on servers using different processor cores or in distributed environments.

2017 is expected to see a rise in popularity of these and other functional programming languages, given the continued growth of the Cloud and mobile device connectivity.

Keep an eye on these trends throughout the upcoming year to see if they come to fruition. Check back regularly at the Betica Blog for additional dispatches from the world of software development. Thanks for reading!

Swift – the Apple Programming Language for Mobile Devices and More

Until 2014, if you wanted to write applications for Apple iOS (the iPhone or iPad), watchOS (the Apple Watch), tvOS (Apple TV), or even a macOS desktop application, the most straightforward way involved using the Xcode IDE with Objective-C as your language. This changed when Apple released a new language, known as Swift. The main advantages it brought were a relative ease of learning, improved safety, along with a more readable and concise programming style.

Let’s take a closer look at Swift to see if it makes sense to use for your team’s Apple programming projects or more.

The Genesis of Swift

The development of Swift began inside Apple in 2010, with an internal project team led by Chris Lattner. The language’s first iteration was introduced to the world at Apple’s WWDC in 2014. New versions are typically released in concert with an Xcode update – Swift 3.0 becoming available in September of 2016.

Although originally a proprietary language owned by Apple, Swift entered the open source domain under the Apache 2.0 license in 2015. This also allows developers to target Linux in addition to Apple’s array of platforms. RemObjects Software even makes the Elements compiler that lets Swift code target .NET, Android, and the Java runtime. 

Needless to say, the language is growing in popularity, as evidenced by IBM’s website allowing you to write Swift code and quickly see the resultant output. Apple themselves released an iOS app, called Swift Playgrounds, that provides an introduction to the language as well as the practice of programming. It is suitable for anyone from ages 12 to 100.

An Overview of Swift’s Features

It is difficult to go into too much depth on a programming language in a simple blog post, but here is a quick overview of some high-level features of Swift. The language syntax is similar to most other object-oriented languages (Objective-C, Java, C#, C++) with the notable absence of semicolons at the end of every line. Object notation using dots is easily understandable by any veteran software engineer.

Automatic memory management is a useful feature, greatly simplifying the coding process. Namespaces, generics, and native error handling (using a try-catch-throw block) are some of the modern language capabilities also provided by Swift. It even supports a few patterns from the functional programming world – most notably, map and filter.

In addition to memory management, a variety of compile-time features help enforce code safety. For example, your code isn’t allowed to set an object to nil; the complier throws an error in this situation. Xcode also includes a debugging console that provides a built-in interactive version of Swift.

If your team already has a few projects written in Objective-C, you are easily able to use Swift modules within the same codebase. This allows a quick migration to the new language or a mixture of both to leverage the capabilities and experience of your development staff. Finally, the compiler produces high-speed native machine code, providing fast performance to your users on any supported device.

The growing popularity of Swift, even beyond Apple’s proverbial “walled-garden,” makes it worthy of exploration if your shop is writing applications for the desktop or any type of mobile device – from wearables to smartphones. Leveraging Apple’s Swift Playgrounds iPad app or the IBM Swift Sandbox website offers an easy way to perform your own due diligence.

Stay tuned to the Betica Blog for additional dispatches from the wide world of software development. Thanks for reading!