はてなキーワード: 競技プログラミングとは
俺さ、このシーンが名台詞(笑)として引用されるのずっと嫌いだったんだよ。
ガッツがあの場でイシドロに言いたかったのは「俺達の戦いはもう始まっちまってるんだからやるしかねえだろ」ってこと。
でも実社会において多くの人はまだまだ訓練を受け続ける時間があったり、そもそも戦場って呼ぶしか無いような場所に行く必要なんてない生活をしてる。
その中で「こんな状態で戦場に突っ込んでも死ぬだけだよなぁ……」って人に対して「達人にでもなってからか?」ってドヤ顔でレス返す奴らが本当に嫌いだった。
討ち死にするってわかりきってて、それでいろんな人巻き添えにして大惨事にしてどうすんだよと。
プログラミングにしたって創作活動にしたってあちこちで誰でも参加できるような大会やイベントが開かれてる。
そこで自分の力を試してから『戦場』に行けばいいじゃないかと。
一部の世代にいる『未経験でIT入ってブラックサヴァイヴで成長した』みたいなタイプの人とかの生き方はやっぱ基本的には「悪手」でたまたま成功した人が生存バイアス無視してそれを正解だったと言い張ってるだけに見えるんだよな。
たとえばITなら未経験でいきなり入っていく前に競技プログラミングの世界である程度揉まれておくことは出来るじゃん。
確かにそこで学べるものって仕事とはまた別の技術も多いんだけど、そもそもの基礎体力みたいな所は共通してるし、そこがどこまで足りてるのか、足りてないならどう鍛えるのかぐらいは『実戦』の前に学んでおけと思ってしまう。
「いきなり実戦に突っ込んでいって周りに迷惑かけまくりながらも必死に成長」が最適解みたいに言う人いるけど、完全に間違ってると思う。
そのやり方は大迷惑の元だよ。
まずは模擬戦を何度もやって手応えをつかんでからにした方がいい。
達人になるまで待つ必要はないけど、半人前にもなってないのに入っていっちゃいけない戦場は沢山有るよ。
そういうのに人を平気で送り込もうとする「気の長ぇ話だな?」名台詞引用がマジで俺は大嫌いだった。
本当に嫌いなんだよ。
そもそもイシドロってあの段階でも生存能力においては既にかなりの物を持ってるわけで……その前提を平気で無視するんだよね。
なんつーかあそこでガッツがああ言ってるのって「そんなにビビんなくても生き延びてそのうち強くなれるよ。俺の(鷹の団とかでの)経験上、お前みたいな奴はそうそう死なねえんだ」って気持ちっつーか評価があるわけじゃね?
俺は元ニートFラン卒だ。現職はソフトウェアエンジニアで収入はそこそこある。
親は元生活保護で、俺を養うために仕方がなく婚活をして結婚をした。
俺は中学を出て働く予定だったんだけど、労働への反骨精神があまりにも強すぎて高校に行くことになった。
高校を出たら働く事になっていて、危険物取扱者試験を取らさせられた。
ニートの時にあまりにもやることが無かったのでひたすらプログラミング(Webアプリ、OSS、競技プログラミング)をしていた。
それが親からすると勉強熱心に見えたようで、大学に行くことになった。
大学では勉強自体はしていたが、あまりにも怠惰すぎて必修を落としてしまい、1年留年した。
このあたりでようやく、自分が忌避していたのは肉体労働であり、ホワイトカラーの仕事は苦痛に感じないことが分かったので就職をした。
何もわからずに写経してreactのwebアプリ作ってるやつより相当まし。
https://paiza.jp やってみ。
他の競技プログラミングとかのサービスより簡単で就職しやすいから。
あとその IT 業務改善話を「なんとなくIT係みたいになって、~とか~とかvbaですけど自分で改善点を見つけてコード書いていろいろ業務改善してたんです。ITの方が好きだからITで、就職したいと思ってます。」とか言えばいけるから。
paiza は未経験採用のためのサービスもあるし、採用側もその前提だから怖くないぞ。先人たちのインタビューもあるし、読んでみたらどう?
https://paiza.jp/feedback/entry_interview_14
正直、paiza はプログラミング競技サービスとしては簡単すぎるけど、paiza の良いところは働くのに必要十分なスキル測定をして、先人のインタビューもたくさん掲載してて、就職しやすい仕組みを作ってるところがすごいんよ。
そこそこのWeb企業が基本的に経験者しか採用しないことについて、教育コストを他に転嫁しているとか、IT業界が先細りする行為で未来を潰しているみたいな言い方をされているときがある。
自分もこれについて課題意識はあって、ここ数年Web企業での採用活動と実際の業務に関わりながら、色々考えたので少しまとめてみたい。
ここではいわゆるキャリア採用ではなく、新卒採用やポテンシャル採用の話をしていると前置きしておく。
Web企業でよく求められるスキルは以下の3つだが、これを満たすような人材はもれなく経験者である。
この3つの条件とそれを満たす応募者について、この記事では以下の様に呼称する。
当然レベル4以上はそう多くなく、それを求める企業では応募者のほとんどは書類選考で落とされてしまう。それでも毎年雇いたいレベルの人が来る(来てもらえるように色々やっている)ような企業ではこの採用基準を下げる意味はないため、いわゆる「経験者しか採らない」と言われる状態になる。
一方で世の中はそんな人気企業ばかりではない。それらの企業ではこの基準を落とすのだろうか?自分の感覚としては「一部を諦める」みたいになっていると感じる。つまり、チーム開発の経験はないとか、自社では使ってない言語の経験しかないとか、コンピュータサイエンスはよく分からないなどを許容するという方式になっていそうだ。よってレベル3以上あたりを狙って、レベル2~4くらいのグラデーションで採用する。
よって、本当の未経験者がWeb企業を受けるためにはまず最低レベル2、できればレベル3に到達する必要がある。そこまでしてようやく「面接に到達する資格がある」という状態であり、おそらく有名な企業では軒並み一次面接で落とされてしまう。
一方で満たしている人は本当に全部満たした上でプラスアルファが多数あるみたいな状態で、多数の有名企業の内定を取って手のひらで転がして悩んでいる。
このような一部の外れ値のような人はどんどん内定を取るが最終的に選ぶのは一社なので、それ以外の企業は内定辞退され辞退率が上がる。すると「それなりに合格は出しているのに人は足りない」みたいな状況になってしまう。
自分は応募者に基本的にレベル4以上を求めている。これは教育に対して年単位で割いているほどの余裕がなく、教育を施しても難しい問題を解決する能力が身につかない可能性のある人を採用段階で落とすことで「当たりを引く確率を上げる」ためである(誤解の無いように言っておくと、単に既にできる人は更に色々と(しかも早く)できるようになる可能性が高いというだけで、レベル4未満は絶対ダメとかそういう話ではない)。
今の会社では新卒であっても入社後半年もすれば手取り足取り教える段階ではなく、社内で自走していけるようになっていると感じる。
これが健全でないと言われればそうであろうと思う。
コンピュータの世界は恐ろしいほどに親の資本力に左右される。レベル4以上の人は早ければ中高生の頃からコンピュータと関わりがあり(自分専用のPCがある、部活動で触る、地域の習い事で……etc)、更に大学に進学して関連分野を学んでいる。これを親の資本力と関わりないと言うのは難しい。
更に地方よりも都会の方が、コミュニティの発達においても、そこに集まってくる人材のレベルについても圧倒的に勝ると学生時代に感じていた。これも当然都心に住居を構える/一人暮らしさせられる親の資本力とは切っても切れない関係にあるだろう。
レベル2くらいに到達することは全くの未経験からでも十分可能である。例えばJava・JavaScript・PHP・Ruby……なんでもいいので一つ選んでちゃんと勉強し、いくつもプロダクトを作ってみればよい。現代ではこれはPCが一台あればできる。動画講座も安価で手に入るし、大抵のことは検索すれば出てくるし、Twitterにいるエンジニアはみんな教えたがりだし、ChatGPTだってある。PC自体もそんな高価な物ではなく、中古で買えるやっすいThinkPadで十分できる。
しかしレベル2~レベル4までの間の壁があまりにも高い。コンピュータサイエンスの広範な知識を身につけるには基本的に大学に行くのが一番コスパが良いと思っているが、誰しもが大学に通える経済力を持つわけではない。チーム開発はやはりどこかのコミュニティに参入できないと難しい。手っ取り早いのは企業のバイトで雇われることだが、これは鶏と卵問題だ。
本来ここの教育は企業が担うべきではなかったか?そういう意識が学生時代から漠然と自分の中にあった。これをやらずに、レベル4以上しか採用しませんというのは他のどこかに教育コストを押し付けていたり、更なる格差拡大に繋がっているのではないかという後ろめたさを感じていた。
企業に入ってもまだしばらくは上記の意識を引きずっていたが、最近は別の考えになってきつつある。
まず、Web企業の使う技術は割とオープンになっていることが多く、隠すインセンティブがあまりないため、企業間での教育はおそらくかなり共通化できる。企業内に囲い込んでから教育を施す意味があまりなく、入る前から知っているという人も多い(Web企業の研修が知っていることばかりでつまらないと思った人も多いのでは無いか)。
これを実現する一つの手段として、入社前の広い母集団に対して何かしらの形で援助を行っていることが多い。例えば以下の様なものだ。
これらは広義の教育であると考え始めた。それらの中で企業はスポンサーセッションなどを通して採用枠をアピールするし、実際それ経由で就職する人も居る。
もちろん支援企業に就職しない人の方が多いが、最終的にどこかWeb企業に入ってくれるなら、これはWeb業界全体で人材教育を行っていると言えないだろうか。
次に、大変残念な現状として「学生時代から触れているのにいまいち地力が伸びていない人」とか「そもそも触れていない人」がその後ぐっと伸びるという事例はかなりレアだと感じる。つまり、未経験ですが頑張りたいです!という人を雇っても伸びず、「これくらいやっています」という人は更に伸びるという(ある意味当たり前の)現実がそこにある。
故に先に挙げた広い範囲での教育を進めていくと、選考よりも前の段階でたくさんの機会をどんどん与えていくことになり、自然と「やったがあまりうまく行かなかった人」とか「機会はあったがやらなかった人」がどんどん可視化されていく。すると選考の段階では今後も投資の価値がある可能性の高い人材が自ずと絞れてしまい、経験者のみが採用されていく状態になるのではないだろうか。
自分はこういったことを考えているうちに、積極的に未経験を雇って教育するよりも、選考よりずっと前の段階から様々な教育機会を提供していく方がお互いにとって幸せなのではないだろうかと思うようになった。
学生は自分の興味ある方向にスキルを伸ばしてそれがマッチする企業を選べば良いし、企業はある程度既存社員を使った教育コストを下げつつ優秀な社員を雇えるようになる。そもそも選考前の段階でエンジニアリング楽しくないなと思う人は素直に向いていないので、参入するのを辞めたほうがよい。
さっき言ったような教育への投資はまだまだ経済的に豊かでない層に届きづらい現実があるように感じている。
実際に自分が大学院時代に奨学金を探すと、地方メーカーが自社への就職を前提に出している奨学金などが多く、国から借りる以外にはあまり選択肢がなかった。
もっと広く機会を提供できると良いなと思っているし、奨学金とかは(下手な条件を付けなければ)かなりフラットな教育への投資であると思うので、企業が給付型奨学金を実施することに対してもっと何らかのインセンティブを付けられないだろうか。
また、イベントやコミュニティはどうしても都心に偏りがちで、地方では開催されなかったりWeb企業の影が薄かったりする。これも年に1回とか2回とかでいいので地方のコミュニティと何かやって、細々とした縁を持てるようにしていけないだろうか。
競技プログラミング上達法」の解説をさせて頂きました。今回の記事はリンク先が非常に豊富でしたので超長文になってしまいましたが最後まで読んで頂ければ幸いです。皆様の学習の参考になればうれしく思います。さて、このエントリで私が考えたところ、プログラマーはやはり他の職業とどのような差別化を図らないといけないのか?ということです。一見、そういう職業は全て世の中に存在しないように思えるかもしれませんが、実はそうでは
物心ついた頃から現在までのことを(ボカしやフェイクを入れつつ)時系列で書かせていただく。
N=1の話で恐縮だが、読者には少しでもADHDについて知って欲しいし、それにより社会の分断がなくなって欲しいと思う。
と、ここまで書いて思ったのだが、私は数日前よりADHDの治療薬を断薬しており、マトモに「書く」ことができないことに気がついた。数日ぶりに薬を飲むこととする。
父親について覚えているのは、しょっちゅう会社を辞めてしまうということだ。それも突然に。
何かが(主にカネ)キッカケで口論となる。
父親に包丁を突きつける母親。まだ産まれたばかりの弟を盾のように前に突き出す父親。
床にぶちまけられる牛乳。
弟が1歳の頃、「ハロワいけ!」と喋ったことを覚えている。母親の真似である。
机をくっつけて、隣の席の子にしょっちゅう見せてもらっていた。授業はまあまあ理解できていたと思う。
宿題に関しては「忘れる」というより「やろうとしても動けない」が正しい感覚。
テコでも動けなかった。
宿題の代わりに家で何をしていたかというと、デュエル・マスターズのデッキを組んだり、ミニ四駆のカスタマイズをしたり、スマブラDXをしたり…?あれ、そんなもんかな。当時何してたかな自分…あまり思い出せない。熱中すると深く深くどこまでも熱中し続ける性格だった。(過集中)
同じマンションに1つ下、1つ上の子供が何人か住んでいたので、毎日遊んだ。河原で秘密基地作ったりとかしていた。
また、男女分け隔てなく誰とでも遊ぶ子供であった。
違う。
(上で挙げたマンションの住人以外の)男の友達がどうしても出来なかった。
全く交流できないということではなかった。
同学年で話したことがない人は恐らくいない。
誰とでもそれなりの雑談ができた。
輪に入れはするが、誘われる人間ではなかった。
故に、常に疎外感を感じていた。
今になって振り返ると、原因は恐らく「自分の話ばかりして止まらない」から嫌われたのだと思う。
次第に、無理してグループにいなくてもいいと思うようになり、休み時間は教室でひとりでボーっとしていた。
見かねた心優しい女子グループが、自分を輪に入れてくれた。情報量0のどうでもいい雑談がとても楽しかった。自分が輪に誘われたことが、なんだか初めて他人に受け入れられたようで、とても嬉しかった。
通信簿の「担任からのコメント欄」には毎年「男女分け隔てなく仲良く友達がおり〜」と書かれていたので、客観的にはそう見えていたようだ。
地方なので中学受験をする人なんてひとりもおらず、当然のように地元公立に進む。
中学での成績は150/200あたりだった。
たまに一夜漬けの過集中が爆発して、50番あたりになった。
国、社、英は不得意で、理数が得意だった。
勉強をしない分の時間は何をしていたかというと、運動部の活動をするか、家のパソコンでニコニコやYouTubeを見たり、携帯を買い与えてもらえたのでモバゲーやMixiをやっていた。
高校受験は持ち前の過集中で上振れを引き、偏差値50位の公立情報系学科に滑り込んだ。
元がアホなので上振れしてもこの程度である。
なぜ情報系にしたかというと、自分専用のパソコンを親に買ってもらう為だ。
高校では朝読書の時間があったので、とつげき東北氏の「科学する麻雀」を何度も何度も読み込んだ。熱心に読みすぎて、本の小口が手垢で黒くなった。点数計算を覚えたり、チンイツの牌効率を考えたり、24時間麻雀のことを考えていた。
この頃はもう自分の行動を制御できなくなっていた。自室のPCで毎日朝までニコ生をしながら天鳳を打っていた。学校の授業は全部寝ていた。教師は注意しても無駄だと悟ったようだった。自分の人生は天鳳の段位とレーティングが全てだった。
謎の過集中で競技プログラミングが少し出来たので(当時はchokudai氏もまだ大学生で、AtCoderもない時代だった)、大会に参加して何度か受賞するなどした。
その後、持ち前の過集中により小論文と面接を突破し、AO(アホでもオッケー入試)により近所の私大に滑り込む。
麻雀への情熱は大学に入っても変わらず、1限どころか2限3限も出席できなかった。たまに講義に出ても何も分からなかった。
情報系科目だけはテストだけ出て100点を取るという天才ムーブをかました(自慢)。
麻雀サークルに入った。楽しかった。今でも付き合いのある友人が数人できた。
2年次が終わった時点で16単位しか持ってなかった。中退した。
バイト経験すらないない、学位すらない、麻雀廃人の二十歳が社会に放出された。
なんていうか、普通に死のうと思った。
ある日、ふと一回死んだ。
自○未遂をしたということではない。
自分は今死んだ。そして新しい自分が今生まれた。そう思うことにした。
どうせ一回死んだのだから、もう好きに生きよう。
それでなんともならなくなったら、生活保護でも受けよう。
一応、親は家に住まわせてくれた。
速やかに就職して家を出ろということだったので(言われなくてもそうするが)仕事を探し始めた。
やり方がわからなかったので、若者向けハローワーク的な所に行った。色々親身に相談に乗ってくれて、クソみたいな人売りSIerを紹介していただき、内定が出た。
自分に内定が出るということは、「バイト経験すらないない、学位すらない、麻雀廃人の二十歳に内定を出さざるを得ないクソ企業」であることが導かれるのである。
人売りのクソさを書くと主旨がブレるので割愛する。
自分が特別社会に適応できなかったのかは分からない。他にも大勢辞めていたから。
この辺で(不快になる方もおられると思うので大変恐縮なのだが)所謂理解ある彼女ちゃんが突然地面から生えてきて、家を出て2人暮らしを始めた。
会社を辞める前に人生初の精神科に行き、うつの診断書を書いてもらい、色々金に困らないような諸手続きをした。こういう手続きは自分では何もできないので、理解ある彼女ちゃんがサポートしてくれて本当に助かった。
うつの治療で通院する中で、医師よりADHDについて指摘された。
3割負担だとバカ高かった。1ヶ月分で5000円以上したのではないだろうか。当時はジェネリックがなかったと思う。無職にはとても支払えなかった。
脳の中の話なのでうまく言語化するのは難しい。
今まで自分は文をうまく読めなかった。
脳のメモリが小さいので、読んだ瞬間内容を忘れてしまい、戻り読みばかりしていた。
また書くのはもっと苦手だった。いくら考えても頭にモヤがかかり、表現が出てこなかった。
そして計算は最も苦手だった。一時的に何かを記憶しておいて、他のことを考えるのが無理だった。
プログラミングが得意だったのは、自分で計算する必要がなく脳のメモリがあまり要らないからだろう。
皆これが普通だと思っていた。
薬を飲む前は苦手だとも思っていなかった。
当然みんなもそうなんだと思っていた。
こんな「脳縛りプレイ」で学生生活を送ったら、そりゃ、こうなるわと思った。
薬を飲んでからは夜更かしが減った。
アホみたいな情熱に突き動かされることはなくなったが、その方が穏やかで心地よかった。
人生も徐々に良い方向に向かった。
長々と書いてしまった。
もし読んでくださった方がいるのだとしたら、とてもありがたいと思う。
自分はADHD当事者として、発達障害で苦しむ人の気持ちが分かる。
「○○ができないだけでしょ?」「やれないっていうかやろうとしてないだけでしょ」のような反応を見ると、心が痛む。
しかしながら、発達障害はその「できない」「うまくやれない」があらゆるライフステージで常に足枷となり、人生全体に負の影響を及ぼし続ける。
そして大人からは常に怒られ続け、自己肯定感もなくなり、「自分の可能性」を信じられなくなる。
その一瞬だけではないのだ。「常にその状態が続く」ことによる不利が、生まれた瞬間からその人にはあるんだということを、できれば理解してほしいと思う。
そして、今小さい子供を持っている親に言いたいこと。
もし子供が何かをできなくても、その全てを無条件に受け入れてあげてほしい。
そして、もし発達障害の疑いがあるなら、早い段階で医療にアクセスしてほしい。
最近、ある疑問が浮かんできた。
競技プログラミングで赤になる人を見てきたが、不思議だったのは、高IQが失敗していることはあるが、それよりもIQの低い人がずっと成長すること。
例えば思考パターンの差は関係するだろうか。BFS思考の人は可能なアルゴリズムやアイデアをたくさんブレーンストーミングして問題を解決しようとするが、DFS思考の人はアルゴリズムを選び、それをより深くより複雑にして、最終的に問題を解決しようとするかもしれない。もっと良いのはA*思考の人。
人間がなぜ「知能」という広い概念を「符号なしchar」に詰め込もうとするのかよくわからない。確かにIQは何かを表していて、それが特定のスキルとうまく相関している可能性もあるが「競技プログラマーは競技プログラマーとして特殊な能力を持っている」と言ったほうが近いのではないか。
問題を早く解決できればできるほど、より多くの問題を解決でき、より多くを学ぶことができるので、コーディングは一種の自己改善能力とも言える。
一方で残念なのは、paizaレーティングをツイートしているような人たちで、明らかに努力の痕跡が見られる人を馬鹿にするように、たった数回でトップレーティングに上り詰めるような人がいることである。これは「IQが高かったから」なのか、それとも別の要因が背後にあったのか。
もしIQとはあまり関係がなく、継続的に努力することが成功要因であれば、年齢ができるだけ若いときに参入した者の勝利である。そういうわけで、プログラマーが子育てをすると躍起になる傾向にある。
Q: 政治では「誰が何に値するか」についての議論が盛んである。あなたなら、どうやって「誰が何に値するか」を定義するだろうか。
能力主義が本当に悪いのかとふと思った。
大衆の権利についてのゲームを「人狼ゲーム」に喩えるなら、能力主義は「チェス」だと私は考えている。
能力を正当に評価する方法が存在し、かつそのジャンルが多様であるほど良い。
では「受験勉強を必死にやり、学歴を得て、その学歴を用いて就職する」という一見能力主義に思えるプロセスがなぜポピュリズムなのか。
よく考えてみると、大衆が望むようなタイプの能力で一律的に評価をしていることに関係する。
「(遺伝的意味でも)暗記が得意」「努力を評価する」「外れた人間を叩く」こういう性質を持つ大衆について聞き覚えは?
このような大衆が、受験戦争に躍起になるのは必然ではないのか。なぜならそれが彼らが信じる大衆の権利だからだ。
要するに大衆側が「俺達は努力をして学歴を得たんだ。それが尊重されるべきだ」と言っているのである。
私はチェスが好きな人間なので、そういうくだらんポピュリズムはクソだと思う。
個人の能力を様々なジャンルにおいて多様な方法で可視化し「僕が思う最強の能力評価指標」などという独善に支配されない能力主義の指標が要るのではないか。
しかもその多様なジャンルというものが、個人の経済状況に影響されない、公平なものであるのが好ましい。
喩えで言うなら、オンラインチェスや競技プログラミングは(不正を検出できれば)能力主義の指標としては比較的優れていると言えるだろう。
このような能力主義が「多様な」ジャンルで評価されるのが、本当の能力主義だと私は思っている。
ポピュリズムとはつまり、カルト宗教(創価学会, 統一教会, Google)が政治と癒着して無能を洗脳して権力を得る世界のことである。
正当な評価方法が確立されれば、多くの人が何かしらの得意分野を持つことができる。
n=1の意見で貴方のお子さんは同じ考えではないかもしれないてあくまで参考程度に聞いてください。ポイントは下記の2点のみです。
不登校を選んだのは学校で経験した事象を経て、苦しんで苦しんで苦しみ抜いた上で選んだ選択なので、不登校になった頃には学校に関わるあらゆる物が苦痛で仕方が無かったです。その状態の子供に克己心を持たせようとするのは死人にムチを打つような物なので、子供の心に蟠りが生じます。私は親に「ちょっとリビングに降りておいで」と言われて降りたら当時の担任が居たことは今でも親への不信を抱く理由の一つになっています。
学校で沢山嫌な思いをした子供は学校に関連するものが大嫌いになっています。勉強が好きでもない子供にとっての勉強なんて「良い学校へ行くための苦行」ぐらいの認識ゆえに、学校に行きたくない子供にとって勉強をしない事が最も学校から遠ざかることができる手段になります。しかし、子供の学力だけは守って上げてください。勉強習慣を身に着けさせ、勉強への心理的障壁を取り払う事は学校に行かせるよりも重要だと考えます。学校嫌いで勉強嫌いの子供は学校に通い続ける限りそれは身につきません。基礎学力が高ければ高い程、子供の選択肢は増えます。これから先引きこもりになっても、基礎学力が高ければ、競技プログラミングにも取っつきやすいですし(数学力がないと苦労します)、インターネットで海外の人とコミュニケーションだって取ることだって出来るようになります。要は引きこもりながらできる遊びの幅が増えるのです。勝手に自己学習して自走してくれる子供ならいいのですが、不登校になった子供にそれは無理なことが多いので、「学校には行きたくないならもう行かなくていい」「しかし、勉強だけはしっかりやって欲しい」事は明確に伝えてください。家庭教師や個別塾が理想ではあるのですが(学校から離れたところでモラルのある生身の人間と接するのは、学校以外のコミュニティを認知し視野の広がりに繋がります。何よりもモラルのあるコミュニティに触れることで社会への希望も持てます。学校の生徒同士のコミュニティのモラルは大体糞でした)、今は五教科e-learningで学べたりするので、私の学生時代よりも引きこもりに優しい時代になってきたと思います。
もしも中学生なら高校なんてどうでもいいと思ってるかもしれませんが、高校を卒業してほしい旨と、週一のスクーリングで卒業できる通信制の高校があることを教えてあげてください。
私は親に無理やり学校に行かされた結果、中学生で頭が白髪だらけになり、学校に居てもずっと寝てるだけになり過眠症も併発。精神は常に不安を抱え、対人恐怖症と人間不信になりました。(大人になってから精神科で社交不安障害と診断されました)
中学卒業した頃に私が手に入れた物といえば、偏差値40程度の糞みたいな学力と、常に霞がかかった脳みそと、精神疾患と、社会生活の諦めでした。
子供の頃の経験というのはとても大切なものです。今思えば、私の親も私に普通の子供のように普通に学校に行って他の子供と同じような経験をさせたかったのだと思います。子供の為を思って。しかし、それは私のためにはなりませんでした。どうか貴方のお子さんが私のようにならず、幸せな人生を歩めることを心より祈っています。
abemaで「資格を取ることに価値があるのか」みたいなことをやっていた。
固定の暗記知識を使うタイプの資格はNFT化によって価値が下がる可能性がある。というのも「証明」が一般化することによって焦点になるのは希少性だからだ。暗記知識の希少性は低い可能性がある。
「あるSNSアカウントが、本当に本人であるのか」「資格や学位を取ったと言う人は、本当に取ったのか」「障害者を名乗る人が本当に障害者なのか」「このコードやサイトのコピーライトは?」そういうのはおそらくNFTで防げる。
こういうことを言うと「なぜそんなことを証明しなければならないのか」と言う人もいるかもしれない。シナリオを列挙すればわかるだろう。
それでは希少性の高い資格とは何なのか。希少性を与えることができれば、個人の能力を真に証明するタイプの資格と言える。競技プログラミング成績、数学オリンピック、IQオリンピックなどはそのようなものの一つである。希少性を与えるのは「ランキング」である。もし社会が上手い方向に行けば、能力証明は「資格を持つかどうか」ではなく、何らかのランキングにおける順位によって証明を与えることになると俺は予想している。
参考: https://abema.tv/channels/abema-news/slots/9oDxFrsiHM6o27
実際のサービスについてリンクをシェアしてくれた人がいたので共有します。
anond:20230114204657 横だが、そんなものが実際にあるんだろうか?ってググったら意外にあった。NFT=アートで思考停止してたわ https://www.skew-user.flict.co.jp/
患者の妄想タイプその1: レベルが高いコードが書かれていればレベルが高い(進次郎)
記事からは、コードを書いた人が誰なのか証明する方法がない。アウトソーシングした可能性、コピペした可能性、アレオレ詐欺している可能性などがある。技術力を証明したければ競技プログラミングで証明するので、記事でわかると考えるのは病人。
患者の妄想タイプその2: 肩書が納得できればまともなことを書いている可能性が高い
某外資系企業のデータサイエンティスト()のRのコードとか酷いし、それを酷いとわからない時点でお前は肩書に騙される低能とわかる。
現実社会の大抵の問題は政治的な問題であり、政治的言及をしたければお前のいうポエムという形式になる。技術の部分は所属している会社の中で発揮すればよい。仮にオープンな何かがあるなら、完全な善意であるケースもあるが、それをオープンにすること自体に少々の政治があるケースが多いと考えて良い。ポエムか技術記事かは、どのような政治形態を取るかという違いでしかない。
基本情報・応用情報試験みたいなのとか、CPUの仕組み、コンパイラの実装、分散システムやデータベースとかそういうエンジニアリングガチ勢みたいなのをイメージして大学でCSを学ぶとけっこうショックを受けるぞ。
俺の知ってるCSは、チューリングマシンの表現能力とか停止性問題とかYコンビネーターとかチャーチ数とかの世界で、コンパイラといってもε-CLOSUREみたいな話をじっくりやる感じ。
具体的な話が全然出てこない数学の一ジャンルってイメージかもな。
競技プログラミングみたいなアルゴリズムもそれほど時間をかけない。ベイズ推定をギリやるかどうか。
そういう知ればすぐ身につくものよりも、めちゃくちゃ考えて濃厚なパラダイムを時間をかけて吸収するような学問だった。
で、そんなCSを学んで直接役に立つのは多くの人の場合計算量のオーダーとかくらいかも。
モナドみたいな概念に抵抗なくなるとか、ラムダ式の意味を深く理解できるというのもあるけど、それSIとかWebやスマホアプリの開発業務で必要かというとね。
賢い人は、ちゃんとSNSのユーザー同士の関係性とかレコメンデーションみたいのにもCSの知識を応用できると思うけど、一般人は賢い人が作ったライブラリを使う側だよね。
コンピューターサイエンスや競技プログラミングに懐疑的な人たちは決まってソートのアルゴリズムがどうとか言う傾向にあるけど、たしかに増田の言う通り、ソートなんて自力実装するような時代ではないからその辺は無視してもらって構わないとは思う。
でもソートについて「ソートだけをして終わり」なんて実装をすることはなくて他の処理と組み合わせて存在しているものじゃない?
たとえば「配列をソートしてからサーチする」「ソートしていない配列に対して都度サーチする」「配列をハッシュマップに変換してからサーチする」要求に対してどれが効率的かみたいな判断は要る場面はあるでしょう。
「今書いているコードが呼び出す機能の一つ一つがどういうふうに書かれているかがわかったとして、一体何が嬉しいんだ?」
たとえば配列に対する.find() 的な関数があると思うが、これは「配列を先頭から順にチェックして、指定のものを見つける」ような実装であることが多い。内部的には配列長に比例する時間がかかるループが書かれている、O(N)の関数。
これを自分が実装するコードのループ内で使うと、自分が書いたコード自体は一重のループにしか見えないが、実は二重ループになっているということがあり得る。
その処理がやけに遅いと思ったとき、「find()は標準の関数だから無罪!中身を見る必要なし!」って感じでスルーしてたらコードの全体像は永遠に見えないことになる。
とはいえ、勉強したくないものを無理に勉強する必要もないとは思うよ。
サンプルで実装してあげたものの一部改変などをしてもらうぶんには知識もスキルもいらないだろうし。
https://gigazine.net/news/20210302-hacker-reduces-gta-online-load-times/
JSONをパースする処理や、配列から重複を探す処理など、増田が言う通りラップされたものを使うだけでできることではあるけど、求められる出力を満たせる部品をただ並べただけではこういうダサいことが起こりうる事は知っていてほしい。
「時間あったらなにがしたいですか?」
何かアイデアくれ。
子供いるので泊りがけの一人旅とかは無理。仕事はIT系、仕事は嫌いだが何か作るのは好き。読書は嫌い。多少金がかかってもいい。
今考えてるのは
学歴がよくなくて、就職が困難だったので中小 SIer で働いていた。 (プライム案件を取ってこれる分マシらしい)
レキサルティ、レクサプロ、デパスのお世話になって続けてたけど、結局は薬でどうにかできず、辞めてしまった。
参考程度だけど、未経験の人が 300万 をもらうために、どのようなスキルが必要かを、まとめておく。
ちなみにどれくらいプログラムが書けなかったかというと、競技プログラミングで努力しても AtCoder の黄色になれず青色のままってくらい。
AtCoder でいう、初心者から抜け出せないという、要するにセンスがないということなのだけど、そういう人も居そうなので、参考までに。
未経験のプログラマに対して、これだけ要求されるのだから、未経験の人は覚悟するようにという指針を提供したいので書いた。
基本的に、損害を与えた場合には、それを作業者が補填するという誓約書を結ぶ。
要するに、捨て駒として扱って、失敗したら賠償しろ、という事になる。
このことを認識して、失敗しないように振舞ないと、連帯保証人含めて迷惑をかける事になる。
要するに、低賃金で未経験プログラマを案件にノーリスクで送りこんで、稼ぐための手段です。
基本的に PL (夢想家) → PM (御用聞き) → プログラマ という環境なので、プログラマが自分でディレクションして意思決定する必要がある。
例えば、下請けの場合は、PM の御用聞きの結果の WBS に合わせないと、顧客から DM で 瑕疵担保責任がどうとか言われる。
社内開発の場合は、PL の方から直接、長時間の叱責を受けなくてはならない。
そういう不幸を防ぐためにも、自分でディレクションして、PM の決めた実態を反映していない WBS に合わせて作業するスキルが要求される。
基本的に手戻りは個人の過失になってしまうため、手戻りしないように考え抜いて意思決定をする、というのが重要になる。
これこそ、ガクチカと呼ばれる、頑張れますというスキルなので、学生時代に頑張っておけばよかったなぁ。
こう見せたい、こう表現したい、という事を伝えるには、必然的にデザインの知識が必要になる。
創造的思考とデザインは切っても切り離せない概念で、デザインとは創造なのだから、当たり前である。
ソフトウェアアーキテクチャも、ソフトウェア設計も、コーディングもデザインと言えるかもしれない。
顧客と 1:1 で話す事が DM でもボイチャでも突発的に発生するので、いつ、いかなる時でも論理武装していなければならない。
まぁ、顧客であったり PL であったりはキレるのが仕事なので、それに対して理路整然と説明する必要がある。
なんとなく、では納得しないし、すぐ損害賠償請求とかそういう話にいくので、答えられないと持ち帰りますとお茶を濁して、エマージェンシーになる。
後述する設計能力においても、課題を把握するための言語技術(言語化能力)は重要なファクターだと思う。
C/C++ のシステムプログラムはフレームワークが基本的に無いので、自分で概念を整理して、どのような変更、拡張があるかを考えて設計する必要がある。
この能力が弱いと、手戻りが発生しやすくなり、瑕疵担保責任を問われることになる。
読んだ本の中だと、ボブおじさんの本が、やっぱりしっくりくるなという個人的な感想がある。
UDP で送ってくるデータを受けて 24/365 で停止しない WebAPI への繋ぎ込みという簡単な作業があって、振られた。
リークしてはいけないという事で malloc は禁止で、グローバル変数を利用するという変なルールがあった。
Rust で書けばいいんじゃないかなと思ったけど、Rust 書くのもシンドイし、C/C++ で、しんどくて読みづらいコードを書いた。
あとで保守する人が大変そうだけど、そういうルールを決めたのは PL だしね。
なんか、特殊な PCI Express のカードからベンダーが用意している SDK でデータ引っこ抜いて Web API へつなぎ込む部分をやった。
一応、SDK の使い方をパラ見して 1 日で作ったので、別に負担じゃなかったけど、素人にやらせるんなとは思った。
当たり前だが、DB 作って RestAPI を生やすのは現代のプログラマにとって自然にできなければならない。
なので、新規開発のサブモジュールのバックエンドを任せられた。
だが、ORM の癖を把握したり、発行されるクエリを確認したりするのは、疲れる。 SQL を直書きするのはシンドイ。
結局 SQL を直書きすることにしたけど、あまりいい決断ではなかったと思っている。
それ以外は フレームワーク に乗ってしまっていいので、書き捨てる分には楽だった。
最近だと、TypeScript で Prisma 使うのが、型安全でよさそうだなと思っている。
デプロイを EC2 直でやったり ECS にしたりとしていたので、ベアメタルの知識が必要になった。
要するに systemd のいじり方とか、死活監視の仕方とか。
個人的には、クラウド嫌いなので、ベアメタルの方が安心できる。
Bind で権威DNS を管理して、postfix で絶対止めてはいけないメールサーバを管理するとかもあったけど、出来て当然ではある事だし。
未経験プログラマでも、月単価 100 万以上で顧客に請求してるんだから、会社はそりゃ儲けるだろうと思った。
会社が一人前の経験N年のプログラマといったら、その通りに振舞う必要がある。顧客に責任はないのだから。
当たり前だが、Webディレクション、Webデザイン、Webプログラミング, Webマークアップ は、全て作業者であるプログラマの仕事になる。
個人的には、これが分かれている理由が良く分からないけど、分けたい人がいるんだろう。
デザインで、CSSフレームワークを使うと、その色が出るという事で、全部 CSS は手書きしていた。
tailwind が出た現在では使っていればよかったなと思う。
結局、全く分からない中、手探りでデザインし、コードを書いて、顧客に 1 日 5 ~ 10 回リリースするという行為をした。
顧客は大手企業だったので、自社のエンジニアならもっと出来る、と叱責されまくったけど、だったら自社でやればいいじゃんと思った。
一応、今でもサービスは生きていて、ユニークユーザ数は上がっているらしい。
そして、焼き付け刃だったので、 WAI-ARIA を知らず、アクセシビリティへの配慮が足りない事が問題になってしまった。
これはなんとか保守対応にねじ込めたのでトラブルにならなかったけど、瑕疵担保責任と綱渡りだなと思った。
当たり前だが、リリースサイクルを短くしないと顧客はキレてしまうので、CI/CD を整えないといけない。
今は Github Actions とかあるけど、昔は無くて Bitrise が高いからみたいな理由で Azure Pipelines で CI/CD フローを構築した。
もう Multi Stage Pipeline になってるだろうけど、Release Pipeline が GUI からしか設定できないのが辛みだった。
当然だが、デプロイするためには IaC を整える必要がある。
これを知らずに、コンソールでポチポチしていたので、 IaC 出来てない事がバレた時に色々怒られてしまった。
本来はテストも自動テストを整えて、質保証をしてバグを減らさなければならない。
だが、テストを書くという手間を払えなかったので、人力テストしかできなかった。
一応、リグレッションテストを人力でやりまくったので、バグ発見曲線が結合テストでの IF 不一致しかない、という結果にはなったけど
自動化できれば費用が必要じゃなかったから、怠慢だと、責められてしまった。
未経験でも誓約書を盾に、振られた事全部を出来なくてはならない慣習があるので、プログラマはそんなに良い職業じゃないよ。
甘い考えで、プログラマになろうと思っているのなら、考え直した方がいいです。