Choosing the right tool: How to pick the right programming language

Jack of all trades, master of none. Often better, than a master of one.

Adam Savage

Master of one

When I first started programming, I had figured I would learn python. It was easy enough for a young me to learn. It was powerful and could do a whole lot. I told myself the more time I spent in this language the better I would be. I spent about two years learning python. It taught me a lot about programming. From variables to functions, user input, all the basic stuff we learn in our intro classes.

Jack of all trades

Python was not where I stopped. Shortly after I picked up C, and watched many courses available online to study more programming theory. I understood how efficiency is measured in a program, and how to avoid a lot of the common mistakes programmers make. By the end of that, I had the ability to understand large code bases, and proper program structure. At the core, I knew how the language was interacting with the operating system, and how my instructions were then interacting with the device drivers. Because of my early python experience, if I didn’t quite need to full C suite of tooling, I could quickly script something together as well. My tools were expanding.

Go Go Speed Racer

Enter Golang, and specifically Todd McLeod. Having access to the internet meant I had a wealth of knowledge at my fingertips. Hearing about this exciting programming language coming from Google I had decided to pickup a class on it. Perhaps It could teach me some things I didn’t already know about programming. That is exactly what happened. Learning Go gave myself an abstraction layer above C. A lot of the data models and structures I had learned to create by hand, or with helper libraries, came default in Go. I was able to use my knowledge of how C worked, and rapidly build applications with a great set of libraries and frameworks for the Go language. My understanding allowed me to jump into the Go source to see how certain things were implemented, and understand how to best use them because of this.

The glue of the internet

Well, there comes a time in a developers life when it is time to start making money on your acquired skill and ability. As much as I had wanted Red Hat to come knocking on my door, they didn’t. So instead I picked up a client to build backend services that held together a few different APIs. The language for the project was javascript and jQuery. I picked up a jQuery book from Barnes and Noble and within two weeks was building production applications being deployed to clients. I do not write this to exclaim my ability as a person, but to highlight how understanding the different layers of the application, and wide variances in languages, meant javascript was simply a syntax learning exercise, rather than learning a whole new idea or philosophy.

How to choose right programming language

When an Idea comes into my head I quickly white board how the different pieces of the application will work. How will the front end user interface interact with the backend database? Will the UI be simple enough that a heavy frame work would be cumbersome and limit to work with? These are questions I ask myself when designing and choosing the tool for my software. VueJS has become a favorite framework of mine for the flexibility. However, when building an application for the app store, I have to understand React will feel worlds different to users, and still allow developers to work with javascript frameworks. Understand how each programming language has its advantages, and disadvantages, allows me to select the right tool for the job. Golang is perfect for a backend REST API, however, unless it’s your sole language, building a simple single page application in VueJS can be done a whole lot faster, with less code, and allow for many other programmers to contribute code. Languages are tools by which we build our application. Build your toolset as a developer, and think about how each task would be done most efficiently. Do not use hammers to screw in nails. This will build a faster workflow and happier developers.