In order to highlight some of the specific issues that can develop, and what can be done about them, I asked a panel of 13 entrepreneurs from YEC the following question: When creating software for multiple platforms and OSes, what is one problem beginning developers may not know about? What should they do to avoid or overcome the issue? Their best answers are below:
- Cross-Platform Shareability
Be aware that 100 percent code sharing across platforms is a fairly unreachable goal. You cannot go into a multiple platform project with the idea that code will cross-pollinate — at most 60 percent of the code can be shared. Prepare for this by allocating time for the project appropriately and preparing what content can be shared, and what cannot. Go into the project prepared for dual work. – Jared Weitz, United Capital Source Inc. 2. Establishing a Design System
Maintaining a consistent experience across platforms is incredibly important to maintaining the professionalism of your brand and product. It’s a huge undertaking for a designer to have to mock up every screen for every platform. To stay consistent and reduce design cycles, build out a “design system” that codifies the appropriate use of colors, fonts, textures, button styles etc. – Tony Scherba, Yeti 3. Bug Reporting
A software project is never finished. Beginning developers have not yet seen the constant flux of bugs that will inevitably pop up over the lifetime of their software. To combat bugs and compatibility issues, create an easy way to find a link in the UX for users to report bugs and request features. A tool like UserVoice is invaluable to companies that create software applications. – Brian Greenberg, True Blue Life Insurance 4. Fragmentation Issues
Fragmentation issues within certain operating systems can create complex and time-consuming issues. Understand the systems’ limitations and dependencies before developing for that platform. Be sure to perform the necessary QA and testing when working with more complicated OSes. – Jordan Edelson, Appetizer Mobile LLC 5. Picking the Wrong Tools
One of the biggest problems developers face is picking the wrong tool for the job. If you ask any seasoned developer what tools they use, they will likely have very specific answers. When you’re starting out, consider the problem you’re trying to solve and whether or not this tool is the right choice for the task at hand. – Blair Williams, MemberPress 6. QA Testing Generally, new developers have this idea in their head that their product will need some testing to eliminate all the program bugs. What they don’t anticipate is the sheer number of issues and bugs that can arise during development. QA testing is not a one-time deal. You need to continuously test your product through each phase to ensure you’re delivering a complete, bug-free product. – Syed Balkhi, WPBeginner 7. Building Something With Too Many ‘Moving Parts’
If you think of software as a machine, you can imagine that the more moving parts something has, the more likely it is that it will break down. Have fewer moving parts and it’ll be less likely that something will break down. The same goes for software: If you have too many complex functions, they are more likely to break when running across multiple platforms or OSes that can introduce conflicts. – Andy Karuza, Relm Wellness 8. Speed
Depending on what kind of coding language or toolset you use for a multiplatform application, some OSes are going to have an easier time running it than others. Be sure to perform regular speed tests on different platforms with each new build and consider bringing on additional talent to work out any kinks that could lead to bottlenecks. – Bryce Welker, Beat The CPA 9. Usability
A beginning developer should already understand the need for portability between platforms and operating systems, but they may overlook the importance of usability. Just because the software runs on a desktop, tablet and smartphone, doesn’t mean that end users will interact with it the same way on each device. It’s wise to invest time and resources to use case studies to optimize all target platforms. – Jaime Manteiga, Venkon.us 10. Maintaining Brand Consistency
When creating software for multiple platforms it’s important to maintain brand consistency. By maintaining a consistent design across platforms (such as user interface, messaging, etc.), your users will be able to interact with your software easily and recognize elements, which speeds up the learning process. – Stephanie Wells, Formidable Forms 11. Choosing Platform Agnostic Technologies
One major problem I have seen is beginning developers picking the wrong frameworks/technologies to build a platform agnostic application. For example, if you are going to build a mobile product that will first work with iOS devices but you know you want the product to work with Android devices, make sure you choose a language that can support both, or at least allow for quick portability. – Alex Gonikman, Truenorth.co 12. API Compatibility
Understanding API compatibility is a crucial element when developing software for multiple platforms. A rule of thumb is to always use Unicode for the APIs. As of today, most of the platforms, browsers, etc. support Unicode (example: UTF-8, UTF-16, etc.). You must prioritize taking the time to read up and experiment to get the desired results. Don’t let setbacks keep you from developing a good product. – Björn Carlsson, Monocl 13. Developing for VR and AR
One of the biggest decisions when developing for virtual reality is choosing a platform. You have two decisions basically: engine and VR headset. For the engine, you have two choices: Unity and Unreal. When developing for VR headsets, take into account the specs and processing power available per headset type. PC-powered conversely provides much more power than standalone VR, for example. – Lorne Fade, VR Vision Inc