🗾

「思考停止」は良いことである  ~エンタープライズ現場のローコード~

2023/12/16に公開

みなさんこんにちは。

本日はシステム開発では「良い思考停止」と「悪い思考停止」があるという話。

私の現場では「部品化」によってエンジニアが反覆作業をしなくてよくなることを(良い意味での)「思考停止化」と呼んでいる。「部品化」によって通常はミスしがちな複雑な処理を隠蔽化された処理に換装することで、「実行時エラー」・「デグレード」・「手戻り」が発生しなくなることを指してそう呼んでいるのである。

「良い思考停止」というのは部品の利用者がその部品を利用することで、実装の負荷・検証の負荷・バグの不安・デグレードの不安から免れるている状態のことである。つまり「作業の余裕」「心理的な余裕」と言うことだ。
 
 多くの現場には優秀な人材 ーー「自分の頭で考え」「複雑なタスクを乗り切り」「プロジェクトを成功裡に収める」人 ーー  が存在している。しかし、「弊社にはそのような優秀なエンジニアが在籍しているんだ」と誇ることは間違っている。

結論から言う。有能な熟練工ほど、チームメンバー全員が70点レベルのエンジニアとなるよう
「フラット化」を目指すべきである。当然、自分自身もまた70点レベルに「位置付ける」という意味である。
 
「フラット化」は様々な形で可能である。90点レベルのエンジニアが書いた100行のコードを
リファクタリングによって20行にする。可読性をあげる。宣言的プログラミングに換装する。これによって40点レベルのエンジニアでも安心してそのプログラムを触れることを実現する。ローコードを適用する場合も同様である。

部品を提供するすることは「良い思考停止」を提供することであり、「思考停止」は「心理的安全性」をもたらす。優秀な人間は「思考停止」の供給者としてパフォーマンスするべきなのである。

ローコードは本来、(良いほうの)「思考停止」というコンセプトで語られるべきである。

世間は「ローコードは素晴らしい」「クリエイティブである」ともてはやす。「一般の人でもアプリケーションが自由自在に作れるようになる」という触れ込みを皆が鵜呑みにしている。だが、それは間違っている。

最もおかしいのは「ローコードは素晴らしい」と称賛し、同時に「熟練エンジニアは素晴らしい」と称賛することである。
 ローコードが素晴らしいのであれば、熟練エンジニアは必要ない、逆に熟練エンジニアが素晴らしいのであれば、ローコードを用いずに熟練エンジニアに「頼れば」いい。

そうではなく「ローコードの効能」を「思考停止の増大」と位置付けるとどうなるだろうか?ローコードや部品群を活用することで品質は安定し、作業負荷は減り、技術負債が蓄積していく恐れから解放される。そういった中で、熟練エンジニアも「部品の活用」を進んで受け入れるべきである。間違っても、既に部品化されている部分や、部品化可能な部分を手組で実装するという「退行」を行ってはいけない。むしろ自分の腕の見せ所が無くなることを自ら目指すのが真のエキスパートである。

そもそも「実装」という作業は、エンジニアの意識をプログラムに向けてしまう。顧客との対話から遠ざけてしまう。そこに大きな弊害がある。

例えば、実践の一つの形として、チームメンバーは1日の間にどれだけ「思考停止」で作業したか、その時間をカウントしてみるべきである。

私の現場には「熱血禁止」「優秀禁止」「クリエイティブ禁止」という張り紙を貼っている。現場における「熟練工礼賛」を戒めているのである。熟練工が活躍するところからあらゆる弊害が沸き起こる。
 
 「車輪の再発明」という言葉がある、ライブラリがあるにも関わらず、個別の処理を手組みで実装するという意味である。プログラミングの現場で古くから言われてきた言葉だ。ところが、この言葉は実際に言われているほど、実践されていない。 それに気づくことから全てが始まる。 
 
 SI業界には「優秀なエンジニア」は数多くおり、その多くが「活躍」しているし、「活躍している自分に満足」している。だが、問題はその「活躍の仕方」である。 彼らは、今この瞬間もプログラムと格闘し、様々なプロジェクトを成功に導いている、炎上プロジェクトの立て直しを行っている。

しかし、彼らに対して「よくやってくれた」「君がいなかったら乗り切れなかった」と言うのは間違っているのである。

Discussion