How do you make sure you pick the right development platform for your application? We run into this question a lot from non-technical managers who want to make sure that they’re making the right decision.
If you ask a programmer, the answer may be, “What I am used to working with.” If you ask a development manager, the answer may be, “What’s hot right now.”
Obviously, neither of these answers support a sound managerial decision. Whatever you choose, you’re making an investment – in money, time, learning, people, and other resources. You’ll want to invest wisely.
As with all good decisions, the best answer comes from asking some key questions:
How long will this application be viable?
If you are developing a consumer app for a mobile device, or a game of some sort, it may be short-lived – a year at the most – so the platform you select isn’t as critical. It’s fine if you select the hottest platform going at the moment.
At the other end of the spectrum, if your application is a complex B2B program, one that could be around for years or even decades, the last thing you should do is go with a hot platform. A good rule of thumb is that if you think your application will be viable for 10 years, pick a platform that has been going strong for about half that time (5 years). This is not an ironclad formula, but it will get you into the ballpark.
Whatever you do, remember that all computer languages have had their day – even the “monsters” like COBOL and FORTRAN are hopelessly out of date now. And the cloud and new technologies such as Dockers and containers (which allow you to create code modules that can be moved from one platform to another) are taking us to yet another generation of platforms.
What kind of programming, support, and educational resources are there for the platform?
You don’t want to get stuck, down the road, searching desperately for a programmer who “still” programs in that Old Platform Language. And if something goes wrong or needs to be fixed, you don’t want to be stuck with no way to fix it.
You can even get to the point where you are forced to completely rewrite the application in a more recent language, and none of the old code you have in existence can be ported over to the new application. Even Twitter had to completely rewrite its application when the original version written in Ruby on Rails could not scale to meet the demands being placed upon it.
One of the most common roadblocks in the development process is a situation where a bug keeps occurring or a feature does not perform as expected. The solution is often found in discussion areas where coders doing similar work have run into the same roadblock.
When discussing which platform to settle on, ask your programmers to grade the “strength of the developer community” on a scale of 1 – 10. Ask them to show you examples of the discussion groups.
Other questions to ask:
- Who’s using it?
- Why are they using it?
- Who are their customers?
- What are the cost vs. benefit considerations?
More detailed technical considerations
You will want to make sure your tech team is being mindful of these basic technical considerations:
- Hardware. The hardware that the application will run on will require you to choose the best language for that hardware. This seems obvious, but if you decide to write in Java for Android phones, then later decide to add in iPhone, you will most likely find yourself writing a new application from scratch. As much as you can, be generous in your predictions of which hardware the application will run on, so you develop for the maximum flexibility from the start.
- Efficiency and speed of development. The more modular the better; pre-programmed code modules can speed development (but can also add unnecessary code; good programmers know how to eliminate unnecessary code from modules). The industry has been moving toward “interchangeable parts” for many years, with Docker containers being the latest example.
- Prior use. The platform should be one that has been used for that type of application or in your type of industry previously.
- Scalability. Can the platform handle “unanticipated success”?
- Security. The more popular the platform and the chosen operating system(s), the greater the likelihood of being hacked. Whichever language and platform you choose, make sure you run vulnerability tests on the application while it’s being developed. You’ll want to use a tool similar to the one offered by one of our divisions, rather than waiting to find those holes (or have them found by others) after the application is finished. Using continuous integration to identify security issues as the code is laid down is a mitigating strategy that will reduce the need for costly rewrites down the road.
What are the major development platforms?
Java. Web, mobile, Desktop. Windows, Linux, Mac. Not based on Microsoft technologies. Strong in “write once, run anywhere” functionality. One of the most popular programming languages in the world today. Java applications are often compiled into their own instruction set called Java bytecode, which can then be run on a Java Virtual Machine (JVM) on any computer architecture or operating system.
C. Mobile, desktop, code embedded in devices (Internet of Things, or IoT). Strong cross-platform ability, speed, and power. Old school, but still popular in certain spaces. Development will be slower than more modern platforms, but can be made more performant than almost any other language.
C++. Mobile, desktop, code embedded in devices (IoT). Known for its efficiency and compatibility. Many popular web applications are built with it, including Google Chrome, Firefox, and MySQL. Faster development times and similar performance to C.
Python. Web, Desktop. Used for cross-platform scripting. Used for numerical computations, scientific computing, web and other applications.
C#. Web, mobile, desktop. Developed by Microsoft. Typically used for Windows development, but also viable for cross-platform mobile development through Microsoft’s endorsement of the Xamarin framework. Known for its ability to support rapid application development.
PHP. Web. Known for its robustness and simplicity. Server-side language used for web development.
JavaScript. Web, mobile. Web-oriented programming language that is used mostly for controlling web page behavior. It can also be used for non-web applications. Open-source—the technology is not supported by a single company, but is dependent on the strength and support of the programming community. This language is popular and well-tested. The de facto client-side language of the web browsers.
Ruby. Web, desktop. General-purpose programming language that is not used as widely as C, C++, Java, or Python.
Node.JS. Server-side JavaScript, endorsed by Google, still fairly new. Good for getting your application up quickly, and performs well, but the unstructured nature of JavaScript can make it difficult for teams to collaborate on a project using it.
Objective-C. Apple’s take on object-oriented C. Obscure until the iPhone took off. Strangely constructed; while it is supposed to be compatible with C and C++, it’s almost impossible to take something written in Java, Javascript, C, C++ or C#, port it into Objective-C and expect it to work. You are more likely to have to build the app from scratch.
Swift. Apple’s next-generation language. Easier to use than Objective-C, and shows promise for wider acceptance since Apple open-sourced it. Less efficient and carries more ‘bloat’ than its counterpart, but with rapid obsolescence of mobile platforms this should be only a minor concern.
Web APIs. There’s a lot of talk about APIs, but they’re not a “platform.” They are bits of JavaScript code that act as a request-response message system. They are fairly shallow and are used to make it possible for one application to interact with another.
There are other resources available to help you decide, if you want to do a bit of research. For example, CodeEval.com (a developer community with 40,000 members) publishes a chart showing the most popular coding languages, and how much or little each language has changed in rank from year to year. IEEE has a useful “2015 Top Ten Programming Languages” chart.
One last piece of advice. For a decision like this, it is often appropriate to hire a consultant who can act as an advisor with no financial incentive outside of helping you make the right decision (in other words, this person, or this person’s company, should not be doing the work after you decide). The advisor should have a lot of experience under his belt, both business and technical, and enough technical chops to be respected by your technical team.
For more information on application development please download a guide for CEOs about creating great software from Applied Visions today.
hbspt.cta.load(2637494, ‘7be9b60b-533e-4a11-9fb1-d6f541024810’, {});