「プログラミングを道具にできてすごい」とはどういった感情なのか

最近就職活動で何社か面談してて、よく「あの人プログラミングを道具にできてすごいなぁ」みたいな感想を抱くことがあった。

これを言語化してみたい。

まず、プログラミングはよく手段か目的か、みたいな論争がよくある。
これは大抵の場合手段であることが正しいとされていて、それに関してはそのとおりだと思う。
現代のプログラミングは資本主義社会に於いて、物を売って利益を得るための手段であり、他の手段によって交換可能なものであるからだ。*1

おそらく、「道具にできてすごい」というのは「手段にできてすごい」に言い換えできる。
とすると、自分はプログラミングを手段にできていない、目的にしてしまっているのだろうと思う。
そうなると自分のプログラミングとの向き合い方がおそらく一般的ではなさそう、というところまではわかってきた。

ところで、自分のプログラミングの向き合い方といわゆるアジャイル開発と呼ばれる手法ってにてるなと思っている。
自分はまず、どういうソフトウェア設計が理想かを考える傾向にある。(堅牢に作ろう、速度重視で作ろうとか)
その後でどれが一番理想を叶えるのに最適な手段かを考える。(言語、フレームワーク、設計とか)
そして実現可能性を加味して手段を決定する。
しばらくした後、または詰まったときにこれは理想に近づけているのか?あるいはその理想は正しかったのか?を考えて軌道修正する。
ということを考えている or 考えたいと思っている。

アジャイル開発もなんかだいたい同じようなもので、どういう商品を作るか考える、機能を削って最低限の状態でリリースする、機能を追加するときにこれ本当に必要なの?みたいなのを考える(toB だと顧客の問題を解決するのが多く、大抵は本当に顧客の問題を解決できるのか?根本は別のところにあるのでは?みたいな話になると思う)*2

こう見ると、中小企業では商材の開発に集中するだけでいっぱいいっぱいになってプログラミングに同じくらい工数をかけるのは難しいだろうなぁと思ってきた。*3

うーんなるほど、こりゃ定職につくのはしばらく先になりそうだな。若気の至りのようなもので、年をとったら柔軟に動けるようになるんじゃないかな、とは思っている。

全然まとまらないけど、これで終わりにする。

*1:事業にもよるかも

*2:リーンと混同してるかも

*3:別に彼らがプログラミングを軽視していると言いたいわけではない。リソースが無限にあるならやりたいと思ってるはず。