はてなキーワード: 競技プログラミングとは
物心ついた頃から現在までのことを(ボカしやフェイクを入れつつ)時系列で書かせていただく。
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 不一致しかない、という結果にはなったけど
自動化できれば費用が必要じゃなかったから、怠慢だと、責められてしまった。
未経験でも誓約書を盾に、振られた事全部を出来なくてはならない慣習があるので、プログラマはそんなに良い職業じゃないよ。
甘い考えで、プログラマになろうと思っているのなら、考え直した方がいいです。
元増田です。
なるほど。スクリーニングを突破した後に競技プログラミングが活きてくるのか。仕事に役立つとか考えず、完全に趣味でやってたけど、役に立つならよかった。
競技プログラミングやっているなら尚更都合がいい。書き忘れたけど、欧米企業はほぼ100%技術試験は出る。口頭での技術試験に加えてコーディングテスト。
コーディングテストは応募後、スクリーニングが突破できたら、期限内に成果物を提出するように、問題がメールで渡されることが多い。
問題はいろいろあって、こういうのを作ってってパターンと、競技プログラミング系が多い。前者のほうが多いけど。自分も海外企業応募するかーってなったら、その準備として競技プログラミングはやる。日々やれればいいんだけど、座学によるinputも大事というかそっちにも時間取られるんだよね。
休みの日にあなたは何をしているだろうか。 Youtube を見ている?アニメを見てる?競プロをしている?
お金をもらうわけでもなく自発的に行うそれらの活動は趣味と呼んでも差し支えないだろう。 人生を豊かにするためには趣味の充実が不可欠だ。 私は趣味は以下のような4つ種類に類型化できると考える。
体験型は体験することに価値を見出す。 登山や釣り、旅行、スポーツなどこれに該当する。
求道型は能力の向上に意味を見出す。 数学や競技プログラミングなどの学問的なものや将棋、筋トレなどが該当する。
また、消費以外の全てのタイプの趣味は求道型の要素を含んでいる。 スポーツや釣り、絵を描く、どれも能力の向上も重要な目的だろう。
しかし、それらは求道型とは異なる。 なぜなら多くの場合能力の向上自体が目的ではないからだ。 (もちろん人によって例外はある)
創作型は自分で何かを創作することに価値を見出す。 絵を描く、音楽を作る、小説を書く、編み物をする、歌を歌うなどがこれに該当する。
消費型は消費したコンテンツ自体に価値を見出す。 見た映画が面白ければ嬉しいし、つまらなければがっかりする。
私はこの4つのうち全てをバランスよく行うのが最適だと考える。 少なくとも現状は消費型に偏りすぎている人が多いと感じる。 私の場合で言えば YouTube を見すぎている。
消費ばかりをしていては人生は豊かにならないのではないかと最近私は考えている。 問題はそこじゃないとつっこみが入りそうだが。
(追記)