Saturday, October 17, 2020

4 Types of Computer Programmers and Diversity

 There are many kind of classifications of computer programmers. usually this is done either by era (old vs. young) or by skill (hacker vs. pro vs. hobbyist). In this post, however, I will explore the different personalities of computer programmers and why certain groups are customarily discriminatory againsts others. I hope that by writing this essay, I can illuminate the problem and hopefully, increase tolearance for each other, thereby increasing diversity.


The Mathematician

The first group of computer programmers are the Mathematicians. These are people good with numbers. I mean really good with numbers. If you look at early computer programmers, these are the guys writing down the code. I don't think that it is coincidence that the first computer language is FORTRAN, which stands for FORmula TRANslator. The early code are basically mathematical formulas, and this includes the contribution by generally recognized first computer programmer: Lady Ada Lovelace.

That's why when people ask what skills are necessary in order to be good computer programmers, they would answer that you need to be good at Math!

The languages they use tend to be functional ones: Haskell, APL, Lisp, and even Prolog and Mathematica. These people prioritize logic above all. 

Scripting Language: Python.


The Software Engineer

 As computer industry expanded, the need of more and more people became more dire. Hence, the desire to expand the talent pool. Hence, the engineers. In the past, these are hardware engineers because we just didn't have the knowledge about proper software building. Hence the rise of the program development/management techniques: Extreme Programming, Pair Programming, Object Oriented Programming, Flowchart, UML, and other things such as how to properly architect the software and the appropriate scheduling techniques in order to ensure the proper completion of the program.

What are the skills necessary to be computer programmers? Puzzle Problem Solving, Object Oriented Programming Language, Knowing the whole language, including libraries, standard and third party. Of course, the study of Algorithm is extremely important, and Coding can go deep into the arcane knowledge of the platform. The more clever the algorithm, the better of a computer programmer.

The languages they use emphasize Software Architecture Foundation: Java, C++, C#, Objective C. Some Assembly as well. These people emphasize Frameworks and Structures above all. They will never be caught using a Functional or Procedural languages. To them, the faster the CPU, the better the machine.

Scripting language: Python, Perl, PHP. Some Lua for quick and dirty projects.


The Artist

Some people who write code are actually artist, and I don't mean artists as painters and illustrators, although they're doing coding as well. I include into the group writers and poets as well. This is more of a personality trait, instead of specific technique. To them, it is not important the the code runs the fastest, most efficient algorithm possible. As long as the code does not run too slow, then the simplistic elegance of the code is more important to them. Computer Memory is more important than CPU speed.

The languages they use emphasize cleanliness of coding. Processing, Python, C and BASIC  are good candidates. Surprisingly, convoluted languages such as Perl and Javacript makes a showing because Perl is extremely flexible, while JavaScript is necessary in order to render artistic HTML pages. You can also find artists who code in Interactive Fiction, and they tend to use the plain English Inform 7, as opposed to the more concise and compact Inform 6.

Scripting Language: Perl, Ruby, JavaScript.


The Businessman

Or Business Person, if you want to be politically correct, nowadays. These kind of people do not know computer programming and have little desire to learn. These people have been impressed by some spreadsheet coding tricks, that is really simple common sense to me. In fact, the use of spreadsheet  for consistent data entry sometimes requires some selling as they don't think more that word processor is necessary, regardless of the fact that they keep confusing their tabs and spaces. These people don't care about sophisticated technology or beauty. They are dominated by the question of being able to finish a project on time and under budget. Workflow consideration is important because Deadlines is everything.

Programming languages, if you can call these that, are VisualBasic, Spreadsheet, Macro, and any point and click software creation packages. Whatever works.

Scripting Language: DOS, Bash, or whatever is packaged into the system that doesn't require much learning.


As you can see, there are definite types of computer programmers. It's only natural since as the time progresses, computers permeates more and more into our daily life amd therefore it will only expand the scope of computer programming. Certainly, these are just big generalizations, and there are quite a bit of overlap between the type. This is because current environment does not distinguish between these different types.

Is that a problem? In my opinion, yes. Suppose you want to hire a computer programmer. Of course you have to go to the interview process. Chances are the interviewers Software Engineers. What if the interviewee are Mathematicians? Well, they'll probably makes some mistakes in coding. Fail. Or Artists, where they really don't use Object Oriented paradigm like a "proper" Engineers would. Or how about Business type? I imagine the complaint would be something like "Yes, apparently you know quite a good number of clever algorithms, but how many programs have you finished on time!?" Different personalities, different priorities.

The short end of the story is that once a company hires a group of Software Engineers, future employees are going to be more Software Engineers, with no Diversity possible.

This is a problem in the software industry, and a devious one because it is largely invisible. Couple that with the current hostile attitude of the industry, and you have a recipe for disaster. Guess how many YouTube videos of computer programmers  telling you the different type of computer programmers while still staying inside the Software Engineer archetype? Lots. How many do I see actually expanded the types without being insulting? None yet.

Until the computer industry is more welcoming to the diverse personalities of people out there, new programmers will always be hard to come by.  Please be kind to other kind of people, including those that do not code "correctly."


No comments: