見出し画像

プログラマーの三大○○とは?入社一年目の社員がまとめてみた

こんにちは。
エム・ソフトの空間デジタルイノベーション室という部署でプログラマーをしている、1年目(もうすぐ2年目)のサイトウと申します。

このブログでは社員のナレッジ共有として、「プログラマーの三大美徳」「HRT」についてご紹介します。

私は日本大学の大学院工学研究科の出身で、ドローンを用いた森林点群データの計測や、木の幹を自動検出する手法の研究等を行っておりました。

入社後は研修で3ヶ月間C言語を学び、現在では自社開発のアプリ・サービスの「Check+」「MONOLIST」の開発に携わっています。

Check+紹介サイト:

MONOLIST紹介サイト:

これらの開発にあたり、日々新しい知識をインプットしながら業務に携わっていますが、
最近、ただ漠然と目の前の業務をこなすだけではなく、「自分はどのようなプログラマーになるべきなのか?」「理想のプログラマー像をはっきりさせることで、さらに成長できるのではないか?」と考えるようになりました。

そこで、一般的にどんなプログラマーが優秀とされているのか?ということを色々と調べていたところ、
「プログラマーの三大美徳」と、チーム開発の3本柱として提唱されている「HRT」いうものがあることを知りました。

詳しく調べると、自分が知りたかった、目標とするべきプログラマー像の土台となるような考え方がまとめられており、非常に参考になりました。
また、それらの内容はプログラマーだけでなく、あらゆる社会人にも通じる重要な考え方なのではないか?とも感じました。

そこで今回は、プログラマーの三大美徳とHRTについて調べた内容を共有したいと思います。

これから社会人、プログラマーになろうと思っている方はもちろん、今現在プログラマー、エンジニアをやっている方にとっても大事な内容だと思いますので、ぜひ最後までご覧ください。

プログラマーの三大美徳とHRT

プログラマーの三大美徳とは、プログラマーにとって必要な要素を3つ定義したものになっていて、これらはどちらかというと、プログラマー個人向けに提唱されている考え方です。

それに対して、HRTはどちらかというと、チームで開発をするときに重要な考え方として提唱されています。

それでは、ここから三大美徳とHRTについてご紹介します。

三大美徳とは?

まず、プログラマーにおける三大美徳とは「怠慢」「短気」「傲慢」の3要素のことを指します。

これらは一見するとネガティブな言葉に見えますが、なぜこれらが美徳とされるのか、理由がきちんとあります。

三大美徳の提唱者:ラリー・ウォール

そもそも、この三大美徳を提唱したのは、プログラマーであり言語学者でもあるラリー・ウォール(Larry Wall)という人物です。プログラミング言語「Perl(パール)」の開発者として有名ですね。

引用:https://www.perl.com/

ちなみに、現在多くのシステムで使われている「Ruby(ルビー)」というプログラミング言語は、このPerlから大きく影響を受けて作られたと言われています。
(パールは6月の誕生石で、それに続く言語として、7月の誕生石のルビーという名前にした、と言われています。)

それでは、ここから3つの要素について、一つずつ解説します。

怠慢(Laziness)

「怠慢」は、「楽(ラク)」を考えることによって、効率的な考えを生み出すというメリットがあります。

例えば、現状の作業でどこに手間がかかっているかを分析したり、その分析をもとにどうすれば作業を効率化できるのか、もっと効率化するための手段はないかというのを考える。そして、実際にその手段を取り入れる。

これらは、「無駄のない効率的なシステムを開発する」「納期通りにプログラムを作成する」ことが求められているプログラマーにとっては非常に重要な要素です。

短気(Impatience)

「短気」な性格は、トラブルやイレギュラーで苛立ちたくないので、問題が起きる前にあらかじめ対応しようと考える、というメリットがあります。

例えば、短気な性格なプログラマーは、処理速度が遅いプログラムに苛立ちやすい傾向があります。このため、そもそもスピードが遅くならないプログラムを組もうと工夫をしようとします。

また、例えばプログラムに大きな変更があったとき、問題が起こって苛立つことがないように、最初から変更を考慮した修正しやすいプログラムを準備しておく傾向も強いです。

短気というのは一見マイナスだと思われがちですが、短気であることで逆にプログラムの問題点や使いづらさに気が付きやすくなり、それによって良いプログラムを作れる、という側面を持っています。

傲慢(Hubris)

「傲慢」は、作り上げたものに絶対的自信を持つために、文句のつけようのない高品質のプログラムを組もうと努力する、というメリットがあります。

例えば、傲慢なプログラマーは自分のプログラムを指摘されるのを嫌うので、指摘されないように簡潔で綺麗なプログラムを組もうと様々な工夫を行います。

プログラマーやエンジニアの方なら共感いただけると思いますが、プログラミングにおいて、簡潔で見やすいコード(指示文)を書くというのはとても重要なスキルです。
プログラムのコードがわかりづらいと、どこでどのような処理が行われているかわからず、レビューがしづらかったり、そもそもバグが起こる可能性も高まります。

傲慢すぎる性格は考えものですが、良いシステムを作る為には適度な自信が必要、ということだと思います。

チーム開発の3本柱:HRT

次に、チーム開発の3本柱である「HRT(ハート)」についてご紹介します。「HRT」は、『Team Geak』という本で「優れたチームが優れたソフトウェアを作るのに必要な三本柱」として紹介されているもので、「謙虚(Humility)」「尊敬(Respect)」「信頼(Trust)」の頭文字を取ったものです。

こちらも、ひとつずつ解説したいと思います。

謙虚(Humility)

「謙虚」は、「人間は必ずミスを犯すもの」であり、他者の考えを謙虚に受け止めることで改善ポイントが見えてくるという考え方です。

「自分が必ず正しい」と決定付ける前に、指摘やアドバイスを素直に受け入れることで、自分では気づけなかった改善点を見つけ、プログラマーとしてより成長することができます。
また、こういった振る舞いを行うことにより、より良い人間関係を構築することもできます。

チームで開発を行う上では、どのようなシステムにすべきか、どのように仕事を進めていくかなど、チームメンバーと話し合いながら進める場面が多くあります。
そのような場面で、「自分の意見が絶対に正しい」と決めつけるのではなく、他者の考えを聞き最善の方法を皆で進めていくという姿勢がとても重要になってきます。

尊敬(Respect)

「尊敬」は、働く相手を一人ひとり認識し、評価し、思いやる心構えのことを指します。

業務を依頼する際や提案をするときに、相手を思いやり、できるだけ丁寧な言葉を使うことで、人間関係のトラブルを防ぐことができます。

チーム開発では、メンバーによって異なる役割や責任をもって業務を行うことが多いです。
このため、チームメンバーを一人ひとり尊敬し、相手を思いやる気持ちをもつことで、皆が気持ちよく働くことができるようになります。

最近では「心理的安全性」という言葉が注目されています。
心理的安全性とは、「自分の考えや気持ちを組織やチームに安心して発言できる状態のこと」を指しますが、その状態を作る為には、メンバーを尊敬すること、というのがとても重要だと思います。

互いにメンバーを尊敬し、心理的安全性を保った状態を作ることで、働きやすい環境となり、結果チームの生産性も上がるのではないでしょうか。

信頼(Trust)

「信頼」は、仕事を一人で抱え込まず、自分以外のチームメンバーを信じて任せようという考え方を指します。

日本でも「報連相」の考え方があるので、このあたりはイメージしやすいかと思いますが、チーム開発においては一人だけで完結するような仕事をすることはあまりなく、ほとんどがチームメンバーと協力して行う仕事になります。

プログラマーは責任感が強い方が多く、「任された仕事は自分で全て片付けなくてはならない」とか「他人に頼って迷惑をかけてはいけない」といった考えの方が結構多いのではないでしょうか。

もちろん、責任感が強いというのはとても良いことですが、時にはチームのメンバーに頼って仕事を手伝ってもらったり、自分にはできない範囲の仕事を他のメンバーに任せるといった工夫も、チームで仕事を進める上では大事なことだと感じます。

メンバーを信頼し、仕事を任せることで、結果的にチームの作業効率の向上にもなりますし、仕事を任せることで、結果的に自身の大きな成長にも繋がると思います。

まとめ

今回は、プログラマーの三大美徳とチーム開発の3本柱HRTをご紹介しました。

プログラマーの三大美徳

  • 怠惰 → 仕事の効率化、効率的なプログラムの作成

  • 短気 → 不具合の予期・処理速度の高速化・修正しやすいプログラム作成

  • 傲慢 → 簡潔で綺麗なプログラムの作成

HRT
「謙虚(Humility)」「尊敬(Respect)」「信頼(Trust)」の考え方を実践することで、「円滑な人間関係の構築・改善点の発見」「人間関係のトラブル回避」「作業効率向上・成長」を実現できる

これらの美徳と心構えを持つことで、より良いプログラマー、そしてより良いチームを作ることができると思います。

とはいえ、私もまだプログラマー歴1年目なので、これから技術的にも精神的にももっと成長できるようにがんばろうと思います!

最後に、エム・ソフトは自分と同じように一緒に働くメンバーを募集しています!
もしこの記事を見て、エム・ソフトに少しでも興味を持っていただけましたら、以下の採用サイトを見てもらえると嬉しいです!

最後までお読みいただき、ありがとうございました。

この記事が参加している募集

入社エントリ

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!