Админские навыки девелопера, насколько важны

Навеяно одной ситуацией на работе и парой собеседований...

Естественно подразумевается, что разработчик программ, как минимум продвинутый пользователь. Но есть класс задач за пределами заурядных пользовательских, но тем не менее достаточно часто встречающихся в программистской практике — конфигурирование сети, работа с Telnet/SSH/FTP, установка/настройка соответствующих серверов. Установка/настройка Web-серверов и серверов БД. Основы сетевой безопасности — права доступа, VPN, настройка файрволлов итд итп.

Конечно системщик или сетевик должен это знать — это его предметная область. Конечно хороший веб-разработотчик должен уметь управляться с Апачем и его модулями. Вопрос в том насколько глубоко подобную тематику должен знать сферический программист в вакууме и уместно ли поднимать подобные вопросы на собеседовании.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Считаю, что программисту желательно знать, как работают сети, DNS, тот же Apache, СУБД, понимать, что в случае проблемы легче вначале почитать и понять лог, нежели звонить админу по любому пустяку, но не обязательно знать конкретные параметры конфигурации и специфику того или иного сервиса. Хотя когда знает — это плюс. Нам (software engineering team) админы иногда присылают правила iptables и настройки BIND-а на review:)

У нас 4 девелопмент сервера на Red Hat Linux Enterprise и Solaris.
Настраиваем ОС сами, Oracle ставим сами, Apache и SSH тоже сами. Ну и shell-скрипты пишем сами.; -)
Это при том что я работаю на за границей в большом банке.
Вопрос — нафига мы это делаем сами? Ответ: потому что квалификация позволяет.

Конечно, когда дело доходит до production, мы пишем мануалы для специалистов.

Надо различать 1) админский опыт и 2) конкретные знания какие кнопки давить в определенной ОС/дистрибутиве/марштуризаторе etc. Я, после нескольких лет FreeBSD, 4 года под HPUX’ом просидел, с 2002 по 2005, а сетевое все на cisco. А затем вернулся программить и прозрел от блеска и нищеты оперсорса. И опыт админства юниксов вроде нормальный, и куда тыкать в этих линуксовых дистрибутивах, хрен поймешь.

Имхо первое полезно, т.к. админу приходится приобретать опыт траблшутинга, столь важный для программеров также, ну и, если писать серверный софт, то смотришь с точки зрения удобства сопровождения. Как пример, автор nginx — админ. Второе же (конкретные кнопки) так быстро меняется, что отвлекись от любимой железки / софтинки на пару лет, и все, новые версии, новые фичи, новые проблемы, нет смысла за этим всем вообще следить, если ты не планируешь дальше админить.

Я раз был свиделелем проекта (довольно несложного «веб-стартапа» ), у которого заказчик, программист и администратор все были в трех разных странах причем с разными часовыми поясами. Все трое были довольно неквалифицированными и проблемы, часто наверное очень простые — типа что-то установить на сервере поручались программистом администратору через заказчика. Один «цикл выполнения» занимал 1−2 дня (из-за часовых поясов в основном), причем не только какие-то сложные задачи, но и баги (часто через которые было сложно работать). Если бы программист сам все делал (а там делать было немного), или часть поручал саппорту хостинга например или админу-профессионалу, который был бы толковый, все было бы намного быстрее и проект запустился бы через пару месяцев после старта, а не провалился.

Был когда-то такой случай. Приходил разработчик ставил свое приложение, за ним приходил админ и настраивал сервер. После этого приложение переставало работать.

Не дописал, как ситуация решилась. Мы посадили вместе разработчика и админа за этот сервер, и они его вместе довели до ума.

Но был еще один случай, когда программа была написана так, что работала исключительно под пользователем с админскими правами, а в соответствии с политикой безопасности и своей функциональностью должна была работать под обычным пользователем. Тут уже разработчику пришлось переписывать.

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

Столько, чтобы грамотно коммуницировать с админом в рабочих вопросах. Запросы у разработчика бухгалтерского софта и SIP-сервера очень разные. Требовать от сайтостроителя разбираться в видах NAT-а, конечно, глупо, но поднять себе среду для разработки в виртуалке желательно все-таки уметь.


Был когда-то такой случай. Приходил разработчик ставил свое приложение, за ним приходил админ и настраивал сервер. После этого приложение переставало работать.

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

Думаю самый правильный ответ: it depends. Где-то вообще может не быть выделенного админа, где-то у разработчиков нет доступа в продакшн. На собеседовании можно спросить нужны ли админские навыки и если да то какие. Почему нет? Может вас тошнит от апача\IIS, а окажется что работа подразумевает его настройку и поддержку.

Приходил разработчик ставил свое приложение, за ним приходил админ и настраивал сервер.

Вот в этом то и проблема. Правильная последовательность:

Разработчик отдает админу приложение и инструкцию, после чего админ ставит и настраивает все.

Был когда-то такой случай. Приходил разработчик ставил свое приложение, за ним приходил админ и настраивал сервер. После этого приложение переставало работать. Снова приходил разработчик, сносил все настройки админа (включая связанные с безопасностью) и приложение начинало работать. А затем снова приходил админ...

Вопрос в том насколько глубоко подобную тематику должен знать сферический программист в вакууме и уместно ли поднимать подобные вопросы на собеседовании.

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

А если проект (стартап) небольшой — например программист и скажем менеджер по продажам, то админские навыки программиста позволят экономить время и деньги.

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

Если человек говорит “Я делаю то, то и то и больше ничего”, то как то он и больше имеет в материальном плане.

Таки да. Но фишка не в том что он предоставляет только ограниченный комплекс услуг, а в том что он “более наглый” (в хорошем смысле слова).

Питання стосується мінімальної глибини знань у цьому напрямку.

Для разработчика веб-приложений необходимо уметь ставить все “из портов/пакетов”, понимать что как работает. Настройка VPN, файрволлов — на профессиональном уровне не надо, но понимать что происходит надо (например что бы понять почему нет соединения между серверами приложения). Уметь настраивать веб или БД сервер не обязательно, но лишним не будет.

конфигурирование сети, работа с Telnet/SSH/FTP, установка/настройка соответствующих серверов.

Я это умею, ибо работал админом. Но есть люди которые работают админами и умеют делать это профессионально, поэтому лучше что бы это сделали они, а не человек который прочитал мануал (на ангельском).
Более бытовой пример:

Я могу поменять смеситель, но есть люди которые это делают быстрее и качественнее. Приходится выбирать: заплатить Н грн. и быть уверенным что все работает правильно, или за несколько минут сделать самому и понадеяться что все сделал правильно.

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

И вообще заметил такую особенность. У неумелого руки не болят. Если человек говорит «Я делаю то, то и то и больше ничего», то как то он и больше имеет в материальном плане.

По-моему вполне уместно, ничего ацково, но такое как поставить апач, модреврайт установить должен уметь

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

Звичайно все не запам’ятаєш, та й непотрібно. Питання стосується мінімальної глибини знань у цьому напрямку.

Я наприклад багатьох таких речей у пам’яті не тримаю, лише місце де про це можна прочитати

Подписаться на комментарии