生産性向上が開発者の成功を左右する理由 | TechCrunch

生産性向上が開発者の成功を左右する理由 | TechCrunch

ソフトウェア開発業界には問題があります。ソフトウェアを開発する華やかな宮殿に足を踏み入れた開発者は皆、次々と新しいフレームワークに出会います。新しいプラットフォームはどれも「次なる輝くオブジェクト」です。今日では、数え切れないほど多くの「インテリジェント」ツールが存在します。コードエディタは非常に賢く、プログラムの大部分を自動で作成してくれます。

ソフトウェアエンジニアリング技術の新たな進歩には、定義済みの機能を追加するライブラリが必ず登場します。音声認識が必要ですか?そのためのライブラリがあります。英語のみが必要なのに、11言語に対応しています。RESTサーバーからのJSONレスポンスを、1950年代のアパラチア地方のヨーデルヒット曲のトラックリストにまとめたいですか?もちろん、すぐに使えるコードを大量に取り込んで、すぐに使えるメディアプレーヤーで画像のカルーセルにすべてを表示できます。

ところが、突然、1ギガバイトをわずかに下回るサイズにまで膨れ上がったアプリが手元にある。人類が知るあらゆるOSでクロスプラットフォームに動作する。しかし、接続したマシンのパフォーマンスはどれもこれも低下させる。しかし、見た目はクールだ。理解できないライブラリを山ほど抱え、肥大化し、震えるモンスターのようだ。その依存関係は、10代の初恋よりも脆い。

すべてを楽にしようと努力するうちに、うっかりして全体を難しくしてしまいました。コード、特に自分たちが完全に所有していないコードが増えると、生産性が低下します。ただできるからという理由だけで、拡張機能を追加したいという誘惑に負けてしまいました。本当にそうすべきかどうか、考えたこともありませんでした。 

単純な話です。コードが少ないということは、コードが簡単だということです。開発者の生産性は、「ありとあらゆる」ライブラリを組み込む複数の競合するフレームワークに埋もれるべきではありません。丁寧に作られたコードはローコードです。保守しやすいコードもローコードです。ただし、150行のプログラミングをざっと流し読みするよりも、2万行の「最適化された」プログラミングを読む方が簡単だと考える場合は別です。学習曲線が短いほど、生産性の向上と持続への近道となります。 

ありがたいことに、生産性こそが目標であり、ツールを慎重に選ぶことが鍵であることにようやく気づき始めています。コードを多く書くことが解決策ではありません。一生懸命働くのではなく、賢く働きましょう。

肥大化は持続可能か?

GitHubのCoPilotのような人工知能ツールのおかげで、私たちは過去10年間で大きな進歩を遂げました。CoPilotはインテリジェントアシスタントのトレンドを取り入れ、実際にコードを書いてくれることもあります。まだ初期段階ですが、将来性は期待できます。開発者が実際にコードを書くために使用する専用の編集アプリであるIDEには、疑似インテリジェント機能が組み込まれていることがよくあります。この機能は、コード内の関数の正確なパラメータセットと使用方法をプログラマーに思い出させます。優れたIDEは、スペルミスや文法ミスを指摘してくれるワードプロセッサのように、間違いを見つけてフラグを立てます。

しかし、この役に立つ行動は、実は、ある重大な秘密を露呈するサインです。つまり、コードを書くことはますます難しくなってきている、ということです。コードはより複雑になっていますが、それにはいくつかの理由があります。最も基本的なレベルでは、コンピューターはより洗練されています。ユーザーとして、私たちはコンピューターにもっと多くのことを期待しています。価格と在庫状況で分類された商品のリストと、最寄りの店舗への地図を表示するショッピング アプリを私たちが求めるのは、ごく自然なことです。アプリは、購入した商品が店内でどの通路に並んでいるかということまで教えてくれます。また、電池など、商品と一緒に購入すべき関連商品を提案してくれます。もちろん、アプリはあなたの選択を追跡してマーケティング チームに報告し、クラッシュを QA ダッシュボードに報告します。さらに、広告大手があなたの人口統計に「関連がある」と判断した商品を表示できるように、ビーコンを(有料で)残しているのです。

少し考えてみてください。わずか10年の間に、私たちは単純なスプレッドシートやシンプルなWebページから、COBOLやウィリアム・シャトナーの時代の最も無謀なSF作家でさえ想像できなかったような、途方もなく高度な技術へと進化しました。

ムーアの法則が逆転

CPUパワー、コア数、並列処理能力において飛躍的に向上し続ける、驚くほどパワフルなハードウェアが、昔のコンピューターよりも遅く見えるのも無理はありません。偉大なムーアの法則は確かに成り立っています。コンピューターの性能は確かに少なくとも18ヶ月ごとに倍増しています。しかし、ムーアの法則には暗黙の帰結があります。ソフトウェアの肥大化は毎年倍増し、速度は半減するのです。これは自明の理ではありません。最新の、そして必須のアプリを起動した後、昔の素晴らしいコンピューターが軋み、足を引きずるような感覚を覚えたことがあるでしょう。

超高速ブロードバンドインターネットを流れるウェブページは、6MB以上という、ぐらぐらとしたボリュームを誇示しています。その隙間には、容赦なく広がるJavaScriptライブラリや「アセット」がぎっしり詰まっています。WebAssemblyへのトレンドは、ほぼ完全に、無頓着な開発者が浪費したCPUサイクルを取り戻すことを目的としているのです。彼らは、コンピュータ黎明期に教えられた「プログラムにおいては、大きいほど良いわけではない」という教訓を全く理解していないのです。

そして、恐ろしいことに、あのウェブの寵児、Electronアプリが私たちのコンピューターに滑り込んできます。確かに、ウェブデザイナーが「クロスプラットフォームで動作する」アプリを書いているのは確かです。しかし、これはネットワーク経由で起動するのに20秒もかかる「動作する」クロスプラットフォームの一種です。その後、コンピューターの貴重なメモリを1ギガバイト近くも食いつぶします。これは、私たちが「これで本当にいいのか?」と自問自答すべき、痛烈な警告となるはずです。 

シンプルなElectronデータベースアプリが数万ものファイルを読み込みます。これは生産性が高いと言えるでしょうか?それとも、賢明な方向性と言えるでしょうか?ネイティブバイナリアプリを作成するツールを使えば、同じアプリをわずか2.5秒で作成できます。非常にシンプルで、焦点を絞ったコードベースを備えています。最新の最適化コンパイラで構築されていると仮定すると、アプリの動作に必要なコードだけが含まれ、それ以上のものはありません

生産性の新時代

画像クレジット: Embarcadero Technologies (新しいウィンドウで開きます)

「何でもできる」肥大化したコードモンスターに、私たちが向かうべき道はもうありません。適切なツールを使ってコードを設計すれば、簡潔なコードになり、プリコンパイル済みのコンポーネント機能を統合できます。適切なツールにはローコードウィザードが搭載されており、膨大な依存関係に悩まされることなく、アプリ開発をスムーズに進めることができます。 

EmbarcaderoのRAD Studioは、品質を損なうことなく生産性を向上できる開発ツールです。現代のソフトウェアエンジニアリングに求められるあらゆる要件を満たしています。インテリジェントなコード編集機能により、学習(および記憶)曲線が平坦化されます。ローコードウィザードを使えば、美しくレイアウトされ、理解しやすい、ほぼあらゆるプラットフォームで動作するクロスプラットフォームアプリを作成できます。ユーザーがあなたの素晴らしいアイデアをどこで利用しようと、その場で出会うことができます。Windows、Linux、macOS、iOS、Androidなど、デバイスは問いません。

ソフトウェア開発における生産性とは何を意味するのでしょうか?

ソフトウェア開発の生産性とは、開発者の生産性、ビジネス機能、アプリケーションの柔軟性、そして製品パフォーマンスの総和です。これをソフトウェア開発コストと比較してみましょう。開発者のコ​​スト、つまり人件費、ハードウェア、そして奇抜な椅子といった高価なインセンティブの総和です。これを計算したら、ソフトウェア開発のために購入したツールのコストも加えてください。

支払った金額に見合った価値が得られる

「無料」でも時間のかかるツールチェーンは、全く無料ではないですよね?ここに問題点があります。それは、将来のメンテナンスと寿命です。オープンソースのツールチェーンには、よく「元のメンテナーがバスに乗れば、ソースコードにアクセスできるので、自分でライブラリを簡単にメンテナンスできる」という神話があります。しかし、これは全くの誤解であることが繰り返し証明されています。数行のコードで特定の機能を簡単に実現できるようにするためにライブラリを選んだのに、今では自分が書いていない何千行ものコードがあり、今すぐ、今日中に修正しなければならない状況に陥っているのです。

例えば、あなたのライブラリが、独自の方向性を決めた巨大上場企業によって設定されたアジェンダに基づいているとします。目標がメンテナーと合致していれば、ツールを再構築できます。しかし、アプリは既に完成して出荷済みであっても、その問題を解決する必要があります。これは、ツールチェーンの変更が全体として悪意のあるものではないという前提です。誰かが小さいながらも重要な機能の一部を撤回したために、依存関係が重層的に絡み合った膨大なコードが誤って取り込まれ、それらすべてが壊れてしまうような事態には至っていないという前提です。そんな事は絶対に起こらない、と言うかもしれませんね。しかし、実際に起こったのです。そして、また起こるでしょう。  

アプリ内のコードが増えるほど、アプリが脆弱になり、安定したスケーリングが難しくなる可能性が高くなります。使用中のパフォーマンスに合わせて調整されたツールチェーンを選択することが賢明です。 

EmbarcaderoのRAD Studioのような統合ソフトウェア開発ツールチェーンを選択することで、開発者の生産性を大幅に向上させることができます。コードの複雑さを軽減し、アプリケーションとエンドターゲットの柔軟性を高めます。製品パフォーマンスを最大限に発揮する「ベアメタル」ネイティブアプリケーションを生成します。相互依存的で最適化されていないライブラリの山や、汎用的な「どこでも使える」フレームワークは必要ありません。

コードを少なく書くと、より優れたソフトウェアが作成されますか?

成功している開発者は、コードが少ないほど生産性が高くなることを知っています。難しいことではありません。キーボードを叩く回数も、バグを見つけるために検索する行数も少なくて済むのです。集中してペンを噛みしめる瞬間を考慮しても、それでも時間は短縮されます。決まり文句かどうかはさておき、時間はまさに金なりなのです。

成功する開発者は、コードが少ないほど、知的にも概念的にも理解しやすいことを知っています。コードが少ないほど、テストと保守が容易になり、コストも削減できることも知っています。実際、私は他の開発者に怠け者だと言っているのですが、非常に生産的であることで知られています。私の秘訣は、開発ツールを慎重に選び、ユニコーンを追いかけないことです。 

読みやすく、書きやすく、習得しやすい言語、ローコード技術、そして生産性を高める堅牢なツールチェーンを活用して、シンプルさを重視し、複雑さを避けて進化しましょう。EmbarcaderoのRAD Studio ( DelphiとC++ Builderを組み合わせたもの)のような、生産性を飛躍的に高めるツールチェーンが存在します。これは私のスーパーパワーです。ローコード技術とマルチプラットフォーム展開による効率性の向上は、開発者の生産性を飛躍的に向上させます。少ない労力でより多くの成果を得られることもあります。

生産性の新しい時代を迎える準備はできていますか?

ソフトウェア開発はますます困難になっています。コード作成を支援する支援技術を備えたツールが数多く存在することからも、そのことは明らかです。しかし、より多くのコード、特に複雑なコードを書くことは、生産性に多大な影響を与えます。Electronのような技術を導入することで複雑さから逃れようとした結果、私たちは不満を抱き、肥大化したアプリケーションに悩まされることになったのです。 

大きいほど良いというわけではありません。クロスプラットフォームだからといって、必ずしも妥協すべきではありません。ローコードウィザードや「コード補完」テンプレートを備えたインテリジェントIDEといった、実用的な最新ヘルパーツールを活用したネイティブコードは、死ぬほど苦労することなく、競争の先頭に立つための力となります。よりスマートに、より一生懸命に働きましょう。開発ツールを厳選することで、生産性が向上します。あらゆる機能を備え、メモリを大量に消費するライブラリの洪水は避け、ユーザーの処理能力を一切消費することなく、本来の機能を果たすネイティブアプリを選びましょう。