え?プログラミングは面倒くさそう?君、プログラマ向いてるよ
こんにちは
イキリプログラマの創好です
それではまた次の記事でお会いしましょう
え、タイトルオチなのでこれで終わりですけど…
やる気あるのかって?
でも記事かくのって面倒くさくないですか?
まぁこれで終わるのも味気ないしちょっとだけ解説してあげましょうかね
自粛期間とかで「プログラミングできそう!」とか血迷っちゃった思った人向けです
"怠惰"はプログラマ第一の美徳である
プログラマの三大美徳っていう有名な話があります
Perlという言語のママであるラリー・ウォール
さんが言い出したやつ
そのうち第一の美徳として"怠惰"を挙げているわけですね
今回はその怠惰
の話です
第二第三の話は気が向いたら生まれることでしょう
ウォールさんの話ではこの三大美徳、つまり怠惰でない人間はプログラマになるべきではなく即刻転職しろとまで言っているようですがここまで言われる謂れはない!と思いませんか?
私は思いませんけど
ではその理由を一つずつ紐解いていきましょうめんどいけど
怠惰 #とは
では、ここでの怠惰
とは何でしょうか
そう、面倒くさいってことです
いやそれはそうよね
では具体的にどういうことかというと
同じ事を繰り返したくない
これです
そしてそれがプログラミング
です
プログラミングとは面倒くさいを無くし続ける作業
つまり繰り返し作業を無くし続ける作業といえます
プログラマにおいて同じことを繰り返すということは
将棋で言えば二歩くらい初歩的なミスです
そんなことはコンピューターに繰り返させておけばいいんです
逆に言えば繰り返し同じ事をするのが全く苦にならない人、
あなたはプログラミングに絶望的に向いていないかもしれないので刺し身にたんぽぽを乗せる仕事をオススメします
聡明なみなさんならもう大体わかったと思いますが
もう少し具体的に見てみましょう
自動化 Automation
プログラミングといえば自動化ですよね
人間がやっていては「面倒くさい」「ミスが出る」「遅い」ような作業を
プログラミングすることで自動化していきます
良いプログラマであればプログラミングすら自動化し始めます
IDEやツールで記述する内容の70%くらいは自動的に生成させたりよく書く記述はサジェストから入力されます
研修や学校でなんの機能もないテキストエディタで書かせることもあるようですが
実際にはそんな環境で書くことはないです
罰ゲームかな?
当然、単体テストも自動化していきますよね
最悪プログラマ向けの自動化ツールを作り出したりします
でも何もわからないんじゃやろうと思い立っても自動化できないよね
ggrks
そういう事です
全てここに繋がります
調べられない人はこの世界ではオタッシャ重点な
わからないままのほうが実際めんどい
まぁそんな感じで怠惰な人は自動化
することに長けています
プログラミングは自動化する作業なので当然ですね
プログラミング以外で自動化を体験したい、自動化して気持ちよくなりたい人は以下をオススメします
-
Minecraft 工業化MOD
圧倒的神ゲー。
GregTechってやつがおすすめね
全く経験がない人はMODPackを入れるのもイイゾ -
Factorio
ついこの間やっと製品版がリリースされた2D版工業化MODと言われるゲーム(作者がマイクラ工業大好き)
無限に自動化する神ゲー -
Satisfactory
この間Steamでリリースされたあのヤギのスタジオが本気で作ってる3D版Factorioと言われるゲーム
やった感じはFactorioより際限無い感じで神ゲーでした
この辺のゲームで自動化を楽しめるならいい感じに怠惰なんじゃないでしょうか
Gregの動画あげてるので寝たいときに見てください
再利用 Reuse
同じようなプログラムを何度も書くことは非常に奥ゆかしくないです
実行速度の問題等、設計上の明確な理由が無ければ怒られても文句は言えません
同じコードを書けば書くほど変更があったときの作業は増えるし作業が増えればミスが増えて仕事が増えます
最悪です
デメリットしかない
そもそも同じコードを書くこと自体面倒くさいです
そういった理由から強いプログラマは再利用しやすいようにプログラムを書きます
再利用しやすいプログラムを書けば使い回せるので記述量が減りミスが減ります
そして変更も1箇所の更新で済み、なんなら別のプロジェクトに持ち越せることもあります
ふつくしい…
よくstep数とか行数で値段を付けたがる輩がいますがどう考えてもバカ愚策です
プログラムはゴルフと同じで少ないほうが神です
むしろ神じゃないと減らせないまである
しかし実際の現場ではこれができない人ばかりという現実
もっと怠惰になれ・・・
あと初心者殺しと名高いオブジェクト指向
の基本的な考え方はこの再利用
にあるので覚えておくといいでしょう
ドキュメント化 Documentation
質問されることは非常にめんどい
プログラミングにはまとまった時間が必要なのに
細かく中断され集中力は切れるし
絶対1回で理解しないやつもいるし
同じ質問を何回も答える羽目になる
もう、最悪です
そんな状態を野放しにはできないので強いプログラマはドキュメント化
するわけです
更にドキュメントに対して質問が残っては意味がないので
質問が必要ないようなドキュメント、
つまりいいドキュメントを書いてしまいます
ドキュメントがあるだけで全体の労力は減り、チームの為、未来の自分のためになる訳です
まぁ、本当のバカはそのドキュメントを読まないし無駄にするし意味ないんですけどね…
怠惰こそジャスティス
というわけでプログラマ第一の美徳「怠惰」について解説というか、あれしてきました
プログラマがめんどくさがりに向いていること、プログラマにめんどくさがりが多いことがよくわかったと思います
戦闘力50のプログラマが10人で1ヶ月かかるプロジェクトを
戦闘力100のちょい強プログラマが1人1週間で終わらせることもできてしまうくらい差が激しい界隈なので、
向いてないなら即やめろというのもわかりますね
ただ本当に向いていないのは努力をしない人
なので
そんな世界で頑張れるならやる価値はあると思います
プログラミング自体は誰でもできる素晴らしい技術なので
この同じことを繰り返してはいけない
の感覚がわかればいいんじゃないですかね
プログラミング初心者というか、これからの人向けの記事ということで
入門前の人向けの本をBoothに出しているので紹介しておきます
プログラミング入門書を買う前にこれを読め - 3日前に書いたコード - BOOTH
プログラミングの入門書って、入門とか言う割に大事なことが常識として省かれていたりそもそも初心者には読み方がわからなかったりと優しくないので入門書に詰まないための本となっています
ComicCket1で出したところそれなりに好評ですので良ければ500円ください
技術書典9にもブースを出していますので好きなところでどうぞ
あと、YouTube
Twitch
有料会員は無料でPDFを差し上げますのでTwitterとかでお伝え下さい
第二、第三の美徳はそのうち記事書くかもね
それでは、サヨナラ!
Discussion