Speed up the development process

Leonardo Sarra
6 min readJun 5, 2019

--

Building an app is a costly and intensive process, both in time and financial resources. Sometimes you just don’t have the budget to build an expensive app, or you need to get to market quickly to seize an opportunity. Should you slash app features, or look elsewhere to speed up the app development process?

In this article we’ll take a look at 3 different tools you can use to speed up your app development process. And that cuts both ways: you can reduce the cost of building an app, and at the same time release the app quicker.

Most of the tools we’ll check out also help you speed up your project’s iterations. Those tools consist of particular programming languages, frameworks and mobile backends.

A framework: Xamarin

Xamarin is a technology that allows to develop native apps for multiple platforms using a single C# codebase and .Net. Thanks to that, a lot of common code can be shared and reused, allowing to reduce the codebase drastically. This gain is not possible if we have used platform specific frameworks and SDKs (such as Xcode or Android Studio) because it would require to write the whole app for each targeted platform.

Thus, Xamarin is particularly fitting when we develop multi-platform apps.

Before diving more into Xamarin, let’s take a step back and look at its core: the .Net framework.

.Net is a set of APIs created and developed by Microsoft. It is similar to the Java SE API (without the graphic parts) but much better.

Since .Net is just a specification, many implementations are available. The most famous one is the .Net Framework on Windows which is developed by Microsoft itself. Mono is another implementation for the Linux platform. More recently, Microsoft released .Net Core which is a multi-platform implementation available on windows, Linux, macOS and even on Xamarin.

If your are interested in developing a shared UI Xamarin offers Xamarin.form which is a library that allows to develop native UI using C# and XAML that is compatible with a lot of platforms.

Xamarin.Forms was originally developed to target iOS, Android and UWP. Hopefully, thanks to its design choices and the efforts of the developers, many other other ones were added later. The main supported platforms currently are: iOS, Android, UWP and macOS. However, Xamarin team is working on supporting more platforms such as GTK# , WPF and even Tizen !.

Programming languages: Kotlin

Kotlin is a programming language developed by Jetbrains which is de-facto the default android programming language.It provides null-safety, it is statically typed and runs on top of JVM/JS or Native (LLVM).

There are many reason for why Kotlin is viable tool:

  • Open-source
  • 100% interoperability with Java
  • Expressive & concise code with lean syntax
  • Enforces null safety
  • Easy to learn
  • Functional programming features
  • Support for MPP (Multi-platform projects)
  • Great IDE support (IntelliJ Idea and Android Studio)

Thanks to Kotlin your code will be more expressive and more concise (thanks to less boilerplate, string interpolation, default parameter, type interference).

But what makes it truly shine is the null-safety provided at compile-time thanks to the mutable and immutable variables.

As an obvious implication of the Java support capability, Kotlin programs can use all existing Java frameworks and libraries, even advanced frameworks that rely on annotation processing. The interop is seamless and does not require wrappers or adapter layers. It integrates with Maven, Gradle and other build systems.

It is approachable and it can be learned in a few hours by simply reading the language reference. The syntax is lean and intuitive. Kotlin looks a lot like Scala, but is simpler. The language balances terseness and readability well.

It enforces no particular philosophy of programming, such as overly functional or OOP styling.

It imposes no runtime overhead. The standard library is small and tight: it consists mostly of focused extensions to the Java standard library. Heavy use of compile-time inlining means functional constructs like pipelines of map/filter/reduce compile similarly to an imperative version of the same code.

Kotlin supports multiple platform but this mean that you will have to write pure Kotlin code and not using native libraries, moreover you still have to write platform specific bits (like UI View) using native code for that platform (e.g: Java/Kotlin for Android, Swift/Objective C for iOS).

Note that Kotlin Multiplatform support is still an experimental feature and things are subject to changes and it still requires youto have a good-enough knowledge of the platforms on which you are working on to write the platform-dependant bits of your code

A mobile backend: Firebase or Azure

Mobile Backend-as-a-Service or MBaaS was born to allow mobile developers who were short on time and wanted to build solutions by taking advantage of the latest features in a mobile device as well as manage complex service commands. The early leader in this nascent space was Parse.

Parse set the groundwork for all MBaaS companies, providing us with cost-effective and easy-to-use tools for MBaaS. Earlier this year the service shut down. But the momentum of Parse opened up a path for other services to compete in the same space. The three emerging leaders in this space are Google’s Firebase, Apple’s CloudKit, and Azure Mobile services.

Those services offers a set of features that may come in handy to the developers:

  • Client SDK support for building native applications on Android, iOS, and Windows devices, as well as cross-platform applications using the Xamarin framework
  • Ability to sync data online with a remote DB while maintaining a local version.
  • Different options for user authentication and authorization, including integration with social media platforms (such as Facebook and Twitter)
  • Customized push notifications

While those features may help you in developing your app you still have to remember that. Your entire backend is proprietary (BaaS), owned and run by another company and you have no control over it.

Moreover it may become Exceptionally expensive at scale compared to REST and migrating from it means rewriting all backend tests and much backend code.

What’s next

While those are just tools that may help you in optimizing your development time, remember that you simply build better software with time.

By outsourcing some of the painful elements of your app you are sure that you are using the best of the best technologies to do the job.

Why reinvent the wheel if you can build upon ready-made tools?

Always remember to discover and understand how these tools work on the inside. An app template speeds up development now, but beyond the bootstrapping phase it pays dividends to invest in a graphic designer.

Building on top of a cloud-based back-end service is convenient, but in some cases it’s smarter to build your own webservice. The wiser developer knows when to use which tool, and has a diverse set of tools in his toolkit.

Unlisted

--

--