Naka

[[table class="timeline"]]

[[row]]
[[cell class="left"]]

お前は絶望的にプログラミングに向いてないから諦めて刺身にタンポポ乗せる仕事でもやってろ

2018/12/31 01:10

刺身にタンポポ乗せる仕事ってきょうび言わねーな……。

プログラミングとは、勉強も運動もスマブラも下手なクソ隠キャ中学生が「俺もパソコン1台で凄い技術者になって…!」とワクワクしながら始めるものの思ったより普通に難しいし学校の試験で出たような知識要求されるしで3日で放り投げ、10数年後にnoteで「お前らは絶望的にプログラミングに向いてないからやめろ」なんて記事を書くだけのザコに成り下がる、夢と希望に溢れた技術である。

近年ではパソコンのスペックの上昇にともないできることも増え、どこのご家庭にもあるRTX2080で簡単にディープラーニングもできるようになった。Unityで3Dゲームをバリバリ動かしてもブルースクリーンは出ない。やっぱ世界を広げるのは小賢しい知恵よりもスペックの暴力だぜ。

開発環境や言語も選択肢豊富で、エディタもかつては有料クラスでも手に入らなかったような贅沢な機能が満載のものが出回っている。Eclipseとか今考えるとよくあんなので開発できてたな。

いまや小学生からおばあちゃんまでアプリ作りに熱中し、高校生はIoTとかやり始め、大学生は商業レベルか?ってレベルのものをネットで発表し、私はウェブアプリのスマホでのレイアウト崩れひとつすら直せず静かにエディタを閉じてnoteで過激タイトル記事を書いている。

掛け算に順序があると思っているような知能の下級雑用係(自分のことを教育専門職だと思い込んでいる)ですら「小学生にプログラミングを教えるぞ!」と意気込んでいる。やめろ。お前らには無理だ。無理だからマジでやめろ。考え直せ。無理だって。掛け算に順序つけないと相手に教えられないレベルのやつがプログラミング教えるのマジで無理だって。算数とは次元が違うって。「ピーチ姫いつも簡単に誘拐できるし今度はベヨネッタも誘拐してみるか」ぐらいの無謀さだって。やめとけ。マジでやめろ。

まあそんなこんなで入り口はめちゃくちゃ広く、入門するのはマリオカートより簡単である。話逸れるけどSwitchのマリオカート、運転アシスト機能ついて初心者でもコース完走できるようになったから心折れちゃった人ももう一度チャレンジしてみてね。

世は大プログラミング時代!!

大学のプログラミング
それとは特に関係ないんだけど、大学行ってた時ティーチングアシスタント(TA)っていう授業のお手伝いさせられたのよね。ちゃんとお金出るやつ。

学部の3年か4年から始まって、院の1年か2年までやってて、途中で休学挟んだから、ええと、あー、うん、数年間TAやってたんよ。数学とプログラミングのコマ。CとOctaveとかいうやつ。Cのほうは情報学科で、Octaveは違う学科。JavaとかC++のコマはTA入れさせてもらえなかった。

プログラミングの実習は週2コマ(連続)あって、情報学科なら必修科目。なのでサポートは相当手厚く、先生とTAが絶え間なく机間巡視し、わからないことがあればセンパイがなんでも答えてくれるというわけだ。授業外でもサポートはしており、わからなければ先生や研究室にいる学生に好きなだけ聞きにいっても良いということになっていた。必修だから落とされたら困るしな。

2コマだから3時間 * 15回で、45時間。そして私の時は2年まででC/C++/Javaと必修だった(今はなんの言語かは知らない)ので、その3倍、135時間は最低やることになる。プログラミング実習以外にもプログラミング触る授業多いから実際はもっと多い。宿題やる時間もあるので実際はもっともっと長くプログラミングに触れることになる。卒論書く時期に入ると、テーマによっては書く人はさらに書くので、もっともっともっともっと長い。

これだけ時間をかければほとんどの人がプログラミングできるように……ならない。むしろできない人の方が多い。なんで。why。教えて。

会社のプログラミング

会社になるとさすがにプログラミングできるできないは死活問題である。

「今日から入ったxxでーす。業界未経験ですがよろしくおねがしまーす。さっそくなんですけどPythonのここわかんないんですけどどうすれば……あっそうすればいいんですね。次はここなんですけど……なるほど!ありがとうございます。じゃあまた明日ー」

いやー社会人にもなると熱意が違うね。学生なんかわかんなくてもほとんど聞きに来ないのにな。こりゃガンガン伸びますわ。私も社会人1年生でPythonなんて3秒ぐらいしか触ったことないから適当答えてるけど。

「ちょっとお時間よろしいですか?」「いやちょっと今忙しいから後になっちゃいますわ。すんません……」

そんなこんなで1週間ぐらい放置してしまった。やべー絶対嫌われる。どこまで進んだかな……?えっまだそこ?進んでなくない?

もしかしてこれ全部教えないとダメなやつか。そりゃ大学4年間プログラミングやったやつでもプログラミングできないんだから、そうか。よく考えると当たり前だよな。

プログラミングをやめろ

大学4年間と大学院2年間プログラミングやったやつでもできないし、会社で毎日8時間を数週間プログラミングについやしてもできないやつはできないし、そもそも人類というのはプログラミングできない可能性がある。

少年少女たちに「プログラミングはいいぞ!自由にものが作れて達成感がある!頭が良くなった気分にもなれるし!」と吹聴してまわんのもいいけど、6年間情報科学について勉強したようなやつの大半がプログラミングできないんですよ。それもごくごく初歩的な部分。

野球とかサッカーなら、まあ友達との試合には参加できなくてもごく稀にバットにボールを当てたり、ボールを1回あらぬ方向に蹴ったり、ぶっちゃけ周りとのレベル差で楽しくなくてすぐやめちゃうだろうけど、なんとか基礎の一部ぐらいはできるじゃないですか。

ピアノとかダンスでも、猫踏んじゃったをごくごくゆっくり弾くぐらいはできるかもしんないし、学芸会の振り付けを10秒ぐらいは踊れたりできるかもしれない。その後やっぱ周りのレベル見て諦めちゃうかもしんないけどさ。

プログラミング、6年やってミットを頭にかぶってるバッターとか、鍵盤蓋の上から殴って音鳴らそうとするやつとか、まずそういうレベルのやつが大量発生するんですよ。だいたい7割ぐらいの率。どうすんだよこいつら。私の教育の問題か?マジで?本当に?

プロが練って考えて凝縮した本や授業、センパイたちによる指導。それらを結集して得られるはずのものが7割ぐらいどっかに消し飛んでる。無駄だろこれ。

今からプログラミングやろうとしてるやつ、お前は確実に向いてないからさっさと諦めて刺身にタンポポ乗せる仕事に戻ってくれ。参加しても鍵盤蓋叩き割るやつと同じ病室に入るだけだ。

プログラミングをやめろ。

ぼくはこう思うんですよ

そもそもなんで大の大人がそんな両手にバット持ってセカンドに立ったりゴールの方をボールのところまで動かす奇行に走るんだろうな。わかんねえや。

綺麗な分析はできないけど、いわゆる「できない」やつが共通して言ってたフレーズがある。

「ぼくはxxxだと思ってるんですけど、動かないんですよ」

うん、そうだね。そう思うんだ。でも動いてないじゃん。じゃあ違うんじゃない?モニターに「にらみつける」やってもバグは取れないし防御力下がるだけだぞ。

まず根本的に考えと事実が違ってるって結果出てるじゃん。じゃあもう考え変えちゃえば早くない?

名言の引用は好きではないけど、「プログラムは思った通りには動かない。書いた通りに動く」って言葉がある。実に名言だと思う。次点で好きなのが「ある問題を解決しようと正規表現を使うと問題が2つに増える」かな。

お前が何を思っているかはプログラミングにおいて一切影響しないんだよ。お前が何を書いて、コンピュータがどう処理したか、それが全て。

深く考えないことについてぎゃーぎゃーいうやつもいるけどプログラムなんてまず最初は動けばいいんだから何も考えずに次試せばいいだろ。んで3回ぐらいは自分で思い浮かんだの試して、全部ダメだったら調べるとか先生に聞いてみるとかさ。逆に1発で通ったら自分の思考見直して理解深めるとかさ。

ドキュメントとかあんまり理解できない初心者のうちは、とにかくお試しと修正のサイクル回すの重要で、「これがこうだから動くはず」というカードを3種類ぐらい作って全部片っ端から試すのが早いと思うよ。モニターをにらみつけるな。

お前がどう思ってるかよりも、まずはお前の書いたプログラムがどう動いているか(どう動いていないか)を確認するのが先だ。動かなかったら考えが違う、はい次のプラン、はいその次のプラン、はい次。

この「ぼくはこう思ってる」が出てくるの、なんの教育の成果なんだろうね。お前の気持ちなんてどうでもいいって現国でも数学で散々教えられただろ。

Error: variable 'a' is undefined, line 24

↑のエラーは架空のエラー文(英語下手でも許して)だけど、エラー、出るよね。プログラム組んでたら。んでやっぱいるのよ。エラーを「にらみつける」やつ。解決しねえって言ってんだろ。

「エラー出たんですけど、どうすればいいんですか」

読めばいいんじゃないですかね……?一応軽く説明しとくか?

「エラーにはプログラムがなぜコンパイル通らないかの原因がそのまま書かれている。例えば今出ているError: variable 'a' is undefined, line 24は、24行目の変数aが未定義ということを示している。事前に変数aを定義していないか、打ち間違えてsになっているとかではないのかな?」

だいたいが「腑に落ちねぇー」みたいな顔する。まあ、一気に喋りすぎたしな。疑問点1個1個潰していくか。

「何か疑問点ありそう?変数ってなにー、とか、定義ってなにー、とか」「ないです。わかりました!」

わかったのか。よかった。またモニターをにらみつける開始。なんでだよ!!!!「お前顔にチョコついてるぞ」って言われたらチョコ拭き取るだろ。変数aが未定義ですねって言われたら変数a定義すりゃいいだろ。

でもプログラミングド下手なやつ(全人類の7割ぐらい)は、エラーをにらみつけてる。ずっとにらみつけてる。防御力下限まで下がったかな。にらみつけてて何が変わるんだよ。

「英語読めなくて……」

いや「a is undefined」なんて「He is Superman」ぐらいの英語だろなんで読めないんだよ。お前この大学どうやって入ったんだよ。たしかどの入試方式でも英語あっただろ。単語わからんかったらググれ。

「aが未定義って書いてあるんですけど、ここのfor文の私の考えが間違ってるのでしょうか」

いや24行目のaって書いてるだろ。まずなんでそこ無視するんだよ。お前がfor文で使ってんの教科書通りのiだろ。24行目ってわかるか?for文あるの40行目あたりだよな?aとiが違う文字ってわかるか?

「さっきのエラー直したら新しいエラーが出たんですけど、どうすればいいですか」

新しいエラー直せばいいと思います。

千尋!贅沢な名だねえ

変数に名前をつけろ。関数に名前をつけろ。クラスに名前をつけろ。全てに名前をつけろ。

C言語の古い教科書だと「a」とか「b」とか「i」とかで書いてるけど、そんなの人間が読めるわけねえだろ。冷静に考えろ。「input」「output」「index」とかにしとけ。

2重for文の変数名i, jにしたら絶対途中で打ち間違えるだろ。お前は打ち間違える。そういうやつだ。2重ループなんてどうせ行列計算の課題だろ。rowとcolumnにしとけ。これで打ち間違っても気づくし、それぞれに意味が付いてくる。

ちなみに同じ長い名前にも優劣がある。「result」よりも「sum」のほうが強い。「result」はなんの結果かわからない(全ては結果であるので)が「sum」は合計値であることがわかるからだ。「password」と「plainPassword」なら「plainPassword」が勝つ。暗号化されていないパスワードであることがわかるので、情報量が多いからだ。

ただし例外はいくつかある。「tmp」は一時変数であることが(プログラマにとって)明らかだ。「dir」はディレクトリであることがわかる。「src」「dist」あたりもよく使われる。このあたりは短くていいんじゃねーかな。

でも、この前温度センサ扱うプロジェクトで「tmp」って変数名使って温度(temperature)と脳内で混線してバグって発狂してた同僚いたけど。そういうときは名前長くするか別の名前使おうな。

関数の名前なんて「calcAverageFromArray」ぐらい長くしていいから。「myFunc」とかしなくていいから。「fetchJsonDataFromUniversityInternalServer」とかでいいから。マジで。いやこれ本当に。

そもそも今時ディスプレイでかいし、識別子なんて先頭数文字打ったらエディタが補完してくれるし、短くするメリットがない。

それでも名前が長いと感じる?関数がでかすぎるんじゃないか。細かく処理を分けるとかしてみろ。「combineArrayAndFindMax」関数は「combineArray」と「findMax」に分割したらいいと思うぞ。名前が長いと思っても名前を削るな、機能を分割しろ。自然と名前が短くなる。

それかシンプルでかっこいい名前を見つける。「convertEvilHtmlToPeacefulText」は「sanitize」に置き換えることができる。イカす名前だ。

プログラミングできない奴はマジでこれらのことをやらない。ずっとaとかbとかzとか使ってる。お前それ自分で読めんのか。読めねえだろ。myfuncってなんだよ何するんだよ。お前自分で理解できてんのかそれ。

それでも頑なにaとかbとか使う。なんでだよ。

動作原理を理解しろ

動作原理わからず書き散らすな。動作原理っつってもそんな深いところじゃなくて言語表面上レベルの動作な。

リテラルは値を作成して、代入は値に名前をつけている、とかその程度のレイヤー。メモリがどうこうとかはいらんと思う。あっでもポインタのときはいるか……。めんどくせえな。

まあ動作原理っていうか自分が何やってんのか理解してくれって程度の話になるんだが。

例えばfor文で処理50回まわすとき、「50回分の処理を行なっている」ではなく「ループ開始時に変数を初期化。条件判定して成立していれば文の中を実行する。条件変数の値を変化させてまた条件判定からやり直す」ぐらいの粒度で捉えててほしいかな、という気持ち。

これはfor文で詰まる人がやたら多かったからだ。彼らはfor文をアトミックな操作だと思っていた。つまりfor文はひとまとまりの命令であり、長いfor文とprintfの間に粒度の違いはないと思っていたらしい。

つまり、「for文の中でエラーが起こる」という事象がほぼ理解できない。forはアトミックであり、内部など見えないのだから。じゃあお前が今書いたfor文の中身はなんなんだってやんわり聞くと「さあ…?」みたいな反応が返ってくる。はあ。

関数についてもなかなか誤解が多かった。関数「sum_array(a, b)」と関数「average_three_numbers(a, b, c)」は全く別の原理で動いているのだと。ここでの「全く別の原理」というのはシグネチャが違うとか実装が異なるとかそういう意味ではなく、コーラを飲んでゲップが出る原理と糸電話で声が伝わる原理ぐらいの全くの別、という意味である。

彼らは関数ひとつひとつについて「新しく原理を学習」していたのだ。マジかよ……。どうやったらそんな発想に行き着くんだろう。そりゃ時間かかるわな。

そのため、関数が値を返す(または返さない)ということも理解できておらず、「関数の戻り値と関数の戻り値を足す」とか「関数の引数に関数の戻り値を直接渡す」とかやりだすと大パニックになる。メソッドチェーンとかやった日には大学潰れると思う。ただ、これはC言語が悪い部分もあると思う。配列とかいじりだすと、初心者が書けるレベルの関数だとあんまり値返さないしな。

自分が何をやりたいのか理解しろ

たのむ、他のはできなくてもこれはできてほしい。自分が何をやりたいのかは理解してほしい。流石にお前のやりたいことなんて他人にはわからんぞ。

「配列の中の数値の合計値を求めたいんです」とか「名前と身長と体重をひとつにまとめた構造体が作りたいんです」とか。簡単なのでいいから。

「いま何やろうとしてどこで詰まってる?」って聞いても「……?」みたいな反応されたら困るんだよ。

例えば「キーボードから数値を10回入力し、それぞれの値を配列に格納して、最後に配列の値を逆順に表示せよ」みたいな問題が出てきたときに、「キーボードから値を入力する」「10回繰り返す」「配列に値を格納する」「配列の値を逆順に表示する」に分解できると思うんだけど、自分が何やりたいのかわからない奴はまずこれができない。

彼らには「キーボードカラスウチヲジュッカイニュウリョクシソレゾレヲハイレツニニュウリョクシテサイゴニハイレツノアタイヲギャクジュンニヒョウジセヨ」に見えている。

かろうじて「キーボード」「ハイレツ」あたりの単語は拾えるらしく、標準入力から値とったり配列を作ったりはしてるんだけど、そこから先に進まない。モニターにらみつけてる。またにらみつけるかよ。

あれだ、算数の文章題できなくてとにかく文章に出てくる数値足したり引いたりするやつ。あれのプログラミング版。文章が読めない。

こういう人にはメモ用紙取り出して、まず文章が何について言ってるのか、どういう工程に分けることができるのか、今後も同じことが起こったときにどうやって分けるのか。みたいなのを教えるんだけど、大抵あんまりしっくりこないらしく、成功したことは皆無。なんとかうまく教えたいんだが。

もうこのあたりになってくるとプログラミング関係なくね……?ってなるんだけど、意外とそういうプログラミング関係ないところで詰まる人めちゃくちゃ多いよ。

自分の領域で勝負しろ

初心者って関数とかクラスとかめちゃくちゃ嫌うよね。ベタ書き至上主義というか、自分の目の届く範囲に全部置いときときたいというか。

でもさ、たとえば「オセロ(リバーシ)作れ」って言われたとき、どう書く?二次元配列用意して、初期化して、交互に番を回して、石置けるかチェックして、石置いたらひっくり返して……うーん大長編になりそうだな。

ここでバカは「C言語のあの機能を使えば……この関数を使って……二次元配列の……」とか悩み出す。5時間ぐらい悩む。またモニターをにらみつける作業に戻る。

私なら3分でこう書く:

int board[8][8];
init_board(board);
 
int is_my_turn = 0;
int is_game_end = 0;
 
while(!is_game_end) {
  print_board(board);
  int x = get_input("X:");
  int y = get_input("Y:");
  int is_my_stone = is_my_turn;
  if(!is_puttable(board, is_my_stone, x, y)) { continue; }
  is_game_end = put_stone(board, is_my_stone, x, y);
  is_my_turn = !is_my_turn;
}

うわ、すげえ!この記事で初めてのコードっぽいものだ!

これが正しく動くかは知らん。変数宣言の段階で文法エラー吐きそう。Cの動作確認めんどくせえし直さんけど。!演算子とか存在したっけ。でもだいたいこんな雰囲気だろ。

15行。長いな。JavaScriptなら以下のように書く:

const reversi = new ReversiGame();
reversi.start();

2行。はい終わり。満足。完璧。

こうすれば楽だよって教えると「そんな書き方できるんですか?」って聞いてくる。いやできないが。私がこう書きたいってだけだが。

でもプログラミングって「私ならこう書きたい」ってレベルまで落としてこないとできないでしょ。難しい問題を難しいまま扱えるのは頭のいい人だけだよ。お前頭いいの?頭いい人って画面をにらみつけるのが得意なのか。

書くのが難し〜〜ってときは簡単にかけばいいじゃん。難しくなんて書きたくねえよ。簡単に書きてえよ。だから私は簡単に書く。お前はどうする?

んで簡単に書いてから実際に動くところまで持っていけばいいわけよ。オセロのinit_boardとかis_puttableとか地道に実装していくの。全部実装し終わったらはい完成〜〜〜ってわけよ。

その関数の実装の中でまた難しいところが出てきたら簡単に書くの。簡単に書いた部分は当然動かないから、動くように実装していく。これ繰り返していく。

こうやって「自分で書きたいように書ける」のがプログラミング言語なのになんでprintfとか2重forとか難しいもん並べるわけ?自分で書けるほど簡単にレベル落とさないとオセロ作れないでしょ。

だいたい勉強することで自分が難しい問題を解けるようになるまで賢くなれるという思い込みが調子に乗りすぎている。お前はどんだけ勉強しても一生バカだし、お前にオセロは作れない。だからオセロをお前のレベルまで落としてくる必要がある。オセロに勝とうとするな、オセロを引き摺り下ろせ。

今回はオセロ題材にしてみたけど、なんでも同じだぞ。プログラムなんてくっそ愚直に書いても難しいだけだし、難しい問題は人間は解けない。じゃあ簡単な問題まで下ろしてこればいい。お前は頭良くない。お前はバカなんだから問題もバカレベルに落とせ。そしたら解ける。

ちなみにどうでもいいけど、これがインターフェイスとかAPIとかの考え方につながってくる。あまりにもオフロード走行だけど。だからプログラミング得意な奴はもっとまともな道通れよな!

オブジェクト指向を理解するな

おいJava受けてる2年生、オブジェクト指向やってるか?やってるか、そうか、ははは。オブジェクト指向なんてゴミだけどな。

このあたり、「オブジェクト指向にメリットなんて存在しない」でも散々書いたいんだけど、オブジェクト指向って昔のプロパガンダが根強くネットや本に残ってて、現代の思想にあわせて書かれたものほとんどないんだよね。

現代の思想ってのは「オブジェクト指向に価値はない」ってことです。

もうちょい詳しくいうと「カプセル化」「ポリモーフィズム」「デザインパターン」みたいなオブジェクト指向特有だと思われてたものが理解が深まって「プログラミング(一般)」ジャンルに吸収合併してしまって、オブジェクト指向もうほぼ廃墟なんだわ。

というかオブジェクト指向言語で生き残ってるのJavaぐらいだしな。他ほとんどマルチパラダイム。あと関数型言語。ついでにいうとJavaも若干マルチパラダイムに傾倒し始めた。

オブジェクト指向で残ってるの「オブジェクト」「メッセージ」ぐらいで、ほとんどのオブジェクト指向言語はメッセージ軽視だから実質オブジェクトしか残ってなくて、「オブジェクト」「メソッド」だけしか覚えることなくなった。かわいそう。

そんな状況で「オブジェクト指向の偉大なメリット!」みたいな江戸時代の宣伝文句聞いても現代人のお前にはピンとこないだろ。無理に理解することないよ。あれ江戸時代のだから。

でも勉強する総数が変わったわけじゃなく、「オブジェクト指向」から「プログラミング(一般)」に技術がジャンル大移動しただけだから、総勉強量は変わらないってことは忘れるなよな。ポリモーフィズムもデザパタもまだまだ使う。

「オブジェクト指向のメリット!」とか「オブジェクト指向の思想!」みたいな記事に騙されるなよ。特にQiitaな。あれ全部江戸時代に書かれたやつだからな。今2018年終わりだからな。

「オブジェクト指向を理解した」やつにまともなのはいないから近寄るなよ。

頼むから質問してくれ

わかんねえんだろ。質問しろよ。自分で考えるのは立派だけど、プログラミング技術なんて多岐にわたりすぎて自分で全部考えてたら基礎やるだけで2000年ぐらいかかるぞ。さっさと知ってるやつに聞いてさっさと次に進め。

といっても質問って意外と難しいんだこれが。まず質問の仕方を勉強しなければならねえ。

分野によって違うんだけど、プログラミングだと以下の点を気をつけていればいいと思う:

1. 環境は何か (※授業とかなら環境同じなので省略可)
2. 何をやりたいか(何を目的にしているか)
3. どのような課題が現れたか
4. 課題に対してどういうアプローチを取っているか(省略可)
5. そのアプローチでどんな問題が起こったか(4を省略するならこっちも省略)
6. どうしたいか

例えばこうである:

「HTMLとJavaScriptで、ライブラリを使わず自力で弾幕シューティングゲームを作ろうとしています。まず描画システムが完成したので、次は当たり判定を実装しようとしています。当たり判定の実装はfor文ですべてのオブジェクトの組み合わせを計算することで実現しました。動作も確認済みなのですが、画面上の弾が増えた時に激しい処理落ちが発生してしまいます。より軽量に、具体的には1000オブジェクトで60fpsを実現したいのですが、何か解決方法はありますか」

もっとふわふわした質問したいときは若干アレンジで。4と5は無視していいと思う。

「プログラミング演習Iの質問です。入力された10個の値を逆順に表示したいのですが、配列に10個入れるところまではできました。ですが逆順に表示することができません。何もアイデアが思い浮かばない状態なのですが、逆順表示のためのヒント等いただけないでしょうか」

ぶっちゃけ目的と今やってることが伝われば後はなんとでもなる。

「Javaで開発したいのですが、開発環境が動きません。JREというのをいれています」

これでもお前それ入れてるやつが違うぞーってわかるし。

「目的」 + 「今やってること」 + 「付随情報」になるのかなあ。目的と今やってることがないとつらい。なんもわからんくなる。

「Node.jsでプログラムが動かないです。どうすればいいですか」

ほら、とたんにわかんなくなった。

でも問題はできるやつほど綺麗な日本語でばんばん質問してきて、できないやつほど日本語構築下手だから質問も狙いがブレブレでこっちもフラフラした回答返さないといけないところかな……。「自分が何をやりたいのか理解しろ」のところにもつながってくるな。

今すぐプログラミングをやめろ

そろそろ本題に戻るか。お前らは絶望的にプログラミングに向いてないから今すぐ諦めて刺身にタンポポ乗せる仕事やってろ。

世間ではよく「魚を与えるのではなく魚の釣り方を教えろ」っていうけど、こいつら魚の釣り方教えたら竹竿持ってトイザらスに突撃しにいくんだよ。マジでどうしろってんだよ。ちなみに魚を与えたら投げて飛距離を競い出す。

プログラミングなんてほんとこんな状況で、教える側もきついし、やる側もあまりに進歩しなくて自分の人生の意義とか考え出してつらいと思う。

まず「モニターをにらみつける」から引き剥がすのがむちゃくちゃ難しい。すきあらばモニター睨みつけてる。にらみつけて何か解決するのか。にらみつける対象は多岐にわたるが、おおむねエラーメッセージである。

にらみつけるから心を引き離したら次は「自分が何やりたいのか理解できない」ゾーンに入る。いや問題文にやること書いてありますやん。それを先頭から順番に日本語読んでいって……。あっ、難しい。はい。そうですね。

そしてその次は「質問できない」である。そもそも自分が何やりたいのかわかってないから質問もできない。質問の組み立て方もわからない。結果無意味な日本語が吐き出され、先生もふわふわした回答を投げて終わる。

プログラミングというよりもプログラミング以前の「何か」が欠如してるってのが大半なんだと思う。それが何かはわかんねーけど。小学校でプログラミングとかやってる場合じゃないと本気で思うぞ。

なおここを乗り越えてもプログラミングそれ自体の問題が残ってるので、またまたそれで地獄を見る羽目になる。「公式ドキュメント読めば5分で解決することで5時間もGoogleとにらめっこするな」とか「頼むからまともなプログラマ目指すなら数学ちゃんと勉強してくれ」とか。その他もろもろ。

「コメント書けやボケ」とか「インターフェイスって知ってるか」とかも書きたかったけど、これどちらかというとそこそこできる人向けの内容になっちゃうんだよな。なのでオミット。

こんな記事最後まで読んでる人いないと思うけど、読んでくれてありがとうございます。読んでるやついたらバカだぞ。1.2万文字オーバーだぞ。暇人かよ。ありがとう。

あとどうでもいいけど私はプログラミングは小学生の頃から10年以上やってるんだけど、平均的なプログラミング初心者にだいたい1.5年ぐらいで完全に技術抜かれる。悲しい。誰か慰めて。

ところで刺身にタンポポ乗せる仕事って実在すんの……?


[[/cell]]

[[cell class="right"]]
[[div class="description"]]

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License