The software developer must have a system administration experience

Original author: Professor Beekums
  • Transfer
Being a software developer and being a system administrator are, as they say, two big differences. Many people mix these two professions, but the skill sets of these classes do not overlap much. Developers write code. Sysadmins support computer systems for this code to work.

System Administrator / Software Developer


The activities of both are 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, this makes sense. Two different skill sets 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 make a worthy project.
image


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


Cool!

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

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

image


Why is it important? Remember that a developer writes a program, usually on a single computer. He could write code that saves the image on the same hard drive as the web server, which is the same for him. But problems appear when the program is faced by a third-party user, such as you.

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

image

If this goes here ... - If your picture gets here
Then users who go here won't see it = then users coming here will not see it. The


correct way to fix this is to use a distributed file system, which is available for 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 is detected only when users start using the program on real web servers.

There are dozens, if not hundreds, of other examples. Someone must explain to the developer how these things work, but, they say correctly, only the experience can be understood. My own experience provides a deeper understanding .

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

1. Writes a program.
2. Sends it for review and / or testing.
3. Gets the program back to fix errors.

And this can be a rather lengthy process.

The situation may be worse, because often sysadmins do not want to view the program sent by the developer. This means that the user will be the first to encounter all bugs! This type 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 to engage in system administration. I know that there are people who really like this, but for me, such an activity is just a constant source of dissatisfaction. The system administration is a set of knowledge and experience that is different from that required for writing programs, but I need it on my way to bring to 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 runs only on my computer is useless. A program that matters is one that runs on web servers that all other people use. Just writing a program means only half of what a real developer is required to do.

Also popular now: