渡るネットは嘘ばかり

元文系、米国大学院CS修士号持ちITエンジニア。自称エンジニアが撒き散らすゴミを少しでもキレイにしたい

ブロガー界隈の有名フリーランスエンジニアを見てプログラミングを始めないでくれ

なんかマナブやばいな、ついでに色々見てたんですが、最近技術ではない方向で前に出てきてるエンジニアが増えてるようですね。

技術ブログは一般の人は見ないからわからないかもですが、技術ブログ系はエンジニアが見るだけで、基本的にそこで収益を得てるものも少ない印象があります。技術者の業界というのは業界の発展のために、無償で貢献(楽しみとしての人が多い)する人がすごく多く、それによってライブラリの充実の恩恵として再利用性や車輪の再発明を避けたりできてたりします。なので、この人達は金儲け系のブロガー界隈では話題にならないですね。

一般向けに言葉を発信する人が少なめだったというのもあるのかも知れませんが。というか、よく見たら取り上げようと思った人全員文系エンジニアですか…。文系エンジニアは技術よりお金に向かい、理系はお金より技術に向かう傾向でもあるんですかね。

今回はやまもとりゅうけん、マナブ、勝又健太さんを取り上げようと思いましたが、りゅうけんが香ばし過ぎたので、やまもとりゅうけん特集にしようと思ったものの、なんか同じことばっか書いてるし、ほとんどアフィリエイトだし、ツッコミどころ多すぎてバカバカしくてやめました。とりあえず、この人から派生した系統多そうだからまとめて書きます。一部引用入れます。批判というより、ガチ勢からの見え方程度に思ってもらえれば。

ちなみに勝又さんは元々GREEで開発統括をやったり、ちゃんとしたエンジニアっぽいですね。ブロガー系フリーランスエンジニアには下手したら言ってることわからないのでは?早稲田の政経上がりらしいので、プログラミングガチ勢というより経験と努力で業務に特化してる感じはありますが。なので、本人も理論系は専門家に任せてるようで。最近はサロン屋もやってるようですが、ちゃんと技術にフォーカスできてるなら良い気がする。りゅうけんさんとかビジネス的な立ち振舞ばっかな気がしますね。そもそも技術なさそうだし。普通に考えると、個人のサロンってどんだけ面倒見られるの?という話があり、

mba.globis.ac.jp

スパン・オブ・コントロールとかって概念が出てくるみたいだけど、直接効果的に管理できるのは10人以下、そうなるとその下にまた10人ずつ付くような構造じゃないと、組織として機能しないだろう、って話ですね。オンラインで一方的に発信して、質問とかの中からピックアップして返すとか、オフラインでは講演後懇親会とかが限界な気がするけどなぁ。りゅうけんって人は露骨に情弱狙いっぽいので、できるエンジニアはまず来ないでほとんどが未経験の努力したくない人だろうし。自分はエンジニアとして彼から得られるものは、金に貪欲な人はこの程度のレベルでも稼げる時代なのね、という感じですね。ネットワークビジネスやってたって人だから、稼ぎは信用してないけど。あの人達の盛り癖すごいよね。200万使って150万稼いでも利益ないやん、的な。

エンジニアはお金は面白いことに情熱を持って取り組んだ結果付いてくるものという感じで、ある程度の報酬確保できたら、お金より面白いこと、成長を求める変態揃いなので、もしかしたら感覚おかしいのかも知れないけど、そういう業界です。そのせいで非技術系自称エンジニアが金儲けに一般人を食い物にする構図が出来てしまってるところもあるのかなぁ…。

勝又さんのとこは結構経歴的にもガチっぽいし、独学でもCSとか数学の重要さを理解して学び直ししてる人なので、非エンジニア系学部卒の人には良さそう。

なんか、りゅうけんベースで書いてた時にツッコミどころ多すぎてメチャクチャ長いです。マジで冗談は休み休み似して欲しいと思いながらエンジニア入門カテゴリを流し読みしたんですが、もう最後の方同じような話のアフィリエイト丸出し過ぎだし。

フリーランスについて

まずはフリーランスから正社員に戻った今のフリーランスエンジニアというものに対して思うことを。

技術が好きなら基本的にお薦めしない

自分も流れでフリーランスで稼いでましたが、今感じるのは技術者として一線で活躍したいなら、この分野ならこの人、となるまでは正社員の方が全然良い、です。在宅で働きたがるフリーランス志望は多いですが、実際のところ、今リモート勤務で家で働けるベンチャー多いですね。今の会社でも週の半分リモートの人とかいます。その働き方を求めて、なら別に余計なやること増えるフリーランスにならなくてもよいのでは、という感じ。しっかり努力して成長しての転職なら正社員でも年収は上がっていきます。700〜800万位までなら。たまに香ばしい名前のtwitterアカウントで、「自由にコードを書きたいからフリーになった」という人いますが、案件受ける範囲ではフリーランスの方が自由はないと思います。「今募集ある案件が扱ってる技術」しか使えないし、その人が使ったことない技術とか先端技術で高額でフリーランス雇うところ少ないんじゃないかな。本とかググって出ない技術やってるところは論文読みながらとか、売上に直結しないサーベイとかにも結構時間を割くので、フリーランスにやらせるわけないですしね。まぁ、その論文発表してたとか、国際会議で定期的に採択されるレベルのフリーランスなら別ですが。また、20%ルールとかあるところは仕事中も自分の好きなコードを自由に書けたりするけど、フリーランスがそれやったら「サボらないでください」と言われますね。

経費の話

フリーランスで書籍代を経費で落とせる、とか言ってる人もいますが、それは経費扱いで税金の対象になる収入から引く、というだけの話です。技術力に力を入れてる会社はたいてい書籍は稟議通せば買えます。購入後は会社の所有で自由に借りれるところが多いです。また、技術カンファレンスとかの旅費や滞在費も出してくれる上に、その間も当然給料が出ます。フリーランスで最前線にいようとすると実費で、その期間は業務時間にカウントされないので、なかなか重いです。ここが結構大きい。

技術力

また、フリーランスで技術力を上げるのはなかなか大変で、正社員は実際は半分くらいの時間は勉強に使えたりしますが、当然フリーランスの費用に学習時間は含まれません。正社員ならセミナーや勉強会を開いて知識を共有したり、登壇等で会社のブランド力を高められますが、フリーランスの学習に金を使っても無駄金、というか、学習しないと仕事できないような奴連れてくるなよ、という話になり、下手すると1ヶ月持たずに退場もありえます。ググって思い出して目的達成できる、位ならいいですが、どんな技術で実現するかすらわからない仕事だと、どうにもならないと思います。

同時に、フリーランスの募集があるのは自社での技術力があまり高くない会社が中心だと思います。フリーランスの単価は高めであるため、その高めのお金で社員が納得できるようなところしかフリーランスを利用しないし、一定レベル以上のお金を払うなら社員を雇った方が良いという話になります。レベル高いところは見積もりもきちんとしてるので、割安に感じるだろうし、教育必要なレベルが来られても余計人手足りなくなる(できるエンジニアの時間を奪う)わけで。自社開発系で余裕があるところはリリースを遅らせるだけなので、フリーランスを入れてまで急ぎません。フリーランスを入れてまでリリースを早めたい現場というのは結構炎上しがちな現場とも言え、その期間業務に追われ、しかもコードベースが洗練されていないので、毎回同じようなコードを書いたりします。

技術スタックが広がらない

上記の通り、業務のための勉強も仕事中は簡単にしかできず、プライベートの勉強時間を使ったり、基本的に忙しい(慢性的に人手が必要な)現場が多いので、リリース前とかは勉強会に出れなかったりもするので、自分のやりたい勉強に割く時間が減ります。りゅうけんさんは半年で新しい技術を扱えるところに行った方が成長が早い、的なこと言ってますが、雇う側として、なんで社員より高い金を払って、その分野未経験の人間を入れるんですかね。基本的に経験あるところでしか取ってくれないですよ。逆に経験ない分野を任せてくるとしたら、技術力の見極めができない会社とかほぼ内部にエンジニアがいなくて全て(責任も)押し付けられる感じとしか思えないですね。高い金を払う=その仕事を高いレベルで達成できる、が要求されるわけです。やっすい額ならあるかもだけど。

また、フリーランスの戦場は技術力で言うと真ん中位、上中下で言うなら下〜上の下位まで(下の上〜中の下辺りがボリュームゾーン?)なので、ホントの上の人達(フリーランス要らない会社)と関わらないので技術力に過信しがちな気がします。

結局、今できることと、その近くの例えば同じツールの使ったことない機能を使ってみるくらいのレベルが多くなると思います。普通に考えましょう。フリーランスに社員以上の金払って勉強させてたら社員キレるでしょ。何故かこの辺努力しない系の"稼いでる"フリーランスエンジニアは仕事で学べると言ってますが、理論系のものは仕事中に学べないですよ。なので、「こうやったら動く」は手を動かせば学べても、「こうやって動いてる」は学べないわけです。解析できるレベルなら別だけど。

給料

上記のようなデメリットがあるため、金の払いは良いです。その分野で即戦力として通用する程度の実力があれば1000万前後は難しくないです。隙間空かなければ。まぁ、ある程度の残業代(契約時間以上の超過料金をもらえる場合)も含んでかもですが。消費税がつくのも結構大きいですね。その反面、国民健康保険はアホほど高いです。正社員だと、IT健保は安い上2万以上の治療費は後で返ってきます。その分厚生年金は高い→将来でっかく返ってくる感じです。ブロガー界隈歩いてる人とかアフィリエイターは年金信用してないかも知れませんが、早死しなければ少なくとも貯金より全然増えて返ってきますよね。算数的な話。僕はエージェント介さずに入って、結構ちゃんとしたところだったので、末締め翌末払いで源泉徴収もあったので、その辺は楽でした。確定申告も税金は払うより1ヶ月分の給料レベルで返ってきてた。

年金

フリーランスは基本的には国民年金ですが、国民年金は平均6.5万、厚生年金は22.1万です。何もしないで年180万ほど差が付くので、フリーランス後に年金生活を30年するなら5400万差が付きますね。そして、厚生年金は会社と折半です。

allabout.co.jp

給料の壁

これはあまりフリーランスエンジニアの方は語らないですが、給料で言うと、中小企業 < 国内有名企業 <= フリーランス << 外資なわけです。実力派ベンチャーは国内有名企業よりやや下、ボーナスの差くらいかなぁ。外資Googleとかで働くと正社員の特権を持ったままフリーランス以上に稼げるわけです。技術好きがフリーランスで副業とかせずに開発に集中して稼げるのは1200万〜1500万が限界なのでは?仕事だからじゃない技術好きのフリーランスアフィリエイトみたいな副業したくないですよね…。なので、金目的の人達は怪しげなアフィリエイトYouTubeに走るわけです。理系出身なら断然正社員で外資を目指した方が良いです。これはCS卒に問わず。特にデータサイエンスとかだと他の理系領域出身も強いですね。

個人的に技術力で勝負したい文系なら、フリーランスは選択肢としてあり(文系だと外資では高卒と変わらない扱いなので、よっぽど業界で目立つ技術を持っていないと応募すらできない)ですが、本当に技術で勝負したいならフリーランスの間に貯金をして、300(国内)〜1000万(海外)位貯めて大学でちゃんと勉強し直した方がいいです。外資へのパスポートがてらちゃんと体系的に学ぶと見える景色が一変すると思います。

個人的に日本だと学部からしか入れない場合が多いので、海外で文系学部卒からのCS大学院を選択しました。アフィリエイト業界の人の言い方をするなら、「控えめに言っても人生変わります」。まぁ、こういうことちゃんと学んでる人間に独学で勝てるわけなかったわ、というのが文系の独学から大学院出た感想です。文系のフリーランスエンジニアは否定ばかりしていないで独学でもいいからコンピューターサイエンス学んだほうが良い。独学でもやってみたらちゃんと学びたくなるので。理論系はプログラミング以上に独学きつい気がしますけどね。

文系だから、と限界を置くなら、大学入り直せばいいだけなんですよ。なんでGoogleとかAmazonとか世界のトップレベルの外資がCSの学位にこだわるか考えてみて下さい。基礎の大事さ、なんてどこの業界でも同じです。あ、基礎ってプログラミングの基礎構文じゃないですよ。その裏で動いてる仕組みとか考え方です。世界は生涯学習当たり前だし、IT業界は日本の会社でもCSで勉強するのに開くブランクはマイナスになりません。日本の会社がブランクにこだわるならCSの学位取って外資入ってしまえばいい。GAFAとかじゃなくても給料良くてブランクあっても評価してくれる外資はいっぱいあります。

日本のエンジニアは1000〜1500万を限界に設定しますが(フリーランス単独か役員報酬含めて)、学位持って外資に行けるならもっと上のステージもあります。Googleのアップデートでお前のサイトはクソだ、って叩き落されながら情弱をはめて稼ぐより、よっぽどいい人生だと思いますよ。

ブロガー界隈だけで有名なエンジニアの方々の話

パット見非エンジニア系の学部出身が大半ですね。学歴で大学名出してる人もいますが、エンジニアで非エンジニア学部だと海外では高卒と同等に扱われます。日本ってビリギャルがウケたり、最少限の努力、時間で成果を出した人を尊敬する人が多いですが、言うまでもなく時間かけてる人の方が地力強いですよ。ケンカ最強を自慢してる荒くれ者と格闘技を本格的にジムで習ってる人の違い位差が出ます。それは新しい領域や技術を触る時に大きな差になるんですよね。1からググって学び直すのと、既に中腹まで土台があって細部を整えるだけの人で、どれだけ差ができるかなんて言うまでもないです。

金の話ばかり

「お金稼ぎたい」でエンジニア目指すのはお薦めしません。
「エンジニア 鬱」で検索してみて下さい。特に技術力がない間、向いてない人は結構精神やられたりします。しかも、技術力のない現場で起きやすいので、最初の段階でやられやすいため、勉強するのが楽しめないと苦しい職業な気もします。自分は学べば学ぶほどできることが増えるので楽しんでいたら上がってきた感じはありますが。

https://note.com/denkigai/n/nafff6bd87802note.com

これとか結構壮絶で。そこそこいろんなことに挑んでそうな人なんですが。それでも向いてないと辛い想いをする話。

現状のプログラミング学習支援サービスのほとんどは「Hello, World!」から「Ruby on Railsinstagramっぽいサービスを作ってみましょう」までは手厚く支援してくれるが、その先で迷う人を増やしていると言っても過言ではないと思う。

これは常々書いてきたことで、それっぽく動く何かを作ってプログラミングすげー、までは教えてくれても、それが実際実務ではおもちゃだと教えてくれない。というか、就職したことなくて、実務でガチの負荷に耐えるシステム作ったことない経営陣の教室もありますしね…。その〇〇っぽいサービスに負荷ツールで同時1万アクセスとかさせたら面白い感じになる気がします。

そしてこれは2つの失敗に共通する話だが、「プログラマーになろうとしている時点で向いていない」という考えもある。(中略)
いわゆるプログラマー、ソフトウェアエンジニアというのはビジネスで言う「HOW」のプロである。実装方法がわからなかったり、見たことがないエラーが出たときに、根気強くドキュメントを調べて動くまで頑張る、というのが仕事の基本となる(もちろん仕事なので限度はある)。
つまり、「プログラマーになるには?」という質問をしている時点で、「調べて実装する」というスキルが不足している。
たぶん業界で活躍しているようなエンジニアはほとんどが「気がついたらプログラミングしていた」タイプの人だと思う。彼らが人の何倍も手を動かしているのは間違いないが、彼らはそれを「努力」だとは思っていないだろう。一方、「努力してプログラミングしている」人たちは、彼らの領域に至るまでにさらなる精神的な追い込みをかけなければならない。

これは結構真理だと思っていて、自分は高校時代になんか自分もHP作りたいな、と思っていきなり書き始めて、気付いたらプログラミングやってた人です。一線にいる人は子供の頃にゲーム作ったとかも多いですね。そして、できるエンジニアほどリバースエンジニアリングができるので、コード読めば理解できるから、わからなかったらドキュメントどころかライブラリとか言語自体のコード読んだりしますね。基本的にプログラミングって言語やライブラリの公式ドキュメント読めばできるように情報が開示されています。

金さえ稼げれば技術力なくても楽な方がいい、という人は何かエンジニアというかビジネスマンって感じですね。金のためにITの仕事をしてるというのは、何か、好きで技術力高くてそこそこの給料で働いている会社員より社畜感が強い気がします。金のために好きじゃないことやってる、でもフリーランスは自由、稼げる…うーん。自由な人が好きじゃない仕事するってなんだろうなぁ。現場で、あいつ金もらってるけど大したことないな、と思われるのはエンジニアとして悔しいというか、軽く惨めな気分になることだと思うけど、まぁ、金目的なら気にしないか。フリーランス高収入低技術エンジニア…。技術好きじゃないし、勝負できるレベルでなくて本当に簡単に稼げるなら、希望者集めてフリーランス集団作ってエージェントやればいいのに…。こう言うと突然仕事好きなんで現場にいたい、とか言い出したりしますよね…。どっちやねん!

ちなみに情弱(ブロガー・アフィリエイト)業界の人達は稼いでる人ほど戦闘力高いと思っていますが、エンジニア業界では技術力が高いほど戦闘力が高いと思われます。エンジニア業界で稼いでる自慢してもあまり尊敬されないので気をつけましょう。徐々に技術力と収入が一致し出してるので(特に外資成するとフリーランスが副業必死にならないと稼げない額を、定時どころか短時間の"好きな"開発案件のみに集中できるようになる)、一部のフリーランスエンジニアの、技術力あるのに稼いでないエンジニアをバカにする風潮は薄れていくでしょうね。そもそも、技術力あると700〜800万はもらってるので十分だし、煩わしいことして成長できる環境から離れて100〜200万稼ぐより、好きなことやりながら外資とかメガベンチャー目指したほうがいい、という感覚の人が多そう。そういう人は世界飛び回って差額分経費出てたりしててもおかしくない。僕は好きじゃないのにエンジニアやるなんて、求められること多いし大変そうだなぁ、と他人事で思ってますが。好きを仕事にして手に職付いて給料も伴ってくれば最高の職業だと思うけど、好きじゃないなら、ストレスすごそう。

実際経験上、若干給料下がりながらでも新しい業界に挑戦した方が生涯収入は高くなりそう、っていうのを実感してたりもするので、金に変えられない将来のための投資とも言える時間はあるし、壁を超えていくエンジニアには結構必要だったりします。

まとめ:エンジニア業界では稼ぐことが最優先と考えている人ばかりではないので注意

プログラミングについて

プログラミング周りは、プログラミング教室へのアフィリエイト誘導のポジショントークだとは思いますが…。なんか、わざとなのか偶然かわからないですが、ブロガー界隈の有名フリーランスエンジニアってプログラミングがメインの職じゃないことが多いんですよね。なのに、何故かプログラミングを語ってるという…。それでか、フリーランスでレベル低めの現場が多いせいか、ちょっと仕事が出来だして調子に乗った駆け出しプログラマみたいな感覚で語ってる人が多く感じます。さすがに、ちゃんとやっててこれだと出来なすぎなので、勘弁してください、という次元で。アフィリエイト誘導ですよね?そう信じたい。

簡単・誰でもできると言う

まぁ、情弱や金稼ぎしか考えない人は大変な事したくない系が多いですよね。簡単で稼げたらとっくにバランス変わってない?という話なので、思考停止してるわけですが。その辺を事実誤認させた人手不足トークで補おうとしてる説明も多いですね。人手はないけど、それは初心者に教える時間も取りたくないぞ、という話。だからこそのフリーランスでしょ。で、最初に戻る…んですが、その辺の一攫千金思考層をターゲットにアフィリエイトで金使ってもらおうとすると簡単アピールになるのでしょう。一昔前はセドリとか、バイナリーオプション詐欺、ネズミ講ネットワークビジネスもそうですね。簡単に稼げるぞ、って。どう考えてもネットワークビジネス簡単に見えないけどね。売れるものを売るのは簡単だけど、身内でしか売れてないものを売らないといけないとか、考えられないです。これまでの人生で簡単で稼げると言われて稼げたことありますかね?なんで「自分月商500万です」、なんて文字列を信用できるのか。
実際のところ、スタンドアローンで自分の手元で動かすプログラミングはすごく簡単です。localhostフレームワーク動かしてアクセスできる、とか手順に沿って作業するだけで画面表示までいくし。環境設定のチュートリアルだけでwebの画面出ますよね。それですら作れないガチで向いてない人もいるんですが。え、日本語読むだけじゃん、的な。

そして、業務で扱うと求められるものが変わります。プログラムが難しくなる一般的な要素として、

  • 大規模アクセス
  • 並列処理
  • 組み合わせ問題

とかがパッと浮かびますね。プログラミングが簡単、と言ってる人の作ったサービスに、負荷ツールで同時1万〜10万アクセス打ち込んでみると面白いと思います。リソース食い尽くして暴れる魔物と出会えるでしょう。並列処理はマルチスレッド、マルチプロセス、マルチコア的な話がありますが、データレースとかレースコンディションの問題、false sharingとかも手を動かしてるだけだとわからない話ですね。比較的簡単だけど、DBの排他制御とかもね。組合せ最適化が出てくると、大抵がNP-complete/NP-hardになって、階乗のオーダーの問題が多く、入力が大きくなるとあっという間に現実的な時間で解けなくなる系の問題です。

また、コード面として

  • 可読性
  • 可用性
  • 拡張性
  • 実行速度

を満たした設計や実装をするには、本とかで先人の知識を学ばないと難しいでしょう。テストちゃんと書いてCI導入とかも含め。コード読んで書いてるだけだと、そこの現場のレベルしか身につかないし、フリーランスエンジニアが入れるのは、技術ある人でも中の上程度のレベルなので、ちゃんと学んで書いている人が少なく、自分で書籍とかから学ぶしかない状態が多いでしょう。実行速度に関しては、アルゴリズムとかデータ構造わかってないとなので、コンピュータ・サイエンスの基礎を学ばないと難しいでしょうね。NP-hardの問題にTSP(巡回セールスマン)問題と言って、セールスマンが複数の都市でセールスをして元の場所に戻るのに最短の経路を探す、というような問題がありますが、これは一定の街数(かなり少ない)を超えると現実的な時間で解けないことがわかっているので、近似アルゴリズムとかを使ったりしないといけないわけです。

ja.wikipedia.org

プログラミングは確かに始めるのは簡単ですが、奥が深く、一人前になるのは難しいものです。趣味で遊ぶレベルなら簡単ですね、という感じで、「プログラミングが簡単」という人は上記に挙げたようなチャレンジングな課題に取り組んだことがなく、簡単な仕事しかしたことのない経験も知識も浅い人なので信用しない方がいいです。この人達の大半はプログラミングがメインの仕事じゃない、か、難しい仕事をしたことがない事が多いですね。

いわゆる「完全に理解した」レベルでうぬぼれて、本質に触れて「なにもわからない」段階に到達したことのない人です。初心者に毛が生える頃ってなぜか無駄な自信を持つものです。後で考えるとものすごく恥ずかしいけど。難しいことがあるのを知らないで簡単と言っているのはまさに井の中の蛙に見えます…。

togetter.com

ツールとか言語は使う側と作る側がいて、もちろん後者の方が難しくて、かっこよくて、稼げるわけですが、日本で後者に携わる人が少ないせいか本質的な部分を扱うプログラムを書いたことのある人が少ないですよね。前者のプログラムは比較的簡単で、後者はすごく難しいです。難しいことを知らない、やったことがないから簡単というのは無知を晒してるようなものです。

当然簡単なプログラミングもありますが、優秀なエンジニアがついでに30秒で片付くものをメインに書く人は必要ありません。簡単な作業を自動化できずに人が必要な現場ならあるかも知れませんが、単調で面倒でストレスの多い作業な可能性が高くストレスも多いでしょう。そういった仕事を中心にであれば簡単なプログラミングだけで十分かも知れません。

まとめ: プログラミングは実現したいこと次第で簡単なものから難しいものまであるが確実に奥が深い

理系との違いがわかってない

時が経てば経つほど、理系出身エンジニアとの技術力の差もなくなっていきます。(りゅうけん)

これとかね。単純作業はそうだろうね、という感じ。難しい技術になればなるほど土台に数学力が求められるので、学習曲線に文理、というか数学力で差が出てくると思います。大学院で、この数式を実装するだけ、とかって課題があったりするけど、実装するだけって…どうやって?!とかありましたしね…。問題解決でない簡単な「データをルールに従って処理する」というような、誰でもできる"作業"では差はなくなっていくでしょう。この辺の文章を見る限り、難しい問題解決の課題、計算量が実務として問題になるような課題に関わったことがないのがよくわかります。

簡単で作業が多い、忙しいけど実力上がらない現場ではこれは正しい、という感じです。
りゅうけんさん、書籍をあまり読んだことがないようですが、コロナ社の本とか機械学習プロフェッショナル(MLP)シリーズを読んでみるといいです。別に、数式全部解ける必要はないけど、何をやっていて、どういう意図か、とかわからないとチューニングとかも無理なのでは。

現場で物理系出身の初心者が、あっという間に10年選手の文系エンジニアをごぼう抜きしたのを見たことがあります。エンジニアリングがわかってる上に、数学の土台があるので、かなり強いです。少し難しい領域になると幾何学とか代数学活きてきたりしますしね。これは⊕に閉じてるので正しく動くことが保証される、とか。そもそも電子計算機を使って行う処理なので、計算の法則が理解できるのは強いです。

文系エンジニアが劣っていると言いたいわけではなくて、前提として積み上げてきた土台が違うという話です。非技術系学部卒じゃなくても、同じくらい積み上げていれば何の問題もありません。技術の土台に数学がある。アルゴリズムが正しいことを証明するにも数学が必要。詳細に言語化する時に数学が必要なのがガチプログラミングの世界なわけです。「経験から、感覚で正しく動くと思います」、とか言われても、ガキの使いか!という話で。ちなみにプログラミングを通した数学は楽しいですよ。数式からCGで現象を再現できた時とか、より数学的な話だと偏微分とか動かしてみると簡単に理解できますし、数学は世界を表現する言語だな、と思っています。つまり、現実世界をコンピューターの世界に投影するには、数学が必要不可欠というわけです。まぁ、データを右から左に流しながら、ルールに沿って変換するような単純労働は文理の差は全くありませんが。建築業で言ったら材料を運ぶだけなら差は出ないみたいな話ですね。そういう現場に理系の人間が入ったらいる場所を間違えているので職場を変えたほうが良いです。

まとめ:文系と理系では技術力の高い難しい本質的な領域は差が付きやすく、基礎的な技術は差がつかない

数学は要らない

前のと少しかぶりますが、難易度10段階で6くらいまでは数学は要らないかも知れません。ただ、標準ライブラリ等では数学が使われているわけで、数学が要らない、というより「誰かが数学を必要なプログラミングをしている場合、数学は要らない」という話です。他に人がやっているから使ってないだけですね。ライブラリでできないことを実現するには数学が必要になることは多く、画像処理をガリガリやっている人や、機械学習の中のコードを書いている人は数学ばかり使っていると思います。結局、「プログラミングに〇〇は要らない」、と言っている場合、制約が付いています。「他の人がやってくれるなら」「それを使わない現場で仕事するなら」とか、そういうことです。当然、制約が少ないエンジニアの方が優秀で現場を選べるわけで、制約が多いほどできる仕事は減ります。とはいえ、未経験や独学上がりのエンジニアは、どこに、何が、使われているかつまみ食いしていない部分はわからないことが多いので、〇〇ができなくてもいい、と言っている場合は、制約を隠しているというより、そもそも使われていることを知らない、可能性があります。

例えばサッカーでキーパーをやって、蹴り出さず全て投げるなら「足でボールを蹴らなくてもサッカーはできます」とも言えますが、それは「サッカーをやるのに足を使う必要はありません」とは話が別ですよね。物事に制限をつけてそれを一般化して語っている状態です。

また、上司が外資上がりだったりちゃんと学んだ人間だと、アルゴリズムやシステムの定量的な解析を求められるかも知れません。「ここの処理遅いけど、計算量どうなってんの?」「は?(計算量?)10秒位だと思うですけど。」とか言ってら、いいよ、もう来なくて、という感じですね。マネージャーが定量的な根拠を求めない精神力重視の現場なら良いでしょうが。

まとめ:数学を使わない仕事、誰かが使ってくれる現場であれば数学は要らない

仕事は短期間で移るべきか

この辺から、ガチ勢は目を覆いたくなるくらい酷い話が続きます。

半年〜1年くらいのスパンでどんどんと現場を切り替えていけるような人の方がスキルは確実に上がっていくんですよね。(りゅうけん)

冗談だろ、としか言えません。半年って、大きな難しい案件だと1つ終わらない長さだけど。そりゃ上積みがほとんどないレベルなら考えられるけど、そんなレベルの人は、逆に超高額で外資とかに抱えられて、色々先端分野に挑戦してそうだけどね。
もし、これが事実なら短期のSES案件で常駐場所が頻繁に変わる下請け企業のプログラマが最強になってしまう気がしますけど…。質の良い(問題解決として難度が高い)案件を、品質の高い仕事ができる同僚とできるのが、技術力アップで一番いい環境だと思います。背伸びしてできるくらいの難度がベスト。あとは、理論的に難しい案件だと、半年で下手したら理論理解しきれない可能性すらある気がするけど。最初はもやっとした感じで、徐々に案件が進むと霧が晴れていく感覚があります。まぁ、インフラで初期の環境構築から安定稼働させて次の現場に移るなら、確かにそれはありですが、プログラミング系だとないなぁ。しかし、インフラでそんなにフリーの人間入れるものなんですね。バックドアとか仕掛けられそうで怖い。昔いたところはインフラだけSIerに任せてたこともありますが、それは会社が責任取れますからね。当時は、そこの会社のデータセンターにサーバーとか置いてたりしました。

体験として正しいとしても、それはインフラだからだろうね、という感じ。プログラミングだと半年で任されるのは表面的な、いわゆる「手を動かすだけでできる」簡単な仕事くらい。手を動かすのが大事、って言う人多いけど、それは基礎体力づくりで、要はスポーツでのロードワーク的な話ですね。慣れるには、基礎力付けるには繰り返すのが大事、という。素振りだけでHR王にはなれないけど、素振りは大事、みたいな話です。内部構造や要素技術の十分な理解が必要な仕事は半年までに任されることは稀にはあっても半年で終わってることはほぼない気がしますね。大前提として、軽い仕事を繰り返しても経験値は大して上がらないんです。簡単な仕事が早くできる人になるだけです。スライムを倒し続けても、スライムが余裕で倒せる以上のレベルにはなかなか上がりません。半裸の覆面のおっさん(カンダタ)に叩き潰されます。レベルの低いシステム業界で、自分ができるエンジニアと勘違いするよくあるパターンです。僕の業界経験2年目とかも、そんな感じでした。転職活動で自分の立ち位置が見えてから、本気で恥ずかしくなりましたが。ググってするだけの仕事を繰り返しても上手くなるのはググり方だけです。

自分の感覚では、一つの現場で学ぶことがなくなるのは1年半〜3年位ですね。半年で学ぶことがなくなった場合、それ以上難しい事は任せられないと判断されている状態、と考えた方が良いかも知れません。それか、元々簡単なことしかやらない現場だったか。簡単なことを早くできるようになるのは成長ではありません。ただの慣れです。勘違いしちゃいけないですね。想い出すだけでちょっと恥ずかしい…。

まとめ:本質的な仕事を任せられる程度には同じ場所にいた方がいい

努力しない言い訳を作る

情弱狙いだからだと思いますが、ホントに努力しない人間なら同じ現場に来て欲しくないなぁ。

paiza.hatenablog.com

グーグルが採用したいのは、ジェットコースターを選ぶタイプ、つまり学習を続ける人々だ。彼ら"ラーニング・アニマル"は大きな変化に立ち向かい、それを楽しむ力を持っている。

自称稼いでるアフィリエイトだらけのサイトのフリーランスエンジニアって、フリーランスからの視点ばかりで、企業側の視点を意図的に無視してる感じがありますね。努力する人と働きたいんですよ、企業は。特にエキサイティングな仕事をしてるところはそうです。人海戦術の、誰でも良いから人が欲しいという奴隷商のところは、仕事すれば何でもいいと思うけど、そういうところで働きたい人いますかね。

IT資格

最近、Web開発に資格は要らないと吠えてる人多いですが、実務に必要か、と言うと、そりゃそうだけど、特にSESやフリーランスのプログラム系の職種なら高度情報処理技術者の資格とか持ってたり、DB・プログラミング周りの資格持ってると、転職でも単発でも書類通りやすいと思いますよ。経歴は盛れますが、資格は盛ると簡単にバレます(合格証見せられない)からね。あと、資格を通じてその領域の幅広い知識が得られたりもします。つまみ食いしてると、いざという時にこいつ本質的なことわかってないなぁ、というのがバレます。ブログでアウトプットした方がいいとか、資格の勉強のアウトプットって問題解いたり試験受ける部分な気がしますが…。そして、受かるレベルって、突っ込んだこと聞かれて答えられるレベルなはずなんですが、ほとんどの人は資格の勉強しないで資格の勉強を叩いてるからなぁ…。自分で持ってないとか言ってると、知らないことは価値のないこと、というカチカチマインドに思える。インフラは知らんけど、未経験読者のほとんどが目指してるプログラマだと結構資格は効きますよ。特に駆け出しの間は実績少ないですし。僕は未経験で入社して3ヶ月で高度情報処理技術者の資格取ったら、かなり箔が付いて、SESの書類ほぼ素通りだったし、転職活動でも書類は強かったです。普通に未経験なのに応用情報技術者とか持ってたら、僕は持ってないけど、すげえな、と思ったりします。かなり幅広く深いですから。これは試験わかってないと理解できないかも知れないけど。ただ、受けてないとしても、有名な試験の難易度理解できない人間が面接官やってる会社は底が知れてる気が。それで仕事できるかは別だけど、実務しないでそこまで理解できるなら、かなりITエンジニアとしての理解力高いと思います。基本情報レベルでも明らかに努力している、穴のない知識体系を身に付けようとしてる意志が見えます。同レベルの実績の2人が並んだら、努力が見える方を選ぶのがまともな感覚なのでは。

例えば、会議中に、これ実現できますか?「ちょっと待って下さい、ググります!」という人間と「技術的な課題としては〜があるものの、これなら〇〇の技術で実現できますよ」とサッと出てくる人で、どちらと仕事したいですかね。かつて、SESからWeb系に転職しようとした時に「ググってわかるは技術じゃない」と言われましたが、そういうことです。ググればわかるなら単金高い君じゃなくていいよね、という話。知識が定着してないからググらないと出てこない。ど忘れはあるとしても、体系的に土台から覚えていれば、ある程度のレベルでは答えられるようになるし、体系的に学ぶのに、資格って悪い判断ではないと思うけど。ググって出てくる情報は大半が断片的だから。資格は持ってなくてもマイナスにはならないけど、取ってればプラスになる、程度ですが。少なくとも、そこの専門領域を学んだことがある証明にはなります。理論はわからないけど、ググれば答えはわかるのでググりますね!とか言われても、こいつ大丈夫か?と思いませんか。とりあえず、取らずに文句言うのはかっこ悪いのでどうかと…。そして、そういう人ほどググったコードをコピペしてバグらすというね。

まぁ、CS学位も一種の資格です。努力や実績として結果を残してプラスに成ることはあっても、マイナスになったことはないですね。決定的なプラスにはならないけど、判断材料が増えて悪いことはないです。自分の知識体系を育てて、しっかりと根の張った大きな木にするために学ぶことをやって損はないです。資格は書類の賑やかしと同時に、自分を育てるモチベーションになるものですから。努力を否定する人は努力したことのない人が多いので、大半が資格持ってないですね。自分が持ってないのがマイナスにならなかったから要らない、と言ってるだけで、持ってる場合の立場がわからないか、他人の目に見える実績に嫉妬してる感じがしますね。持ってなくてもマイナスにならない、と、持っていたら多少でもプラスになる、は全く別の話です。努力しないための言い訳は格好が悪いものです。とは言え、転職活動のために取る、みたいな目的なら、身につかないからやめたほうが良いです。自分が成長できる定期的にあるハードル位に置いておくのが良いです。

まとめ:資格はなくてもマイナスにならないが否定するなら取ってからにしないと格好悪い

勉強会

勉強会意味ない発言は、稼いでるはずなのに勉強会やカンファレンスで登壇したりしてないのを正当化したいのかな、と思いますが、勉強会要らないとか、ググればわかる、ってね…。何度でも言うけど、「ググればわかる」は技術を身に付けていないことと同じです。慣れてきた駆け出しのやりがちな勘違い。誰でもできることならできるという主張で、確かに、ググればわかることは多いですが、ググらなくても分かる人との差は明確です。知識として染み込ませてる人と、都度ググる人と頭の回転の速さの違いは明白です。そもそも、考える時に外部記憶装置使ってますからね、人なのに。外部記憶措置は数桁速度が遅いのですよ。

勉強会にはモクモクとかもありますが、ググってわからない最新の課題に取り組んでいるものや、最新のツールの導入からメリデメ紹介してるのなど色々ですね。業務で体験するのが最善の学び、と言うと自分で経験したことしかわからないけど、勉強会の追体験では他人の経験からも学べるわけです。2倍にも3倍にもなるわけで、意識の高い人達を見てモチベーションが上がったり、twitter等でつながることで技術情報が手に入りやすい状況が作れます。ツール選びも自分が確認するツールが一つ減るなら儲けものです。

ハマりどころも事前にわかったりするので、失敗してググって解決するという手戻りの時間と労力の無駄遣いが避けられます。勘所もわかってくるので、"鋭い"エンジニアになるにも勉強会はプラスになります。インフラとかって、ダウンタイムをなるべく減らしたいと思います。それを未然に防ぐための知識を得る場と考えて準備できれば、マイナスを無くすか減らせると思うんですが、落ちたらググって直せばいいと言う思想だと直すまでの時間損失が発生します。自分の経験だけでなく、他人の経験も取り込んだほうが良いのは明らかです。失敗が損失に繋がる仕事であれば経験して学ぶ、じゃ遅いと思うのですが…。というか、勉強会なんか行くより現場でググればいいとかいうエンジニアはAIじゃなくてGoogle検索に仕事奪われそうな気がするんだが。

初心者はモクモクもいいですね。1人じゃ何を作っていいかわからなかったり、家でやる気が出ない人は勉強会でコードを書けばいいのです。

登壇してないに関しては、このブロガー界隈での"稼いでる"フリーランスエンジニアは技術で稼いでるのではなく、立ち回りとかで稼いでるからと言うのが大きいのでは感がありますね。技術力は勝又さんを除いて(MLOpsだしちょっと未知)凡庸な感じか中の下くらいが多く見えます。

何より、勉強会やコミュニティ活動というのは、技術好きには楽しいものです。これが理解できないのはエンジニアとしてもったいないなぁと思います。

まとめ:勉強会は技術力を加速させ問題の予防に繋がる楽しい場

プライベートで勉強しない

プライベートは自由ですからね。その選択は自由です。とはいえ、楽しくてエンジニアやってる人はプライベートでもプログラム書いたり電子工作したりしてるわけですよ。成長の差は明らかですよね。

axia.co.jp

これの但し書きは概ね正しいでしょう

プライベートで勉強しなくても何とかなります
但し書き1:勉強しない人は勉強する人には勝てません
但し書き2:勉強しない人は勉強する人ほど給料は上がりません
但し書き3:勉強しない人は勉強する人ほど重要な仕事を任されません
但し書き4:業務時間で習得したスキルは10年後使えなくなるかもしれません
但し書き5:勉強しない人は転職が厳しくなるかもしれません

某氏のすごいところは、「努力しないこと」を全面に出してることですよね。よくクライアント取れるよなぁ…。自分がフリーランス採用する側や一緒に働く仲間だったら、努力しない人と働きたくないけど…。戻りたくなったら余裕で会社員に戻れる、とか言ってましたが、フリーランスから戻った人間としては、舐め過ぎだと思いますね。僕もそう思っていましたが、現実は大変でした。技術的にこっちの話が逆に通じない時もあったりしたけど、場合によっては、企業に属さずに働いてた人は協調性が…みたいなこと言われても仕方ないのですよ。特に、企業側の視点を無視してフリーランスでは実力と報酬のギャップが得られるような話してる人は企業側の利益から考えてマイナスな人材に思えますが。

同じような仕事ばかりしてるなら、勉強しなくても経験だけでなんとかなるんですよね。努力してないのがわかる人には新しい領域の仕事とか重要な仕事を任せたくないですよね…。正社員に戻るにしても、努力しない=成長が遅い人を取りたいとは思わないだろうね。社員の話ですが、努力できるのがわかってるエンジニアの場合、使ったことのないプログラミング言語アサインすることもありえます。基礎ができてれば、案件中に学べますから。とは言え、言語仕様をちゃんと理解しないと地雷踏んだり、最適化されずパフォーマンスが出ないので、結構な努力必要ですね。と言っても、業務中も勉強できるから、そこまで時間的な犠牲は大きくないかも。強制しないでもそういうのを楽しんで手を挙げられる人は技術の幅がどんどん広がるのは目に見えてるでしょう。フリーランスで経験ない言語となると、現場でよっぽど信頼されてからで、技術的に社員に荷が重い場合にはあるかもですが、稀でしょう。その際には、当然同じくらい、プライベート中心での努力が求められます。フリーランスは現場に仕事にくるわけで、勉強しに来るわけでも企業が育てたいわけでもないのですよ。できるからやってもらうだけなので。

まとめ:プラベートで勉強しなくても通用はするが、勉強する人間には勝てない

本は読まない

かつては入門レベルの本ばかりでしたが、今は下手なプログラミング教室より技術書の方がレベルが高いとこまでフォローしてることが多いです。

自分も留学前に陥っていた状態なんですが、ググればわかるじゃん。本買うやつ馬鹿なの?と思っていましたが、今やsejukuとか入門レベルの内容をプログラミング教室が不確かな記事で説明してるものも多く、それが正しい情報かわからない人は本を買ったほうがいいです。今後、dockerとかが入門書で用意されるようになれば、ありがちの入門者が環境構築に失敗して挫折することも減るでしょう。本は少なくとも、編集や校正を通って一流の同業者がチェックした確度の高い情報です。本当に知見のない領域ならゴミまみれのネット上で情報探すより確実です。
StackOverFlowとかは有益なのは確かで、本にも出てない情報はその辺で調べることも多いです。というか、初心者は公式リファレンスで大抵解決できる気がするけど。慣れるまで見方わからないかな。

ちなみに機械学習系は理論わかってないと実装できなかったり(APIないレベルの部分)、チューニングできないのでめちゃめちゃ本読みますね。前述MLPシリーズとか。ある程度のレベルになると、言語系は使ったことのない言語でもガチ系の本1冊で書けたりするし、つまみ食いでなく体系的に学びたいなら、本の方が良いです。本は要らないという人の知識は大抵虫食いで穴だらけです。ググって見つけた、それっぽい解決策は地雷が埋まってることも少なくないです。正しい動きはしても言語的にはNGだったり。経験で学ぶ、は確かに一番の道ですが、それだけだと情報の少ない未経験に対応できないし、理論わかってれば仮説を立てられるわけで。仮説の検証というプロセスが問題解決の基本なはずですが。

まぁ、この辺の感覚が文系エンジニアと理系エンジニアの違いなのかな。経験だけだと難易度高い問題設定だと限界は近いんですよ。特にプログラミングはね。さらに英語の文献も読めたら学びはかなり加速します。

ちなみに、会社の優秀なエンジニアはこの本は持っておいたほうがいい、という本は会社のではなく、自分で購入して机に並べてすぐに見れるようになっている人が多いです。中級に向かって本よりネットに流れて、中級から「なにもわからない」ステージに達すると、また本に戻る感じがある気がします。で、その先は執筆する側になるのですが。

まとめ:本は体系的に穴の少ない知識を学べ、情報の正しさが保証されるので結果的にコストパフォーマンス(時間等含め)が良い

経験のない座学を否定

これは結構酷いので引用ベースで。あまりに酷すぎなので魚拓で引用しておきます。これ、ガチ勢ドン引きレベルですよ。

megalodon.jp

一方、大学やプログラミングスクールだとどんなスキルを持っててどんな実績を上げてるのかも分からないような人から教わらないといけません。

ちょっと待って、この人どんな大学通ったの?神戸の大学だっけ?全部、対象外の研究室のTAとか、道で震えてるところを拾われたバイト、とかが教えてたのか?大学の授業って、基本的に教えてる科目を専門分野にしてる教授とか、研修室の博士課程の人間が受け持つものなんですが。完全に専門家で、スキルも開示してるし論文もわかるはず。これはガチでビビる。有力ベンチャーとかは大学教授が顧問でついてたり、サイバーエージェントでも働きながら博士取ってた人もいるし、ある程度以上のレベルのクライアントで働いてたら、アカデミックを下に見ないと思うけどなぁ。流石に、この文章は後から「大学」も足して気が狂った文章になったのだと信じたい。二日酔いの朝に最初に目が合った見知らぬ女性に求婚するようなレベルで意味がわからない。

なので、個人が可視化されたエンジニアの人達から学ぶ方があまりハズレを引かなくて済むんですよ。もちろん期待はずれだと思う事もあるかも知れないけど、少なくともプログラミングスクールや大学で教わるよりもまだマシだと僕は思います。

情報発信=可視化というか、論文の採択とか技術系の登壇とかの実績のほうがSNSでのインフルエンサーであるだけよりよっぽど信用できると思います。少なくとも、「素人に人気のインフルエンサー」と「アカデミックな領域で先端の研究をしている教授」のどちらが信用できるかは言うまでもないはず…。冗談でしょ、としか言いようが。インフルエンサーになって自分の実力を勘違いしてるのでは…。この人藤沢某みたいだなぁ。

結論プログラミングをどこで学んだとしても長期的に見るとそんなに大差はありません。

あなたそもそもプログラミング職じゃないでしょ。基礎構文だけで言えばそりゃそうですが、長期的にそれだけの仕事する人って…。そんな言うならAtCoderで1ヶ月で黄色とか行って見せて下さい、という気持ちです。コーディングなら大差ないかも知れないけど。WordPressって技術力で言えばMarkdown使いこなしてブログ書くのと大差ない感だし。中級から上級の間にあるものすごく高い壁を超えるための鍵は、ほとんど大学で学ぶ内容、というか大学院で学ぶ内容にあると思いますよ。特に応用のアルゴリズムはかなり差がつくと思いますが。別に、独学でいけるなら大学入らなくてもいいけど、ガチ数学ですね、その辺は。基本的に、こういうのは経験したことのある人間しか判断できない話で、自分の経験がないものを軽視するのは自分の成長に自分で限界作ってるか、見て見ぬフリしてるだけですね。

こんなこと言うと身も蓋もありませんが、エンジニアは座学でどれだけ勉強したとしてもそこまでレベルアップしないんですよ。

これは独学から大学に戻った経験からして、座学が必要なのは、本質的な問題を解決する場合で、表面的な問題を解決する程度ならそうかもね、という感じですね。動的計画法とかBinary Indexed Treeとか、ひたすらコード書いてるだけで身につきますかね?貪欲法なら思いつくかも知れん。証明は出来なそうだけど。big-O記法とかでアルゴリズムの解析できますか?最適なデータ構造の選び方、説明できますか?なぜ、その暗号が安全か説明できますか?座学が価値があるかは、座学をちゃんと受けた人しかわかりません。文系科目から関係ない仕事に就職するのと同じノリで、大学で学ぶことを評価されてもなぁ、という感じ。おそらく、本質的な問題を抱えた事例の問題解決に携わったことのない人の言葉です。こういうのを見ると、やっぱり、エンジニアとして情報発信するなら、独学でもいいからコンピューターサイエンスの基礎は勉強して欲しいな、と思います。どう裏で動いてるかわかって最適化したコード書ける人と、なんとなくこう書くといいらしい、おまじない!って言って偶然似たようなコードになった人のどっちが信用できるか…。まぁ、説明してもわからないでしょ、でおまじないで煙に巻く人も多いですが。

なので座学ではほとんどレベルアップはしません。それはJリーグを目指すサッカー少年が、ピッチに上がらず必死にルールブックやサッカーの上達本を読んでいるようなものです。

うーん、今時、トップレベルのサッカースクールは戦術をボードとかで学んで、ポジショニングの意味とか、それぞれの動きの狙いを教えた上でコート上で反復すると思いますけどね…。脳の最適化として、ただ身体を動かすんじゃなくて、考えて、意識して動かすと成長は驚くほど早くなるんですよ。その意識するため考える種にスポーツでも座学は必要なんです。昔身体に覚え込ませる、って言ってた反復は、結局は脳の伝達回路の最適化です。正しい経路を理解して、その道を太く強くすることは大事です。

ameblo.jp

CSの授業受けたことがないからわからないのかと思いますが、座学って座学だけで完結するわけじゃなくて、座学で理論を学んでそれを応用した技術が課題で出て実践するんですよね。仮説を立てて検証するのがエンジニアリングの基本だと思うんですが、この人の考え方だと、いきなり仮説を立てずに実践して失敗してやり直すみたいなイメージに見えます。トライアル・アンド・エラーにしても仮説は立てないと無駄死にしまくると思いますが。リセットボタン押し放題の子供の遊びじゃないんですよ…。仮説を立てるためには理論が必要で、理論を証明することも必要で、その辺は座学なわけですよ。ただコード書いてればいきなりひらめくロマサガみたいなシステムはエンジニアには搭載されていないのです。天才なら車輪の再発明できるかも知れないけど、それ、最初から学んだほうが良くね?という話で。この辺は必死にプログラミング教室とかコンサルに向かわせる手法ですかね。この人のブログ的には後者だろうけど…。

プログラミングの学習は人で選ぼう!

人で選ぶなら体系的に俯瞰でCSの技術をわかってるCS卒をお薦めします。パフォーマンス・チューニングとかハードの要素も強いけど、並列処理でfalse sharingの問題とかコード書いてるだけじゃわからないでしょ…。

megalodon.jp

ただ別にね、勉強会でわざわざ学ばなくてもググって学んだらいいんですよ。僕はそれで十分だと思うんですよね。
(中略)
なので、既に現場に入ってるような人はわざわざ座学で学ぶよりも仕事を通して学んでいった方が絶対効率が良いんですよ。

もう、ガチですげーな、これ。今年ですよ。5,6年フリーランスやってこれって、マジでフリーランスって成長しないんだなぁ、という圧倒的な証明ですよ。どれだけレベルの低い現場担当してんだ…。圧巻ですわ。この人、フリーランスですよね?フリーランスに経験ないことを学ぶような場を提供する会社あるんですね。フリーランスは仕事で学ばせてもらえる機会、圧倒的に減ると思いますが。僕は座学で知ってて、課題レベルで書いたことあって他の社員も外部の人間も経験ないから、で任せられた話とかもありますけど、それは知識があったからだしなぁ。知識を学ぼうとせずに完全に現場で学ぶんでしょ?フリーランスで?ウソでしょ…。傭兵が鍛錬せずに戦場で学ぶ、新しい武器があったら戦いながら覚えればいいと言ってる感じ…。死んでダメージ受けるのはクライアントだが。

結論ですが、僕はフリーランスエンジニアになる為の勉強はしてません。ほぼノー勉です。

エンジニア向いてないのでは…。かなりガチ目にエンジニア向いてないのでは…。優秀なエンジニアは趣味で勉強しちゃったりしますね。本人も自分が凡人って言ってて、向いてる優秀な人間が毎日楽しみで勉強してて、凡人がノー勉って…。でも、金はもらう( ー`дー´)キリッ、的な。この人がネットワークビジネスにハマったのわかる気がします。それとも、これは"フリーランスエンジニアになる為の"で限定した引っ掛け問題で、影で優秀なインフラエンジニアになる勉強はしてるのでしょうか?

paiza.hatenablog.com


例え1日10分だとしても、1年でノー勉の人とどれくらい知識に差ができるんでしょうね。まぁ、仕事としてお金のためにやってるとか言ってるし、それでこのブランディングなんですね。こんなプログラミングは簡単だとか言って蟻地獄に引きずり込まないと稼げないなら他の仕事やってほしいなぁ…。確かに、動くだけのプログラムを書くのは簡単ですけどね。まぁ、そんな簡単なプログラムに高いお金払おうと思う人はいないですよね…。入り口は簡単だけど、ゴールのないめちゃくちゃ長い道、と言えると思います。

基本的に自分の市場価値が上がる要因になるのは現場でやったことのみだからなんですよね。

おいおい、あなた、他人の市場価値を判断する立場になったことないでしょ。SIerから即逃げ出して派遣からずっとフリーランスで、他人の市場価値の何がわかるんですか…。レバテックで受注した案件の額面とか程度なんだろうけど、エンジニア業界で一度、ちょっとレベルの高いところで就活してみたらいいと思うけど。特にプログラマ職だと技術課題出るとこ多いから、ちゃんと学んでるかバレますよ。たいてい基礎技術なので、基礎技術軽視して表面的な仕事しかしていない人は落ちます。

とは言ってもプログラマーやインフラエンジニアの仕事が好きで好きでたまらないのであれば勉強会に出るのは全然良いと思いますよ。だけど、僕はぶっちゃけエンジニアの仕事なんて金の為にやってるだけなんで。

金のためにやってるエンジニアが、"参加者多数の勉強会で既出の解決策"を知らずに失敗したら、プロ失格だと思いますけどね。金のためにやっている人ほど必死でやらないと好きでやってる人に勝ち目ないと思うけど。まぁ、同じフィールドで戦ってないという話か。勉強会では"転ばぬ先の杖"を配ってるんですよ。しかも無料。○○みたいなブログ書く時間あったら行ってみたらどうですかね?一度行ってみたのがレベル低い会だったとか?この回のエントリー書くより、よっぽどいい時間の過ごし方だと思うけど。そして、こんなこと言いながらフリーランス薦めるって…まぁ、アフィリエイトではめ込むためだろうけど、酔っ払って書いた記事かなんかじゃないのか、これ。異常なクオリティの低さなんだけど。中学生の読書感想文のできの悪い方から何番目から取ったような内容ですよ…。この頃からアフィリエイトで放っておいてもチャリンチャリンし出したのか、軽く○○ってるんじゃないかって言う質の悪さで本当にこれからエンジニアを目指す人には絶対読まないで欲しい

まとめ:座学で理論がわからないと言語化(アルゴリズムの証明や計算量等定量化含む)ができないので、独学でも基礎技術は学ぶべき

githubはない

githubで自作アプリ公開すべし、と言いながら自分が持ってない人多いですね。自称稼いでるフリーランスエンジニアの業務実績のほとんどはサイト上にしかないです。仕事でしかコード書いてないとそうなりがちだけど。そして、Qiitaもなさそう。

まとめ:技術系で有名になるならgithubくらい持ってるべきだし、持ってない人の技術力はあやしんでよい

公式ブログがWordPress

プログラミング簡単とか言ってるのに、自分のブログをWordPressで作ってる人ばかりというね。WordPressが悪いとは言いませんが、web系の技術の練習とかに使えばいいのに。「このサイトもRailsで作ってます、マジプログラミング簡単」とか言えば説得力出るのに。かつて勝又さんもマナブの件ので言ってますが、WordPressって技術的にレガシーだし、せっかく技術を試せる場を持ってるのに、移行も面倒で古い技術をわざわざ使い続けるってどうなの?技術のアンテナどうなってるの?話に出せる程度に表面はなでておくけど、人には手を動かせ、と言いながらも、実際手は動かさない、って感じですかね…。前に絡んできた人もそうだけど、プログラミング教室薦める記事書くのに自分はWordPressでサイト作ってるって、激しく説得力ないんですが…。ちなみに勝又さんは2013年頃にGREEWordPressいじってますね。経験者の発言。当時GREEですらWordPress使ってたのか、というちょっとした驚き。

labs.gree.jp

前にも書きましたが、WordPressCMS(コンテンツ管理システム)やブログと呼ばれるジャンルの製品で、カスタマイズも簡単だし、開発者よりユーザー寄りの製品です。プラグインのバグとか色んな条件に引っ張られるし、技術を楽しんでる人は公式ページの技術としてはあまり選択しないのでは。というより、しないで欲しい。せっかくのサンドボックスなのに。プログラミング系の仕事の人はWordPressプログラマの仕事と思っていない気がする…。どちらかと言えばデザイナが少しプログラムした方が良いものになりそう。あ、ちなみに、ソース表示したらプラグインとかにWordPressプラグインを示すコメントとか見えたりするんですよね…。見えていいのか、それ、と思ったりもする。

まとめ:WordPressでHPを作ってる人は開発者というよりデザイナー・ユーザー寄り

求められてるスキルセットの提示が低すぎる

2年程度で十分だからフリーランスになるべき、という話が多いですが、2年の実力って、SESなら60万くらいかも知れませんが、その60万のうち20万位は会社の信用が乗っていて、何かあったら責任取る、という安心もあるので、実際のSESの額は高めになっていて、フリーになると額は落ちると思っていいでしょう。このレベルの人は何十万人もいると思われ、もし一定数が会社員より稼げる、とフリーランスになったら、同じ報酬額の要求水準はかなり上がるでしょう。単純計算で中抜きなくなった額と考えがちですが、会社の信頼とかの額を無視しちゃ駄目ですね。この2年程度で60万、例えば4年で100万もらってる人間がきた現場の7年働いてるプロパーが月給50万だとしたら、そのフリーランス追い出すか、そういう評価する会社辞めるのでは?そうしたら、人手不足でフリーランス呼びますかね。で、さらに人減って変わりにフリーランス入れて予算上がって…その会社潰れないか、それ。打ち出の小槌でも開発してんのか?技術力低くてもフリーランスになれば稼げる、というのは採用する側からすると、そういうことですね。技術力落ちてコスト増えるという話。それで会社潰れたらある意味人手不足解消ですね。人の足りない会社が減る、という斬新な解決策です。

会社側の視点から言うと、技術力の低いフリーランスを入れるのは経営上のリスクになりうるんですよ。

マナブの○○ロードマップもそうですが、商材とかサロン系で、技術より立ち振舞い的なの中心な人は、提示する「1000万を目指すためのスキルセット」が駆け出しレベルですね。CS学部でインターンしてたら、新卒の方ができそうなレベル。

note.com

この人のも結構微妙です。僕が2年程度で学べた内容だし、テスターは開発職につながってないですね…。デバッガーとかって専門職ですよ。すごいよ、あの人達。このスキルセットだと、CS上がりなら1年要らないかも知れない。この人、経営頑張ってるっぽいのに、なんでこういうの売っちゃうんだろう。しかも、この人情報系出身っぽいのにテスターを経由する合理的な意味が何一つ見つからない…。「研究生」って学位ないのに東大研究生を経歴で書いてるのもなんだかなぁ、感。本業で頑張って欲しい。

今はそういうレベルで高額もらえる見積もり失敗案件が結構あるかもですが、フリーランス増えたら奪い合いになるし、そうなると需要と供給のバランスで単価落ちるし、徐々に適正化していった場合に、現実では現場で学べないフリーランスが今の技術だけでできる仕事を選んでいくとかなり手詰まりになる可能性が高いし、正社員に戻ろうと思った時に技術が型落ちになってる可能性もありますね。

それにしても、案件のつなぎ目で掘り出し物案件捕まえてを1年繰り返すってかなりの運ゲーに思えますが。僕は非エージェントでの現場で重宝してもらって色んなプロダクトのお手伝いしたから安定してたものの。技術力を上げると運の部分が減って下限が上がると思います。

というか、継続的に案件を出してる会社はフリーランスより社員雇った方が伸びるし、安上がりなのに気付いた方が良いと思うが。まぁ、それに気づかないか、使い捨てのつもりの会社しか案件がないと考えるのが妥当でしょうね。

まとめ:自称1000万超えのフリーランスエンジニアの開示してるスキルセットは大半が見積もり失敗案件じゃないと稼げないレベル

人手不足の理由の勘違い

わざと勘違いしたポジショントークなのかも知れませんが、IT業界が人手不足なのは、純粋に人が足りないSI業界と雇いたいレベルの人間が少ない自社開発業界、という分断が起きていて、未経験とかが入りたいのが後者なのに、後者は未経験者要らない、なので、ミスマッチ半端ない状態ですね。デスマーチとか絶対無理、と言っても未経験者とかスクール出たてが入りやすいのは前者なのだが、という。しかも、日本でも大手ベンチャーとかは海外から雇いだしてるので、別に未経験とか経験の浅い人は要らないんですよね。

報酬のギャップがわかったり、正社員化の方がクライアント側の選択として良い、という海外で普通の判断が基本になると炎上案件の、低単価で人手が必要なとこ中心になって、高単価はガチ強エンジニアが独占しそうな気がします。フリーランスが増えたら、上の方も増えると考えるのが通常。

なかなかバブリーな話ですが、現場経験2~3年のエンジニアが普通に年収2000万円超えする時代もすぐに来ると思いますよ。(りゅうけん)

これをガチで思ってたら頭お花畑だと思うけど…。クライアントどんだけ儲かってんだよ、という話。利益社員に還元した後、フリーランスの技術力低い人間にもそれだけお布施出せる規模って想像つかないなぁ。もしかして、社員の給料上げる前にフリーランスの報酬上げる想定なんだろうか。それは完全に脳に何か寄生してる気がするけど。経験2,3年が70万とかもらえるのは既にお布施案件な気がしますけどね。品質とは何かわからない、とりあえず早く作れる(バグ埋めまくりな)状態で納品してるだろうし。委託でその辺のレビューとかさせられたらかなりきついですね。往復ビンダで途中から自分で書いた方が早い状況になりそう。まぁ、フリーランスが入ってくる会社ではもう働かないと思いますが。

まとめ:人手不足は誰でもいいSI業界と雇いたいレベルの人が受けない自社開発業界とで別の事情

侍推し

いやぁ、sejukuはないよねぇ…

侍エンジニア塾では、全国およそ80名のメンターが在籍しており、ほぼ全員が現役のフリーランスエンジニアです。他のスクールでよくある、「普通の情報系の大学生」とかではありません。

情報系大学生なめてますが、よくあるメンターはスクール上がりの文系大学生な気がします。日本は知らないけど、まともな学校なら、下手な実務経験者より初学レベルの知識(パフォーマンスの最適化とかコードの品質とかじゃない話)では情報系の大学生の方ができてもおかしくない。

というか、紹介されてるエンジニアほとんど独学系で、関わった技術以外、特にハードレベルとかエコシステムわからなそうな気がします。まぁ、そういうレベルでも十分仕事になるものの、代表で書くレベルとしては物足りないというか、正規の教育受けたことがない人が教えるってねぇ…。文学部出て法律事務所で働いてる人が民法の授業教えるような感覚…。なんで、これで安心して教われると思えるのか、自分には北と西が入れ替わった並行世界の人かなんかなのかと感じますね。

まとめ:アフィリエイトのためならsizeof(32)を信頼する人もいる

ネットワークビジネスの手法?

自分の意見を否定する人間は既得権益を守りたいからだ、とか老害言う人って楽して一発逆転思想の人に多いですよね。そういうの、露骨に情弱狙いな気がする…。
エンジニア業界で前述の「完全に理解した」「なにもわからない」「チョットデキル」ってのがあるんですが、結構初期にエンジニアが自信過剰になってるときがこの「完全に理解した」という最初のフェーズであることが多いんですよね。自分も独学からのシステム業界で1年位で会社上位くらいの技術力と言われる感じになって勘違いして、転職時にうわー、めっちゃ井の中の蛙だった、と気づきましたが、自分が本質的に何もわかってない段階にすら行ってない時ってなんか過信しちゃうんですよ。独学で結構業務でやること大体何でもググればできる、って状態で。でも、結局それって難しいこと何も求められない現場だったという話で。なんか「完全に理解した」同士が褒めあってるように見える…。

Google及川卓也さんとかも言ってましたが、優秀なエンジニアってインポスター症候群が多い気がします。自分もこれな気がする。自分が優秀かは置いといて。自分が今の立場で劣ってる、まだまだ足りないって思い続けるから勉強し続けて努力し続ける部分はあると思います。どこまでいってもまだまだだと感じる。すごい人に会う度にそうやって気を引き締めてます。どうも文系上がりのエンジニア系インフルエンサー(ブロガー界隈の有名人)は自己評価が高く仕事をなめてる感が強いですね…。

twitterとかのエンジニアアカウントでも「@未経験」とか「音大出身」とか別業界から的なのが付いてると、ああ、未経験者の中でチヤホヤされて向上心なくした人達ね、一緒に働きたくないなぁ、と思います。僕は未経験・独学からエンジニアになって、社内で評価されても、ちゃんと学んだ人に勝てる気がしなくて、少なくともそれを売りにしたいなんて思えなかった。お陰で成長できたし、学校に戻るきっかけになったし、向上心を持ち続けてると思ってたりします。未経験からエンジニアで活躍してますとか言われてもちゃんと勉強した人にはマイナスになってもプラスにはならないですね。未経験からGoogleまで行ったらすげえな、と純粋に褒めますが…。
まぁ、その辺のアカウントはアフィリエイトとか商材屋なんだろうけど。

ガチ勢が業界を正しく把握してもらいたくて書いてる記事を、金儲け目当てで遠ざけようとするって、ネットワークビジネスで囲い込みの手法としてネットでの批判を信じるな、見るな、とかあった気がする…。それ信じる人はエンジニア業界じゃなくてネットワークビジネス目指して欲しいなぁ…。

プログラミングが難しいと言ってるのは既得権益を守りたい、って言ってるのを信じたい人は、AtCoderAtCoder Beginner Contest(ABC)をやってみて下さい。茶色〜緑が普通の企業で身に付けて欲しいレベルの実装力なので、ABCの最近の全6問だと4問目位、昔の全4問の3問位が一人前に必要なレベルの実装力です。

まとめ

ブロガー系フリーランスエンジニアの発言の注意点として

  • 経験のない重要なことを軽視して否定してることが多い
  • 努力が伴う知らないことを価値がないことと否定していることも多い
  • プログラミング職じゃないのにプログラムが簡単という
  • 企業側の視点を全く考えずフリーランス簡単稼げるばかり
  • だいたいリンクはアフィリエイト

等があるので、情報の見極めは慎重に。ガチ勢噴飯ものの記事も多数です。特に自分のやってないことは必要ないと言うが上のレベルでは必要なので注意が必要です。この人達がエンジニアの代表として露出して行くと、エンジニアって努力しないで稼げる仕事だよね、と思われるのかな。嫌すぎる。大半のエンジニアは、クライアントを欺いて実力以上の額を得られる現場探しに努力するのでなく、クライアントが満足できる仕事をするために努力しているものです。

未経験、独学系を全面に出してるエンジニアはやったことがあることだけ詳しく、知らないことが多いと思います。その人が知らないけど実は重要なことを必要ないと言っているのを信じるのは非常に危険です。特に「ググればいい」と言ってる人は信用しては駄目です。その人がメンターに付いたら、要は、それは「ググればわかる」という答えが大半でしょうね。ググればわかるはその人の技術力ではありません。コンピューターでも人でも記憶はコアに近いほうが処理が速く優れているものです。また、ググってした仕事は身につかないことが多いです。次もググるでしょう。ググればできる、って主張はググらないと何もできないの裏返しなんですよね。PCあればあなたは要らないという話なんですよ。

同様に経験重視の人はhowはわかってもwhyがわかっていないことが多く、表面的な理解しかできていないことが多いでしょう。最初は経験で慣れるのは重要ですが、問題が複雑になるほどにwhyがわかっている人が強くなります。howだけわかるのは言わばハリボテなので応用には対応できません。

僕はもう関わらないレベルの現場だと思いますが、この人達が言ってるレベルのフリーランスが大量に流入してきたら逆に現場の人手不足は更に深刻になりそうで御愁傷様感です。予算持ってかれて教育必要なんでしょ。現場の人間として悪夢ですよ、それ。


あ、ちなみにフリーランスになるだけなら簡単ですよ。
税務署行って開業届を出すだけなので無料5分で出来ます。

俺は覚悟を持って努力してエンジニアになりたい人は応援したいと思ってるので、来年は無料で深い部分まで、"本当は知っておいて欲しい座学"と"数学"と"プログラミング"自体を繋げた講座記事を書こうと思ってます。金のためだけ(余裕ないなら多少金にもフォーカスした方がいいとは思う)でなく、技術を楽しいと思って向上心を持って努力して、業界を盛り上げてくれる人はウェルカムです。願わくば、人生変わって学校入り直してまでガチでやる人が増えて欲しいなと思います。プログラミングに関しては向いている人、向いていない人、すごく向いていない人がいて、向いている人には難易度も簡単なものから意味不明なレベルまで色々あるし、技術を知ると解ける問題が増える、ガチレベルだと悩ましいけど、成長を感じることが多く楽しいものなので、楽しいと思った人は座学というか書籍もちゃんと読んで、ただ動くプログラムでなく、スケールできて読みやすく拡張性のあって品質の高いプログラムを書けるようになって欲しいな、と思います。自分もまだまだ道半ばです。20年くらいコード書いてますが、未だにPRレビューがすんなり通らない(皆一発で通ってない気もするけど)。この道は死ぬまで終わらない気がします。だからこそ面白い。

しかしびっくりする長さに。

[12/27 後日談]
いやぁ、こんなにバズると思いませんでした。1日でほぼ1年分位のアクセスとか怖すぎる…。普段しないエゴサーチとか軽くしてしまいました。

文章が長いのは自分でもわかってて、これは言い訳させてもらうと、最初は某氏(今更)のエンジニア入門カテゴリの記事を、一番古いのから読みながら、ピルクル吹きながら、ゆるゆると引用しつつツッコミを入れてたんですね。それが2万文字超えた辺りで、ツッコミどころ多すぎて収集がつかん!となって、更に、あれ、また同じ記事?もしかして・・・タイムリープしてる?!(色々混ざってる)とかなって、引用を最少限に削りながら、類似記事をまとめたりしたため、ちょっとダラッとして重複のある記事になってしまいました。3年ちょいの記事に対するツッコミ、なので、むしろ「短い」と思って頂ければ(おい!)。しかし、3年以上の記事のツッコミが1エントリーで終わる内容って…。そして、時系列の記事からカテゴリにまとめるの大変だったんですよ。

元々中身のスカスカな記事に内容を突っ込みながら文字通りツッコんだ感じなので、もし、何かしら、この記事から持ち帰れるものがあれば幸いかと。「ググってわかるは技術じゃない」は貰い物ですが、この言葉はもう10年以上忘れられない。自分の慢心をぶっ壊してくれた言葉です。CS卒だと、「そうね」位かもですが、未経験・独学からのガチでやってきたい人達には知識欲をそそる種を蒔こうと試みました。未経験とか初学者層にはわからなくても、"そっと閉じない程度"に抽象化しようと試みたつもりです。また、細かいネタが挟んであるのは、ただのツッコミでは重いだけの長い文章になるので、ニヤニヤしながら最後まで読めれば、と。全くツボにはまらないと、長いだけの駄文になるやつ。

そして、技術者が技術を語ると技術原理主義という何かになるのか、という気付き。個人的には知らない技術は知りたいし、それによってできることが増えたら楽しいことも増える、という素敵なループがエンジニアの一番の楽しさだと思いますが、スタンスが違うと確かに怖いかもですね。全ての人を読者として設定するのは無理なので、スタンスが違うならスルーして頂ければ。技術は向き不向きあるし。しかし、「技術」が中心にない「技術者」って「何者」なのでしょうね。違う肩書を名乗った方が心理的に楽かと。とは言え、本当に伝えたい層は140文字以上読めない気がしますね…。どうせ、「稼げない奴の嫉妬」で終わるんでしょう。価値基準が幻覚の現金で、現実見せられるとそれしか言えない壊れたラジオになる人達ですから。「ジョージ逃げろ!ケツ燃えてるぞ!」「出た〜!嫉妬〜!!」…って、一体何回焼かれたら気が済むの?そう思いたいのだろうけど、金を見せびらかす(儲けてると言ってるだけだけど)と御老公の印籠のように情弱は信じてしまう、という…ネットワークビジネスと同じなんですよね、結局。ハリボテにいつまでも気づかない、気付きたくないのね。「王様全裸だぞ!」って見たまま言っても「いや、バカには見えない服着てんだよ」というあれ。ん?それ、結局全裸じゃないか。あと、元文系卒ですが、高校理系で学部は心理学なので、なんちゃって元文系かもです。経歴詐称気味ですみません。今はML/AI界隈の人間です。

最後に、拙い文章を最後までお読み頂き、ありがとうございました。文章下手くそのツッコミはね、いや、僕は前回のが1年以上ぶりのブログ更新だったくらいで、プロの作家ではないので、ご容赦願えれば。Qiitaとかは箇条書きとコード中心だったり(最近の活動はOSS貢献中心)もするので…。3万字超えると、1人で誤字脱字探してとか句読点チェックは精神的に無理ゲーです。誤り率で言えば悪くないのでは(慰め)?!とりあえず、句読点増やしました(更に長くなる&打ちすぎた感)。句読点難しい。日本語難しい。大丈夫です、もし、僕が執筆して本を出したら、編集さんとか校正さんがよろしくやってくれます。所詮ネット上の戯言、何卒、ご容赦を!!

それでは、良いお年を!