シンプルさを追求するべきか、それとも美しさや完璧さにこだわるべきか。
エンジニアによって、「良いコード」の定義は少しずつ異なるかもしれない。しかし、コードが開発効率や製品の品質を左右することはまぎれもない事実。
AIがコードを生成するようになりつつある今、改めて「コード」に対して持つべき視点を考えてみるのもいいだろう。エンジニアtypeの記事を振り返ってみよう。
「要件を満たせばOK」では甘い
アジャイルコーチとして数々の実績を持つ吉羽 龍太郎さんは、「要件を満たしたコードを書いたら、自分の仕事は終わりと思っているのであれば、それは甘い考えと言わざるを得ません」と語る。
吉羽さん
いつでも誰でもコードのあらゆる場所を触る可能性がある というのが、今のソフトウエア開発の基本的な考え方です。開発を持続可能にしてプロダクトが成長し続ける状態を保つには、複雑なコードを生み出さないための努力が必要なんです。
何のために、誰のためにコードを書いているのか 。そのことを、エンジニアは改めて意識し直す必要があるという。
吉羽さん
『自分以外の人が理解できるか』『将来自分がメンテナンスできるか』といった観点を持つことが、非常に重要です。
ですからコーディングの練習をする際には、一人きりで作業を完結させるのではなく、できれば自分が書いたコードを誰かに読んでもらい、フィードバックをもらうのが良いでしょう。
株式会社アトラクタ
Founder兼CTO/アジャイルコーチ
吉羽 龍太郎さん(@ryuzee )
野村総合研究所、Amazon Web Servicesなどを経て現職。アジャイル開発、DevOps、組織開発を中心としたコンサルティングやトレーニングが専門。Scrum Alliance認定スクラムトレーナー。著書に『SCRUM BOOT CAMP THE BOOK』(翔泳社)など、訳書に『プロダクトマネージャーのしごと』『エンジニアリングマネージャーのしごと』『チームトポロジー』『スクラム実践者が知るべき97のこと』『プロダクトマネジメント』『みんなでアジャイル』『レガシーコードからの脱却』『カンバン仕事術』(オライリー・ジャパン)、『ジョイ・インク』(翔泳社)など多数
エンジニアの善意がコードを複雑にする? “改良したい欲”に駆られる前に知りたい「コーディングの鉄則」とは
https://type.jp/et/feature/26789/
綺麗なコードより「done is better than perfect」が効率的
続いては、エンジニア兼経営者という共通点を持つ、ひろゆきさんと安野たかひろさんの2名による対談記事から「コードの本質」を探ってみよう。
ひろゆきさんは、コードが綺麗であるべきかどうかについて、次のように語る。
ひろゆきさん
おいらが知ってる優秀なエンジニアで「コードが汚いから読めない」って言う人は見たことがないんですよね。まあ、他人のコードを読む事になるエンジニアは、同僚に綺麗なコードを要求するのは当然ではありますけど。
ひろゆきさん
サービスが流行るにつれて、想定と違うボトルネックが発生して、アルゴリズム自体を変える必要が出てきた時などにコードを綺麗にするのはアリだと思いますが、コードを読むのが下手なエンジニアのためにコードを綺麗にするのは時間の無駄かな、、と。
ただ、エンジニアからは「コードは綺麗に書け」という圧力が出てくるのは当然なので、上位の人が「どんなコードでも動くコードを作るのが正しい」「done is better than perfect(完璧を目指すよりも、まずは終わらせることが重要) 」 のスタンスが効率的だろうなぁ、、と思うおいらです。
そんなひろゆきさんの意見に対して安野さんは、自身の実体験を交えてこう答えた。
安野さん
私もスタートアップの経営をやっている時にエンジニアチームから何度も新機能開発ではなくリファクタリングに時間を使わせてくれ と要求されていました。
結果、お客さんに「この機能のリリース遅れます」と頭を下げ、エンジニアチームには「ここまでは耐えてくれ」とお願いし、経営陣に「リファクタリングやらないとマズイっす」と強弁し、ほうぼうで調整をかけていた覚えがあります。
そういう意味ではひろゆきさん推奨の「done is better than perfect」を貫き切れなかった側の経営でした。。。
安野さん
ただ、リファクタリング工数を経営的なロジックで正当化するのは本当にしんどいと思います。
(中略)
ひろゆきさんが言うようにデグレしてお客さんからブチ切れられるリスクもあるわけですからね。
リファクタリングの工数をいかに確保するかという課題に、安野さんはどのように対処していったのか。その答えは、ぜひ記事本編をチェックしてほしい。
ひろゆきさん(@hirox246 )
本名・西村博之。1976年生まれ。「2ちゃんねる」開設者。東京プラス株式会社代表取締役、有限会社未来検索ブラジル取締役など、多くの企業に携わり、プログラマーとしても活躍する。2005年に株式会社ニワンゴ取締役管理人に就任。06年、「ニコニコ動画」を開始。09年「2ちゃんねる」の譲渡を発表。15年に英語圏最大の匿名掲示板「4chan」の管理人に。著書に『働き方 完全無双』(大和書房)『プログラマーは世界をどう見ているのか』(SBクリエイティブ)『1%の努力』(ダイヤモンド社)など多数。ABEMAで配信中の『世界の果てに、ひろゆき置いてきた』も好評
AIエンジニア&起業家&SF作家 安野たかひろさん(@takahiroanno )
1990年、東京生まれ。開成高校を卒業後、東京大学工学部システム創成学科へ進学。「AI戦略会議」で座長を務める松尾豊教授の研究室を卒業。外資系コンサルティング会社のボストン・コンサルティング・グループを経てAIスタートアップ企業を二社創業。デジタルを通じた社会システム変革に携わる。日本SF作家クラブ会員。
●デジタル庁デジタル法制ワーキンググループ構成員 ●英国王立美術院にて準修士 ●未踏スーパークリエイター ●ハヤカワSFコンテスト受賞 ●星新一賞受賞 ●アジアデジタルアートアワード・インタラクティブ部門大賞 ●M-1グランプリ出場
優秀なエンジニアは「コードが汚いから読めない」なんて言わない【ひろゆき×安野たかひろ】
https://type.jp/et/feature/26796/
コードの正しさや実用性を評価するスキルが重要になる
国内最大級の競技プログラミングサイト『AtCoder』を主宰する“ちょくだい”こと高橋直大さんは、「今後5年くらいの間はプログラミングスキルそのものが不要になるような事態にはならない」と述べる。
ちょくだいさん
今のAIは、ある問題を与えられた時に最適な答えとなるコードを出力することは得意ですが、そのコードの解説を高い精度で実行する能力は低い。なぜなら、ソースコードの解説に関する学習が圧倒的に不足しているから。
ちょくだいさん
なので、AIが生成したソースコードの正しさを確認したり実用性を検討したりといった作業は、当面は人間が行う必要があるでしょう。その観点から言うと、プログラマーは今まで以上にコードの本質を理解するスキルが必要となる かもしれません。
AIが今まで以上に進化していく世界では、単にコードを羅列するだけのスキルでは立ち行かなくなる。
ただ、「顧客の曖昧な要望から仕様をまとめるプロセスや、生成されたコードをチェック・テストするプロセスは、今後も人間が担う仕事として残っていくだろう」と、ちょくだいさんは言う。
ちょくだいさん
GPUやCPU、OSなどの低レイヤー領域や、AIそのものを構築するような高度なプログラミング領域に関しても、しばらくはエンジニア自身が担っていくことになると思います。
とはいえ、これからはあらゆる仕事がAIに変化を強いられていくはずです。個人的にはいずれ仕事はAIがこなし、人間は監視役に回るような時代 になってほしいし、そうなるのではと予想しています。
AtCoder株式会社 代表取締役 高橋直大さん(@chokudai )
1988年生まれ。筑波大学附属駒場中学校・高等学校、慶應義塾大学環境情報学部を経て、慶應義塾大学政策・メディア研究科修士課程修了。大学院在籍中にMicrosoft主催のプログラミングコンテスト『Imagine Cup 2008』に出場し、アルゴリズム部門で世界3位に入賞した経験を持つ。Google主催のGoogle Hash Code 2022でも世界1位に。2012年、競技プログラミングコンテストを主催するAtCoder社を創業。著書に「最強最速アルゴリズム競技プログラミング」(SBクリエイティブ)など
「プログラミング不要論」ってマジなの? AtCoder・ちょくだいさんに聞いてみた
https://type.jp/et/feature/25300/