For many years, mobile was at the forefront of innovation in the software field. The smart device revolution posed many complex problems for the development community to solve, from connectivity to back-end integration and resource usage. Today, many of the most pressing challenges have been addressed with varying levels of success. Yet mobile remains a potent force for change in the enterprise space.
Mobile pushes continuous integration forward
Being Agile as a concept has been around for a long time now, but it has been primarily focused on project management. Modern CI tooling is making it possible to create a software development process that is truly Agile as well, allowing teams to automate build and test functions for continuous feedback. Mobile was born in the era of CI and this fact shows in the tooling that has evolved in tandem. Hans Dockter, CEO and Founder of Gradle, indicated that mobile development basically assumes the use of CI. “In the CI process, the build tool is essential. For example, in Android it is everything. It is where you compile, obfuscate, run tests, and deploy to the apps store. As we move forward, the build will become more and more the heart of CI.”
Dockter noted that complexity is baked in to the mobile development process. “Android is very interesting. If you look at how Java was for a long time, it was very stable and in a way very simple. It almost didn’t matter which version you were using. Creating a Java library is simple compared to the Android environment. Even writing a simple Android app is complex. You have to deal with many different environments, tests, and so on because of the fragmentation of the platform.”
The tools enterprise traditionally used simply could not meet the demands of mobile. “Ant and Maven are not created for that complexity. Java developers had simple challenges. They might want to create a variant that differs slightly (free vs. paid) or debug vs. release. These were simple requirements but even modeling that with Ant or Maven was terrible. With Android, you might have to create submodules for every variant. You might be dealing with a 20 sub-module Maven build. The complexity of Android and requirements pushed those older tools to their obvious limits.” This pain continued until the introduction of the Gradle DSL that allowed developers to describe subversions using a few lines of code.
According to Hans, enterprise had been feeling the pain of dealing with subversions in WepSphere and WebLogic servers for a long time, but they had gotten used to it. Now, changes in Java are increasing the pain across the board for enterprise development. “What’s interesting is that Java is becoming more complex. Version 8 was a big change with Lambdas and now they need a library for 7 that works with 8 as well. Java 9 may be even more disruptive. Here, Gradle can excel.” In this way, the same tools that make mobile feasible in the first place are set to make traditional enterprise development easier as well.
Mobile and enterprise can learn from each other
It’s clear that mobile continues to attract a significant portion of the emerging talent pool, perhaps wooing them away from more traditional enterprise development roles. Trisha Gee, Developer Advocate at Jetbrains, explained why some programmers are particularly drawn to the mobile space. “It’s true that developing in mobile can be frustrating. For example, it can be difficult to do emulator unit testing and you can’t use Java 8 features. But it’s also cool to get rapid feedback on an app coming to life.”
Gee acknowledged that the enterprise is still ahead of mobile in some best practices including Agile, Scrum, pair programming and overall craftsmanship. “These things are coming late to the Android community. However, there tend to be more individuals with that hip young thinking that the Java community generally hasn’t had. Mobile app developers are producing things that people use. That’s more exciting than creating an app that turns XMLl to JSON and vice versa. Enterprise development doesn’t typically offer the same gratification as mobile.” It will be interesting to see what mobile looks like when Java 8 and soon to be released Java 9 are finally supported. Even more interesting will be the ways enterprise development may evolve to attract younger innovators into the space to drive value for business.
What’s next for innovation in mobile?
Meanwhile, the Mobile Innovation Summit, which will be hosted in New York for 2017, is abuzz with many ideas that make it clear that the mobile space is still evolving. Topics for the upcoming summit will include real-time communication, UX, app execution, rebuilding native, and mobile e-commerce. There does seem to be a decided shift toward refining existing concepts rather than coming up with entirely new concepts. This leaves the field open for the next big idea.
Arun Gupta, VP of Developer Relations at Couchbase, offered his opinion on what this might be. “I would say with Android and iOS right now, there’s not a lot of innovation happening.” Instead, Gupta sees the new frontier as P2P and D2D development where the traditional network is cut out of the loop and devices speak directly to each other. “The fun stuff is figuring out how to integrate your deployment variables, your edge devices, and actually derive meaningful information from it.” From processing data locally to sharing information offline with ultra-low latency, the future of mobile development may be more device-centric than ever.
How to become a Jenkins expert
Struggling to learn Jenkins? Check out these great, step-by-step Jenkins CI tutorials. They’ll make you a Jenkins CI expert in not time.
Step 1 — Download Jenkins and install the CI tool
Step 2 — Create your first Jenkins build job tutorial
Step 3 — Inject Jenkins environment variables into your scripts
Step 4 — Fix annoying Jenkins plugin errors
Step 5 — Put the Jenkins vs Maven debate behind you
Step 6 — Learn to use Boolean and String Jenkins parameters
Step 7 — Do a Jenkins Git plugin GitHub pull
Step 8 — Add knowledge of basic Git commands to your DevOps skillset