この質問 に触発されて、私は逆の質問をします。システム管理者はプログラミングについてどれだけ知る必要がありますか?より具体的には、システム管理者が持つのに役立つプログラミングツールは何ですか。
私はまず始めます:
システム管理はプログラミングだけです。構成管理システムでは、インフラストラクチャ全体を分散マシンとして見ることができます。システム管理者としてのあなたの仕事は、このマシンをプログラムすることです。
1つのテキストエディタを知っている。通常、システム管理者はvi、プログラマーはemacsです。
スクリプトを作成する方法を知っています。スクリプト言語を選択します。 Perlは、Shell/sed/awkコンボと同じように、根強い人気があります。 RubyおよびPythonは機能しますが、多くの場合、オブジェクトは間違ったパラダイムです。
読みやすいドキュメントの書き方を知っている。
バージョン管理。構成ファイルと監査証跡を維持するために重要です。
プログラミング用語で考えることを学びます。手続き型、オブジェクト指向、関数型プログラミングのパラダイムを理解する。これらは決して使用されないかもしれませんが、それらを知ることはあなたを無限に生産的にします。
デバッガー(またはそれ以上)とロギングの使い方を学びます。
RDBMSの使い方を学びます。 RDBMSを正しく使用することで簡素化できる多くのデータ処理要件があります。オンデマンドでDBAロールに切り替えることができても、不思議に思うことがあります。
展開前にテストします。テスト駆動開発の哲学をご覧ください。
ペアプログラミングは良いです。他の人にあなたの肩越しに見てもらい、学び、助言、訂正してもらいます。
少なくとも一連の言語に精通していることを学びます。毎年新しい言語を学びましょう。
スクリプティングは不可欠ですが、いくつかの「実際の」言語を知ることは間違いなくおまけです。たとえば、.NET System.DirectoryServices名前空間を使用すると、非常に便利なことができます。
私はプログラマーであり、上級管理者/インテグレーターです。私がいる場所で仕事をするには、次のことを知っている必要があります。
ほとんどのジュニア管理者は、プログラマーの1人を見て(権限ありで)言うことができます。そうです、私は正しくインストールしました。ここにリークがあり、プッシュしたコードが壊れています。または、「いいえ、そのMySQLのバージョンではありません、クエリをここで見てください...」
才能のある管理者を雇ったとき、私たちは一種の違いだと思います..彼らがそれを動作させるために必要な方法で動作させるために使用するものを単にハッキングしたとしても、プログラミングへの道を見つけることを彼らが(最終的に)見つけることの半分を期待します。
要約すると、よく丸められていると決して傷つけることはありません。
悪いことは起こります、あなたのコードはあなたが思っているよりも長くなります。便利なエラーメッセージを表示して、正常に失敗します。ディスク、RAM、CPU、時間などが不足し、それを処理します。
100万回に1回の奇妙な問題が本番環境で頻繁に発生するほど楽観的ではありません。
ここでの説明はすべて、私がシステム管理者であるとは言いません。しかし、私がいくつかのWindows/Linuxサーバーを構築して管理しているという事実は、何かを認めなければなりません。
linuxでは、bashスクリプトは知っておく必要があります。Perl/ awk/etcと統合する方法を知っている場合は、その方が適しています。それを使うことで多くの作業が楽になることがわかりました。
C/C++でプログラミングすることを知っていることは、多くの助けになります。 GNU製品になると、常に入手できるとは限らないため、GNUソースコード(使用する場合))を必要に応じて変更する必要がある場合がありますあなたが時間通りに必要とする助け-そして多くの場合、それらはC/C++で書かれています。
何年も前(実際にはWindows NT 3.1)に私は、サービスの書き込みと、場合によってはデバイスドライバーさえも専門にするプログラマーとしてスタートしました。これは、Windowsカーネルをよく理解していることを意味します。やがて、プログラミングに少し飽きて、ネットワーク管理に切り替えました。プログラミングのバックグラウンドは何度も何度も貴重なものでした。
VBScriptスクリプトの記述が比較的簡単であるというだけではありません。 Windowsの本質がどのように機能するか、特にIPがどのように機能するかを知ることは、サーバーとネットワークの奇妙な問題の解決に大きく役立ちます。また、それは考え方です。プログラマーはドキュメンテーションとバージョン管理に慣れており、何人かのWindows管理者がそれが機能するかどうか確認するために何かを試してみて、後で混乱を解消することを心配する人を見ると、私は恐ろしく思います。
結構なことですが、10年間プログラマーとして働いて仕事を辞めるのはあまり役に立ちません。ただし、C++やC#などの「ハード」言語でプログラミングした経験があると、ほとんどのシステム管理者にとって役立つと思います。そして、もしあなたの組織に飼いならされたプログラマーがいるなら、彼らと飲みに行きます!
ジョン・レニー
私は、bash、dos batch、およびpowershellスクリプトを理解することで、システム管理者に、一般的なシステムでほとんど何でもできるフレームワークを提供することを発見しました。