今プログラマーに求められる技術とは

世の中には様々な技術があります。例えばScrum。「柔軟かつ全人的なプロダクト開発ストラテジーであり、共通のゴールに到達するため、開発チームが一体となって働くこと」を目標とした開発手法です。

スクラムガイド by Ken Schwaber & Jeff Sutherland

What is Scrum?

そして、2019年の開発言語のトレンドは1位 Go (37.20%)、2位 Kotlin (26.45%)、3位 Python (26.14%)です。

さらに、JavaScript Frameworkでは、React JSフレームワークのアングル構造とAngularが持つサーバーレンダリングに軽量の双方向データバインディングアプリケーションを開発する理想の選択肢であるVue.jsなどがあります。

不具合と向き合う

ただし、どんなに素晴らしい技術を持ってしても、無意味どころか被害を生み出してしまう。それは不具合です。

「不具合」関連の最新 ニュース・レビュー・解説 記事 まとめ

これだけ新しい技術が生まれても、未だに不具合は増える一方です。なので、不具合を先に見つける事に着目した、「テスト駆動開発」という技術があります。

Qiita | テスト駆動開発

設計と向き合う

しかし、不具合なく作ったとしても、そもそも設計が間違っていたら無駄になります。文章で書かれた設計に対して事前条件、事後条件、不変表明を明確にする「契約による設計」という技術があります。

Building bug-free O-O software: An Introduction to Design by Contract™

納期と向き合う

これで、あなたは正しい設計で不具合のないプログラムを開発できるようになりました。ところが納期までに人も時間も足りません。こんな時は早く開発することが求められます。そのために過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化した「デザインパターン」という技術があります。

デザインパターン (ソフトウェア) – Wikipedia

Design Patterns: Elements of Reusable Object-Oriented Software

なお「デザインパターン」はオブジェクト指向をベースとしています。よって事前にオブジェクト指向を理解する必要があります。ここでは一般的なJavaかC#で学んでみるのが良いかもしれません。

ORACLE | JAVAチュートリアル

Microsoft | C# 関連のドキュメント

余談ですが、構造化プログラミングを考案したエドガー・ダイクストラ抽象データ構造と階層的プログラム構造を基礎にオブジェクト指向は生まれました。構造化プログラミングはソフトウェアに必要な機能と,それぞれの機能で使用するデータの流れを分析/設計する手法(構造化手法)です。このように,機能(処理)に着目して開発する手法をプロセス中心アプローチ(POA:Process Oriented Approach)又はプロセス中心設計といいます。構造化設計には,処理効率の向上,保守の容易化,モジュール の部品化(再利用)などのメリットがあります。

シンプルになる

おそらくは、この一連の技術は今も昔も、そしてこれからも求められるものだと思います。そして、これらの技術をより深く理解したプログラマーは、複雑で難解なロジックをシンプルなコードで解決します。
普段は目立たないものですが、プロジェクトによっては何十人もの人が何ヶ月も掛けて作ったものを、一人だけで僅か数週間で作ったりします。その磨かれた技術は芸術的な才能といった方が、近いかもしれません。

プログラマが知るべき97のこと

文章にしろ、和音にしろ、リズムにしろ、美しく、優雅なもの、優れたものはすべて、シンプルである。

プラトン

投稿者: 二本松 哲也

SPbD:Security&Privacy by Design Founder ー OWASP Member ー ITは人々の生活をあらゆる面でより良い方向に変化させること ー 競争原理から共創原理へ