A platform means many things to many people. For purposes of this series of articles, we’ll define a platform as being a set of technologies (operating system, hardware, run-time environments, programming languages, frameworks etc.) on which software applications are created. Also, for purposes of focus, we will look at platform selection from the context of a startup company – though much of the decision process applies equally well to software development projects within established organizations.
The selection of a platform is a critical decision for any startup developing software as this is one of the most difficult and expensive things to change at later stages in the process.
For most applications that startups would select, the platform wars have been reduced down to a few broad changes:
- Java/J2EE and related technologies
- Microsoft ...Net
Of course, there are other platform choices (like mobile platforms, embedded platforms and others), but I’m going to focus on the above three as those tend to cover the majority of situations I’ve encountered – and where I have the most experience.