Platforms: Part 10 of How to Commission a Software Project

Author Image

This platform article is part of the “How to Commission a Software Project” series.

What is a platform?

For the purposes of this article, I’ll use the term “platform” to describe the layers of the primary tech stack you’ll use to develop and run your software project. We’ll try to uncover what operating system(s), software dependencies, programming languages, data structures, frameworks, and delivery methods will be used for your project. As alluded to earlier, native applications are a subject on their own. We’ll talk about that next week.

A courtesy platform glossary (so we’re on the same page):

  • Operating Systems essentially help software (and humans) communicate with hardware. Think: Linux (and all its flavors), MacOS, Windows, ChromeOS, Android, and iOS.
  • Software Dependencies are the 3rd party libraries or applications required to run your software. Is it on the web? You’ll need web server software. Does it require maps or image processing or email or SMS? There are are software libraries for those, too.
  • Programming Language is the specific set of rules and usually a toolset your developers will use to instruct your software how to act. Think: C, Java, Python, PHP, Go, and a few hundred of their best friends.
  • Data Structures are the agreed-upon blueprints for how the info your software needs is transmitted and stored. This includes database formats like SQL and common multi-use data types like JSON or XML (by the way, XML is evil – don’t use it).
  • Frameworks are usually programming-language-specific and help developers work more efficiently at organizing the way an application works. As an example, much of what we do at Fivable is PHP, but we use a PHP framework called Laravel. If you’ve heard of Ruby on Rails before, it’s a cutesy name to describe Rails, which is a framework for Ruby. Get it?
  • For the sake of this article, the Delivery Method illustrates how your users interact with your software. Is it a web application? Desktop native? Mobile? Voice-only?

Describing Your Stack

With a few exceptions, describing the tech stack for your software will require acknowledgement of many of these platforms. Some platforms are agnostic of other layers (e.g. you can run JavaScript pretty much anywhere). Other playforms are highly dependent of the other layers (attempting to run C# .NET on MacOS is silly at best).

You may have heard the acronym “LAMP”: Linux, Apache, MySQL, and PHP. That describes most of the stack for many applications and implies you’ll be delivering with the web. Earlier in the series we spoke about serverless technology. The reality is there’s still a platform buried there somewhere. Eventually we may start describing the stack simply by the cloud-based services we use. That is “we use ALFD: AWS, Lambda, Fargate, and DynamoDB.”

Platform Understanding

A bit of well-formed technical fluency will get you pretty far with your trusted software engineering team or a good CTO. Additionally, that same trusted team will be able to recommend the right stack for the job. Pay close attention to the platforms though and ask questions about the recommendations. If the answer seems thin, or suspect, do some quick research. Every shop has a limited skillset and not all will say “this project isn’t a good match for the platforms we’re used to, let’s look elsewhere.”

As is my usual recommendation, ask questions. Ask lots of questions. Hopefully this provides some context for you to get meaningful answers.

Interested in getting help answering platform planning questions for your software project?

Get Fivable to Help