Pull to refresh

У разработчика программного обеспечения должен быть опыт сисадминства

Reading time 3 min
Views 23K
Original author: Professor Beekums
Быть разработчиком программного обеспечения и быть системным администратором — это, как говорят, две большие разницы. Многие люди смешивают эти две профессии, но наборы навыков этих занятий не очень-то перекрываются. Разработчики пишут код. Сисадмины поддерживают компьютерные системы, чтобы этот код работал.

Системный администратор / Разработчик ПО


Деятельность обоих имеет критическое значение. Программное обеспечение представляет ценность для пользователей само по себе, но оно не может существовать без среды, в которой оно работает.

Многие компании предпочитают держать разработчиков и сисадминов в разных командах. Теоретически это имеет смысл. Два различных набора навыков и умения — две разные профессии. Почему бы не быть двум разным командам?

Самая большая проблема здесь состоит в том, что конкретные обстоятельства имеют, на самом деле, большое значение при создании ПО. Разработчики должны понимать то окружение, в котором будет работать их программа, иначе они не смогут сделать её правильно.

Аналогия — представьте, что вам предложили спроектировать здание, не указав, где оно будет стоять. Вы сделали бы, возможно, вполне достойный проект.
image


Но потом кто-то возьмёт этот проект и построит дом… на склоне.
image


Круто!

Если разработчик ПО никогда не выполнял функций системного администратора, то он будет создавать программы, которые работают теоретически. Разработчик делает программу, как правило, на своём единственном компьютере. Основная часть ПО в интернете работает на разных компьютерах. Громадные сайты, такие как Google или Facebook, имеют тысячи компьютеров. Но так же как наш гипотетический дом, прекрасно стоящий на равнине, программа, теоретически прекрасно работающая, может полностью рухнуть, столкнувшись с множеством пользователей. Это может произойти в форме багов или обрушения программы.

Например, рассмотрим сайт, куда вы загружаете изображения, такой как Facebook или Twitter. Facebook и Twitter имеют слишком много пользователей, чтобы эти сервисы работали на одном сервере и/или компьютере. Поэтому у них множество веб-серверов, дающих вам доступ к веб-сайту.

image


Почему это важно? Вспомните, что разработчик пишет программу, как правило, на одном единственном компьютере. Он мог бы написать код, который сохранит изображение на том же жёстком диске, на котором работает веб-сервер, что для него одно и то же. Но проблемы появляются, когда программа оказывается перед сторонним пользователем, как, например, вы.

Если имеется 3 веб-сервера и изображение сохранено на жёстком диске одного из них, то тогда 2 из 3 человек не смогут увидеть это изображение. Если у вас 300 друзей, то только 100 из них смогут увидеть загруженное вами изображение. Вот это сервис!

image

If this goes here… — Если ваша картинка попадает сюда
Then users who go here won't see it = то пользователи, приходящие сюда, не увидят её


Правильным способом исправить это является использование распределённой файловой системы, которая доступна для всех веб-серверов.

image

Поместите все изображения в облачное хранилище!

Однако разработчик, не имеющий достаточного опыта, не сделает этого. Он пишет код для одиночного компьютера. Изображение будет видно все 100% времени при проверке программы на одном компьютере. Проблема обнаружится, только когда пользователи начнут использовать программу на реальных веб-серверах.

Есть десятки, если не сотни, других примеров Кто-то должен объяснить разработчику, как эти вещи работают, но, правильно говорят, понять можно лишь пережитое. Свой собственный опыт даёт более глубокое понимание.

Такое понимание помогает обнаружить ошибки намного раньше в процессе разработки. Разработчик без опыта сисадминовской работы проходит обычный путь:

1. Пишет программу.
2. Отправляет её на просмотр и/или тестирование.
3. Получает программу обратно для исправления ошибок.

И это может быть довольно длительным процессом.

Ситуация может быть хуже, потому что зачастую сисадмины не желают просматривать программу, присланную разработчиком. Это значит, что со всеми багами первым столкнётся пользователь! Этот вид проблем трудно исследовать ещё и потому, что программа может работать безукоризненно на компьютере разработчика. Бывает трудно воспроизвести проблему.

Следует признать, мне не по душе заниматься системным администрированием. Я знаю, что есть люди, которым это очень нравится, но для меня такая деятельность — просто постоянный источник неудовлетворённости. Сисадминство представляет собой набор знаний и опыта, отличный от требуемого для написания программ, но оно нужно мне на моём пути доведения до людей того программного обеспечения, которое я создал.

И я делаю это в любом случае. Я делаю это, потому что знание окружения помогает мне написать программу лучше. Я делаю это, потому что программа, работающая только на моём компьютере, бесполезна. Программа, которая имеет значение, это та, что работает на веб-серверах, которыми пользуются все остальные люди. Просто написать программу означает сделать только половину того, что обязан сделать настоящий разработчик.
Tags:
Hubs:
+17
Comments 55
Comments Comments 55

Articles