プログラマーが他に何もできないこと





プログラムする能力は、他の人の目にあなたを制限する数少ないスキルの1つです。


私はプロダクトマネージャー、プロジェクトマネージャー、スクラムマスター、プロダクトオーナー、ユーザビリティエンジニアであり、他にもたくさんのことをしました。 ユーザーとのインタビューの結果に基づいてインターフェイスを設計し、チームを管理およびトレーニングし、締め切り前に作業を分散し、プロジェクトを立ち上げることができます。 私はこれをすべて行い、成功しました。



しかし、私がコードを書いていると言うとすぐに、「開発者」になります。 それだけです、ポイント。 ここで、タスクを決定するプロジェクトマネージャーを任命する必要があります。 誰かが技術的なタスクを作成し、それに応じてリードタイムの​​見積もりを提供する必要があります。 クライアントと話すことはもうありませんので、作業について定期的に報告する必要があります。



これは非常に奇妙な現象であり、私だけでなく多くの状況や組織で繰り返し観察しています。 現在、一部のプロジェクトでは、コードを書くことを積極的に避けています(または、方法がわからないふりをしています)。ユーザーや顧客(たとえば)から信頼を得て、技術的なタスクを計画および記述できるようにするためです。 しかし、何かを書くとすぐに、私はすぐにチームの「開発者」になります。 そして、私はそれらを永遠に残します。



同時に、献身的なプロジェクトマネージャーは、コードを書く以上の能力を持つ調和の取れた開発者に強く引き寄せられます。 彼らは、コミュニケーションがよく、技術レベルだけでなくプロジェクト/ビジネスレベルでも機能するアーキテクチャを作成でき、製品のユースケースを予測できるエンジニアと非常に満足しています。 当然です。 これらの能力はそれ自体では十分ではなく、空のスペースを埋めます。 ただし、多くのプロジェクトでは、この職務の分離はコミュニケーションの追加レイヤーを追加するだけであり、それなしでは調和の取れた開発者は仕事をより良くすることができます。



最初は、この現象は主に年齢に関連していると思いました。 あなたが比較的若く、プログラマーであることに同意する場合、シリコンバレーの精神に触発されて、人々があなたを典型的な開発者として見やすくなります。 クローゼットに住み、パーカーの反社会的な子供のオタクに身を包んだようなもの。 しかし、経験豊富な年配のエンジニアにも同じことが起こりました。



これらのエンジニアは、企業の出現と消滅を観察し、スタートアップを開始し、さまざまなレベルのさまざまな役割の企業で働いており、すべての役割で非常に貴重な包括的な技術知識を持っています。 近くに別の人(通常は「ジャケット」)がいて、クライアントに会いに行くと想像してください。 顧客の1人が包括的な技術知識を持っていると言うと、誰もが自動的に「技術者」と見なされます。 戦略や計画などの質問については、彼らは「ジャケット」に目を向けます。 エンジニアはこれらの問題をはるかに有能に議論できますが。



なぜそう なぜ技術教育を受けた人に汚名を着せ、彼を他の分野への参加から排除する必要があるのでしょうか?



たぶん人々は物事を整理する傾向があるため、物事を異なるカテゴリに分類します。 理想的には、人生のすべてのものに単一のタスクと目的があるので、「これは、です、あなたはそれを切ることができます」または「これはモニターであり、画像を表示します」と言うことができます。 したがって、すべてが明確で予測可能になります。 もちろん、それが私たちが優れたソフトウェアを開発する方法です。少なくともUnixの哲学を見てください。



しかし、もちろん人々はそうではありません。 私たちは、その使用が絶えず変化し改善している機械です。 人が知れば知るほど、彼はより多くのことを見て、彼がどこにいたのか、彼はより良く、より調和して、与えられた仕事に適しています。 私たちは、単一の役割のフレームワーク内でのこの経験の発展を認識していますが、何らかの理由で異なる役割の間ではありません。



プログラムする能力は、プロジェクトにもっと積極的に参加する権利を奪うものであってはならないと信じています。 それどころか、それはそのようなスキルを持っていない人と比較して人をより適格にします。 戦略的な議論を特定の技術レベルに直接持ち込み、開発者の論理的な心でそれを歩むことができる場合、これは「ジャケット」の無言のおしゃべりよりもはるかに価値があります。 ユーザーの問題について話し合い、システムで考えられるすべてのソリューションの結果をすぐに理解できます。必ずしもこのシステムを作成したからではなく、経験から技術的な結果を導き出すことができるからです。 その後、あなたとユーザーはその場でより多くの情報に基づいた決定を行います。



私の理想のチームでは、誰もが他の人の仕事をすることができますが、彼が一番好きな専門分野を選んだだけです。 役割の継続的な変更が推奨され、通信回線が最適化され、役割のセットが頻繁にレビューされます。 このような理想は、専門的な職業では完全に現実的ではありませんが、理想は達成可能なものではなく、努力する必要があるものです。



だからこそ、すべての開発者が調和のとれた開発に努めるべきだと思うのです。そうすれば、彼はコードを書くだけでなく、さまざまなレベルで貢献できるようになります。 このため、開発者が役割を拡大することを禁止するのではなく奨励することが重要です。



All Articles