Select Page

At OptimalBI us developers have the choice of a number of programming languages. Which always leaves some questions about which language to use for a given situation, most of the time it’s about picking the right tool for the right job. So here are a couple of things that these languages do well, and possibly a few things that they struggle with.

C# (.Net Core 2.0)

C# is a really beautiful language. It has managed to keep up with the demand of modern web applications without losing the stability and manageability of a classic statically typed object oriented language. This allows development teams of any size to easily create applications that are designed to be extended and maintained for decades to come, without having any painful development rebuilds of existing systems. The DateTime class from C# is one of the most useful classes when it comes to dealing with durations, so C# really is a must for any applications where dates are a core component.
The only drawback of C# is that the current versions (.Net Core 2.0) is missing a few useful components. While 99% of applications won’t see any issues, some developers could run into usefull components missing. Having C# being cross-platform is a great time for all.

Use when

  • services where date and time are used a lot.
  • the structure of an object oriented language with proper inheritance is useful.
  • you want to rely on the accuracy and easy maintenance of a compiled, statically typed language.
  • want to make use of some very well fleshed out and maintained libraries.
  • you need simple integration with data storage services.
  • writing software that requires a lot of threading.

Avoid when

  • you are building a small script like application.
  • rely heavily on WebSockets (for now).
  • need a language that won’t change through updated (.Net Core 2.0 is still improving) .

Python (3)

Python is one of the programming languages that developers love to argue about. Many developers find that use of curly brackets is deeply ingrained in their thinking, and as a result struggle to love python. If you find that you can get past that, python is a great tool. Many small automation tasks are trivial when using python, and its interaction with the operating system is great too. Python isn’t just suitable for small applications, its class and module system allows for large applications to be built in a very clean and maintainable fashion! Python also has great language features for digging data out of string variables, which makes it a go-to at OptimalBI when we need to quickly mine a text file here or there.
Where python struggles is with creating Web API’s. While there are some very well done frameworks out there (Flask and Django to name a few), there are to be too many annoyances (lack of a good HTML templating framework for example) to commit to making any large API with them. Also the python package manager can make for one too many headaches when trying to deploy complicated applications over different cross platform systems, or do anything with it actually…

Use when

  • you are automating operating system level tasks.
  • you want to ship a small executable in a tiny package (pyinstaller)
  • you need good tools for accessing and reading/mining textual/string inputs.
  • you don’t trust your developers to follow a style guide.

Avoid when

  • you have a large amount of complicated external dependencies, and you need the service to be cross-platform.
  • you have learnt to hate the python package manager (its really bad).
  • writing complicated Web API;s
  • hosting complicated Webpages.
  • you think python 2 should still be used.
  • for some reason developers are addicted to them squiggly {} fella’s.
  • using threading.


Node.JS is the king of the web application world at the moment, and it deserves it. With its neat non-blocking way of dealing with standard web related issues it can pack a punch, even when hosted on a small server. Node.js also has access to some of the worlds class leading frameworks for developing web applications like expressjs the winner of our “What’s The Best Restful Web Api Framework” series. If you are looking to build a web-facing application then give Node.js a very serious consideration. Not just great at web applications Node.js comes with the best package manager we have seen for any programming language, NPM. NPM is a joy to use and deals with many of the issues that we see in other languages. Node.js also has one of the best array of libraries available to download using NPM, which is a good way to get great functionality into your application without having to maintain too much code.
Where Node.js falls down is in its use of JavaScript. JS is inaccurate at best and allows developers to create working code that no one can read or maintain easily. This is easily mitigated with proper development processes and use of tools like TypeScript to increase the accuracy of Node.JS applications, but it is best kept in mind when setting off on a new Node.JS project.

Use when

  • the application is consuming and providing a lot of web services.
  • hosting a large web application on a small server.
  • your application can benefit from non-blocking requests.
  • having libraries do most of the works is good.
  • using the gorgeous npm is fun.

Avoid when

  • you don’t trust your developers to write good code.
  • you want to use JavaScript and not TypeScript.
  • you have a high churn rate of developers.
  • writing applications that will implement a plugin system.


So that is a few notes on what certain languages are good at, and how we choose between them when starting a new piece of code at OptimalBI.

Until next time…
Coffee to Code
Tim Gray


Tim writes blogs from a developers perspective – tools, tips, API’s – check them out here

%d bloggers like this: