I guess every industry has its own terminology and sometimes its own jargon. IT is no exception. If I were to describe how IT professionals communicate I would say that they use a language composed of 80% Polish and 20% more or less correct English. Very often in their speech there are also three-letter abbreviations or anagrams taken directly from English-language documentation of new technologies. The industry has been growing rapidly for a long time. It is hardly surprising that the naming of some new technology is adopted immediately and there is no time to create native words. However, there are some exceptions, quite a few of which were adopted years ago. IT engineers sometimes use words that sound exactly the same as words used by everyone on a daily basis, but have a completely different meaning to them. This sometimes leads to misunderstandings. In today’s episode, I’ll list some words that IT engineers understand a little differently than everyone else. I hope that after listening to this episode, your understanding of the familiar IT professional will become a little easier.
The first word that IT professionals understand differently than non-IT people is “environment.” For an IT professional at work, “environment” is nothing related to nature or biology. Rather, for an IT professional, environment is a word used to describe the surroundings of a running application, or one might say its environment. An application’s environment can be either an operating system or a cloud or server room where it has purchased colocation. An application, as it can be freely copied, can have several such environments. For example, one specifically created so that new code changes can be quietly tested in it, without fear that the customer using it will demand a refund. A second such environment can be created specifically for the customer, so that he in turn can use the application peacefully, knowing that no one will shut it down for him on a test basis. Ultimately, the customer should be provided with a product that has been tested and is ready for use. Environment is generally understood as the environment in which the application runs. It can be both about closer environments, such as the operating system, and further away, such as the server infrastructure. Environment for an IT specialist is quite a broad term, for this it sometimes needs to be specified in conversation.
The second word that IT professionals understand differently and which is at the same time very much related to the word ‘environment’ is ‘production’, ‘Production’ is a shorthand term for ‘production environment’. Since we can have a test environment, on which tests of the latest changes to an application take place, we can also have a production environment, that is, the very one used by customers. On such an environment the application runs with the latest and tested changes considered stable. Sometimes in companies developing some applications we hear the phrase ‘we can let these changes go to production’. This means that the code changes made by the development team have already been tested on the test environment and can be released on ‘production’ i.e. the production environment for the customer to use. Users using the application always use the very copy of the application that runs on the production environment, or ‘production’ for short.
The third word that we also often use and which is also a spark for misunderstandings is the word “abstraction.” Abstraction is probably associated by most people with something contrived and unnecessary to anyone, or a strand of modern art. In IT, this word has a completely different meaning. It also stems from the specific nature of programmers’ work. Around the world, different teams of programmers within even one company sometimes deal with completely different, unrelated issues. Some deal with programming the communication of a Bluetooth mouse with our laptop, while others deal with the design of graphical interfaces. All of them, of course, work so that somewhere all their work will merge into one coherent product, for example, some program. But both the Bluetooth programmer will not have time to study the GUI, and the GUI programmer may not even have a clue how Bluetooth works. For this, every programmer tries to encapsulate his or her work in what we just call an ‘abstraction’ or ‘abstraction layer’. A Bluetooth programmer encapsulates the vast majority of his programmed functionality in parts of the code that he only knows. He makes the other parts available so that they are very simple to understand and use. If another porgrammer working on some other issue needs to use Bluetooth, but without changing the way it works, all he will need to know are these few simple documented functions. He won’t have to study exactly thousands of lines of code how Bluetooth works. He will only use functions with such descriptive names as ‘Connect’ or ‘Disconnect’ etc. How exactly these functions work and how many processes in them is no longer relevant to him. So a person using the results of a Bluetooth programmer will quickly grasp this without having to learn the implementation details. This also allows the Bluetooth programmer to deal only with bloothem, while a programmer with another specialization will take care of his duties. Such encapsulation of more functionality in a kind of black box is what we call creating a ‘layer of abstraction.’ If we want to use some functionality, all we need to do is to use a certain small set of commands that the black box offers, and what happens in it doesn’t have to be known to us. One might even be tempted to say that building ‘layers of abstraction’ is very much the reason why IT is developing so quickly. One programmer will build one layer of abstraction, another will build another on top of it, another will gather several and build another on top of them. As a result, somewhere on top of these layers, extremely complex programs are being created that combine a whole lot of functionality and are getting easier to use. So even though the word “abstraction” sounds a bit corny, it’s really meant to describe the process of reducing something complex, to a simple form that most people will be able to intuitively understand.
I Speaking of abstractions, it’s impossible to leave out the fourth word, ‘object’. Object is precisely one way of creating layers of abstraction. If a programmer were to program a car, he would create an object, that is, such a virtual creation that would contain data, such as engine capacity or top speed. Such an object would also have certain functions like ‘start engine’ or ‘accelerate’. Having such a type of object, the programmer can very easily create as many such virtual cars as he wants, and only with the parameters of the object regulate for himself whether it is a sports car or a delivery truck. If the programmer wanted to refuel such a car, he would have to take it to another object of the ‘distributor’ type and run the ‘refuel’ function. It is worth noting here that the function is called ‘refuel’. It is not a dozen functions named ‘Turn off the engine’, ‘open the hatch’, ‘unscrew the cap’ and a dozen more, including ‘pay’ at the end. All it takes is one simple ‘refuel’ and the whole process is carried out to the best of the programmer’s knowledge of that car model. Objects greatly simplify the work of programmers. Not only do they encapsulate data about an object inside it, but they also allow us to act on that object through functions whose details we don’t really need to know. Sometimes when we see some very descriptive function name like ‘accelerate’ we don’t even have to think about what it is for and how fuel injection works. We just press the gas and go faster.
The fifth word that primarily programmers understand differently is ‘print’. This word we can actually translate ourselves silently into the word ‘print out’. In countless programming languages, the ‘print’ function or its similar functions literally write out some text to a file or screen. Usually, as a programmer learns a new programming language, the first thing he or she does in it is to use the print or similar function to write out the words ‘hello world’ or ‘hello world’ on the screen. This has become a kind of tradition. If any of you pick up a book on the basics of programming in almost any language, there is a very good chance that in its first pages will be somewhere written the code print(‘Hello World’). When such code is run, the screen will display this simple ‘Hello World’ message. And since the English word ‘print’ has its equivalent in Polish, sometimes programmers say to print or ‘print out’ some text. They then mean to simply write out on the screen.
The sixth word I wanted to mention is ‘exception’. An exception is actually something fairly special for a programmer, but already in a different way than we would like. An exception is a kind of error that occurs while the program is running. When a programmer performs some action and realizes that sometimes not everything can go as planned, he should prepare his code for such an exceptional situation. For example, if a very large file is being loaded, the programmer may assume that on weaker computers memory may become completely clogged. In such a case, during such loading, the operating system will report an exception for too much memory usage by the application. It is the programmer’s duty to prepare a set of routines for such a circumstance, which will aim to remedy the situation in some way, such as loading only part of the file. Otherwise, the program can be forcibly closed. Did it happen to any of you to see an error notification that reads ‘unhandled exception’? This is precisely one such exception. And what’s worse, for him there was no repair procedure programmed. For this often immediately afterwards the system itself forces the closure of such a program. Thus, the exception is something very important for the programmer. It is indeed an exception, but unfortunately in the bad sense. In general, exceptions can both carry information about the type of error, and can be unspecified. However, every time the programmer must be ready for it.
The seventh word, which I have already said myself more than once in previous episodes, is ‘server’. This word you most likely already understood correctly, but there is one point that deserves clarification. A server can be a physical or virtual machine that runs some kind of operating system. However, sometimes the word ‘server’ is used to describe a server application that is waiting somewhere on that physical server for new tasks or connections. We sometimes hear from administrators ‘there is a mail server running on this machine’. And it is in this context that a mail server is some mail application running on some server. Sometimes such ambiguity creates some confusion, but quite quickly you can learn to extract from the context what server our interlocutor is referring to. As a last resort, you can always ask, and this is no shame.
The last word, which is especially often the cause of somewhat amusing situations among IT professionals, is ‘kernel’. The kernel of an operating system is the kind of program that is responsible for virtually all the communication of electronic hardware that sits in our computers with software installed. It is basically the basis of the operating system. Many would say that the kernel is basically the operating system and everything else like the GUI, drivers and others are add-ons. The kernel sometimes also called the ‘core’ of the system runs almost from the very moment the computer starts up. We can’t shut it down without shutting down everything else. The kernel is involved in virtually every action we do on our computers. After all, a computer is an electronic device, and we can’t do anything with it if we don’t communicate with those electronics. The kernel is just such a center of communication with the hardware. In Linux systems, the kernel is updated quite often like other software. You can therefore keep several versions of it with you locally in case some new one doesn’t work for some reason. So don’t be surprised if an IT friend, most likely an administrator, tells you in all seriousness that he needs to remove some kernels for himself because they are old and take up too much space…. Well, in English, however, a little more cleverly resolved this nomenclature. For this, sometimes a direct borrowing from the English. And so instead of the word “kernel” (in polish) we use the word “kernel” (in english) – the most popular substitute.
There are many more words understood differently by computer scientists. To know them all you would probably have to start working in this profession, which I strongly encourage you to do. I hope that a few of the words listed here will help some understanding of familiar programmers, administrators or testers, as IT is increasingly beginning to appear mysterious and inaccessible. Maybe it’s because of so many layers of abstraction?