Cross-platform tools: Slash your development time in half
Whenever you have a great idea for a mobile app, there’s one question that all mobile developers have to wrestle with:
If you restrict yourself to a single platform, then you’re immediately limiting your potential audience, but developing for multiple platforms isn’t easy! Creating and maintaining multiple code bases is a great way to double (or perhaps even triple) your development time.
So why not shave weeks, months, and potentially even years off your project, by developing for all the major platforms simultaneously?
Cross-platform development tools allow you to target multiple mobile platforms with the same codebase, eliminating the time you’d typically spend translating, rewriting, and re-compiling your code to work across different platforms.
There’s plenty of cross-platform development tools available, but some of the most popular include:
Xamarin is a set of developer tools that let you target Android, iOS, and Windows using a single C# codebase, .NET, and the Visual Studio IDE. Applications built using Xamarin leverage system- and hardware-specific APIs, so your application will be optimized for each platform. Plus, if you use Xamarin.Forms then you’ll have access to a cross-platform UI toolkit, so your application will always look perfectly at home, regardless of what platform it’s installed on.
You can download Visual Studio, already configured with the Xamarin tools, over at the Xamarin website.
Flutter may be a relative newcomer, but as a Google product it’s an attractive choice for Android developers who are interested in expanding into iOS.
The Flutter SDK provides widgets that are styled according to Cupertino (iOS) and Material Design (Android) guidelines, so you can create a single user interface that looks the part on both Android and iPhone.
However, Flutter doesn’t support Windows, and as a relatively new technology it doesn’t have the level of community support you’d typically encounter with more established cross-platform tools. Flutter is also based on the lesser-known Dart programming language, so you may need to spend some time learning Dart before you can start using Flutter.
Focus on creating an MVP
Instead of waiting until you have a completed project, you should focus on creating a Minimum Viable Product (MVP) that includes your app’s core functionality, and then release this MVP as soon as it’s ready.
By setting yourself frequent deadlines and releasing little and often, you can maintain momentum and keep your development cycles streamlined and laser-focused. One startup even managed to create six products in six months by following an MVP strategy!
As soon as your first MVP is out in the wild, you can start collecting feedback to help shape subsequent releases. By delivering only the features your users want, you can get the maximum return in the minimum amount of time, especially when compared to meticulously ticking off every idea on a long, unfocused “To Do” list. Only then can you find product market fit.
Agile is a “work smarter, not harder” technique that favors short release cycles, frequent deliveries, and an MVP approach to software development.
By following agile best practices, you’ll receive early and ongoing feedback from your users, so you can correct your mistakes early, and ensure you’re not wasting time on features that your users don’t want.
We take a closer look at Agile, and related methodologies, in this post onSoftware Development Methodologies, which compares Lean and Agile.
Wireframes: Explore your ideas beforewriting code
A wireframe is a low fidelity visual representation of your app’s UI. By creating wireframes, you can explore many different designs, structures, and architecture in a small amount of time, and then refine your chosen concept in a fast and efficient way through follow-up wireframes.
Wireframing can also help you identify any UX or design issues beforeyou start writing code, so you can make major changes to your app without having to spend days or even weeks rewriting code.
If you’re working as part of a team, then wireframes also provide a common language that ensures everyone is on the same page at the start of your project, helping you avoid time-consuming misunderstandings and miscommunications.
Automated Testing: Run More Tests, in Less Time
Testing can be a time-consuming process, but if you’re going to deliver a secure, high-quality application then you’ll need to subject your code to vigorous testing.
Automated testing can dramatically reduce the amount of time it takes to test your app, by simultaneously running a suite of tests that would take hours to perform manually. Since it’s possible to apply multiple testing methods at the same time, you could potentially use automated testing to increase the number of tests you perform, while decreasing the amount of time you spend testing.
There’s a range of automated testing software available, including Appium. Appium provides a popular test automation framework for iOS, Android, and Windows applications, and uses vendor-provided automation frameworks, so you can test your application without having to spend time re-compiling your code. Appium is also cross-platform, so if you’re targeting multiple platforms then you can write your code once and then reuse it across iOS, Windows, and Android.
If you’re developing for Android or iOS, then alternatively you may want to try Calabash, which provides automated acceptance tests and integrates with Xamarin Test Cloud.
Regular Quality Assurance and Code Reviews
Instead of delaying Quality Assurance (QA) until you have a finished product, you should conduct a thorough QA test after you reach each milestone. The same concept applies for code reviews. According to a case study conducted by SmartBear, a company that had regular code reviews saved $150k that they would’ve spent on bug fixes if they didn’t do code reviews.
Consider Using Third Party Assets
Why waste time reinventing the wheel?
There’s plenty of websites dedicated to providing ready-made assets that you can just drop into your mobile projects, including music, graphics, and even code. A few well-placed third party assets can help you deliver a high quality product while also reducing your development time.
Get a Helping Hand
Does your project involve one or more tasks that fall outside of your area of expertise? In this scenario, it may make sense to get some outside help!
Imagine your in-house developers are all experienced Android developers, but you want to launch your latest app on Android andiOS. Instead of forcing your team to battle through unfamiliar territory, you could work with a developer who already has proven experience with iOS development, such as a remote developer, contractor, or freelancer. Enlisting the services of someone who is more experience, whether it’s a development agency or remote team member, leaves you free to focus on the areas where you are the expert.
Alternatively, you may decide to delegate non-essential tasks to an external team member. For example, if you needed to create some add-ons for your core product, then you might move this work to someone else, leaving your team free to focus on perfecting your core product.
However you choose to delegate the workload, hiring remote developers can help you complete more work, in less time, and gives you the flexibility to scale your workforce up and down, to suit your project’s changing needs.
Just remember that the quality and reliability isn’t always guaranteed, so it’s important to do your research before bringing any third party onboard. If you’re unsure,