DevOps
"DevOps"は、純粋な開発者、純粋なオペレーター、純粋なQAの役割を織り交ぜた緊密なコラボレーションを意味します。ソフトウェアは常に増加する速度でリリースされる必要があるため、開発-テスト-リリースという旧来の「ウォーターフォール」サイクルは破綻しています。開発者は、テストとリリース環境の品質にも責任を持たなければなりません。
開発者 "の責任範囲が拡大するにつれて、"フルスタック "開発者という候補者のコンソーシアムが必要とされるようになりました。そのような開発者は、開発作業を行うことができ、QAチームの一員であり、ビジネス分析を行い、システム管理者であり、DBAであることができます。このリストの中で、「フルスタック」開発者に習熟してほしくないことはありますか?
これらのコンセプトはどこから生まれるのでしょうか?スタートアップです。スタートアップは奇妙な形で始まり、最初の数年間は過酷な方法で生き残る必要があります。それは否定しません。残念なことに、スタートアップのエンジニアは複数の技術的役割を担い、最低限のコンピテンシーが揃っていない中で「開発者」という役割を担わざるを得ません。
マルチタスク
次に、このシナリオをリストアップされたすべてのポジションに拡大します。スタートアップの開発者は、開発者、QA、デプロイ/運用アナリスト、システム管理者、DBAのすべてを同時にこなすかもしれません。スタートアップはこのようなことを自然にやっていますし、このような環境に特に適している人もいます。スタートアップの開発者はいつでもマルチタスクをこなしているのですから。
仮にそれが存在したとしても、「フルスタック」開発者たちは、彼らが快適と思うような働き方をすることはできないでしょう。スタートアップ企業は、一定期間役割を担ってから次の役割に切り替えるのではなく、常にすべての役割を同時に担うよう求めているのです。そして最悪なのは、優秀な開発者のほとんどがほとんど対応できないということです。
クラス
優秀な開発者は賢い人です。こんなことを言うと叩かれるかもしれませんが、組織における技術者の重要性にはヒエラルキーがあります。一番上は開発者、次がシスアドとDBA、一番下はQAチーム、「オペレーター」、リリースマネージャーなどです。なぜこの順番なのでしょうか?
なぜなら、各キャラクターは自分より低いレベルの仕事をすべてこなす能力を持っているからです。
スタートアップ企業はこれを教えてくれます。優秀な開発者は、必要であれば資格を持ったDBAになることができますし、優秀なテスターや「デプロイメント・エンジニア」、その他いろいろな形や大きさになることができます。しかし、これには問題があります:
逆は通用しません。
QAは開発者としてやっていけないし、ビルド・エンジニアはDBAと同じことはできません。それでいいのです。好むと好まざるとにかかわらず、どの組織にもそのような階級階層があり、メンバーの能力レベルやスキルレベルはそれぞれ異なります。とはいえ!
例を挙げればわかりやすいでしょう。私の父は個人経営の歯科医です。秘書、医療従事者、歯科助手を雇っています。いわゆる「Dentist Ops」と呼ばれる環境で、父は患者の予約を管理し、歯をきれいにし、歯の穴あけや根管治療などの時間を作らなければなりません。父はこれらの仕事に必要な専門知識を持っているので、父の診療所では他の仕事もあります。
でも、他の人たちは、たとえそれがすべて加算されたとしても、彼の仕事をすることはできません。
こんなやり方でクリニックが運営されるのであれば、従業員以外の関係者全員が苦しむことになります。ソフトウェアの質を向上させることを期待したこの実験は、茶番劇へと発展し、最も優秀な従業員は疲弊し、下級職は存在しなくなりました。
得意なことはないんです。
もしあなたがある程度大規模なソフトウェアを開発しているなら、機能するデプロイシステムが必要でしょう。Puppet、Chef、Salt、Ansible、Vagrant、Docker。今すぐデプロイソリューションを実装してください!上に挙げたシステムのうち1つが全く関係のないものであることに気づかなかったのではないでしょうか?
人間が応用できる知識には限りがあるからです。タスクの切り替えには、間違いなくコストがかかります。開発者に他の専門家の役割を引き受けさせるということは、そうなるということです:
開発に時間をかけない
非常に広い分野の知識を維持する必要性
圧倒されそう
それだけでなく、開発者に "フルスタック "の仕事を引き受けさせるために、企業はそのような仕事のほとんどについて、平均的な相場よりもはるかに高い報酬を従業員に支払わなければなりません。仮に開発者の年収が10万ドルだとすると、2人分の仕事をこなすために4人の開発者を10万ドルで雇い、50%の時間で開発、50%の時間でリリース管理を行うこともできますし、約75万ドルでリリースマネージャーを雇い、2人の開発者をフルタイムで働かせることもできます。管理するリリースがないときに、パートタイムのリリース管理開発者が時間を無駄にすることは言うまでもありません。
開発者を殺すな
その結果、"開発者 "という役割が破壊され、"熟練工 "に取って代わられました。私が知っている開発者はみな、プログラミングが本当に好きでたまらないのです。このような賢い人々に余分な仕事を強いることは、関係者全員を傷つけることになります。