うなじと絶対領域++

いらにかのブログです。更新は不定期。

僕とプログラミング

なぜこんな記事を書くのか?

そういえば、個人的なプログラミングに対する姿勢というか付き合い方をネットに公開したことがないなと思った。プログラムは書くけど、職業プログラマではないと自負しているので、そのあたりを明確にするためにこの記事を書こうと思った。

プログラミングを始めるきっかけ、転換期、振り返ってみて、の3章に分けてポエムを書くので中身のない記事かもしれない。まぁ「こんな人なんだ」くらいの挨拶代わりになれば必要十分である。

プログラミングを始めるきっかけ

プログラミングを始める切っ掛けは、学校の授業だった。
高専の情報系学科に通っていたので、当然ながらプログラミングの講義は5年間あった。

講義ではアルゴリズムとデータ構造やOSとコンパイラなど情報工学の基礎の他にコーディング規約などプログラミングをする上での作法のようなものも学んだ。講義から得られたプログラミングの基礎は今につながっていると思うし、複数の先生から学べたことは凄く良かったと実感しているので感謝しかない。

プライベートな時間でもPHPJavascriptでWEBアプリケーションを作ったり遊んだりしていたし、プログラミングは確実に趣味の一部だった。

ただ、ある本に出会うまではプログラミングは単なる知識とスキルでしかなかった。

 

その本は「UNIXという考え方 The UNIX philosophy」

 

転換期

ここから本の内容については知っているものとして話すので、読んだことがない人は購読するか以下で概要を知るといいかもしれない。

https://gist.github.com/koudaiii/82e4f8869705e5be065f

18歳の頃に友人のススメで読んだこの本の影響で、それまで知識とスキルでしかなかったプログラミングとの関係に「思想」が加わった。

特に本の内容と直接的な関係はないが、プログラミング言語それぞれの思想を感じるようになったのが一番大きな転換だった。

18歳の頃は講義で主にC言語、趣味ではPHPJavascriptを使っていた。

ただ、だんだんとPHPは使わなくなり、PythonC#を触り始めた。

当時は「ただこっちのほうが便利そう」くらいにしか考えていなかったが、この頃から「やることに合わせて言語を選ぼうとする癖」が身につきはじめていた気がする。

そこから、趣味プログラミングで新しい言語のお試しが始まった。

Go, Rust, Nim, PowerShell, F#…

24歳の今では主にNimとシェルスクリプト(sh,pwsh)を使っている。
(まぁ作るものによってコロコロ変えるのだけど)

各言語を深く試したわけではないし、別にどの言語が優れているとか言いたいわけではなく、この経験を通して「僕はできる限り、機能を実装したくない。使う側でいたい人間なんだ」ということに気づいた。

プログラマからお叱りを受けそうな考えかもしれないが、
僕にとってはプログラミングは何かを実現するための手段でしかいないし、
意図しない車輪の再発明はしたくない。

僕よりも賢い人が設計した車輪とフレームを使って、自転車を組み立てるほうが好きだし性に合っている。
ただ、いい車輪か知るためには車輪を作ってみるのもアリだと思うので、学習のためには再実装することはある。
(知的好奇心を満たすために新しい言語を学ぶことがその例)

 それでも、プログラミングに対する思想の根っこには「できる限り機能実装したくないし、使う側でいたい」という僕のエゴが深く根付いている。

感情的だが、僕にとってプログラミングに思想が宿ったときから感情は大きなファクターになっている。そして感情的だからこそ、僕は職業プログラマに向いていないと思うし、たぶんこれからも目指さない。他人の都合で僕はコードを書けない。

お仕事でプログラムを書くのは、自分が楽をするために何かしらの小さなツールを作るくらいが性に合っている。

 

振り返ってみて

僕はこの考えを曲げられるほど理性的ではない。

人間の行動原理は理性よりも感性(感情)のほうが強いと思っているし、理性がより求められる職業プログラマになれない(ならない)理由でもあると理解している。

なので、職業プログラマを目指すなら僕のケースは役に立ちません。
ちなみに、本気でプログラミングを突き詰めたいなら職業プログラマになって、コードを読む・書く時間を少しでも多くしたほうがいいと思う。コードに触れた時間は必ず経験値になる。絶対に。

 

とまれ、長々と書いてきましたが、
要するに僕はプログラミングと趣味で付き合っている。という話でした。