TLDR: Just like most things, the answer is not straight forward. The answer to this question varies based on individual, their interest, and their penchant. That said IMHO cross-platform development is a great idea mostly because of the ‘write once, run everywhere’ concept.
What is Cross-Platform Development?
Cross-platform development (Aka multi-platform development) is the practice of developing software to implement on multiple computing platforms. Here platform is the environment that the software executes on. So, the platform varies by hardware, software, and/or combination of both. For the sake of simplicity and to limit the scope of this article let’s only focus on software platforms (especially, mobile operating systems).
Almost every platform has its own standard language that they recognize. In Native Development, we need to develop software in this particular language for each platform that we want to execute it on. For Example, Objective-C or Swift for iOS, Java for Android, C# and XAML for Windows Phone, and so on. Unlike that Cross-platform development allows us to develop our software in one universal language and it handles the task of making the software execute on different platforms. For Example: Flutter allows us to program in Dart and is able to run it on Mobile (iOS and Android), Web (Web Platforms), Desktop (Windows, macOS, and Linux), and Embedded systems (Fuchsia OS).
Why Cross-Platform Development?
Let’s rephrase that ‘why not cross-platform development?’ Cross-Platform Development help develop software with consistent and uniform UI, across multiple platforms and usually takes less time and resources.
From developer perspective
- Programming native apps would require high levels of skill in multiple different languages that would still be good to have but won’t be critical for the development
- Don’t need to code in multiple separate languages. Additionally, bugs that are present in the common code base only needs to be fixed once (for the most part)
- Familiarity with development tools helps decrease development time whereas fiddling with multiple tools that use multiple different standards can easily get confusing.
- Updates can promptly be synced over all platforms and devices, thus saving time and money.
From business perspective
- Time to market is reduced since developing one program takes a lot less time than building two or three apps for each device platform. So, less time but maximum reach which increases exposure and future ROI
- Creating and maintaining separate software for each platform can be much more expensive
- Faster time to market on more than one platform allows the owner to collect user feedback, establish a position in the market and secure any patents if necessary before another company can do the same.
- Bring Your Own Device (BYOD) policies are becoming more and more common in the workplace, cross-platform apps can help achieve quicker deployment and adoption at a lower cost.
From the user/consumer perspective
- Uniformity increases between different platforms creating a more seamless user experience especially when switching between platforms.
But nothing is perfect
- Sometimes inconsistent communication between the native and non-native components of gadgets can cause performance hiccups
- Performance-related glitches can lead to poor user experience
- Cross-platform development may drain more power(battery) and a lot more resources than with a native application
- Cross-compliance during the development phase makes the code sluggish and even reduces the speed.
- Cross-platform applications are not able to take total advantage of native-only features to provide excellent user experiences.
But then again, these issues are being worked on. Tech giants like Microsoft, Google, Facebook, Abode, and many more are significantly investing and developing their Cross-platform development tools, this has even caused a surge in interest in Cross-platform Development.
So, go learn ‘Cross-platform Tool’ with support for most platforms?
No, not really. For those who haven’t read TLDR, it’s not that simple, what you should learn depends on your requirement. If your requirement is developing of Machine Learning System then a language like Python or R might be what you need, if your requirement is developing ROM of a CPU then a language like C is what you need. Similar is the case for cross-platform tools. To the best of my knowledge “Unreal Engine” is the tool that supports the greatest number of platforms (about 15 platforms) but that doesn’t mean go learn Unreal Engine. Here, are some great articles on some Cross-platform tools: “11 Popular Cross-Platform Tools by Amyra Sheldon”, Where Do Cross-Platform App Frameworks Stand in 2021?”.
Other interesting things to look into
- Web Apps (Hybrid-Cross Platform Apps)
- Doom – Epitome of Cross-Platform Execution, runs on almost everything from a supercomputer to a pregnancy test kit. Learn more at itrunsdoom.tumblr.com