Programming is Programming

Date: 2022-01-20

Programming is programming.

It always baffles me when I see jobs listed for Java Developers, PHP Developers, .NET Programmers, etc. I really don't buy into this idea that these are so different from one another. They all have so much in common than they are different. A for loop is a for loop in all languages. All Turing languages are there for the same reason. The syntax is a surface-level thing.

Besides, when someone signs up for such a job, they are never going to be doing just that. Everybody has to work with a whole variety of tools. They have to deal with libraries that they never learned before. They have to use so many cross-cutting things like Databases, Version control, etc.

A web server is a web server regardless of which language it is built in. It handles cookies, routing, data mapping, caching, etc. The difference is in surface-level only. These concepts are what matters - not the language and the little specifics which are just a Google search away

Take front-end development. Front-end development is not about knowing React API or Angular API. A front-end developer's work is breaking the app into components, organizing the state (knowing what to put in the top and which remain encapsulated inside components).

One could argue that there is expertise that comes from working with something for a long time. But things are changing so fast in day and age that we get new languages, frameworks, libraries, runtimes at an astounding rate. It is hard to keep up with the details - not sustainable. What we can keep in our minds are patterns and concepts. They are timeless.

A programmer's job is not knowing the syntax and APIs by heart. A programmer's job is to know how to split the code into modules, anticipate error conditions and handle them beforehand, decreasing complexity, increasing cohesion, decreasing coupling, giving good variable names, making code readable. This is a timeless concept. They are multi-domain. This applies to all kinds of development, across all paradigms.

So programming is programming whether it is done for CLIs, web servers, IoT, blockchain, game engines, or DoM. It is just looking at the requirements, understanding the constraints, reading documentation, coding, debugging, saving and running the code somewhere.