When working on a project, one of the aspects you must decide on is the technology stack you’re going to use. This implies the toolkit you’re using, the components of which we discussed in a 9-part article series, as well as the collection of software needed to have your product up and running.
As much as you get lifted by your stack, you can be weighed down by it, which makes it imperative to know it as intimately as possible. Some aspects to take into account when trying to figure out the impact of the supporting software:
What programs need to be running?
Take into account the Operating System, Virtual Machine and/or Container. In the case of Java, C# and other languages, you need to take into account their VM; in the case of python or other interpreted languages, the interpreter. In the case of websites, you need to think about the web server, the network, and the client’s browser. Then there are other programs you need to interact with, like database engines.
All of those factors should impact the decisions you make with regards to your chosen approach to write the code you want to. A lot of the time it’s OK to pick whatever you’re most comfortable with, because the biggest constrain is your time – thus, I usually pick Python for quick scripts and Java for enterprise grade software: although they have heavy runtime dependencies, the support offered by them is unparalleled – and not something you need to download or get from a third party, either; their standard libraries (and reference implementations, in the case of Java) are amazing.
So, the next time you’re going to spin up a quick app to automate some paper shuffling you may want to skip a multi-tiered application; and when you’re making an app for many users, or for constrained devices (low-grade smartphones), you may want to choose a close-to-the-metal environment with low overhead.
If you’re just starting – I get this question a lot – just pick something you can get help with the easiest, and stick with it.