そこそこの企業の特にWeb系で渡り歩いた経験から、真実を書こう。
はっきり言う、ほとんどのプログラマと自称する人間の 9 割はコーダーである。
言われたものを作る事はできるが、それ以外何も出来ないと言って過言ではなく、何もしない。
そんな驚きの生体をここに晒していく。
標準化と呼ばれるプロセスで、プログラマが環境の設計、組み合わせ、開発プラットフォームのセットアップ、開発環境の構築手順作成、開発手順の作成、必要な技術の考察を行う。
なぜそうなったのかは知らないが、一般的にそうなっている。
その環境に浸っているせいか、彼らはゼロベースでものを作ることが出来ない。
彼らにできるのは HelloWorld をコマンドプロンプトで表示するプログラム程度の事しか出来ない。
複数ソースの連結、ライブラリの読み込み、サーバへのデプロイ、どれも手動で出来ないのだ。
逆にそれ以外のこと、コードの読みやすさや、クローン率の低減、メソッドコメントの記載などの保守に関わることをしない。
それは彼らにとって「必要ない無駄な作業」としか考えないのだ。
早く仕上げるためなら、似たような動いてる箇所から、よく読みもせずにコピペを行う。
そして彼らは、作るより運用する期間の方が遥かに長くて、その間に修正で地獄を見るという簡単な論理に気づかない。
…何度味わっても気づかない。
たとえするとしても、業務時間中に業務で使ってる技術をピンポイントで学習するだけだ。
だが、プログラマと呼ばれる人間の母数に比べれば微々たるものだ。
彼らは言う「土日にまで仕事してられるか」「勉強会行ってるの?馬鹿か?」
あえて言おう、馬鹿は彼らだ。
Web で仕事をするならIDE(統合開発環境、エディタやコンパイル、テストやデバッグ実行などを画面から行えるツール)はほとんど必須(エディタで済ませる事も出来なくはない)が、彼らは状況に応じたセットアップができない。
たとえば「Maven(プロジェクト管理ツール)、checkstyle(コーディング規約チェック)、editorconfig(改行、インデント、文字コード設定)」が入っていたとする。
するとEclipseなどを使うとして
マニュアルやチュートリアルを用意しないと、道具の使用もままならない。
テストをなるべく機械にやらせようということの利点が理解できない。
そのために、何十回もコンパイル、デプロイ、アクセス、ログインの手順を何度も繰り返す。
関連する他の修正を行うたびに繰り返す…。
そしてやっと動くとひと仕事終えたと満足感に浸る。
ラリー・ウォールというとある有名な人物(Perl開発者にしてC言語ハッカー)がいる。
これは、自分の作るものは完璧なのだ、だから完璧であるように出来る限りのことをするという美徳である。
彼らは金のために嫌々動くだけのものを作るのだ、動きさえすれば報酬は変わらない、よって当然完璧かどうかなどどうでもいい。
同じ金でより良いものを作るのではない、要件だけ満たせばよいのだ。
変なプライドを持つコーダーは、それで運良く成功すると、自分の知識は正しい、自分の技術は十分なのだと考えている。
こういう人間は、プライドの無いコーダーよりたちが悪く、うまくいかないと他人か環境のせいにする。
そして調べず周囲を苛立たせるのだ。
土日に自ら勉強会に行くプログラマや、それこそ 50 人以下などという会社であればこうした事はあまりない(んじゃないかと思う。)彼らは自分でなんでもやらないといけないからだ。
だが、大企業に飼われる子飼いの企業、派遣(そもそも人手のみを求められる企業)、100人以上の企業では、役割分担に伴いこうした状況が多々発生する。
だが役10年、エンジニアを見てきた結果は変わらない。現実問題こうなのだ、こんな人間が大多数なのだ。
人の多い企業ほど考えたほうがいい、それでより良いものが生まれるのかと。
必要とされる技術だけを叩き込んで金にしたいと言うのは分からなくないが、基本姿勢や思想はどうなんだと。
経営者よマネージャーよ、あなた方の言う「最適化」とは現場が日々考え行っている最適化か?人員最適化だけを行って、生産性が伸び悩んでいないか?
そのあたりは考えた方がいい。