え?プログラミングは面倒くさそう?君、プログラマ向いてるよ

こんにちは
イキリプログラマの創好です
それではまた次の記事でお会いしましょう

え、タイトルオチなのでこれで終わりですけど…

やる気あるのかって?
でも記事かくのって面倒くさくないですか?
まぁこれで終わるのも味気ないしちょっとだけ解説してあげましょうかね

自粛期間とかで「プログラミングできそう!」とか血迷っちゃった人向けです

※ ほぼ同じような内容の動画をYouTubeにも投稿予定です

"怠惰"はプログラマ第一の美徳である

画像1

プログラマの三大美徳っていう有名な話があります
Perlという言語のママであるラリー・ウォールさんが言い出したやつ

そのうち第一の美徳として"怠惰"を挙げているわけですね
今回はその"怠惰"の話です

第二第三の話は気が向いたら生まれることでしょう

ウォールさんの話ではこの三大美徳、つまり怠惰でない人間はプログラマになるべきではなく即刻転職しろとまで言っているようですがここまで言われる謂れはない!と思いませんか?
私は思いませんけど

ではその理由を一つずつ紐解いていきましょうめんどいけど

では、怠惰とは何でしょうか

そう、面倒くさいってことです
いやそれはそうよね

では具体的にどういうことか………

同じ事を繰り返したくない

これです
そしてそれがプログラミングです

プログラミングとは面倒くさいを無くし続ける作業
つまり繰り返す作業を無くし続ける仕事といえます

プログラマにおいて同じことを繰り返すということは
将棋で言えば二歩くらい初歩的な"ミス"です
そんなことはコンピューターに繰り返させておけばいいんです

逆に言えば繰り返し同じ事をするのが全く苦にならない人、あなたはプログラミングに絶望的に向いていないかもしれないので刺し身にたんぽぽを乗せる仕事をオススメします

聡明なみなさんならもう大体わかったと思いますが
もう少し具体的に見てみましょう


自動化 Automation

画像2

プログラミングといえば自動化ですよね
人間がやっていては「面倒くさい」「ミスが出る」「遅い」ような作業を
プログラミングすることで自動化していきます

良いプログラマであればプログラミングすら自動化し始めます
IDEやツールで記述する内容の70%くらいは自動的に生成させたりよく書く記述はサジェストから入力されます
研修や学校でなんの機能もないテキストエディタで書かせることもあるようですが実際にはそんな環境で書くことはないです
罰ゲームかな?
当然、単体テストも自動化していきますよね
最悪プログラマ向けの自動化ツールを作り出したりします

でも何もわからないんじゃやろうと思い立っても自動化できないよね

ggrks

そういう事です
全てここに繋がります
調べられない人はこの世界ではオタッシャ重点
わからないままのほうが実際めんどいですから

まぁそんな感じで怠惰な人は"自動化"することに長けています
プログラミングは自動化する作業なので当然ですね

プログラミング以外で自動化を体験したい、自動化して気持ちよくなりたい人は以下をオススメします

・Minecraft 工業化MOD
圧倒的神ゲー。
GregTechってやつがおすすめね
全く経験がない人はMODPackを入れるのもイイゾ

・Factorio
ついこの間やっと製品版がリリースされた2D版工業化MODと言われるゲーム(作者がマイクラ工業大好き)
無限に自動化する神ゲー

・Satisfactory
この間Steamでリリースされたあのヤギのスタジオが本気で作ってる3D版Factorioと言われるゲーム
やった感じはFactorioより際限無い感じで神ゲーでした

この辺のゲームで自動化を楽しめるならいい感じに怠惰なんじゃないでしょうか
Gregの動画あげてるので寝たいときに見てください


再利用 Reuse

画像3

同じようなプログラムを何度も書くことは非常に奥ゆかしくないです
実行速度の問題等、設計上の明確な理由が無ければ怒られても文句は言えません

同じコードを書けば書くほど変更があったときの作業は増えるし作業が増えればミスが増えて仕事が増えます
最悪です
デメリットしかない
そもそも同じコードを書くこと自体面倒くさいです

そういった理由からいいプログラマは再利用しやすいようにプログラムを書きます

再利用しやすいプログラムを書けば使い回せるので記述量が減りミスが減ります
そして変更も1箇所の更新で済み、なんなら別のプロジェクトに持ち越せることもあります
ふつくしい…

よくstep数とか行数で値段を付けたがる輩がいますがどう考えてもバカです
プログラムはゴルフと同じで少ないほうが神です
むしろ神じゃないと減らせないまである

しかし実際の現場ではこれができない人ばかりの

あと初心者殺しと名高い”オブジェクト指向”の基本的な考え方はこの再利用にあるので覚えておくといいでしょう

ドキュメント化 Documentation

画像4

質問されることは非常にめんどい
プログラミングにはまとまった時間が必要なのに
細かく中断され集中力は切れるし
絶対1回で理解しないやつもいるし
同じ質問を何回も答える羽目になる
もう、最悪です

そんな状態を野放しにはできないので良いプログラマはドキュメント化するわけです
更にドキュメントに対して質問が残っては意味がないので
質問が必要ないようなドキュメント、
つまりいいドキュメントを書いてしまいます

ドキュメントがあるだけで全体の労力は減り、チームの為、未来の自分のためになる訳です

(まぁ、本当のバカはそのドキュメントを読まないし無駄にするし意味ないんですけどね…)


プログラマよ怠惰であれ

というわけでプログラマ第一の美徳「怠惰」について解説というか、あれしてきました
プログラマがめんどくさがりに向いていること、プログラマにめんどくさがりが多いことがよくわかったと思います

戦闘力50のプログラマが10人で1ヶ月かかるプロジェクトを
戦闘力100のちょい強プログラマが1人1週間で終わらせることもできてしまうくらい差が激しい界隈なので、
向いてないなら即やめろというのもわかりますね

ただ本当に向いていないのは努力をしない人なので
そんな世界で頑張れるならやる価値はあるかもしれませんね
プログラミング自体は誰でもできる素晴らしい技術なので
というかこの「同じことを繰り返してはいけない」の感覚がわかればいいんじゃないですかね


プログラミング初心者というか、これからの人向けの記事ということで
入門前の人向けの本をBoothに出しているので紹介しておきます

画像5

プログラミングの入門書って、入門とか言う割に大事なことが常識として省かれていたりそもそも初心者には読み方がわからなかったりと優しくないので入門書に詰まないための本となっています
ComicCket1で出したところそれなりに好評ですので良ければ500円ください
技術書典9にもブースを出しています

あと、私のYouTubeメンバー || Twitchサブスクライバー は無料でPDFを差し上げますのでTwitterとかでお伝え下さい


第二、第三の美徳はそのうち記事書くかもね

サヨナラ!

この記事が気に入ったらサポートをしてみませんか?