Вдохновленный этот вопрос, Я спрашиваю обратное: что нужно знать системным администраторам о программировании? Более конкретно, какие инструменты программирования полезны для системного администратора?
Я бы начал с:
Системное администрирование - это просто программирование. Система управления конфигурацией позволяет вам видеть всю вашу инфраструктуру как распределенную машину. Ваша задача как системного администратора - программировать эту машину.
Знай один текстовый редактор. Обычно vi для системных администраторов, emacs для программистов.
Умейте писать сценарии. Выберите язык сценариев. Perl - неизменный фаворит, как и комбинация shell / sed / awk. Ruby и Python могут работать, но для многих вещей объекты - неправильная парадигма.
Уметь писать читаемую документацию.
Контроль версий. Решающее значение для поддержки файлов конфигурации и контрольных журналов.
Научитесь мыслить в терминах программирования. Понять парадигмы процедурного, объектно-ориентированного и функционального программирования. Возможно, они никогда не будут использоваться, но знание их делает вас неизмеримо более продуктивным.
Научитесь использовать отладчик (или другое) и ведение журнала.
Научитесь использовать СУБД. Существует множество требований к обработке данных, которые можно упростить, если правильно использовать СУБД. Даже возможность переключиться на роль администратора базы данных по запросу может творить чудеса.
Протестируйте перед развертыванием. Ознакомьтесь с философией разработки через тестирование.
Парное программирование - это хорошо. Попросите кого-нибудь посмотреть через ваше плечо, чтобы узнать / посоветовать / исправить.
Научитесь хотя бы мельком познакомиться с множеством языков. Учите новый язык каждый год.
Сценарии важны, но я бы поддержал совет, что знание некоторых «настоящих» языков - определенный бонус. Например, вы можете делать очень полезные вещи с помощью пространства имен .NET System.DirectoryServices.
Я программист и старший админ / интегратор. Чтобы работать там, где я работаю, вам необходимо знать следующее:
Большинство младших администраторов могут взглянуть на одного из наших программистов и сказать (со знанием дела): да, я установил его правильно, вот где у вас утечка, поэтому код, который вы только что запустили, ломается. Или "Нет, это не наша версия MySQL, посмотрите здесь свой запрос ... "
Я думаю, что мы немного другие, когда нанимаем одаренного администратора ... мы на полпути ожидаем, что они (в конце концов) найдут свой путь к программированию, даже если это просто взлом того, что мы используем для работы так, как им нужно. .
Таким образом, быть хорошо округленным - это никогда собирается причинить тебе боль.
Много-много лет назад (на самом деле Windows NT 3.1) я начинал как программист, специализирующийся на написании служб и даже на случайных драйверах устройств. Это означает, что вы очень хорошо знакомы с ядром Windows. Со временем мне немного надоело программирование, и я переключился на управление сетью. Я обнаружил, что мой опыт в программировании был чрезвычайно ценным снова и снова.
Дело не только в том, что написание сценариев VBScript относительно безболезненно. Знание того, как работает Windows, и особенно того, как работает IP, очень помогает в решении необычных проблем с сервером и сетью. Также это образ мышления. Программисты привыкли к документации и контролю версий, и меня ужасает то, что многие администраторы Windows просто попробуют что-то, чтобы убедиться, что это работает, и беспокоятся о том, чтобы потом распутать беспорядок.
Все очень хорошо, но советовать уходить и работать программистом десять лет - не очень полезный совет! Однако я думаю, что большинству системных администраторов было бы полезно иметь некоторый опыт программирования на «жестком» языке, таком как C ++ или C #. А если в вашей организации есть ручные программисты, пейте вместе с ними!
Джон Ренни
Плохие вещи случаются, ваш код просуществует дольше, чем вы думаете. Сбой изящно, с полезными сообщениями об ошибках. У вас закончится диск, оперативная память, процессор, время и т. Д., Разберитесь с этим.
Не будьте настолько оптимистичны, что странная проблема из миллиона будет происходить слишком часто в производственной среде.
При всех приведенных здесь описаниях я не собираюсь говорить, что я системный администратор. Но то, что я построил и управляю парочкой серверов windows / linux, я должен кое-что признать:
в linux необходимо знать сценарии bash - лучше, если вы знаете, как интегрировать их с perl / awk / etc. Я обнаружил, что с его использованием многие задачи стали проще.
Знание программирования на C / C ++ очень помогает. Иногда вам нужно изменить исходный код GNU (если вы его используете) в соответствии с вашими потребностями, потому что превращение в продукт GNU не гарантирует, что вы всегда будете получать необходимую помощь вовремя - и во многих случаях они написаны на C / C ++.
Знание того, как подключиться к вашему LDAP и получить необходимую информацию на выбранном вами языке сценариев, является ключом ко всему, от устранения неполадок до реального активизации различных типов автоматизации (обеспечение учетных записей и ресурсов, более интеллектуальные проверки учетных записей пользователей или компьютеров).
Может показаться простым, но я видел множество магазинов хлеба с маслом, где люди не думают, что им нужно такое системное администрирование. Множество мест тратят большие деньги на большие наборы административных инструментов, и, насколько я могу судить, 95% того, для чего они используют эти инструменты, можно было бы сделать за несколько часов написания сценариев, если бы кто-нибудь знал об этом или знал, как это сделать. сделай это.
Я обнаружил, что знание сценариев bash, dos batch и powershell предоставляет системному администратору фреймворк, который может делать что угодно в любой популярной системе.