📜 ⬆️ ⬇️

Software developer must have sysadmin experience

Being a software developer and being a system administrator is, as they say, two big differences. Many people mix these two professions, but the skill sets of these occupations do not overlap very much. Developers write code. Sysadmins support computer systems for this code to work.

System Administrator / Software Developer


The activity of both is critical. Software is valuable to users in and of itself, but it cannot exist without the environment in which it operates.

Many companies prefer to keep developers and system administrators in different teams. Theoretically it makes sense. Two different skill sets and skills are two different professions. Why not be two different teams?
')
The biggest problem here is that the specific circumstances are, in fact, of great importance when creating software. Developers must understand the environment in which their program will work, otherwise they will not be able to do it correctly.

Analogy - imagine that you were offered to design a building without specifying where it will stand. You would probably do a decent project.
image


But then someone will take this project and build a house ... on the slope.
image


Cool!

If the software developer has never performed the functions of a system administrator, he will create programs that work theoretically. The developer makes the program, as a rule, on his only computer. The main part of the software on the Internet works on different computers. Huge sites like Google or Facebook have thousands of computers. But just like our hypothetical house, which stands perfectly on a plain, a program that theoretically works perfectly can collapse completely when confronted with a multitude of users. This can happen in the form of bugs or program crashes.

For example, consider a website where you upload images, such as Facebook or Twitter. Facebook and Twitter have too many users to run these services on the same server and / or computer. Therefore, they have many web servers giving you access to the website.

image


Why is it important? Recall that a developer writes a program, usually on a single computer. He could write code that would save the image on the same hard disk that the web server is running on, which is the same for him. But problems arise when the program is in front of a third-party user, such as you.

If there are 3 web servers and the image is saved on the hard disk of one of them, then 2 out of 3 people will not be able to see this image. If you have 300 friends, then only 100 of them will be able to see the image you uploaded. Here is a service!

image

If this goes here ... - If your picture gets here
Then users who come here will not see it.

The correct way to fix this is to use a distributed file system that is accessible to all web servers.

image

Put all the images in the cloud storage!

However, a developer who does not have enough experience will not do this. He writes code for a single computer. The image will be visible all 100% of the time when checking the program on one computer. The problem will be discovered only when users start using the program on real web servers.

There are dozens, if not hundreds, of other examples. Someone has to explain to the developer how these things work, but, correctly they say, you can only understand what is experienced. Your own experience gives a deeper understanding .

This understanding helps to detect errors much earlier in the development process. A developer without sysadmin work experience goes the usual way:

1. Writes the program.
2. Sends it for viewing and / or testing.
3. Receives the program back to correct errors.

And this can be a rather lengthy process.

The situation can be worse, because often the system administrators do not want to view the program sent by the developer. This means that the first user will encounter all the bugs! This kind of problem is also difficult to investigate because the program can work flawlessly on the developer's computer. It can be difficult to reproduce the problem.

Admittedly, I do not like system administration. I know that there are people who like it a lot, but for me such an activity is just a constant source of dissatisfaction. Sysadminism is a set of knowledge and experience different from that required for writing programs, but I need it on my way of communicating to the people the software that I created.

And I do it anyway. I do this because knowing the environment helps me write a program better. I do this because a program that works only on my computer is useless. The program that matters is the one that runs on web servers that all other people use. Just writing a program means doing only half of what a real developer must do.

Source: https://habr.com/ru/post/319686/


All Articles