プログラマのエゴって結構厄介だなって話
単なる気づきと振り返り
プログラマのエゴを抑えないと、仕事にも開発メンバーにも呪いレベルの迷惑がかかることに気づいた話です。
会社の方と話して、プログラマのよく陥りがちな現象「手段が目的になること」を「エンジニアのエゴ」と表現していて、ハッとしました。
開発チーム内のプログラマの目的って
開発プロジェクトにアサインされた、一名のプログラマとしての本来の目的は、「要求された仕様・納期を満たすこと」だけだと思います。
もちろん、会社の半期毎の目標だったり、個人(キャリアやプライベート)の目的など含んだりするでしょう。ですが、開発プロジェクトだけにスコープを限定すると、「要求された仕様・納期を満たすこと」だけで必要十分のはずです。
「何を当たり前なことを…」と先輩エンジニア/プログラマは思うでしょうが、タスクや納期に忙殺された自分にとっては、教えて貰って初めて認識しました。
目的や責務をしっかり考えてこなかった自分は、少し恥ずかしく感じました。もういっそのこと、note記事にしようと思ったほどです。
自分のエゴから生まれた事例
ここで、たかが6年程度しかない、自分のエンジニア/プログラマ人生を振り返り、エゴの事例をさらけ出したいと思います。
自分が慣れ親しんだPG言語/FW以外を根拠もなく、低く評価する
ドキュメントやコメントを軽視する(自分が分かればよいor口頭で説明できると思いあがる)
タスクの過度に抱える(=他メンバーに中々分担させようとしない)
嫌い/苦手な技術なので、好き/得意な技術を選定する
誰かと相談すれば直ぐに解決する問題を長時間かけて自力で解決する
記事を書く際に、軽く振り返ってみたのですが、中々苦しかったです。
こんな偏屈な考えを持っていて、プログラマを続けられるんだろうかと心配し始めています。
「自分一人で長時間かけて解決すること」はエゴだと気づく
会社の方と話すまで気がつかなかったエゴは、5番目の事例です。
「長時間かけて自力で解決すること」は、エンジニアにとって気持ちが良い体験でしょう。まるでゲームやパズルを一人でクリアするように。
趣味の場合は一人で問題を解いても良いでしょうが、仕事で行っている場合は、あまり褒められるべき事象ではないはずです。
プロとアマの違いって?
この具体例を聴いたとき新卒の会社で教えられた言葉を思い出しました。
「プロフェッショナルとアマチュアの違いは時間を守るか守らないか」
中々厳しいですね。 8/31に夏休みの宿題を終わらそうとする自分とって、耳が痛すぎて血が出そうでした。
「時間の他に品質も違いなのではないか?」と質問したら、「アマチュアでもプロに近い品質にすることはできる 」と答えてくれました。
(一生アマチュアでお金を貰いたい…)
エゴの原因や対策をChatGPT4君に教えて貰う
はい。今流行りのChatGPT4先生に教えて貰いましょうか。
(昔のGoogle先生みたいだぁ…)
エゴの原因
Q(私):
本来、開発プロジェクトにアサインされた、一人のエンジニア/プログラマの責務(目的)は「要求された仕様と納期を満たす」であると思います。プログラマなどの開発者は手段を目的にすり替える現象が起きがちな職業かもしれません。
ChatGPT4:
おっしゃる通り、開発プロジェクトにアサインされたエンジニアやプログラマの主な責務は、「要求された仕様と納期を満たす」ことです。しかし、プログラマやエンジニアのような開発者は、技術や手法に関心を持つあまり、手段と目的がすり替わってしまうことがあります。
以下は、手段と目的がすり替わる現象が起こりやすい理由です。
知識やスキルのアップデート欲求: エンジニアやプログラマは、技術の進歩が早い業界で働いているため、自分の知識やスキルを常にアップデートすることが求められます。このため、新しい技術や手法に興味を持ち、それらをプロジェクトで試してみたいという欲求が強くなります。
自己表現や自己実現: 開発者は、自分のアイデアやスキルを活かして何かを作り出すことに喜びを感じることが多いです。そのため、自己表現や自己実現の手段として、新しい技術や手法を取り入れることが目的にすり替わることがあります。
手段が目立つことへの憧れ: エンジニアやプログラマの業界では、新しい技術や手法を取り入れたプロジェクトが注目されることがあります。これにより、手段が目的にすり替わり、新しい技術や手法の導入が過度に重要視されることがあります。
このような現象を防ぐためには、エンジニアやプログラマが自分の役割や責務について常に意識することが重要です。また、プロジェクトの目的や要求される仕様を常に念頭に置き、適切な技術や手法を選択することが求められます。チーム全体で目的を共有し、手段が目的にすり替わらないように注意することで、プロジェクトの成功に繋がります。
別観点で原因を上げてもらう
ChatGPT4の回答
先に述べられた意見に対して、以下のような批判的な意見や補足を提案します。
技術の選定がプロジェクト成功に影響することもある: 技術選定はプロジェクトの成功に大きく影響することがあります。最新技術や手法が目的にすり替わることを避けることは重要ですが、古い技術や手法に固執することも問題を引き起こすことがあります。適切な技術選定には、現在の要求や将来のニーズに対応できる技術を選ぶことが重要です。
エンジニアの創造性や独自性を無視しないで欲しい: エンジニアやプログラマは、新しい技術や手法を試すことで、自分の創造性や独自性を発揮できることがあります。プロジェクトの目的や要求される仕様を満たしつつ、エンジニアの創造性や独自性を尊重することが、プロジェクトの成功に繋がることがあります。
開発者のモチベーションを維持することも重要: 開発者が新しい技術や手法に興味を持つことは、モチベーションの維持に繋がります。適切なバランスを見極め、新しい技術や手法を取り入れることがプロジェクトの効率化やチームの成長に寄与することがあります。
柔軟性を持った技術選定が重要: 事前に全ての技術選定が完璧であるとは限りません。プロジェクトが進行する中で、技術選定を見直すことも重要です。そのため、開発者が柔軟に技術選定を行える環境を作り、適切な判断ができるように支援することが必要です。
これらの批判的な意見や補足を踏まえることで、エンジニアやプログラマが目的と手段のバランスを見極め、より適切な開発を行うことができます。
首を激しく頷くほどの理由を教えて貰いました。
確かに、振り返ってみると、技術選定の失敗でプロジェクトを左右することもありましたし、私のモチベーション向上や自身の創造性を伸ばしたいという思いは常にあった欲望でした。
対策
チームメンバー同士でエゴの問題を防ぐ、または悪化させないためのコミュニケーションやマネジメント方法は以下の通りです。
定期的なステータスミーティング: チーム内で定期的にステータスミーティングを開催し、各メンバーの進捗状況や課題を共有します。これにより、タスクの抱え込みや分担の不均衡を早期に発見し、適切な対応ができます。
オープンなフィードバック文化の醸成: チーム内でフィードバックを積極的に求め合い、互いの意見を尊重する文化を築きます。メンバー間で相互評価やレビューを行うことで、自分の行動に気づかなかった問題点を発見し、改善することができます。
タスクの明確化と分担の明示: プロジェクトのタスクを明確化し、各メンバーの役割や責任を明示します。これにより、タスクの抱え込みを防ぎ、適切な分担ができるようになります。
メンター制度の導入: 経験豊富なメンターを割り当て、若手エンジニアのサポートを行います。メンターは技術的な指導だけでなく、チームでのコミュニケーションや協力の重要性を伝える役割も担います。
チームビルディング活動: チームメンバー同士の信頼関係を築くために、チームビルディング活動を実施します。これにより、互いに協力し合う意識が高まり、エゴの問題を防ぐことができます。
成果の共有と評価: チーム全体の成果を共有し、各メンバーの貢献を評価することで、協力や助け合いの重要性を認識させます。これにより、個人のエゴを抑え、チーム全体での成功を目指す意識が醸成されます。
これらのコミュニケーションやマネジメント方法を実践することで、チームメンバー間のエゴの問題を防ぐ、または悪化させない環境を作り出すことができます。以下は、その他の方法です。
スキルや知識の共有: チーム内で定期的にスキルや知識の共有セッションを開催することで、互いの専門性を理解し、リスペクトし合う文化を築きます。メンバーがお互いに学び合うことで、エゴの問題を軽減することができます。
目標設定と評価基準の明確化: チーム全体および個人の目標を設定し、評価基準を明確化することで、メンバーが目標に対して協力し合う姿勢を育てることができます。明確な目標と評価基準によって、エゴを抑え、チーム全体での成功を目指すことができます。
エンパワーメント: チームリーダーやマネージャーがメンバーに適切な権限を与え、自主的な意思決定を促すことで、エゴを抑えることができます。メンバーが自分の意見やアイデアを尊重される環境が整うことで、協力し合う姿勢が醸成されます。
透明性のあるコミュニケーション: チーム内でのコミュニケーションが透明であることを保つことで、メンバー間の信頼関係が築かれ、エゴの問題を防ぐことができます。意思決定や方針についてオープンに議論し、意見を尊重し合うことが重要です。
これらの方法を実践することで、チーム内のエゴの問題を防ぐ、または悪化させない環境を作り出すことができます。チーム全体で協力し合い、お互いに尊重し合うことが、プロジェクトの成功に繋がります。
対策方法は結構見慣れている手法なのかなと思いましたが、それが重要であり、中々実現できないということなのでしょう。
これらを基に、これまでのプロセスを見直していきます。
個人で実施できる程度の小さなステップで始めてみようと思います。
(スキルや知識の共有は、個人で始められそうですね)
記事は以上となります。
読んで頂きありがとうございます。
あとがき
ChatGPT4君と対話しながら、記事を練りました。
一応、ChatGPT4の質問・解答以外の箇所は自分の頭から捻りだした文章です。
貴方のサポートが僕の活動の糧になります。