プログラミングはアプリを作ることの手段なのか

プログラミングを勉強したい人が勉強する前にすべきこと - もとまか日記
プログラミングはそれ自体が目的であっていい - mizchi log

1つ目の記事は「プログラミングはやりたいことを実現するための手段の1つでしか無いから、プログラミングを学びたいなら何か作れ」という話。

2つ目の記事は、1つ目の記事を見て書かれたもので、タイトルの通り。

1つ目の記事を「プログラミングはアプリを作る手段でしか無いから、プログラミングを学びたいなら何か作れ」と誤解して、意識が高まったのでいろいろと書くが、個人的な体験を元にした私怨なので、殆どの人には関係ないだろう。

自分のこと

まず、僕がプログラミングを始めたのは、中学の時に友人に誘われたからだ。

友人に誘われてHSPを始め、当時ハマっていたブロック崩し(エロくない方)を自分でも作ってみようとしたが、ブロックとボールの当たり判定で挫折した。

その後は、殆どプログラミングに触れることはなく、親に買ってもらったdynabookはオンラインゲームやFlashゲーム、CGIゲームなどの娯楽に使用された。

プログラミングをまともに始めたのは、大学1年のJava入門の授業。

プログラミングを始めたかったわけではなく、所属していた学科の暗黙的な必修授業だったから履修した。

それからは、Javaでサークルで使う用のアプリケーションを書いてみたり、LL言語でスクリプトを書き散らしたり、インターネットで見かけた面白そうと思ったライブラリを少し触ったりしていた。

未だに自分がプログラミングをする明確な目的を見いだせていないが、今でも僕がプログラミングを続けているのは、プログラミングが楽しいからに他ならない。

その結果エンジニアと呼ばれる人種になって、ここ1年はスマートフォンアプリを作っている。

プログラミングを手段だとしか考えない人

特に目的を明確にせずプログラミングを始めた僕にとっては、何かを作るためにプログラミングを始めた人間は尊敬の対象だった。

僕は、プログラムを書くのは楽しいが、何か作りたいものが有るときしかプログラムを書けない。

TwitterやHatenaに居る人間を見て、そういう人は常に何かを作って技術を高めていると思っていた。

しかし、多くの人はそうではない。

アプリを作ることを目的にした人間は、アプリを作るためにアプリを企画し、アプリを作るためにプログラミングをする。

そうして糞アプリと糞コードを量産していく。プログラミングはアプリを作る手段でしか無いから、技術向上には目が向かない。

プライベートなら糞アプリを見せられても微妙な反応をしとけばいいだけだが、業務になるとそうもいかない。

プログラミングを手段としてしか考えていない人間は、動くだけの糞コードを生成する。

少なくとも業務においては、動くコードを書くのは当然の事なのに、その先に目が向いていない。

巨大なクラスや関数、画面を埋め尽くすimportやメンバ変数、名が体を表していない命名、散見されるコピペコード、処理の重複.....

その結果としてプロジェクトが燃え上がる。糞コードを見つける度に指摘しても、次のプロジェクトになったら忘れている。酷い場合は別のクラスを書くときには忘れられている。

無理矢理まとめ

最初にも書いたが、一つ目の記事を「プログラミングはアプリを作る手段でしか無いから、プログラミングを学びたいなら何か作れ」と誤読して、憎悪が溜まった結果、以上の文章が生成された。

実際にはそう書かれていないし、リンクされている記事を読んでも、そのような意図は無いと感じられる。

誤読して勢いだけで文章を書いたので、まとまりも無いし恥ずかしくなってきたが、糞コードを量産する自称プログラミング好きのエンジニアは多いのではないかと思っている。そして、色々書いたが僕自身大した技術を持っていない。

とりあえず、プログラミングは何かを達成させるための手段でしか無いというのには概ね同意する。

しかし、アプリを作りたい人/プログラミングを勉強したい人は、何を目的にしているのだろうか?