渡るネットは嘘ばかり

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

エンジニア採用の受難は今も続いている

あまり思想的なことを書いてもあれなのですが、やっぱり正しく生きたいと思うことが多い今日此の頃です。今回、久々の会社員ですが、電車の中で若干ハゲ散らかすような年齢のおっさんが顔を真赤にしてスマホを連打したりぐるぐる回したりしてる人とかを見ると非常に残念な気分になります。自分が上司だったら絶対重要な仕事を任したくないな、と…。前にも書いたかもですが、この数年、行動を決める時、脳の機能的に最適な方法をよく考えます。楽だけど正しくない手段を繰り返すと脳は間違った経路を最適化して、その道を太く、通りやすくしてしまい、間違いをおかしやすくなる。常に最適な方法を模索し、納得できる正しい方法を繰り返す、そうやって生きていかないと人は簡単に愚かな方向に転がっていきます。歩きスマホとか、自分に甘すぎますよね。いい大人が周りの人に世話してもらおうという幼児のような思想が見えて気持ち悪いです…。

宗教的な人間ではないけど、いつも神様が見てる、ではないけど、どこで誰が見てるかわからないし、正しく生きたほうが自分が不利になる可能性が下がるし、気持ちよく生きられると思うのですが、なんだか、周りを見てるとちょっと自分おかしいのかな、とか…。最近、オフですべきこと(ゲームとかもこれになるかと)を公共の場で周りを気にせずにやっている人が多くて、疲れます。見知らぬ人のオフのだらしない姿はなるべく見たくないものです。ネットビジネス(ここでは中身のない金儲け目的のアフィリエイト・ブログを指す)業界で読者が見たくない記事を検索エンジンの上に持ってくるのはSEO対策の技術というより、ゲーム理論で言うところ「裏切り」とか「裏切り戦略」に当たるもので、基本的に検索エンジンは「協調戦略」を優先して裏切りにペナルティをかける造りなので、SEOというのは本来協調によりみんなが幸せになる情報が上にくるようにすることで、裏切りは協調の仕組みを騙す戦略であり、アルゴリズムの変更で騙そうとしているのを見抜くということが進められるわけで、検索アルゴリズムがAIとして内容理解のレベルに来た時、ネットビジネスは滅びると思います。早く滅んでくれ。

長くかかった転職活動ですが、感じた違和感をまとめたいと思います。とりあえず、日本トップレベルの技術力の会社に決まってよかったです。
エンジニアを大事にする、技術を中心としたキャリアを意識する会社が増えている一方、採用現場ではまだその変化に付いてこれてないように思えます。採用担当のエンジニアですら、中からの視点が強くなりすぎて何かを見失っているように感じたりも。やはり、転職するしないは別としても一定期間毎に外からIT企業というのを見る機会を作って客観的に自分を、会社を見つめ直す方がいいように思えます。ITエンジニアにとって転職は基本的にキャリアアップです。色んな会社で色んな領域、技術に触れることは技術者としての引き出しを、広い視野を育てられます。日本では基礎のある人が少ないため専門家を好みますが(領域を変えると新しい分野の基礎となってる部分から学び直す必要があるため)、深さを持ったジェネラリストか研究者レベルの専門家のどちらかが技術者の目指すところなのかな、と思います。職業エンジニアだと、深くなる気はないかも知れませんが。

また、技術力とは何か、転職活動を通じて疑問に感じたりもしました。APIやライブラリをリファレンスを読みながら実装するのはただの作業で慣れれば誰でもできることな気がします。システム業界とかだと、この作業が早くできるだけで技術力があると勘違いしがちです。自分もそうでした。でも、それって説明書を読みながら電化製品を使える、とかそういうレベルですよね…。家事に慣れると効率的に早く済ませられると思いますが、それは技術と言えるのかどうか。

アカデミックな世界では、例えば、論文を読んで、それを実装しようとしても、どう書いていいかわからなかったりします。試行錯誤を繰り返して、論文を読み返して、正しく動くとこまでやりきると、これまでやってた実務での実装が歯ごたえなく感じたり、今までの何だったんだ、と感じます。競技プログラミングでもシビアな基準で条件を満たすコードを書いていると、世界のトップクラスのトラフィックが桁違いな会社で求められる水準の違いを感じます。

人事と現場での認識のずれ(人事系の事案)

希望と違うポジションに書類通過後に変更される[10/27追記]

某メガベンチャーD社の得意技です。過去2回あって、どちらも、面接を辞退しました。書類通過の連絡があって、ホッとしたのもつかの間、その後、ポジションを変更したいと連絡がきます。経歴的にこのポジションで面接したい、と言ってくるわけですが、経験のあるポジションでなく別のポジションを希望するというのは志願者は十中八九理由があって違うことをやりたいと思っています。僕の場合は成長の鈍化で、その領域の大半のことができるようになってきて、この先に学べることが少なくなったと判断しました。その中で、業界的に忙しく、巻きで進めても勉強会に参加したりする時間が取れるわけでなく、他のメンバーの作業が分配されて積まれる状態で、仕事を通じての成長より作業になりかけていました。スマホゲーム業界はこの数年日本のITの中心的な位置にいたように思えますが、機械学習/AIの技術の急激な発展もあり、参加事業者が増えすぎてパイの頭打ちになって、色んな意味で先が見えてきたところもあり、新しい領域に挑戦しようとしてたのに、卒業したいポジションで面接と言われ、希望したところなら面接しないと伝えられてお断りしました。それなら最初から書類落としてくれ、と。D社には以前の同僚が何人か働いて、皆転職しています。元々の希望部署も、その同僚の知人が夢の有りそうな領域だけど、夢のない仕事をしてるようで転職する、という話を後で聞きました。ちなみにこの会社前も同じことしてきたんですよ。10年前くらい。その時はシステム会社からの転職で、ゲームエンジニアを希望してたのですが、書類通過後に子会社の航空系サービスのシステムで、と言われてお断りしました。今回、ゲームエンジニアとして成長して、AIエンジニアに応募したらゲームエンジニアで面接したいとか、自社で育てられないのでしょうか?いいとこ取りしたい感じを受けてしまい、途中からD社を紹介したいというエージェントが何人かいたのですが、社名を伏せてた時点でD社以外なら、とNG出して断ってました。一生関わることはないでしょう。印象が最悪です。中では多少挑戦が効きそうですが、最初ゲームエンジニアから数年を無駄にしてまで入りたいほどエンジニアとして魅力ある会社でもありません。このやり方(成長して戻ってきてね的な)ができるのは世界的に有名で技術力もある会社くらいです。会社の規模で技術者への魅力は決まりません。日本は技術力が高くなくても、エンジニアに魅力がさほどなくても大きくなってるIT企業が結構多いです。

技術力を測ろうとする非技術者の人事担当

外資系M社の話ですが、あちらから声をかけて頂き、最初に電話で人事の責任者と話して、最適な部署を決める、というような話でした。
しかし、向こうからお声掛けくださったのにも関わらず、圧迫面接に近い感じで関西弁でぶっきらぼうに対応されました。この人事の方は日本の大企業から転職してきた人だそうで、せっかくの外資系なのに感覚が非常に日本的でした。専門分野に分かれてるということで、何が得意かということを聞かれ、フルスタック的にやってきたのでインフラは弱めだけど、それ以外はだいたいできるという話をしたら、広すぎる、とのことで…。別に複数部署の候補でもいいと思うんですが、なぜ1領域に絞る必要があるのか、1つのことしか深くできないと考えるのか理解に苦しみます。さらに、スマホゲームを作ってると言っているのに、カーネルとかドライバを書いたりしていますか?と聞かれて、これは駄目だ、と思いました。スマホゲーム入れるためにROMを焼かせるのか、と苦笑しました。非技術者的にはカーネルとかドライバって技術力が必要そうに感じるかも知れませんが、別に難しくないです。癖があるだけです。学部レベルの授業でカーネルを書きましたが、コンパイラが厳密({}は改行が必要だったり)とかそういう程度で、カーネル内のコードをリバースエンジニアリングできれば特に難しくもなんともないです。自社サービスをやっている会社ではバグの原因の特定は問い合わせとかすることはなく、自力で解決することが多いです。なので、DBに問題があればダンプを取って解析したり、バグレポートでもスレッドダンプから原因解明とかは当たり前にやっていて、クライアントもサーバーもやっていましたが、両方やったら深さが半分になるわけではなく、どちらも専業と同じ深さを求められるので、その辺でやってたことを伝えたら、深いですね、とかコメントされましたが、日常業務で当たり前にやってる作業の一つでした。逆にCG系の専門的な話したら、「ほぅ…」とだけ言って話を変えられました。絶対わかってなかったと思います。

それで、声を掛けてくれた人に、とんちんかんな質問をされたことを伝えると、キャリア相談会に来てみないか、と誘われ、行ってみました。クラウド系の部署なんで、一番向いてない部署かな、と思ったんですが、4つの領域の内3つのプレゼンがあり、ケーススタディの部分で遅延の原因を予測してみたら当たってました。たいていシステムが遅延する時はネットワークかDB含むI/Oの問題が多いですよね。実装の問題であれば、突然遅くなるというより、最初からずっと遅いです。
で、あれ、意外とクラウドでもいけるかも、とは思ったんですが、個別相談で、その職はサポート職だったので、そこで製品や中の技術に詳しくなって開発職に、というキャリアパスを相談したら、ゲーム業界の実装力の高さを理解していただいた上で、開発をガチでやりたいなら本社にアプライすべきだ、というアドバイスを頂き、プレゼンでもかなり先の長そうなピラミッド構造を見ていたので、そりゃそうだな、開発に移るまで時間かかりすぎだ、と思ってました。
それで、声を掛けてくれた方に、そう言われて、自分でもそう思うと辞退の意味で感謝を伝えたにも関わらず、数週間後にお祈りメールがきました…いや、一番苦手な領域でも余裕だと思ったんですが、という。そもそも辞退したつもりだったので、不愉快な感情だけが残りました。

技術にこだわるキャリアパスを用意するのに業務未経験で書類を落とす

コンピューターサイエンス(CS)をちゃんと学んだ人間にとって、業務で携わったことのない領域でも、土台となる知識や技術はあります。それぞれの領域は相互に関連しあっていて、キャッチアップが簡単だったりするし、基礎のない業務経験のある人と比べ、1年後の成長は比べ物にならないと思います。CSのマスターを持ってる人間の実感として、完全に0な領域って殆どないと思います。そもそもの問題として、技術者として、マネージメントに移らずに、技術を極める方向でのキャリアパスを用意する会社が増えているにも関わらず、業務経験がないと面接にも呼ばない。ということは業務経験があって技術側のキャリアパスを進む場合にそういう会社では残りの技術者人生20年以上をその領域で過ごさないといけないということなんでしょうか。技術好きで最先端の技術も扱いたい人間にとっては地獄のような環境ですね。技術者のできることは基本的に知っていることです。確かに、業務経験があれば、知っているのでできますが、入社後にキャッチアップして身につけることは可能なわけです。エンジニアの素質は才能と素養だと思います。素養部分があると新しい技術を覚えるのが早いです。なぜなら関連技術を知っていたり、似た数式を理解した経験があると、既に脳内に思考の経路が細くてもできてたり、転移させて理解したりできるわけです。才能面は実装課題出せば、最低限の実装の才能は見れるし、素養は学歴である程度見れるでしょう。CS出てる人間を技術課題も出さずに業務経験がないから、と落としていたら、そりゃあ人手不足になるのも当たり前です。こういう会社の技術者は新しいことに挑戦する余地が無いように思えます。

ちなみに、その領域の業務未経験(当然他の領域でそれなりに活躍してた前提)で入って迅速にキャッチアップして通用する人と、業務経験がないと使い物にならない人と、どちらが優秀なエンジニアでしょうか?聞くまでもないですね。業務未経験の領域にapplyした人は基本的に落とす、という企業は後者を前提として採用しています。そうするとどうなるか。無難な人しか集まりません。その分野しかやっていない人なので、その部署はその分野のエキスパートでも他の事はできない人ばかりが集まります。成長より安定を取る人ですね。中には本当にその技術が好きでとがっている人もいますが、一握りでしょう。何かにこだわりがある人は領域というより、言語であったり特定の技術な気がします。それ以外のこのカテゴリの人達は新しい技術や知らないことがあっても、それより、慣れたことをやりたがる人です。職業エンジニアの割合も高い気がします。そういうところではやることが決まって尖った仕事はできるかも知れませんが、周辺技術を使えない故に、尖りすぎて製品化ができなかったり技術の組み合わせによるイノベーション的な発想は出てこない気がします。IT業界自体や、プログラミング未経験なら仕方ないですが、他で十分な経験があるのに、その領域が未経験で書類で落とす、となると学習能力が高くて成長意欲のある人、そして天才的な人の挑戦すら門前払いということです。成長意欲がある人ほど落ちやすくなるわけで、技術課題くらい出してみればいいのに、と思う。何故か、この手の企業は異常に自社の技術力に自信を持ってたりしますね。過信というか。特化型のエキスパート揃えてるだけなんですが。個人的には3〜5年同じ領域でやれば研究職以外は成長が鈍化して、数年の経験の差が価値を産まないくらいになると思ってます。爆発的に広がってる機械学習界隈は数年じゃ鈍化しないように感じますが、それ以外の領域は個人差ありますが、できるエンジニア基準だと3年もいれば大抵のことができるようになるかと。できないエンジニア基準だと差が大きくなりますが、そんなんターゲットじゃないでしょう。と言っても、ここ数年で機械学習系の学術領域に踏み込んでる企業では、優秀なエンジニア間でも、1年の経験で結構差が付いてもおかしくないですが。

経験上感じたのは、アカデミックなベースを持っていて、学生ベンチャーから始まった会社とかは結構、業務未経験を気にしない傾向が強く、学術的にも最先端を追っていて技術力が当たり前に高い事が多いです。逆に、文系やコンサル上がりの社長、要はサービスの企画から当たった企業は経験を重視している傾向が強いように思えました。尺度の問題なのでしょう。おそらく、学術的な知識や理解力が必要な分野(AI/機械学習/IoT辺り)は前者が伸びて、後者はそれ以外の分野に強いように思えます。後者は無難な技術者を人数揃える系ですね。どちらを好むかは転職者次第だと思います。なので、分野と採用方針のミスマッチが起きてる会社は大きめのところでも鈍化するじゃないかと思ってます。

この、適応できるかを考えず優秀な人材を落とすタイプは、所謂、やって後悔するか、やらなかったことを後悔するかで言うと後者になります。オンラインテストで一度時間を取ればある程度の素養を見れるんだから、中途半端に時間取って書類で考えるより、書類を流し読みして少しでも適応能力ありそうなら、そのフローに流し込めばいいと思います。

勘違い技術者

クライアントエンジニアを落とす理由がwebの技術力不足

ちょっと笑っちゃった話。某大手K系列の会社で、最初の頃はクライアントエンジニアも受けていたのですが、面接ではそれなりに盛り上がり、技術力もそこまで高いとも思わず、これは余裕だな、と思ったのですが、なぜか、webの知識と経験が足りない、と落とされました。クライアントエンジニアを受けて、ですよ。お前ら何をやらすつもりだよ、と。webだけで5年以上は経験あるんだけど…。そこから先はwebは経験や慣れが要求されるものの変化が激しく、細かい修正で時間取られて成長に繋がりにくいため避けてます。webはUIの細かい修正とかで残業かさみがちなイメージ。ちなみに、ここに偶然、昔の上司(マネージャ)が転職したんですが、3ヶ月で辞めたい、技術力低すぎ、と言っていて、落ちてよかった、と思いました。

技術力じゃなく慣れを見る技術課題[10/27追記]

最近急成長のM社ですが、ここもクライアントエンジニアでした。で、課題が、自社アプリ風のAndroidアプリを作るという課題で…しかも、今どきNative開発かよ、と。半分以上の時間がUI組む部分でしたし、つまらない上に、クロスプラットフォームフレームワークとか使ってる人より、むしろ愚直なNative実装に慣れてる人なら簡単にできるだろうな、というものでした。あれで技術力は全く見れないと思います。アルゴリズムが必要な部分も全くなく、まぁ、Kotlin使えるか、程度は見れるんですかね。それ、いるの?的な。言語を数種類使えるエンジニアにとって新しい言語って別に何のハードルでもなく、下手するとリバースエンジニアリングだけで使えたりします。当然言語仕様は全て把握すべきですが。いくら会社に勢いがあったとしてもあんな問題出されたら、他に数社内定でたら絶対行かないでしょう。ここは連絡途絶えました。エージェントにお祈りきてるかも知れません。時間の無駄なので、そういう技術課題はむしろ技術者に不安を与えるし、止めたほうがいいです。そんなもので技術を見ようとするリーダーとか現場って何を仲間に求めてるの?と思いました。あれだと技術力が担保できないので入った後のチームでの開発が大変そうで、業界で名の売れてるレベルの引く手数多の人は課題を見た時点で辞退すると思います。金余ってて研究開発に資金投入できるにしても、周りの人間が優秀じゃないと技術者は伸びていかないものです。自分へのハードルを下げてしまうし、情報を集めてワクワクしてもそれを共有できない、一緒に未知の世界に挑戦できないと優秀なエンジニアの居場所としては物足りないのではないでしょうか。

企画力を求めるエンジニアドリブン

某大手R社系列で、技術者からの提案でサービスが生まれることもある、などと、技術者の意見も重視してる環境を求人票で謳っていたのですが、面接で、あなたならどんなサービスを提案しますか?と聞かれてポカンとなりました。有名なサービスを複数持ってるのは知っていましたが、内部のデータとかサービスの実装とかわかりません。それで突然サービスを提案しろって、それはエンジニアのサービス提案のやり方でしょうか?エンジニアから提案をする場合、サービスの実装やデータ(材料や設備)を知った上で、論文や技術書を読んだり、実装面でピンときて、こういう面白いことができるんじゃないか、とインスピレーションが湧いた時に提案するものであって、何もなしに持ってるプロダクトからサービスを提案するのはエンジニアのやり方じゃないと思います。料理人の面接で、冷蔵庫の中身も現行のメニューも見せずに「今冷蔵庫の中にある食材で作れる新メニューを提案しろ」と言われてるようなものです。そういう状況では車輪の再発明が起きたり、的外れな提案も起きます。技術的な土台を知らずにサービスを提案するのは企画職の仕事でエンジニアのやることじゃないです。エンジニアから技術的な視点でのサービスの提案からプロダクトができたりする、というのはGoogle的な技術者の発想を活かせる環境ですが、技術者にも企画を要求するでは話が全く違います。その質問した方はインタビューで非常に志の高い感じで、エンジニア視点のことを言っていたのですが、おそらくエンジニア発信で会社に大きく貢献するプロダクトを作ったのだと思います。それは素晴らしいことですし、誇っていいと思いますが、その自信から、こういう質問をすると方向性が間違ってしまいます。あれではエンジニアにも企画力を求めますよ、という意味の質問になってしまい、技術好きで技術ベースに深掘りした物づくりしてる人は逃げるのではないかと感じました。この会社は結果が来る前に第一志望の内定が来たので結果がわかりませんが、おそらくお祈りだったと思います。ちなみに上記K系列でもうちでやりたいことありますか?とか聞かれて、ECのアプリで提案とか言われてもなぁ、的な。企画しに入りたいわけじゃないんですよね。基本的に、現場ではチケットやisuueとして改善案が溜まっていて、エンジニア発信のサービス改善はそれに対する提案が多いので、特に企画力がなくても支障はないですし、企画力が重視されたら本末転倒です。エンジニアに企画力を求めるなら企画職は何をするんでしょう?いないのでしょうか、そこの会社に企画の専任者は。そもそもの話として、外から見た程度の内部の事情を自分の技術とミックスしてカネになるような企画を提案できるなら、転職せずに起業しますよ。ターゲットを見失ってるとしか思えない。

やたらインフラの質問をする

個人的にインフラは経験重視で専門部署を持ったほうがいい領域だと思っています。ここは技術力というより、経験による試行錯誤で磨かれる部分です。インフラ構築というのは一つのプロジェクトで1回あればいい話で、まぁ、その後はみんなで拡張したり改良していく話になるとは思いますが、経験が大事なのに経験が蓄積しにくい部分です。ならば、1ヶ所に集中させてノウハウを蓄積した方がいいです。特にインフラは費用に直結する部分なので、その会社でのベストプラクティスを用意できるように一元管理した方がいいです。個人に裁量を持たせるにしても、こういう用途で、こういう特性があるから、こういう構成はどうだろうか、とインフラ部門に相談して、インフラから最適化した答えをもらって、その方向で進める、そういう分野だと思ってます。この技術での学習に環境を用意するとしたらインフラどう構成しますか、とか聞かれても、「え、大きい会社なのにインフラ部門ないんですか?」と驚きを隠せない、というのが現実です。グループ企業とかあったら、ノリッジ共有すべき領域です。ハードウェアとかって、自作PC作ったことある人なら、相性でメモリが認識されない、みたいな経験あったりすると思います。ハードとかインフラって理論上最適に思えてもうまくいかないケースとかもあるので、何度も言いますが、一元管理した方がいい。まぁ、インフラをどうこうする経験って少ないので、質問で差別化しやすいのかも知れませんが、逆に、ここを個人の裁量に任す会社危険じゃない?もし稟議通す必要あるなら、ちゃんと部署作ったほうがいいんじゃない?的な気がしますし、機械学習エンジニアが入社前に必須な知識とか技術の話なのか、それ?と思います。まだ、用途にたいしてデータストアと言語選ぶとか技術スタック選定するとかならわかるけど。それもチームで1人いればいいし、新人に任されんだろうから、プロジェクト2,3個通じて学べばいいだけじゃないのかと。専属インフラエンジニアがいなくても、社内で貯めたノリッジベースで判断できるような仕組み作った方がいいと思う。インフラの質問はこういう仕組みでやってましたが説明できれば十分だと思います。というか、でない場合、開発の仕組みがまともにできてない会社と判断して良さそう。インフラの異常検知系の知識はみんな知っておいた方がいいけど、構築に詳しい必要はないです。某技術を使うためのクラウドのインフラ、の質問されたけど、正直、何を期待していたのか。一旦ローカルで動かしてボトルネックになってる部分強めな構成で組めばいいんじゃない?とか思う。空中で算出しなきゃいけない問題でもないような。

社長権限

手術後にあった話で、某一部上場のM社ですが、技術部門の経営側に移った元技術者の方に、複数部署の候補にしたい、と言って頂き、実際の部署のメンバーと話しても技術的に問題ないと言われていたのに、最終で社長の出すクイズの1問でハマり(有名社長とマンツーマンで緊張もあり)、影響受けた本とかどうでもいい話もあり(自分の人生がたった数冊の本で決まったとは思えないし、色んな本から受けたものが少しずつ蓄積して自分の知識体系ができているので、影響受けたと言うならほぼ全ての本が悪い意味も含め影響してると思うから、むしろ、数冊の本を選べるほど単純に生きてないと言いたかった)、感触悪いまま終わって、翌日結果出す、と言われてたのが1週間以上待って、「年齢に対して技術のバランスが悪い」と後述するけど、海外なら裁判沙汰の理由で落とされました。ちなみに1ヶ月半活動延長したのはこれが原因と言えなくもない。というか、フルスタックでバランス悪いとか、対象の領域に対して浅いとかならともかく。技術セクションでは技術面でのお墨付きをもらってて技術力が原因って。そもそも、社長と技術の話してないし、非技術者なんですが、1部上場して数百人社員がいる状態で、現場が欲しいって言った人間を社長が気に入らなかったら落とすってなんなんでしょうね。10人の一族経営のところとかならともかく。個人的には社長が面接に出る場合、他の役員を連れてじゃないと公平性が保てないと思ってます。そういう会社は女子は顔で選ぶ、とか密室的な社長の好みの判断で社員が選ばれるリスクが出て、優秀な人間が運で落ちる可能性が結構出てくると思います。今回のクイズとかも、偶然聞いたことある問題受けたら勝ち、みたいな無意味な話です。頭の回転の速さを見たいとしても、そういった不確定要素が多く入るのでは判断が厳しいし、技術者は頭の回転は速いほうがいいけど、営業とかと違って、その場で全部決めないといけない仕事でもないので、若干的外れな気がする。ちなみに社長面接で聞かれるのはGoogleで意味がないので止めたような質問が中心です。
何はともあれ、技術セクションではめちゃくちゃ好反応だったのに、社長に落とされるということは一生縁のない会社なのでしょう。業務経験詰んだとしてもラスボスにあの人が出てくるのなら一生受からないでしょう。

人事に覚えておいて欲しい話(番外編)

海外では年齢はNGワード

外資系にapplyする場合、顔写真と年齢は基本的にNGです。裁判の材料になるので、応募者に絶対入れないでね、と言うところがほとんどです。前述、社長一発レッドの話でも年齢と技術のバランス、と見送り理由を伝えられましたが、海外では生涯学習が当たり前なので、年齢問わず人間は成長できる、学べる、なので、「年齢」を理由の一部に使った場合、海外出身の応募者の場合、裁判になってもおかしくありません。いや、しかし、前述社長は外資の出身だったような…。

中堅以上の技術者に技術力不足と言えば納得すると思うな

社長一発退場のところも、クライアントエンジニアにwebの技術を求めるところも、面接で技術力で足りないと思うような質問ややり取りがなかったにも関わらず、技術力を理由に伝えられました。おそらく、技術力が問題と言えば仕方ないと思うと思ったかも知れませんが、文系エンジニア(広範囲の基礎がない)とかでもなく、CSで大学院出てる人間としては「はぁ?」と思ってしまいます。技術力が問題だとするなら、せめて答えられない、もしくは答えに窮する質問をして下さい。さらに、技術課題を出してきた会社が技術力を原因にするということは、選考に使った技術課題が適切でないということです。候補者も少なからず時間を割いて技術課題をやっています。その課題で技術力見れないなら、何のための課題でしょう。その課題を解けるレベルなら、入社後キャッチアップしていける、ということじゃないと時間を割いてやらす意味がない。今回3社の技術課題がかぶって大変な事になりました。在籍中に転職活動してる人だと大変どころか、時間が取れなくて落ちる可能性すらあります(1個1個が数日から2週間位かかる)。技術力で落とすなら、online assessment(hackerrankみたいな簡単なプログラミングコンテスト形式の課題)が正答できないとかじゃないと、ある程度以上の技術者は技術力不足という言葉に納得出来ないと思います。オンラインテストなら2時間とかで済みますし。その分、問題を作る側にも負荷がかかりはしますが、雇う側も本気になるべきです。1度数問作れば使い回せるわけですし。1社それでも、「ちゃんと解けてるけど経歴上欲しいほどではない」、とか言われて、じゃあ、最初から課題投げるなよ、と思ってそこのアプリをスマホから削除しました…。志はメチャメチャ高い会社ですが、落とすための選考をしてるのは非常に残念だと思いました。正解しても落とすような問題は完全に出題者の落ち度です。業界の有名な技術者が集まるような需要と供給がマッチする会社はたいてい技術課題でアルゴリズムに近い部分を聞いてきて、面接ではこれまでの経験と技術に対する学びの姿勢を問われたように思えます。中に入ってからのことは基礎があればキャッチアップできるわけで、詳細な次の業務での内容を突いてきたりはしませんでした。少なからず転職をすれば、知らない領域や技術に触れる必要が出てきます。そこを端から探す面接は良い人材を採る面接でなく、少しでもズレがあったら落とすための面接で、技術者の成長を信じていません。となると、判断してる人達がその会社であまり成長できていないのでしょう。最初から通用する超即戦力(普通の即戦力でもアジャストの期間は必要です)だけしか取らないとなると、その会社は技術者が育つ土壌がないと判断すべきです。また、国際経験豊かな人が技術部門を仕切っている場合、それなりに納得できる理由を用意してくれました。そういう会社は落ちても非常に印象がいいです。


おまけですが、githubを公開したほうがいいと言われますが、見てくれるところがすごく少ない印象。採用に関わるエンジニアは業務の合間に、ということもあるのかも知れませんが、個人レベルのコードをリバースエンジニアリングするのに時間がかかる人間が人事やってるのはどうなのかと。技術課題とかオンラインテストしてればいいんですが、それもなく、githubも見ずに技術力を測ろうとするところは技術力のない会社だし、求めてない会社だと考えていいと思います。なので、技術好きにはそういうところも観点として会社を見れると思います。githubではゲーム的なものは一切出してなかったんですが、ゲーム主体の経歴で、とか言われて、ううーん…と唸ったりしました。ゲームが好きなわけでもなく、去年くらいまでの5年ほどは、スマホゲーム業界に金と人が集まったり、技術的にも色んなことができるからゲーム開発に携わってただけで、ゲーム業界を主体にやってきたつもりもないし、自分の技術の基盤はそこにないと思ってます。git見てくれれば分かる話なのですが、悲しいです。結局のところ、ゲーム業界は広い技術が求められますが、ゲームエンジンの制約の中での物づくりなので、深掘りできない部分も結構あります。最後の方はエンジンぶち抜いた実装とかもしてましたが…。逆にgitをしっかり見て、経歴の会社も調べてくれた会社があって、自己紹介も要らないレベルで理解してくれてたのは感動しました。が、そこは2次面接で何故か書類全く見てない感じの人が来て(次は体験入社と言ってたのになぜか挟まれた面接)、話噛み合わず落ちたのですが…。

なんて色々偉そうに書いてますが、エンジニアとしての自分の立ち位置としては上中下のやっと上に入って来た辺りだと思っています。PFNとかの条件のように、定期的に論文を学会に出せるレベルではなく論文を読んで技術を使える程度ですし、情報オリンピックに出たこともありません。紆余曲折を経ながら、アカデミックな経験も積んで、アカデミック側の視点もインダストリー側の視点も持ってる(経験的に逆なのは日本では珍しい気がします)ので、視点は広めと自負してはいますが、技術者として、ここからの壁は確実に数学とか周辺領域の知識も深めないと進めない領域だと思ってます。システムから入って多少インフラ的なこともやりながらクライアントにたどり着き、アカデミックという文系も多く、専業になりがちの日本ではちょっと変わった守備範囲の広いフルスタック気味エンジニアが転職で思ったことであり、どこでも入れるくらいのスーパー技術者ではないのは理解しています。それでも、余裕で即戦力になれるところや、現時点で即戦力ではなくても通用すると思ったところでも結構簡単に落とされたりして、ちょっと書きたいなと思いました。ちなみに、アメリカで違う人種とチームを組んで課題に取り組んだり、プレゼントかディスカッションも多く経験してるので、コミュニケーション能力に壊滅的な問題があるとも思ってません。ここでは本音で語ってるのでちょっと厳し目かも知れませんが…。

という感じで、また思い出したら追記していくかも知れませんが、すごく良い会社に転職できたので、次の転職の際は、既に業界に名が知れて、そろそろ転職しようかな、と発言したらスカウトが来るくらいの人間になりたいと思います。転職活動で意味不明な理由、特に余裕と感じての技術力を否定されて落とされたりすると心がすり減っていくので、活動ほとんどなしで転職するくらい前面に出て行きたいと思います。Qiitaとかで技術的なことも書いていこうと思うので、ここは今後も月1,2回程度の更新になると思いますが、非技術者の人でも業界の中の雰囲気がわかるように、業界の人も楽しみながら読めるように書いていこうと思うので、気が向いたら、たまに覗いて下さい。

子供にプログラミング教室は必要か

お久しぶりです。転職活動がやっと終わって、久しぶりに正社員になります。
フリーランスはお金はいいのですが、やはり、所詮は傭兵です。表舞台で活躍するとなると、大企業にフリーランスで入って一人で大きなプロダクト作っちゃうくらいのレベルにならないと、というか、基本的にそこまで責任のある仕事はさせてもらえません。せめて大きめの追加機能を無茶振り気味に一人で担当するくらいです。会社を代表して登壇させるには企業にもリスクがありますし、フリーランスで表舞台で活躍するとしたら、逆に大きな仕事で業界に名前が轟く状態でフリーランスとして動くしかないでしょう。正社員のいいところは会社から色んな補助が出る。カンファレンスに参加したり、登壇したりするのも仕事の一環です。自分を磨く時間は会社に返ってくるので会社からサポートが出る。フリーランスの場合実費で、仕事休んだ分の稼働時間は給料から引かれます。なので、フリーランスをしながら成長するとなると、勉強会やコミュニティに参加する時間が取れない場合、技術書読んだり実装したり、で、これもまたプライベートを侵食したりします。

あと、正社員になったほうが、当事者意識が高まるので、よりユーザーのために社会のために何をできるか考えるのでビジネス的な目線とか違う能力も磨かれると思います。起業やCTOの選択肢も、会社のサポートの元、業界で名の知れた一廉の技術者になってからの方がいいです。でないと簡単にパクられたり、ビジネス的な視点が足りなかったり、というようなことが起きます。

最近すごく思うのはエンジニアになりたい人は「お金持ちになりたい」でなく、「開発を通じて多くの人のためになることをしたい」という気持ちを持ち続けて欲しいと思います。ここに来てくれる人は現役エンジニアだけでなく将来的にITの仕事に就きたい人も多いと思います。プログラミングできれば儲かる、仕事に困らない、という感覚だけだとおそらく将来的に行き詰まったり、精神がやられるかも知れません。苦しいことから目を背けて楽しいことができるということは殆どありません。スポーツもそうだけど、楽しいと思えるまでに何個もハードルがある。勉強の時間は退屈で眠かったり、理解できなくて苦悩したりするかも知れない。だいたい最高に楽しめる状態までは苦しい道を何度か通るものです。でも、理系の理論というのは理解できた瞬間に霧が晴れたように頭がスッキリする。何万里も先まで景色が見えるようになったような気がする。そんな世界です。学ぶこと、できることが増える感覚は楽しいですし、それを多く感じられる職種です。人のためになることができるように努力することは、実際のところ、自分のできることが増えることだったりしますが、結局、お金になることって人のためになることです。日々の生活を豊かにしたり、楽にしたり楽しくしたり。そういうことに人はお金を使います。こういうのがあったら便利だよな、みんなこれやりたいよな、と思うものを日々ワクワクしながら作ること、お金はその結果として、ユーザーの喜びが換金されて入って来るような感覚を持てるとこの仕事は最高に楽しいと思います。

真逆なのがネットビジネスですね…。Y氏とか、誰一人幸せにしてない気がします。直接的な意味で。グレーゾーン詐欺を教わって稼いで逃げ切れた弟子は感謝してるかも知れませんが、楽な、法の隙間の稼ぎ方をするとまともな、人のために働くことができなくなります。社会の歯車になるなんてかっこ悪い、とかそういう業界の人は言いがちですが、実際は歯車にすらなれてない。人の生きるサイクルに全く貢献していない。別に歯車でなくても潤滑油でもモーターでもなんでもいい。社会の一部として、人の暮らしに関わることはかっこ悪いことでも何でもなくて、そういう積み重ねが多くの人の幸せを作っているのが現実です。結果、Y君は今は投資で稼いでるっぽいけど、自分のために金のためだけです。金を目的に働くとどこまで行っても金しかないので満たされないと思います。彼は基本的にグレーな情報を売ることと、その金を還流させて膨らますことしかしていないので、彼のおかげで幸せになった人より不幸になった人(商材購入者の9割は不幸でしょう)の方が圧倒的に多いと思う。アフィリエイトとかネットビジネスのコンサルとかその辺も一緒です。情弱を鴨にプロから見たら100円にもならない技術や知識を高値でばらまいてるだけです。多くの人の喜びに貢献できない寂しい人生です。

前置き長くなりましたが、今回は子供向けの教室の話。

転職話は次回します。ものすごく人事と現場の意識のズレやエンジニアとして、技術側のキャリアパスが多くの会社でできてきてるのに10年後が想像できてない書類選考や面接であったり、それじゃない感じのエンジニア天国の主張など、違和感感じまくりでしたので次回まとめます。

親の教育への無責任

現在、麻布に住んでいますが、麻布はおそらく日本でも教育水準と言うか、親の教育への意識が日本でトップクラスに高いと思っています。にも関わらず、結構子供の素行が悪いです。夜中に叫んだり(そもそも子供の成長に睡眠は大事なので、22時とかに子供が叫んでる自体異常)傘をすれ違うときに傾ける子も殆どおらず、電車では空席に走ってゲームしたり居眠りしたり。実際のところ、速筋と遅筋が分かれてない子供は肉体的に疲れないので、疲れた、と座りたがるのは飽きてるだけで精神的に耐久性がないだけです。本来、教育は家庭からすべきで、由緒ある名家とかだと、親は厳しく当たり前のことは自分で当たり前にできるように育てられますが、なんとなく稼いじゃった家庭は子供を愛することと甘やかすことの区別がついていない気がします。先日4人組の母親の内一人が横断歩道を渡ってすぐのところに自転車を停め(渡って左に曲がる時に回り込まなきゃいけない位置)、他の3人がコンビニの入り口前に自転車を停めて(これも出て右に曲がると回り込まないと行けない位置)、だめだこりゃ、親から躾しないと駄目だなぁ、と思いました。我が家はなんだかんだ祖父が勲章をもらったりする家系で結構厳しかったので、当たり前のことができない人が多くて、街を歩くと目を覆いたくなることが多いです。
最近の親を見ていると、家庭での躾を全くせずに塾や習い事にとりあえず入れてみたりという勘違い教育が多いように思います。塾でマナーや日頃の振る舞いは身につきません。スポーツでは比較的礼儀が身につきはしますが、儀式的にルーチンになるだけの可能性は高いです。その結果東大に入ったとしても、勉強のできるバカになるだけです。育ちの良さは学力とは別です。麻布で育って育ちが悪いと思われるってどうなんでしょうね。昔は地域で教育をしたので、住んでる場所が育ちの良さにつながっていたかも知れませんが、今は地域の人が叱ると親がキレたりして、どこで育てても差は少ないのかも知れません。田舎は地域で育てる気はしますが、都会的なマナーは身につかない気がします。必要ないので。知らんけど。
また、問題が表面化しだしてるスマホ子守子供にスマホタブレットを渡しても、技術者としての素質は全く伸びません。中毒化して集中力がなくなるだけです。毎日テレビ見てる子供がテレビを作れるようになるわけじゃないし、サッカーを見てたりサッカーゲームが好きな子供が練習もせずにプロサッカー選手になれるわけでもない。おそらく、僕は子供にスマホタブレットも触らせないし、PCも高校くらいまで触らせないと思います。Jobsも自分の子供にはデバイスを渡さなかったり、コンピュータを触る時間に制限を与えたとか。まぁ、プログラミング教育始まって宿題で必要とかなら仕方ないですが。

子供向けプログラミング教室

それで、最近流行りだしてる子供向けのプログラミング教室やプログラミング教育に関してです。
子供向けだとスクラッチを使ったり、楽しく学ぶ、みたいな遊びの延長のものが多いと思いますが、正直、あまり良い技術者になるための教育としては価値がないと思います。子供向けのプログラミング教室は楽しくプログラミングに触れることを大事にしているところが多いので、興味を持ってもらう、という意味ではいいかも知れません。子供は我慢のできない性質があるので、プログラミングがある程度書けるようになってから理論、となると理論はつまらないから嫌だ、と苦手意識を持ったり、知識を軽視する可能性はあるので、この辺のバランスは気を付けないといけないと思います。基本的には動くだけのプログラムを書けるようになる教室と同じ状態なのが現状だと思います。例えば、電子機器の修理の仕事で、トラブルシューティングを見ながら、こういう時はこうする、というマニュアルだけ見て作業するのと、回路図を読み取って症状から原因に当たりを付けて確認しながら直すのでは全く技術の質が違います。よくあるプログラミング教室は前者で、「どうすればいい」だけを教えます。対処法だけ分かる感じです。この方法だと時には根本原因を直さない応急処置になる場合もあり、継ぎ接ぎで将来的に悪化する可能性もあります。「どうなってるか」(何が起きてるか)を教えるのが後者で教室では少なく、大学で教えているのはこちらです。どうなってるかがわかるというのは原理がわかるということで、通常の動作のフローからどこで外れたか原因が特定できる、もしくは大体の当たりが付くという状態なので、そこからテストをすれば特定できるでしょう。僕が教室でこだわっていたのは、どうすればいい、ではなくて、どうなってるかを理解してどうすればいいを考えられる力を付けることです。これがないと想定外の事態に対応できない。

では、子供にどうなってるか、を教えるべきか、というと、結論から言って無理でしょう。裏で起きていることの理解は数式であったり数学的な知識や感覚を要求することが多いです。また、子供に数学的な基礎を飛ばして応用を教えても意味不明で理解できないだけでつまらなくて辞めてしまうと思います。変数の概念も代数学だったりするので、中学位からならある程度理解が早くなる気はします。小学校時代にに5時間かけて理解できる概念が中学生なら30分で理解できるなら、どの段階で始めるべきか、という問題になるかと。計算量だと対数が必須なので高校まで理解が難しいかも知れません。個人的には対数位まで理解できてから一気にやって、それまでは2進数の概念だとか、紙で理解できるコンピュータの仕組みを後述の数学パズルを使ったりして楽しく学んで身につけ、理論的な部分を理解しやすい下地を作るといいのではないかと。

自分の経験上、プログラミングができる状態でコンピューターサイエンス(CS)の授業を受けたら理解は早くてプログラミング課題は簡単にできたので、理論の重要性をちゃんと教えながら基礎構文に慣れさせるのは悪くはないと思います。システム業界の自称凄腕プログラマにありがちな、ただ動くだけのプログラミングを早く書ける、ということに満足しないようにちゃんと導けるならいいと思います。

子供向けプログラミング教室の弊害

自分も独学である程度できたので、情報系の学科に行かず遠回りした経験がありますが、子供向けの簡単なプログラムやゲームをとりあえず動く形で書いて満足して、自分はプログラミングができる、と思ってしまうのは道を間違える原因になります。CSの全体図が見えていないので、プログラミングと言う領域で、理論や品質を考慮せずに書ける、という初心者向けの段階で満足してしまい、そこでプログラミングを繰り返す可能性があります。そんな低いところで足踏みして、数学という基礎を疎かにすると結局量産型の動くだけのプログラムを書くエンジニアになってしまいます。子供の頃から時間とお金をかけてそんなところに着地したらたまらないですね…。子供向けプログラミング教室の問題点としては年代別に段階的に学んでいくカリキュラムが整備されていないことでしょう。実装と理論は両天秤の関係にあって、バランスを取る必要がある。でも、子供は理論を理解する前提を持っていない。それは学年が上がるに連れて学んでいくところで、ただし、基礎構文は結構理論なしでも書けちゃう(たいていプロが見るとクソみたいなコードだけど)ので、バランスが崩れた状態になってしまうわけで。学問の体系として、CSの位置を文科省で明確にした方が良さそうな気がします。高校数学のどこかの先な気がします。高校の情報の授業とかは実は結構質が良くて、大学のCS概論より下手すると踏み込んだ内容かも知れません。時代ですね。ただ、どれくらいの割合の高校生に理解できるのかは疑問ではありますが。

どうなってるかを理解させるために

じゃあ、子供からプログラミングの素養を身に着けさせるにはどうしたらいいのさ、ということですが、数学です。まずは数学パズルから始めましょう。数学パズルは頭の回転も良くなるし、実際世の中は2進数的な事象も多くて、そういうクイズのようなところから遊ばせて、数学オリンピックを目指してみましょう。
ちなみに数学パズルとして有名なのだと、両方に火のつけられる1時間で消えるロウソクを使って15分を測る、というものとか2進数的な問題だと、1000個のまんじゅうの内1つに毒が入ってる、最少で何匹のモルモットを使えばどのまんじゅうに毒が入ってるかを特定できるか、とか。
こういうのはアルゴリズムであったり、数学的な考え方の練習になるし、親も楽しめて面白い。子供が乗ってきたら少しずつ難しく学問的な問題に移っていって数学オリンピックまで行ってしまうと最高です。数学オリンピックレベルの数学力があるとプログラミングコンテストでも世界レベルで戦えたりすることが多いですし、数学が土台になってるプログラミングも天才と呼ばれるレベルでできることが多いです。

結論

子供向けプログラミング教室はプログラミングができるようになるために通わせるのでなく、プログラミングに興味を持ってもらうため、エラーが出たりしても怖くない、と恐怖心を持たないようにするためにはいいですが、まずはしっかり土台となる算数・数学に興味を持たせて楽しく学ばせるのが優秀なエンジニアになるための種を撒くためには重要だと思います。日本人は目先のことに囚われがちな気がしますが、10年20年先のその子の未来を考えて、しっかり土台から、倒れない技術を持ったエンジニアになるような、しっかりとした根を張れるようプログラマの種を植えてあげましょう。
プログラマにならなくてもコンピュータを使えたほうがいい、と思っている親御さんは学校の授業をちゃんと受けさせれば十分です。もしくは、社会人経験あればそのレベルのスキルは自分で教えられると思うので、

DIVE INTO CODEのレビュー(2018年版)

このレビューはDIVE INTO CODEに通った体験ではなく、もし卒業生が面接に来た場合にどういう評価を現場の人間がするか、という観点で書いています。
通った時にどういうサービスを受けられるか確認したい場合、教室の公式ページと他のレビュー(大半がアフィリエイトですが)をご確認下さい。

ちなみに実際通って検証するというのは知識ゼロから転職が成功するまでを実証して初めて意味があるので、通った人間のレビューだから価値があるというものかと言うと微妙なところだと思います。通っただけでわかるのは教室の中の様子だけで、いちばん重要な結果何を得られたかがない場合もあります。体験談を論文に例えると、論文の検証で「書いてある通りに実験はできました」だけでは意味はありません。同じ結果を再現できないと意味がないです。人というイレギュラーな存在が中心なので常に再現するとは限らないのは仕方ないとはいえ・・・いや、それ以前として失敗した論文、もしくは実験だけして結果を求めない論文を発表するような行為がそこらじゅうで起きている。数十万を払うコースの体験談で、即戦力コースであれば、開始時に想定されるレベルの生徒が「即戦力」として、未経験以上の「即戦力採用」の給与を得られる報告ができて初めて意味があります。受講生の体験談はそれが最低限です。「誰でも成功する商材」の体験談で、非常に作り込まれてよくできています、と言われても、え、結局成功したの?書いてよ!となりますよね。

未経験採用で未経験としての給与で入れたであれば、教室行かなくても結果は同じです。行かなかったら採用されなかったかも知れませんが、それは即戦力ではありません。通って書いたら信憑性があるかは別の話で、卒業した人間を判断するのは人事であり採用に関わる現場の人間です。そこで即戦力と判断されないと即戦力コースに数十万払う価値はないと思います。

というわけで、DIVE INTO CODEのページにアクセスが多いので古いレビューのままだとまずいと思い2018年版も書きます。DIVE INTO CODEの中の人も見ているのか、最初の指摘点は結構取り入れられてるし、プログラミングを教える人間としてまずい感じのCEOの発言のインタビューもリンクが死んでいたり(失言と思って公開停止したかはわかりませんが)、結構良くする意志はありそうな印象を受けます。もし、ここを見てたとしたら、カリキュラムにキツめのツッコミがある可能性があってもカリキュラムを公開してるのは印象がいいです。ちなみに、事前にカリキュラムわからないところは絶対行かないほうがいいです。内容に自信がないか内容が軽いかの可能性が高い。公開するとパクられる可能性と言っても、どうせどこも大学の授業とかを参考に立ててるか未経験者研修の経験から作ってる(こっちの可能性が高い)ので、ベースラインに差はほとんどありません。検討するのであれば、何度も書きますが、カリキュラムを知り合いのエンジニアに見せて、これやった人が応募してきたらどう判断する?と聞いてみるのがいいと思います。もしくは、希望する会社の人事に書類上の応募資格として「ここの教室を出たら中途採用で即戦力と評価されるか」と問い合わせのメールを投げるといいと思います。結構返事くれるものです。もし、未経験者採用と経験者採用がある会社なら、「この教室を出た後、どちらで応募できるか」と聞くといいと思います。結構人事の方はきちんと返事をくれるものです。その際、200万台〜600万台位まで3社くらい別の給与帯で送ってみるといいと思います。おそらく、200万未経験の扱いになる可能性が高いと思います。

プログラミング教室で人生が変わるとしたら、0からwebアプリのプロトタイプを作れる能力を身に着けて、斬新なサービスのプロトタイプを持ってビジネスコンテストでプレゼンして優勝して融資を取り付けて即戦力エンジニアを雇う、みたいなコースくらいです。
ただし、スタートアップは融資が盛んなアメリカですら大半が失敗しています。
jp.techcrunch.com
日本でスタートアップで伸びてきてるのは大半が専門知識を基にサービスを考えて始まっています。専門知識がないのであれば博打に近く、下手すると大金を得るより借金が残ります。自分一人でやればコストかからないし、少しの収入でも大金だ、と思うかも知れませんが、相手は専門家でタッグを組んできます。ビジネスを舐めないほうがいい。特許とか実用新案の知識がなかったら簡単にパクられて負けます。まず目指すなら融資を受けて専門家と組むことです。

何度も書くけど、卒業生を評価するのは、人事と現場のエンジニアです。中途採用面接では必ずこの2つのセクションの人間があなたの経歴に目を通します。

DIVE社を厳しめにレビューしていますが、基準は同じです。TECH::社はカリキュラムを出していないのでほぼ博打に近いし(EXPERTがエンジニアを目指す人向けなので、それ以外は趣味の入り口がいいところだと思います。じゃんけんアプリとか、僕が最初に見た、独学で基礎構文は身についていた生徒だと1日目でできる内容です)、カリキュラムが見えてた頃は遊びにしか思えなかったです。CodeC社もアルゴリズムやデータ構造といった最低限知っておくべき知識もリストになく、独学と変わらない、チュートリアルレベルの内容に見られ、アフィリエイトとかで露出の多い中ではDIVE社が一番まともです。結論で書きますが、対象がちょっとずれてる気がしますが…。
他社をもう少し言うとTECH::社は、〇〇商法とかで有りがちな説明を聞いた日割引的な手法を使っており、非常にやり方に危険な香りがします。有識者の友人にアドバイスをもらえない状況を作るというのは悪徳商法の典型です。手法がそうだ、というだけで、実態はわかりませんが、クリーンな教室ならば、すぐにそういうやり方はやめるべきです。点検商法とか、宗教の手口にしか見えない。まぁ、自分から行ってるけど。
悪質商法とトラブル防止法
説明会行かないと詳細わからない場合、必ずIT関係で勤務している友人と一緒に行ったほうが良いです。悪徳商法同様、自分の知らない業界の話をさも魅力的にされて割引を出されたら押し切られかねません。やりかた汚いなぁ…。まぁ、料金見たらめちゃくちゃ安いけど、書いてある内容的には4000円の本の1冊に満たない感じですね…。AIもチュートリアルっぽい。T社はブログ見てもレベルの低さがよくわかるし、素人の学生に毛が生えたメンターだらけという体験談聞いてるので、チュートリアルレベルに落として正解ですが・・・意味あんのかね。人生変わるのフレーズは変えないみたいですが、入門書の序盤レベルの内容ですよ。卒業生もエンジニアほとんどおらんですね…カスタマーサポートとか社長が知識つけるためとか。まぁ、この額なら・・・と思わせるのが危険かも知れないけど。就職できなきゃ返金で就職サポートが就職できるまでになっていて、昔アメリカであった、就職するまで卒業できないから就職率100%を思い出しました。
あと、どうでもいいんだけど、フリーランスエンジニアの画像のaltがモンテネグロでプレーしてるプロサッカー選手のものになってるけど、この教室大丈夫だろうかwwwwwコメントアウトもところどころ見えてますね…。迂闊すぎる。メンターがコピペでもしたのか?
女子高生起業家のその後もまたちょこっと作って自分で記事書いて放り投げたように見える。会社概要押してもトップにリンク貼られてたりかなり責任感のなさが丸見え…。

で、今回はDIVE INTO CODE即戦力コースです。AIコースはまた今度。

あ、どうでもいいんですが、即戦力コースのURLがfull_stackでpdfもfull_stack.pdfになってますが、全くフルスタックエンジニアではないですね。フルスタックエンジニアはインフラやネットワークも含め、全てを一人で担当できるエンジニアのことです。少なくともクライアントサイドのネイティブ開発や負荷分散やスケーリング、適切なログやアラート出力、CIのジョブ設定、DBの設計やチューニングとか、まぁ、教えない部分で倍以上の知識と経験が必要です。フルスタックエンジニアだと、業務経験で言えば早くても3〜5年、2社位経験必要な気がする。

受講スタイル

6ヶ月間のコースで隔週の週末に授業が2時間で授業と言ってもディスカッションで学びは基本的に自習ベースのようですね。自習はよくある自習用会員サイトですね。講義が昔あった気がしますが、座学評判悪いんですかね?実際人がちゃんと教える機会は必要だと思いますが。課題ができてても実際わかってるのか、ググっただけなのかは話さないとわかりません。生徒と面と向かって質問するのは大事です。また、重要な点をなぜ重要か、コードを動かすだけじゃわからない裏側の部分とか講義で話したり、読んでも理解できなかったところを確認する意味も講義にはあるんですが、自習サイトに絶対的な自信でもあるのでしょうか?大学の課題では、その課題から何を学んだかを書かせる先生もいて、本質的な理解を確認したりして、講義でフィードバックしたりしていました。コードだけでなく、過程や考え方も書かせることが多いです。アルゴリズムの授業とか、コードは擬似コードでその証明が中心でしたし。
ちなみに大学だと週3で50分ずつの授業か週2で90分の授業があり、毎週か隔週で課題の提出があるのが普通です。厳しいクラスではそれプラスでwriting(論文読んでまとめるとか、readingの教科書の問題を解いたり)が週1であったりします。機械学習とか数学的な部分で付いてこれない生徒が多いクラスは補講が数週間週1でもしくは毎週あったり、実践的なクラスはラボの時間があったりします。6ヶ月取っているものの尻を叩くのが隔週だと片手間になるので定着するかあやしいです。自分で教室をやった時は週1で2時間か週2で1時間やっていました。基本的に2日1時間のほうが定着が良いです。ホントは週3回1時間やりたかった。塾と同じくらいのペースで。毎回授業の最初は前回の項目の理解を確認する質問を…毎回できていませんでしたがなるべくしていました。結構1週間前に習ったことでも、課題に出していても重要な箇所も細部は忘れているものです。週2,3回講義で細かくリーディング→講義→課題を繰り返す大学スタイルはやはり理にかなっています。日本でも予習させますが、授業が予習を丸々なぞるだけで眠かって経験もあると思いますが、海外では予習を基に書いていないことを補足しながらが基本でした。また、生徒が積極的に質問して、教科書より発展的な内容になることも多々ありました。大学院ではリーディングは理解してきてる前提で最初から授業は応用だけのことが多かったです。ちょっとオンライン学習サービスを過信しすぎですね。チーム開発とかオリジナルアプリ開発まで質問できる独学みたいに感じます。うーん、このペースで知識定着するんですかね。あと、ペースのバランスが…最初の1ヶ月余裕すぎで最後が鬼。応用は日にちないし、終わらないでもいい想定ですかね。

それではここのトピックを見ていきます。DAY一つが授業1個分なんでしょうか?単位がよくわからない…昔の詰め詰めだった頃の名残なんでしょうか。
…書いてから思ったけど、一つ一つコメントする必要あっただろうか。

PHASE1

DAY1

HTML・CSS入門

知っておいたほうが良いですが、大雑把で十分です。デザインに関しては基本的にwebデザイナと呼ばれる人が担当します。そこに動的にデータ、例えば会員サイトならログインしてユーザー名をhtmlのタグの中に埋め込んだり、場合によっては一部の文字列を動的に赤字にしたりします。前者でHTMLを後者でCSSを使います。HTMLやCSSを0から書ける必要性というより、必要に応じて出し分けるために必要です。web制作なら基本は知っていたほうが良いです。が、0から書ける必要はありません。僕は独学でwebサイトを高校時代に作っていたので、この辺はその時に憶えました。CSSはあまり使われない時代でしたが。独学でも理解しやすい(静的なので)部分です。独学でここでつまずく人はちょっと違う仕事見つけたほうが良いです(jsとCSSがガチガチに絡んだようなものは別物)。この辺はプログラミング言語じゃなくてマークアップ言語で、表示を制御する処理の書き方ですね。ブラウザとの会話です。

DAY2

javascript入門シリーズ

jsは結構他の言語、Javaとかできたら自動的にできたりする言語です。非常に曖昧な言語。たまにタイポあっても普通に動いちゃったりします。jQuery使ってるけど、現場ではajaxで通信した結果で動的に画面切り替える場面が多い気がする。あとはタイマーとか。DOMもまぁ、動的に通信結果で更新かけるならDOMか。なんとなくスクレイピングの理解のためにやってる気がしますが。この2つは2週間かける必要あるんだろうか。ブラウザで確認できるので、課題より自分で色々いじりながら試すのがこの辺の一番の学習法な気がします。この辺までは独学でも脱落者少ないとこですね。・・・って、これだけで1ヶ月終わってんのか…。

DAY3, 4

Ruby入門

Rubyはまぁ、良いとして、コマンドは環境構築と言うか、サーバーでの処理のために知っておいたほうが良いですね。スクレイピングは要りません。現場で使うのはかなり特殊な現場のみだと思います。新人にいきなりスクレイピングやらせるところあるのかな…。スタートアップとかはグレーゾーンでやってそうだけど、クリーンなところはあんまりやらないと思います。色々リスクが高いです。自動化しても、相手がスクレイピングされるのを望んでない場合、構造が変えられる場合があります。そうすると、自動化していたのを修正しなくてはならない。難読化とかされたら終わりそう。あと、アルゴリズム入門ってなんだろう。big-O記法とか教えてる風ではない。ちなみにオンラインプログラミングテストを採用に導入してる中には計算量やメモリ使用量を指定してくるところもあります。計算量の考え方は知っておいたほうがいい。システム業界だと知らない人の方が多かったりしますが。

DAY5

イデアブレスト

これは卒業課題のためなんだろうか…何度もいいますが、プログラマが0から企画をすることはほとんど無いです。改善提案とか、エコシステムでの提案はあるけど。これで2週間分飛ぶのはかなりきつい。卒業課題あるCSの授業だと、他の課題のレポートに併せてテーマと方針を記載して先生からフィードバックがきます。基本的にテーマは先生の提供するリスト(論文とセットなのが多い)から選びます。プログラマ向けとしてでなく、ビジネスサイドの人間がプログラミングをかじるなら有用。

PHASE 2

DAY6

Rubyアルゴリズム・データ構造シリーズ

この辺はここを参考にされたのでしょうか。2017年版のレビューで指摘してた辺り。ただね、データ構造は配列と連結リストの考え方が一番大事です。次にMapのHashingかな。計算量だいぶ減らせるし。いや、最初に抽象データ型の概念を教えたほうがいいけど、なさそう。抽象データ型分かれば言語間でのデータ構造の知識的な互換性が理解できます。
抽象データ型 - Wikipedia
データ構造教えるならこれは必須。

木構造とか辞書(dictionary/map)はこの2つを使って実装されるのが基本です。連結リストの考え方は必須です。連結リストRubyにはないようですが、それなら作る課題出したら良いのに。アルゴリズムに関しては大学2年レベルでも再帰、分割統治法、貪欲法、動的計画法辺りは最低限学んでいます。その中で分割統治法の例としてmerge sortが使われるのが多いですね。merge sortは再帰も使うので良い教材です。ソートがO(n log n)になる仕組みも理解できます。アルゴリズムだけとして2週間でできることといえば再帰と分割統治法くらいでしょうか。あとは計算量の考え方か。データ構造だけとして2週間で理解できるなら配列と連結リストですかね。連結リストは3種類実装方法あるので、そこそこの課題が作れると思いますが。

ちゃんとやるとここだけで1ヶ月はかかりますね。この辺から徐々に内容が詰まり出してます。

この辺しっかりやると、企業の未経験者研修との差がつくとは思いますが。大抵の教室は触れすらしませんが、CSの学生だとかなり重要な項目です。即戦力というか、CSの技術を全体見れる人はプログラミングの基本はデータ構造とアルゴリズムと言う人が多いと思います。

Sinatraシリーズ

Sinatraって公式サイトはDomain-Specific Languageを主張してるけど、web/appサーバの集合体みたいな感じですね。サーバ起動してパラメータも取れるような。まぁ、Javaで言えばapache/tomcatを起動してjsp書くイメージでしょうか。まぁ、Railsの前に挟んだほうがいいとは思います。

DAY7

Think Like an Engineerシリーズその他諸々

これ、最初にやった方がいい気がする…。エンジニアとしての考え方をベースに課題をやって習慣づけた方がいいし、デバッグのやり方わかってれば質問し放題ってほど聞かなくても済むし、ログをちゃんと読めば大抵理由がわかる。コードの書き方とかも最初に学ばないと変な癖つくし。変数名にローマ字とか絶対やる人います。この辺の内容は、現場でOJTのところが多いかもですね。システム開発だとバージョン管理ツールは現場によって違う印象。今はgit系が多いと思いますが。僕はバージョン管理ツール系はググって自分で憶えた気がします。githubに関しては、チームで使わないと現場で勝手にmasterにpushとかしそうで怖いな。権限切ってなかったら死にます。チーム開発はオプションとのレビューもあるので、単体だとあまり意味ないです。転職活動で企業にコード見せる手段くらいにしかならない。

DAY8

大課題Railsでアプリ

この辺、画像とかも自分で用意するんだろうか。この画像を使ってショッピングサイト、とかの方がプログラミングに集中できそうですが。プログラマ向けとしてでなく、ビジネスサイドの人間がプログラミングをかじるなら有用。

PHASE 3

DAY8

Bootstrap入門

前項RailsとオーバーラップしながらなのでRails動かしながら、なんでしょうが。スタートアップとか以外だと、webデザイナとかUIチームが動き考えるので、それに沿って利用するくらいだと思います。

DAY9, 10

実務的な部分ですかね。大抵の現場だとジョインした時点で実装されてて、画像とかもコピペかモジュール化されてそうだけど、知ってるのはいいこと、という感じ。DAY8のは静的に近い、DAY10で動的なアプリになるんですかね。ここの課題でネットビジネス系の人達のサイトくらいなら普通に作れそうですね。ブログで記事管理して、フォームで問い合わせきたらメールで通知すればいい。

卒業課題

デモデイで発表するやつですかね。実務考えるならチームで、3人以上でやった方がいいと思う。githubでの共有仕方を学ぶ意味でも。

Rails応用シリーズ

DAY10までなので最後の1ヶ月は卒業課題やりながらこれなんですかね。この辺学ぶのであれば、運営側で何かしらのwebアプリの土台作ってそこに機能追加する形でアサインしてやらせたりした方がいい気がする。Twiiterになってますが、twitterログインとかその辺は新人にはやらせないので現場で求められる頃には忘れてるかもですね。この辺って中級者以上はドキュメントちゃんと読めればできるので、そこまで初心者でやる必要のない部分です。現場で経験積んでいけば任せられる時には理解してると思いますが、即戦力目指して無理に突っ込んでるのかな。パフォーマンスで正規化…うーむ、パフォーマンス考えるなら、スロークエリ見てインデックス考えるとか、そもそも、スタンドアローンでパフォーマンス・チューニングってどうなんだろ。analyzeでインデックス効いてるかとか見るのかな。正規化ってパフォーマンス目的というより、使い勝手の問題でシステムによっては正規化しすぎるとむしろパフォーマンス落ちるケースもある気がするけど。

ないけどあった方がいいトピック

連結リストとか途中で書いたのは置いといて項目自体

スケーリング

スケールには悪魔が潜んでいて、特にRubyはユーザー数の影響をもろに受けると思います。即戦力というなら、負荷試験の方法を教えて、何が起こるか、どう対処するかを教えた方がいいです。DBのパフォーマンスチューニングもスタンドアローンと違った形になると思います。ロードバランサでの振り分けとかも概念として知っておいたほうが。

セキュリティ

ログインの辺りで教えてるか見えませんが、パスワードの暗号化とか。後はSSHとかの仕組み。web技術入門で教えてるかな。もし、0から作るならセキュリティはちゃんと知ってたほうがいい。証明書周りのこととか。Rubyサニタイズとか自動でしてくれるのかな?

大規模システムの機能追加

運営で大規模システム作っておいて、実務に近いファイル数のあるシステムで改修を行ってプルリクエスト出して、とか。チーム開発をオプションで付けるとあるんですかね。多分、この辺が会社の研修やプログラミング教室と現場の大きな違いです。

総評

検索でよくかかるプログラミング教室の中ではかなり良い方。ただ、「即戦力コース」という名前は止めたほうがいいアフィリエイトをガッツリ出してるし、創業者の中にネットビジネス界隈の人間がいたのか、最初は誇大広告気味でも流入に必要という話だったのかも知れませんが、中の説明見てても卒業がスタートラインと言っていて、半年片手間で即戦力が無理なことは理解してる気はします。スタートラインなのに即戦力ってどういうことだ、という話で。流入考えてのジレンマはありそうな気はしますが、止めたほうがいい
即戦力の人って大半が努力を続けてきた人達です。現場を経験して勉強し続けてる、だいたい3〜5年で即戦力と言える(CS卒でセンスあるなら1年で十分かも)として、それだけの期間を平日毎日8〜10時間とか実務して、家とか電車で勉強してる人を相手に6ヶ月隔月のディスカッションしながら自習して太刀打ちできると思いますか?
ボクシングで例えると即戦力はA級ボクサーです。ボクシングはC級(4回戦)から始まって、4勝するとB級(6回戦)に、そこで2勝するとA級に上がります。最短でも6試合必要です。では、A級からスタートする方法がないか、と言うとあります。現在世界王者の村田諒太は金メダルの実績でA級プロテストでA級スタートです。他に井上尚弥はB級テストですが、A級ライセンスが交付されています。この辺のプロテストの相手はだいたい日本ランカーか日本チャンピオンだったりします。何が言いたいか、というと、即戦力でスタートするということはいきなりそういうところに飛び込もうとしているということです。人事としては即戦力応募できた実務経験ない人間だと、カリキュラムにない必要なことができるか、という観点で質問されると思います。自信ありますかね?

そのままプログラマ向けで行くなら「未経験スタートコース」とかにしてしまった方がいいと思います。最初から「一人でwebアプリを作る」を求められるのは社員3人のスタートアップとかだけですね。また、技術スタックが少しでも違ったら、その部分は未経験者と変わらない、という判断がされるので、研修も最初からになる可能性も高いです。未経験者で応募したら、カリキュラムの内容を、やったことを理解してるか聞かれるので、ちゃんとやってれば合格の可能性は高くなると思います。学歴とか資質ありそうな人は下手すると受けないほうが質問が簡単で未経験扱いだと入りやすいかも…。

もう一つ思うのは、現在、実務でやらないビジネス寄りの課題が結構含まれているので、現行の即戦力コースを「ビジネスコース」として最初に書いたようにスタートアップで自分で起業してプロトタイプを作ってビジネスコンテストで融資を得て、を目指すとか、既に企業で働いてる、プログラミング経験のない企画や役員がより業務をスムーズに価値あるものにするために受けるコースにしてしまえばいいと思います。その観点だとすごく良いコースだと思います。
それをするなら、「未経験スタートコース」はビジネスコースと組んで最終課題をやれば実装に集中できるし、大規模システムを触る時間も作れると思います。

CEOがプログラミングをかじったビジネス寄りの人だから、いいとこ取りをしようとして、結果としてビジネスに寄ってしまっている気がします。

更に言うとwebデザインコースも作って、htmlとかcssはそちらがメインで担当して、プログラマが利用する箇所では受渡しとかするとより実務に近づくとは思います。

個人的に向かうといいと思う方向

新人向け研修

前回書いたように、未経験者歓迎のシステム会社では新人研修でほぼ同じ内容をやります。プログラミング教室に通うならプラスアルファの何かがないとプログラマを目指す人間が通う意味がないと思います。前述の通り、ビジネスに振り切って、現状をビジネスコースにしたり、色んな会社と組んでビジネス部分を少し実務に寄せて新人研修として売り込むなら価値の高いコースだと思います。研修の場合、毎日時間を使えるので3ヶ月でいいかと。現状、自分がJavaで受けたのとの差分はあまり感じというか、差分の部分は3ヶ月になると詰め込み過ぎな感じですね。しっかり身につけるなら1日8時間4ヶ月でちょうどくらいだけど、4ヶ月研修させるのはきついから、新人に任されない部分は削って良いかも。ちなみに、助成金が使えるはずなので、内容がいいなら企業と組むのはいいと思います。TECH社は昔この方向でやってた気がします(今は知らない)が、正直TECH社の研修の内容で現場に出て来られるのは辛い。DIVE社のカリキュラムは技術スタックが合うのであれば良いと思います。

20代30代の転職でいきなり高給を得られると思わないほうがいい

ネットビジネス界隈の人を見ると特に思いますが、20代30代で楽して金持ちになりたい、的な人がすごく多いですよね…。それできる仕事は大抵がグレーゾーンです。真っ当な方法であれば、結局優秀な人間がそこに流れ込んで、楽して稼ぎたい志向の人間は結局あぶれます。優秀な人間が入ってこないところは天国ではなく、地獄の入り口なので、優秀な判断力ある人間は敬遠する、ということです。今だけを考えてる人間との思考の違いですね。グレーゾーンは大半が自分の幸せ、金稼ぎを重視してる人が多くて、顧客が幸せになる可能性が低い、社会貢献度の低い仕事が中心です。お客さんに騙された、畜生!と思われたり、無駄な金と時間を使った、と思われるような仕事をしたいですか?また、そういう仕事は消費者センター等に苦情として上がり、法規制で稼げなくなる可能性も高いです。「消費者センター 情報商材」「消費者センター アフィリエイト コンサル」とかで調べると事例がいっぱい上がります。
アフィリエイトやドロップシッピングに関する相談が増加!−「簡単に儲かる!」? インターネットを利用した“手軽な副業”に要注意−(発表情報)_国民生活センター
2009年で問題になってたんだから、いい加減動けよ感。
20代に増えている!アフィリエイトやドロップシッピング内職の相談−友人を紹介すると儲かる!?借金をさせてまで支払わせる事例も−(発表情報)_国民生活センター
2015年にマルチ化してる…
アフィリエイト・ドロップシッピング内職(各種相談の件数や傾向)_国民生活センター
今年はこれか。

20代30代は自分の人生の、人としての形を作る時間です。努力しましょう。努力して作った芯は簡単に折れません。40歳くらいになると積み上がった経験や知識は財産となり、かなりの確率で高給になります。楽して稼げる業界でホントに稼げても、法規制で稼げなくなったら無職だった人と同じ扱いを受けます。むしろ、詐欺まがいの商売してた人、という扱いですね。逆に言うと、20〜30代で努力しなかった人は50代以降とかで本当にひもじい生活になると覚悟しておいた方がいいです。

もし、会社員として一発逆転でIT業界に転職したいのであれば、アメリカの大学からIT企業への就職をお薦めします。アメリカの大学高いので費用準備することになりますが、コミュカレ2年安く通って3年に編入できればそこまでかからないです。また、優秀な人なら返済不要の奨学金をもらいながら学べます。で、アメリカのIT企業は新卒はないのでいきなり中途ですが、年収10万ドルは普通です。4年で年収10万ドルの会社員になるなら、日本でコツコツ努力するより早くないですか?また、海外では年齢を聞かれないので(resumeに年齢があると落とした時差別と訴えられかねないから止めてくれと言われる)30代からITに移るならこれがベストだったりします。

とはいえ、英語がネックになるので、大抵の人は入りやすいシステム会社に未経験で入って、経験を積んでより難しい高給の業界に移ってを繰り返すのがいいと思います。

最後に

いい加減アフィリエイトとか、一部のセンスいい上手く言った人間の声だけ取り上げたインタビュー止めませんか?
正直、プログラミング教室としては優良な部類です。幹部にネットビジネスどっぷりの人間がいるのか手法がマイナスになるやり方多すぎます。真っ当な人間が胡散臭いと思う手法です。流入はあっても、ネットビジネス系とか一発逆転志向の人が中心になって、本気で転職の人が避ける状態になりかねないです。まともな人、センスあってリテラシーある人は褒めてる記事にだらけでほぼアフィリエイトついてる、というのがわかったらそこは避けるでしょう。金を握らされてるジャッジは採用しない、という基準です。自発的に感想をもらってもいい評価中心になると判断したなら、ASPを通したアフィリエイトは打ち切って、雑誌広告とかTVCMに踏み切ったほうが良いです。現状、真実の体験談がアフィリエイトに埋もれてしまっている。アフィリエイターはモラルのない人間が多く(楽して稼ぎたい、自由になりたいなどと、社会のためより自分を重視する人が多いのも一つの要因か)、仕組みをわかってる人間からするとマイナスの印象を持たれるような宣伝の仕方をします。検索で絶賛が並んで、一時期、プログラミングわからないの丸出しでプログラミング以上に何故かCEOを絶賛してたし。ちょっとその頃宗教観ありました。
コストはかかってもちゃんとした広告や、例えば、なにか有名人とか企業とタイアップして宣伝した方がいいです。何度も書いてるけど、アフィリエイトと相性が悪い(目的も違うし、受講生の目的を評価できない人が大抵書くことになる)ので、プロからすると、なんでこの人達が評価してるの?卒業生全然わかってないなぁ、となり、人事周りの人間から逆に悪い印象を持たれてマイナスになる可能性もあります。

そろそろ健全化進めても良い教室なようには感じます。

社会人にプログラミング教室は本当に必要か

ネットビジネスってなんだかなぁ、再燃中。ここでも取り上げている通り、ネットビジネス(インターネット上でサービスを提供しているという定義だとほぼすべての会社になるので、ここではアフィリエイトとかブロガーとかYouTuberのような、非エンジニアのネット個人業種)という際どい領域(違法性が高く制限が掛かる可能性が高い)を仕事に選ぶ方はクリーンな人もいますが、大半が人を正しい方向に幸せにしていない、社会の歯車として価値を生み出していない人達です。広告表示のない報酬目的の記事であったり、情報のなにもないトレンドブログであったり、極めつけは情報量ゼロか現実には成功してないノウハウを売る情報商材やコンサルですね。嘘をついている人のほうが多い業界です。

コンサルとかをしてる人には実際稼いでる人もいるでしょうが、何故か自分が成功していなくても、年数生き残ると新人ネットビジネスのコンサルという形で稼ぎ出すという情弱が新人の情弱を食い物にして稼ぐ状態ができてるように見えます。プロから見て到底大金を取れる水準にないのですが、個人として安い額で作っているのでネットビジネスを個人でやる人間が連鎖して売上が発生している感じに見えます。情弱連鎖です。この業界ではコンサルも情報商材とあまり変わりません。本来コンサルとは企業や自身に蓄えられた成功の経験や知識を元に成功に導く方法を、いかに儲けるかを助言する立場ですが、実際その方向で成功していない人が蓄積した失敗だけを基に成功するためのコンサルをしてるわけで。プロの水準をわかっていない人にプロの水準にない人が売っているし、金額も個人だと高収入だけど、企業としてはやる価値のない安い仕事なのでニーズはマッチしているのかも知れません。どうせ相手にしてるのは簡単に稼げるを信じて参入する価値判断ができない人中心です。稼げるという言葉に釣られて鴨が入ってきてくれないとお金を落とす人がいないので、嘘まみれです。しかも、簡単に稼ぎたいという人はそこまで金を持っていないので、生贄は日替わりで必要です。本当に簡単に月100万とか稼げたら高額所得者はネットビジネスの人間ばかりだし、それだけの金がその人達に流れ込んでることになりますが、まぁ、実態があればとっくにTVとかで特集になってしょっちゅう取り上げられますね。本人達稼げる稼げる言ってるわけだし。

2018年フリーランス白書によると、約1000万人のフリーランスの内、5.9%が年収1000万円超えらしい。59万人か。そこそこいてもおかしくないけど、下記だと2017年度の10万円以上が2.3%。
www.japan-affiliate.org
ただし、母数が少なすぎる。真っ当なアフィリエイトはこれで、稼いでるのはほとんど情報商材やコンサルの実態無価値勢でしょうね。

blogos.com
こういったアフィリエイトより公式が先にきて正しい情報を得られる流れも今後は加速するでしょう。公式の検索してるのにアフィリエイトだらけとかホントに彼らのアカウントを消してくれるゴルゴはいないか探したくなります。掲示板にRGBって書いたらネットハンターがサイトを抹殺してくれないものか。

基本的に稼げるアピールするのは、そこに人の流入が欲しい、それが金を産む場合です。ネットワークビジネスMLMとかみたいにね。子ねずみが自分に金を運んできてくれる。搾取のための勧誘です。金を使ってくれる人がいないと稼げないから。じゃなきゃ、アフィリエイトで稼げるアピールするわけがないじゃないですか。どう考えても、アフィリエイターが少ないほど稼ぎが多くなるんだから。プログラミング教室で検索してもどれだけアフィリエイトが多いことか。これが1件だけならみんなそこから飛んでボロ儲けですよね。ランキングで上位にボーナス出たりとかもあるし、競合が少ない方が可能性は高い。稼げると書いてるところの9割は情報商材へのリンクかコンサルのリンクがあるのが大半で、稼げる詐欺から信じた情弱を相手に実際稼げるようになる黒魔法だろう。成功してない人に成功の手伝いをしてもらう奇っ怪な世界だからなぁ。競合が増えて喜ぶなんてまともな業界ではない。人手不足で同じ仕事に対して人材が必要な場合とは違うからね。横展開で一緒に働く仲間が欲しいのでなく、縦展開で自分より弱い金を運んでくる人間を増やす図式です。そして、稼げるアピールして情弱に参入させる→やり方が悪いと情報商材を買わせたりコンサルにつく→その方法でも成功せず→何故か成功しないまま商材を売ったりコンサルに回る、という謎の成功者不在で金だけ回る仕組みです。

ただ、情弱のネットビジネス参入者は無限にいるわけではないですし、ネット上での情報の劣化が激しい昨今、いつ規制が入るかわかりません。Googleさんがクソ記事認定したのを上げようとするイタチごっこもAIが解決する可能性は高いSEO対策が無駄になる時代の到来です。ネット広告も見直すべきだと世間が気づき始めているので、今後、この層の人達は本物以外は淘汰されていくでしょう。この業界のコンサルは何度も書くけど、成功してない人間がその経験でコンサルをして新人相手に稼ぐ→コンサルで成功者になるという摩訶不思議なねずみ講のような世界です。成功してない人のノウハウを買う人がいるのは冗談みたいな話で、最初成功しようとしたネットビジネスでなく、失敗してるのにノウハウを売ることで成功する、錬金術ですね。構図はやはりネズミ講と一緒で嘘を付いてるうちにそれが連鎖して事実になる。結局、誰一人正しく成功していないのに金だけが流れているというのがネットビジネスの世界で、食い物にする情弱がいなくなった途端に餓死する世界です。現状、ブログの過去記事が検索に引っかかったりして金になってるでしょうが、遠くない将来検索エンジンは情報の賞味期限も判断するようになるでしょう。僕は基本的に期間検索で古い情報はカットしてますし。また、規制が入ると同時に積み上げたものが全て崩壊して、社会復帰は難しくなりますよね。人脈も同じネットビジネス界ばかりでしょうし、人脈を頼ろうとしても総倒れになりかねません。就職しようとしても、ああ、あの規制入った仕事してたのね、と倫理観が問題視されて落とされる可能性が高いです。まぁ、基本的に読者の利益より自分の利益優先ですし、良いサービスだから薦めようと思っても目的が違って、そもそもの観点が違うというのもよくある話です。良いサービスじゃなくて、大金出すなら、結果につながるべきですからね。自分も、もう娯楽系の仕事はしないで、社会貢献というか、人の日々の生活を豊かにする、健康に寄与するような仕事を優先しようと思ってます。AIはそういうところに親和性が高かったりするのもいいところ。実際のところ、9割の人がアフィリエイトの記事見たくないでしょ。購入後にアフィリエイトだとわかったらものすごい後悔ですよね。利害関係のために薦めてた、と知ったら、せっかく勝った試合で実はレフェリー買収されてた的な感覚ですよね。Googleの機嫌で売上ぶっ飛ぶというのは、大多数が見たくないということです。何度もいうけど、専門特化型アフィリエイトは優良です。正しい知識と経験で、大抵が広告と明示しても購入されます。この人が言うなら、という状態です。そこ目指さない人はネット上にゴミをばらまいているに等しいです。

特化型じゃない皆様…

常々言ってるけど、君らは職業をIT関係とか言わんで欲しいです。

そもそもね、個人で働くというのは雇用を生み出さないという面で社会的にプラスにならないんですよ。フリーランスブームとはいえ、自由に働きたいからフリーランスとかっていうのは自己中な話で、自分も成り行き上フリーランスになって高収入を得られるようになりましたが、健康や将来の蓄積を考えると、実力を評価してくれる高給の会社員になるか、自分の会社を持って社員を雇ったほうがいい。個人で働いてる人は自由な反面、社会の歯車の中でおまけに過ぎない存在です。結局、中心にはなれないのが現実です。自由な半面組織という力を失っているので、大きな仕事の中心に置かれることはないということです。

今回はプログラミング教室そもそも論


誰がプログラミング教室を評価すべきか

アフィリエイトの影響もあり、プログラミング教室の評価レビューが乱立しています。前の記事に書いた通り、プログラミング教室はアフィリエイトに向いていません。何故かと言うと、受講中の生徒や卒業生、下手するとメンターや講師もプログラミング教室の謳い文句の常套句「即戦力」を判断できません
ちょっと考えてほしいのですが、下記の誰に教室の価値を評価して欲しいでしょうか?
・受講生
・卒業生
・現場の人間
・人事
・アフィリエイター

僕は現場の人間、もしくは人事の現場担当者の立場で即戦力として受け入れられるレベルと判断できるか、という観点でプログラミング教室をレビューしています。特に誇大広告寄りな「即戦力」とか卒業後フリーランスで独立というような謳い文句の場所を中心にカリキュラムレビューをしています。実際通ってはいないので、中の状況を知りたい方は受講生か卒業生の体験談を読んで見て下さい。ただし、アフィリエイトリンクが貼ってあるものの中には偽の体験談もあります。アフィリエイトである以上、そこに誘導して報酬を得たいという気持ちが少なからずあるので、情報が偏るのは理解して下さい。

ちなみに、皆さん、何を目的にプログラミング教室に通うのでしょうか?
…おそらく次のキャリアに繋げるためだと思います。趣味に数十万払える人はなかなかいないでしょう。そこまで財力がある人間は真っ当な働き方なら頭の切れる人が多いと思うので趣味なら独学で十分です。・・・というわけで、目的ごとに評価者の考え方も変わると思います。

目的ごとの評価者

結果にこだわらず楽しみながら学びたい

→ 受講生、卒業生(、アフィリエイター)

実際に教室に通った人なら、肌感として学びやすい教室かがわかります。学びやすいところ親切なところで楽しくプログラミングに触れたいならこのカテゴリになります。このカテゴリの記事の特徴としては、2分割されて、アフィリエイト付きとなしがあります。後者はアフィリエイトに埋もれてほとんど見つからないので、-af.moshimo とか -a8.net を付けて検索すると良いです。-を付けるとその後の一連の文字列を含むページが検索から除外されます(アルゴリズムが変わったのかたまに混ざりますが)。ただし、この体験談で効果の測定、即戦力になれたかはわかりません。

アフィリエイターの書く受講体験

当然、報酬を少なからず期待していますから大半がべた褒めです。場合によっては他社との比較もあります(場合によっては優良誤認表示に繋がる)。ここで注意したいのはその人のその後です。逆に差別化で謳い文句ほどの上達はない、という事実を書き、とはいえリンクを見たら結局アフィリエイトのこともあります。効果は得られなかったのに限定的に薦めてるという。もし、あなたがキャリアとしてプログラマ、ソフトウェアエンジニアになりたいなら、その体験談の作者がその同一線上の進めているかをちゃんと見て下さい。卒業後の転職してからの実務のこともちゃんと書いてあるか、この辺は重要です。アフィリエイトのために受講するというのは、ちょっと体験しに行く、という遊び感覚なので、言わばプロボクサー養成ジムにダイエット目的に行った人の体験談です。楽しそうでもプロになりたい人の参考にはならないでしょう。目的が「その後のキャリアに繋げること」でなく、「良い教室かどうかを確認すること」なので、教室自体の評価は豊富でも、それが結果としてどうなったかは大抵書いてません。即戦力を謳う教室でも、即戦力に関する記述は抜け落ちてることも多いです。・・・まぁ、判断できないでしょうし。また、教室の評価が中心なので、技術面での記事も少ないように思えます。個人的にはわかってない人間の書く技術情報(プログラミング教室のメンターがよく書いているやつ)はノイズでしかないので、書かないで欲しいですが、学んでできるようになってくると多少は書きたくなるのが人間です。あと、アフィリエイトを付けて紹介している人と議論になった際に、良いと思ったから紹介している、とのことで、それなら、利害関係があるのを誤解しないようアフィリエイトであることを明示するかアフィリエイトリンクを外して欲しいとお願いしたところ、明示を選択されました。悲しい話で、本当に良いと思ったなら後者を選ぶかな、と思ったのですが報酬は捨てられないようで。一方から報酬を受けて捌いてるジャッジが公正な目で見てます、と主張するのと無報酬のジャッジでは心証が全く違います。

アフィリエイトなしの体験談

大半が挫折してます。そもそもが、上手く就職できた人は実務で忙しくなって体験談とか書く暇もモチベーションもないのが現実かも知れません。何度も書いていますが、プログラミングは誰でもできるものではなく、芸術系職種と同じでセンスが求められます。量産型コーダーなら特に求められませんが、低賃金で高稼働なのでお薦めしません。センスがなくてITで生きていきたいならプログラマ以外のキャリアを目指した方が良いです。センスの面で言うと、経験上、できるエンジニアは頭の中でコードを実行できます。ソースを読んで、実行する前にこう動くがイメージできないと、バグを事前に察知したり、リバースエンジニアリング(コードから仕様や動作を理解すること)が上手くできなかったり時間がかかります。この頭の中での実行はコードの裏の動き、機械レベルでイメージできるとより鮮明に理解でき、精度が上がります。精度が悪いうちはこう動くはずなのに、で実は裏のアーキテクチャが影響してた、とかあり得ます。年数経験しても、頭の中で実行できない人も結構いるので、この辺できない人はマネージャ職やインフラ等経験重視の職種を目指した方がいいです。

※転職後の記載がある場合

転職後の記載がある場合でも、教室によっては斡旋でお金を取っているところもあるので、フリーランスや転職エージェントに繋がっているところでは、転職後に続いているかも確認が必要です。転職を成功させるとエージェントやフリーランスの紹介手数料で年収の3割がエージェント会社に入ったりします。なので、転職成功をゴールに、その先は知らない、という悪質なところもあり、試用期間で打ち切られる可能性もあります。

次のキャリアに繋げたい

→ 人事や現場の人間、1年以上経っている卒業生

こちらの目的の人が中心でしょう。
まず、考えてみて下さい。受講生や卒業間もない素人に毛が生えた状態で即戦力とは何か、自分が即戦力に相応しい実力が付いたかわかるでしょうか?プログラミングの世界は広大な森、もしくは海のようなもので、コンピューターサイエンス(以下CS)の学生はクラス自体が一種の地図になっているので、少しずつ地図を埋められますが、プログラミング教室や独学は地図なしでとりあえず動き回るようなものです。上手くゴールできてみ、どれだけの範囲を理解して、自分がどの位置にいるのかわからないと思います。自分は即戦力に相応しいと思う、と思い込むことは転職に取って自信を持つというより過信することになるだけです。

では、即戦力を判断するのは誰か。

それは人事であり、採用面接を担当するエンジニアです。一番最高なのは卒業生がその立場に成長することです。センスのいい卒業生なら1年もすればある程度、自分のいる業界が俯瞰で見れるでしょう。その時にそれなりの立場に就けていれば即戦力になれる一番の証明です。ただ、即戦力コースを謳うなら、大半がそうならないといけません。新人がプログラムを学んでいる時は前述の通り、いわゆる五里霧中状態で、自分がどこを歩いて何を目指してるかわかりません。例え、教室を体験したとしても、本来の未経験の人間が自分が即戦力に相応しいか判断できるとは思えません。即戦力を判断できるのは即戦力を判定する立場の人間です。なんで、通ったこともないのにカリキュラムから教室を評価できるかわからない、とアフィリエイターの方に聞かれましたが、
「では、あなたは人事に評価するために教室に通えというのか?」というのが回答です。教室に通った、とアピールした場合、人事が見るのはカリキュラム程度です。下手をすると何も見ずに「未経験者と変わらない」という判断になります。転職活動をしてて、渡した情報をちゃんと見てる人が本当に少ないのは実感しています。結構トンチンカンなレスポンスがきます。特に教室上がりだと技術スタックがぴったり合わないと評価するのは難しいRailsSaaSを使っている環境、ということになるでしょう。ほとんどの教室は時間短縮にSaaSを使ったり、フレームワークを使わない場合を教えずにいきなりフレームワークを使います。なので、フレームワークを何故使うのか、中で何が起こってるか、SaaSに載せない場合にどういうコマンドが必要かということがわかりません。その部分をやってからフレームワークSaaSがこんなに便利なんだよ、中の動きももう分かるよね、というのが正しい学習です。CSの課題ではライブラリで実装されていることを自分で実装する課題がよく出ますフレームワークの中の動きがわかればフレームワークを拡張したり、パフォーマンスを正しく発揮できます。場合によっては新しいフレームワークを作る側になります。世の中には仕組みを作る側と使う側がいて、当然作る側の方が評価が高く高給です。使う側でいる以上、この壁は超えられません。少なくとも、その種は植えたほうが良い。

それで、僕の判断としては人事にこの人教室通ったみたい、と言われて評価するのはカリキュラムを見るくらいです。卒業生が既にいれば、その人も判断材料になるかも知れません。ただ、もし即戦力採用で面接をするのであれば、カリキュラムを見て足りないと思う部分を中心に質問します。webだと、例えば、「ユーザーからのアクセスにやけに時間がかかるという問い合わせがあった。あなたならどういう手順で原因を見つけるか」とか、もしくは「一部のユーザーがどうしても特定の処理でエラーが出るとの問題が発生した。どう原因を見つけるか」「ユーザーが50万いるゲームでランキングを表示したい。どういうシステムを組むか」とか。即戦力ならこの辺は答えて欲しい。まぁ、その面接の前に、自分の場合、最初にオンラインのコーディングテストを設けると思います。アルゴリズム寄りのやつを。文字列操作とか問題解決系ですね。教室であろうと業務であろうと最低水準の技術力と素養があればいいので、オンラインで実装を求めます。

ちなみに僕は直近の会社ではフリーランスだったので、採用面接には立ち会っていませんが、現場で働き出した新人の派遣とフリーランスの査定には関わっています。フリーランスや派遣の技術力を数日働いた段階でクライアントから聞かれて、「ちょっと厳しい」と答えて、その人が翌月にいなかったことが何度かあります。その基準として、ソースコードやテーブル構成から仕様を理解出来ない人、つまり、わからなかったらすぐ聞く、というプログラミング教室の方針を地で行く人でした。本来見ればわかるのに見てもわからない人、というのは実務能力が低いということになります。聞けば聞くほど、他のエンジニアの時間を奪うので、なるべくコードから理解できたほうが良いです。キャッチアップの速さは確実に評価に繋がります。実際のところ、現場で大事なのはリバースエンジニアリングであり、コードから当たりをつけてのデバッグです。コードを頭で実行できず、テーブル構成とコードからテーブルの意図がわからないとなると、スペシャリストとして外部から来る意味がないということです。見た感じリバースエンジニアリングをちゃんと教えてるところは殆ど無いように思えます。ちゃんとデバッグの仕方が理解できれば、メンターと呼ばれるTAに何度も聞く必要はありませんフリーランスは社員以上に求められる技術水準が高いです。給料が良い分、スペシャリストとして現場に来ているので。そして、技術力が足りないなら翌日発注しないだけです。卒業後フリーランスに、という教室はすんなり決まっても翌月無職になる可能性があるので注意して下さい。経験上、1年以上現場にいたのは使っている技術スタック全体を理解できる人です。

エンジニア職でなくてもプログラミングの知識が欲しい

→受講生、卒業生(、アフィリエイト)
こちらは教室自体が目的、もしくはビジネスに寄っている必要があるので、DIVE INTO CODEとかは向いていると思います。報酬目当てとはいえ、アフィリエイト記事を数十個とカリキュラムを読んで思ったのは、プログラマを目指す人以外には良いかも知れないということです。正直、内容的にはビジネス寄りです。CEOの経歴的にも。スタートアップとして少人数で起業したい、とか企画職を目指すけど、表面的なプログラミングの知識を持っておこうという人にはぴったりです。即戦力は過大広告なので信じないほうがいいです。そんなに甘い業界な訳がない。そもそも、技術スタックを全て自分で選べる会社の方が少ないので、0からwebアプリを作れる必要なんてありません。新人にそんな仕事させるのは数人規模のスタートアップだけです。ほとんどが新人は即戦力であっても機能追加とか保守案件に配属されます。新規開発でもCBT前で人が必要になったタイミングとかが普通でしょう。また、エンジニアが自分で企画することはほとんどないです。それは企画職の話。当然、企画にGOが出て、チームで動き出すキックオフから口出ししたりはしますが。CSの課題でも大抵が工数的にも実現可能なテーマを先生が提供してくれるのがほとんどで、そのリスト外から選ぶのは数%、通常一人くらいです。実務に近い形でやってプレゼンというのはCSの最終課題でもよくある形式(1学期の3個授業取って2個は最終課題のプレゼンがあるとかは大学院では普通)なのでいいと思いますが、企画を0から作る必要はありません。また、通常デザインとか素材は別のチーム(UIチームとかデザインチームと呼ばれるグループの人達)が提供してくれるので自分で画像を準備したり加工したりする必要もありません。餅は餅屋なので、エンジニアが下手くそなデザインするなら素直にデザイナーに任すべき。大半は美大卒でセンスあります。まぁ、一部のCSSとかフレームワークだと、エンジニアでもそれなりのデザインはできますが、ありきたりで、ああ、あれね、と言われるようなデザインが限界です。僕は高校時代独学でperlcgiの背景やらタイトルを変更したりしてましたが、フレームワークcssのベースラインで画像とデータを変えるだけだと、そのレベルに感じちゃうんですよね。DIVEさんはここのページ見てるかも知れませんが(指摘したことがカリキュラムに反映されてたりするので)、即戦力って過大広告止めて非エンジニア向け、を中心にした方がいいと思いますよ。プログラマ向けもやるなら、プログラマ志望に無理に企画もさせないでビジネス寄りの企画・スタートアップ運営コースを作ってデモデイは企画とプログラマで組んでやるか企画は教室運営陣が設定して、かつ、そのプロジェクトを少しずつ拡張していく形にしたら実務に近い形の非常に良い教室になりそうですが、こだわりか詰め込みすぎて、実務に必要なことを削って本来実務に必要ないことを詰め込んでると感じるのが現場の人間の感覚です。

実際、社会人にプログラミング教室は必要なの?

未経験者向けであれば、個人的にはNOです。教室通っても、web開発だと技術がない勢い中心のスタートアップに低賃金かシステム業界になる可能性が高いです。そもそもAmazonとか大手は応募条件がCS卒もしくは同等の経験で、ポジションによってはCS院卒、博士も珍しくないです。そのレベル、高額ポジションになると、プログラミングに限定した教室や経験云々でなく、知識体系としてちゃんと習ってるかが問われます現場エンジニアの人事的観点からでも、教室出たという人は未経験者研修は省略してもいいか、研修の前半スキップしてもいいかな、程度の評価です。技術スタックが完全に同じでないと全スキップも無理です。SaaS使ってるところ少ないから少なくともサーバー周りの知識は必要になるでしょう。自社サービスならCIの知識も必要になってくる。結局、未経験入社が中心になりますし、未経験者を受け入れているところは基本的に新人研修があるので、プログラミング教室と同等の研修を給料をもらいながらできます。なら、最初から未経験可のシステム会社に入社した方がいい
ちなみに、自分が未経験者研修で習ったことは
・プログラミング基礎構文
・オブジェクティブ指向プログラミング
MySQL
Java EE(Servlet, jsp)
・web/appサーバ構築(apache, tomcat &連携)
・ショッピングサイト作成
とかそんな感じだった気がします。3ヶ月の研修を2ヶ月半で終わらせました。

プログラミング教室を出ると即戦力で高給で転職できる、なんて都市伝説があるかも知れませんが、未経験入社だと下手すると新卒と変わらない、手取り20万前後が多いです。ただ、僕の経験として、いきなり未経験入社で1年後の給料が600万なんてこともあり得るので、会社選びを真剣にして、入社後に努力しましょう。一緒に学ぶ仲間も卒業後どこに行くかわからない人でなく同僚なので仲良くなるし、研修中でも会社の飲み会とかで実務についている先輩の話が聞けます。
プログラマは一発逆転の成功への近道ではありません。地道に経験と知識を蓄積するエンジニアリングの仕事です。仕事としてプログラマを目指すなら、準備に慎重になるより、未経験でも熱量を持って飛び込んで行ったほうがいい。ちなみに最初の会社の同期ではプログラミングは向いていなかったけど、インフラに面白さを見出して、そちらの方面で戦力になったやつもいます。IT業界=プログラマではないので、中に入ったら違う向いてる道があるかも知れません。最初給料安いけど、プログラミングを楽しいと思って、学び続ければ基本的には報われる業界だと思います。ちなみに、プライベートで勉強しなくてもシステムでは通用するかも知れませんが、給料上がらないし、勉強してる同僚には絶対勝てないし、プログラミングの勉強を楽しいと思えなければ、経験中心のインフラ辺りに進んだほうがいいです。

また、未経験を通りやすくするなら、githubにアカウントを作って、入門書を片っ端から写して実行して公開するといいです。入門書そのままでも書いて動かした経験があるとプログラミング教室卒と同等くらいには見てくれる可能性は高いです。少なくとも書類が通る確率は上がりますgithubの公開がない卒業生より下手したら通りやすいかも。

社会人に限定しない場合

非CS系学部の学生ならプログラミング教室は良いかも知れません。CS卒以外ほとんどが経験ないので、プログラミング教室→インターンとか経験しておくと結構有利かと思います。ぶっちゃけ新卒なんて、ほとんどみんな同じように見えるので少しでも差別化できたほうが強いです。一日20人と会って何人覚えてるでしょうか。と言っても、新卒で技術職を理系以外から取るところはもう少なくなってきてる気はしますが。結果としてエンジニアから別チームに移される人はすごく多い印象で、最初から絞り出した印象があります。

社会人に必要なプログラミング教室とは

未経験が対象ばかりで即戦力の手前の人間が受けるレベルのプログラミング教室がない。一定レベルがあるプログラマに即戦力まで引き上げるならともかく、未経験から即戦力に引き上げるとか何を言ってるの?という話です。自分はかなりセンスのある方だと思っています。国家資格のデータベーススペシャリストを3ヶ月で取っています。それでも、即戦力レベルになれたと感じるのは1年が経った位ですし、システムで即戦力と言っても、OSS貢献していたり、競技プログラミングで上位に入るエンジニアが多数在籍する会社では新人レベルでした。webやゲーム業界で即戦力と言えるようになったのは米大学院に留学してからです。CSの知識のない人間は大抵壁にぶつかります。そういう時に上のステージに進むための教室こそ必要です。データ構造やアルゴリズム基礎の理解は中堅エンジニアの最低条件です。でないと、スケーリングしないでアルゴリズムで解けるような問題をサーバーを増やしたり、無駄なコストを発生させることになります。日本ではこのレベルで中堅より上級寄りになるかも知れません。知らない人が多すぎるので…。ボリュームゾーンが初心者から中級者に上がる壁の辺りなんですよね。とりあえず動くものはググりながら作れるという量産型のレベルです。

また、現在ある表面を一通りなぞるだけのプログラミング教室は会社の未経験者研修としての位置で提供されるのがいいと思います。上述の通り、未経験者研修と大差ないです。SaaSの使い方とか、基本的に簡単に使えるようにするクラウドサービスなので、元となる知識があればドキュメント読めればできるでしょう。

ついで

最初に取り上げてから1年以上経つ今でもプログラミング教室でスクレイピング人気だけど、実務で使ったことないんですが、使ってるところってどれくらいあるんだろう。法的に分析目的ならいいみたいだけど、目的次第では著作権に触れかねないし、情報守りたいところはjsで見えないようにajaxで動的にDOM組んだりするから、その辺から抜けないと実用的じゃないし、そもそも、勝手に抜くんじゃなくて協力関係でAPI提供してもらったりデータ提供してもらった方がよくない?という印象。

ネットでプログラミング教室選びをする前に読んで欲しい話

それより、ちょっとここがアフィリエイターとかに引用元の明示なく無断転載とかされてるのがわかったので、差し込みで。引用する場合はソースを明示して下さい。

アフィリエイターとか本当に金儲けのためだけに読者の幸せを考えない「何かをお薦めする記事」を体験した風に量産しているので注意が必要です。そういうお薦めに乗っても自分は幸せになりません。GoogleとかがUpdateで順位下がるように対応してくれてるのにSEO対策とか言ってゴミ認定された記事をまた上げようとする。

プログラミング教室は広告を依頼してるだけではありますが、公式でも信用できない卒業生のインタビューを載せたりするあたり、実際には現場で通用しないのをわかってて、もしくは元々センスのある1割程度しか自分たちの教えたことだけで成功しないのわかってて、特殊事例を上げてるように思えるので、同罪でしょう。

金儲けのためのアフィリエイター
→プログラミング教室
→紹介制度(報酬あり)
→アフィリエイター化
→戻る

と負のループができかけてる気がします。ちなみに、ここは全くSEO対策とかしていませんが、その辺のアフィリエイターと同じかそれより上にきてると思いますが、それは自分の言葉で書いてるからだと思います。広告も入れてないしね。ブログとかで稼ぎたかったら自分の言葉で語れる程度の知識をつけて欲しいです。

掲載元を明示せず作者の意図と違う引用をするDIVE INTO CODEのアフィリエイター

DIVE INTO CODEの検索でここにたどり着いた人が結構いるようですが、中には本来の主張と違う方向でアフィリエイトに引用してる人もいました。
hirox2.com
2018/06/06追記 アフィリエイト会社から連絡があり、無断引用が消されました。
現役エンジニアと元エンジニアなので自分の言ってることの信用のなさが露呈するので引用ごと消したのでしょうか。

引用元を書かないで反対意見を一部だけ抜いており、作者の意図を誤解させる行為です。非常に悪質。匿名の口コミとか何故か①②が抜けて③から振られてますが、匿名で口コミした憶えはありません。DIVE INTO CODEの関係者というより、アフィリエイターなんでしょうが、まともなリテラシーを持っていないようです。公式のインタビューを流用しまくってコメント付けるだけの非常に質の低いアフィリエイトサイトです。とりあえず、意図と違う引用なので、アフィリエイトの会社に通報しました。内容もめちゃくちゃでとても前線でエンジニアとして働いたことがないと思われます。おそらく、引用でリンクを付けると、僕がアメリカの大学院に留学してコンピューターサイエンスの修士号を取ってきた人間だとわかるので、Pathos的な信用で負けると思ったのでしょう。また虚偽も多く、

これだけRubyに特化しているスクールはないので

と言ってますが、Rubyだらけですよね。TECH::CAMPとか。こういう書き方はクライアントが優良誤認表示で注意を受けたりしてもおかしくないです。

僕の引用への反論もひどいもので、

基礎知識というのも非常に大事だとは思いますが、学生のように時間も取れない社会人の為にも、重要な部分を集中的に教えてくれるのがプログラミングスクールの特徴です。

また、大学のように卒業までに4年もかかってしまうプログラミングスクールがあったとしたら、あなたは通いたいと思うでしょうか?

時間がないから基礎や知識は無視してもいいという言い訳なんでしょうか?プロで働きたい人に言ってるんですよね?
また、4年かけるならプログラミングスクールでなく大学行くでしょう。質が違いすぎる。TECH社とかはプログラミング教室の体験談を直に聞くと最後までやり遂げられる人は2,3割といいます。

[2018/07/18追記] それ故か、久しぶりにサイト見たらTECH社は今はチュートリアルレベルのコースばかりですね…。文章読める人は通う意味あるのか微妙です。APIやライブラリを使える、SDKを導入できる、というのは技術力ではありません。ドキュメント、Referenceは説明書です。プロが説明書があるのにできません、とか冗談もいいところです。基本、英語なので、英語読めるか、レベルでしょう。日本語のドキュメントやチュートリアルがあってもできない人は向いてないので、コンサルとか企画職に行った方がいいです。向いていない人が現場に来ても残念ながら負荷が上がるだけです。

大学の授業だと学部なら9割、大学院でも7,8割はやり遂げられるのが普通です。教えるプロの教授が教えてますから。そりゃそうです。速度が異常です。そもそも、学問というのは一日に長い時間をかければできるようになるというものではありません。

大学で学んだことがある人ならわかるでしょうが、ある応用科目は基礎科目を取ってないと登録できません。前の科目は1学期前にある。これはコース全部を履修してから、というのもありますが、学んでるときに100%理解できることって意外と少なくて、Aを取っても曖昧だった部分というのがあって、応用科目中に「ああ!そういうことか!」となることも多いです。

  • 次の授業までにリーディングで自分で理解しようとする
  • 授業の説明や質問で曖昧点を解消する
  • 課題を通じて知識を技術として定着する

そういうサイクルが学校にはあります。理解には時間がかかるものです。昨日読んだ技術書の内容を明日完璧に把握できる人間はそもそもとして独学で十分できるでしょう。ただ動くものを作るなら理解はいりません。こう書けばこう動く。しかし、それが最適か、実行速度としてどうなのか、大規模ユーザーでスケーリングの問題が出てきた時にどうなるか、そういったことを考えるには基礎が必要です。特に、国民総スマホユーザーのこの時代、1人でシステムを動かすのと同時に1000人がアクセスするのではシステムの挙動は全く変わってきます。

例えば、フットサル面白い。もっと楽しみたい。で個サルに行って、得点につながるプレーを集中的に教わったら楽しめるでしょう。趣味ですから
ただ、フットサルで大会にガンガン参加して、ゆくゆくはプロになって食べていきたいのであれば基礎はものすごく重要です。高いレベルだと、強いパスを柔らかく停めて進みたい方向に向くとかはできなきゃいけないことです。

ボクサーはトレーナーから正しい動きを学んで、鏡を見ながらシャドーで何千回、何万回もその動きを練習して初めて無意識にその動きができるようになります。それが基礎です。時間がかかるし大事なんです。

スポーツとは違いますが、プロとして”高い給料をもらって”食べていきたいなら、基礎は絶対条件です。好きじゃないけど仕事だから、レベルで普通の給料でデスマーチで働きたいなら別にいいと思います。でも、プログラミング教室行きたい人って手に職つけて稼ぎたい人が中心ですよね?でなく、プログラマとして、とりあえず食べていける程度の収入が欲しい、であるなら、Javaの教室に3ヶ月行ってシステム会社に就職するといいと思います。一番人手の足りない業界ですし、基礎わかってない人中心なので未経験でも入れるところは多いと思います。

この方、2年で鬱になってプログラマ辞めたそうですが、基礎や知識なくやってたのも原因なのではないですかね。お宝ザックザクの特に外資だと1000万超えが普通の業界ですが、基礎や知識っていうのはそのお宝探しの洞窟に持っていく松明や色んな道具みたいなものです。手ぶらで入ったら暗闇をさまよって鬱になっても仕方ないと思います。自分が書いたものがどう動いてるかわからない、直したはずなのにバグってる。それは基礎がわかってないから裏側の動きが理解できていないのが原因です。

実際のところ、この辺のプログラミング教室がやってる程度の研修を未経験者を雇って給料を払いながら3ヶ月ほど学ばせてから現場に出すシステム会社は結構あります。とりあえず、基礎は省いて動くものを作らせる。結果何が起こっているかと言うと、品質の低さによりバグが多発、実装速度も遅いのでデスマーチが発生する。ということです。システム業界は特に基礎がない人が多いので、結構やばいです。そして基礎も知識もない人が見積もって、設計になってない「文章」を渡して現場が炎上するという…。

また、他言語を学んでもRubyを独学で習得できなかった人の体験談引用してますが、パット見、他の言語をかじった程度ですよね?使いこなすレベルで他言語わかっててRubyがわからない人はプログラマ向いてないので一生の職にしようと思うのは止めたほうが良いです。今後、コンピュータが得意な世代が育ってきて(スマホかPCかに分かれてる印象でスマホ側は完全に相手にならない気がしますが)、枠が減ってきたら確実に淘汰されます。特にC系使ったことあるのにRubyがわからない人。
Ruby (programming language) - Wikipedia
implementation language Cとあるように、内部ではCが動いているので、Cが使えたらRubyで書いたコードの裏で何が起こってるかわかるのが想像できるでしょう。Cで解釈が書かれてる言語は多くて、何故かと言うと、OSが、カーネルと呼ばれる部分が基本的にCで書かれているからです。システムコールとか、OSの機能を呼び出すのに使うのは基本Cだと思っていいでしょう。

利害関係のないように見える体験談

[2018/06/22追記] 引用元から名誉毀損と謝罪を求められました。事実確認のため、一旦サスペンドしました。
[2018/07/06追記] サイトにアフィリエイトが明示されたのでリンク削除
内容としては、失敗談を通じた体験談でも、アフィリエイトが付いていて、実際は利害関係があったりするので注意して読んで下さいという意図でのリンク掲示でした。名指しとかでなく、リンクにコメント付けたものです。さすがにアフィリエイトを付けて稼ぐ意志は一切ありません、というのは信じがたいので…対象のブログの作者の言葉がブーメランに感じたので、その言葉をそのまま返した感じだったのですが、逆鱗に触れたようで、表現は少し注意しようと思います。
※ 自分が他者に使った言葉で激怒するというのも不思議な話ではありますが、上手いこと書こうとし過ぎました

正直、ブログを公開してる以上賛否あっても、法的に問題のあるレベル以外で謝罪求めるとかどうかと思いますが…。それが原因で家に苦情の電話が殺到するとか、馬糞とか等身大ガンダム送られたりしたら別ですけど。

DIVE INTO CODEの最新カリキュラムレビューはまた別でやりますが
AIコースのシラバススタンフォードの機械学習コースを比較して妥当だと思う人いますかね?この速度で理解できるなら、TAかRAやって給料もらいながらスタンフォードの大学院で勉強できると思いますよ。英語できれば。

プログラミング教室の生徒を鴨にしてるアフィリエイター

ちなみに、プログラミングスクールの潜在利用者はアフィリエイト業界では「良い鴨」と見なされているようで、資料請求だけで報酬がもらえるようです。また、フリーランスとかやたら進めてる記事がありますが、あれもかなり報酬がもらえるようです。
setsuyaku-info.com

プログラミング教室ランキングとかおすすめ、って記事が書いてあって、そこからその教室へのリンクがあったら、PCならカーソルを合わせるとリンク先が表示されると思います。スマホだと長押しでリンクをコピーとかでメモ帳にでも貼って見てみて下さい。
px.a8.netとかaf.moshimo.comとか付いてたらかなりの確率で偽物の金儲けのために作られた記事です。鴨にしようと書かれた内容です。アフィリエイトの会社は↓を参照で。
hituji-affiliate.com

プログラミング教室やフリーランスは実務未経験ブロガーのアフィリエイトに向かない

別に体験してアフィリエイトのページを書くこと自体は悪いとは言いません。ただし、プログラミング教室やフリーランスの仕事関連は体験して記事を書くのに向いてない。なぜなら、アフィリエイトのために、という時点で対象が違う。プログラミング教室に行く人のほとんどは転職のためだと思います。その時点で、評価すべき対象は人事か現場エンジニアです。卒業しても基礎構文とかフレームワークの基礎や動かし方がわかった程度では自分が即戦力化はわかりません。

要は、アフィリエイトを続けるつもりでちょっと遊びに行ってみる。それは趣味レベルの人です。1月でも10万前後はかかるところが多いわけで、それだけかけたら趣味レベルでも褒めざるを得ません。回収するために。そうなると嘘が出てくる。あくまでアフィリエイトのネタのために、ですから。本気の人の参考になるわけないし、そもそも前項のアフィリエイターが明かしている通り、プログラミング教室やフリーランスを語ってる人間のほとんどが技術に疎いです。それが良いか悪いかなんてわかりません。稼げればいい、というだけの人です。本当にいいと思ったらアフィリエイターなんて辞めてプログラマーになりますよね。人生変わる体験をするなら自信になるでしょう。プログラミングを学んだとかフリーランスやってると言っても、まともにコードを書いてる記事は一つもないですよね。プログラミング教室行ったらコード書きたくなりませんか?こうだと思ったけど、これが正解だった、とか。

ちなみに体験してない体験談で買わせるのは詐欺だと思います。アフィリエイトって稼げる稼げる書いてあるので、仕事辞めて専念するとかいう計画性のない人も多いようで(そして情報商材に流れて借金したり)、日々の生活に必死になる時期が最初にあるようで、嘘や騙すことに鈍感になります。フリーランスで稼いでる、でアフィリエイト付ける人間は間違いなくフリーランス自体で稼ぐのでなくフリーランスを紹介して(サイトで誘導して)稼いでる人でしょう。事実かわかりませんが。フリーランスで技術で稼いでるエンジニアはアフィリエイトなんかより技術を磨いたほうが稼げるのわかってるし、1000万前後収入があると基本的に無駄遣いしなければどんどん貯まっていくので、アフィリエイト記事に時間割くくらいなら好きなことをやったり技術を磨いてQOLを上げようとする人の方が多いです。

そして、それをわかっててアフィリエイトに依頼を出すプログラミング教室も確信犯に近いと思います。

何度も書きますが、プログラミング教室を検討するときはネットの記事だけを見ないで、エンジニアをやってる友人にカリキュラムを見てもらって、現実的か、それで現場で通用するか判断してもらって下さい。講師も妥当か、そして、その講師が本当にいつもそこにいるか(アフィリエイトや公式の体験談で釣ろうとする教室は名前貸ししてる可能性も高い)確認したほうがいいです。エンジニアの友人がいない人は…

コーヒーでも飲みながら30分〜1時間程度のカウンセリングとかあるといいんですかね。無料もしくはワンコインか1000円程度で。稼ぐ目的ではないので。どこかでモクモクやってもいいですね。みんなで集まってプログラミングする、そういう集まりが無料であったりします。初心者向けのそういうのを作るのもいいですね。

僕はプログラミングが好きで天職だと思っています。
こういうことをしてるのは金儲けでなく、プログラミングを通じて不幸になる人を一人でも減らしたい、プログラミングを好きになってくれる人が増えて欲しい。そして、エンジニアの世界的に見て低い日本での地位を上げたい。その辺がここで記事を書くモチベーションです。

[2020/03/14 一部表現を修正しました(雑に書いたままになっていたので)]

副業元年 〜副業でブログを書かないでくれ〜

GWなのでちょっと頑張って早めの更新。外資しか受ける気なかったのにエージェントに声かけられて日本企業の話進めてみて失望した話もあるので、時間あれば近いうちに。

麻布十番のメゾネットはなかなか快適です。隣人とも挨拶がてら話して、寝てる間は車の音とかはあっても、隣とか上は無音です。やっぱり睡眠は大事。全ての基本です。立派なタワマンより、低層高級マンションの方が大人の住処としては価値が上です。家賃安くなった分、近所のボルダリングジムに通おうかと思っています。

電車とかも最近余裕ができて、満員電車嫌だな、と、ふと時刻表を見たところ、最寄り駅から始発が数本、出勤時間にあることがわかって、また、その電車までに背中で押して入ってる満員電車を2本ほどスルーしてみたら、始発1本前も行き先の問題か結構空いてることに気づきました。車両も、目的の駅の階段に近いドア付近にいたら、座席に空きがあるのに出口付近だけ周りと触れる位の満員で、2つ隣のドアまで行ったらガラガラになって、そこから先頭降車したら、人気満員ドアの先頭集団とほぼ変わらないタイミングで乗り換えられたりもしてます。ホームについて最初に来た電車の、出口の階段に近い車両が最適解とは限りません。ストレスとか、要素を追加すると、貪欲法の基準が変わって、より快適な解にたどり着いたりします。乗換案内ではそこまでわからなかったりするので、時刻表、最寄り駅で見てみたら何か発見があるかも知れません。その満員電車の次の電車はガラガラかも知れませんよ。

閑話休題。今年は副業元年とか言われてますが、そもそも、会社が副業を禁止するのは元々違法です。本業に害をなさない場合、問題なかったというのが現実。
副業で生活や人生が潤うか。個人的には一部の既に稼げている層にはYes、他の層にはNoです。稼げている人間の方が心にも時間にも余裕があるのが現実だったりします。また、知り合いも多いので胡散臭いセミナーとか商材にもかかりません。副業関係のセミナーや商材は99%詐欺と思っていいでしょう。そんなさ、稼ぐノウハウあって、普通他人に教えないでしょ。これは何度も言っていますが、無限にパイが増えるわけじゃないし、ノウハウが普及すると、そのやり方の価値は劣化します。その辺は経済の基本原理です。希少価値であるからこそ稼げる。鉄を金にできる錬金術ができたとして、金の価値はどうなるでしょうか。特徴に違いがあるから純粋比較はできないとは思いますが確実に価値は下落するでしょう。

実際のところ、元々人脈があってセンスや技術がある、できる人間がより稼げるようになって、できない人間ほど目先に見せ金に飛びついて詐欺に合うという、余計格差が広がるだけの阿鼻叫喚な未来がぼんやり見えます。まぁ、半分以上は解禁でもやらないでしょうが。前者は副業で店舗経営や独自サービスの運営と自分が何かを提供する側の副業を、後者はアフィリエイトやブログなど他のサービスにぶら下がっての副業を選ぶ傾向が強いと思います。選択肢の幅がそもそも違います。知人のつてや人脈から副業を開始するのと、ネットで検索して副業を開始するのと、そんな違いもありそうですね。何度でも言いますが、ネットの情報は8,9割は嘘や誤りで儲け話の99%は詐欺です。それが国民総配信者時代の現実です。

それと、本ブログ、実はDIVE INTO CODEのレビューのアクセス数結構多いです。カリキュラム多少変わってるので、近々再レビューしたいと思います。アクセス数的に、場合によってはインタビューとかした方が良いかも知れない。でも、インタビューしたら掲載NGになりそうな気がしないでもない。あと、コーディング的なインタビューしたら、数人はできる人間雇ってると思うし、下手すると外部から連れてくることも考えられるので、あまり意味なさそう。ちなみに新しいカリキュラム見た感じ、センスある人以外ついてけるのか、これ?という、通常コースもAIコースに近い駆け足感を感じました。自分が教えた経験からも、まるで知識0だと元々のコンピューター好き以外は地獄に近いと思う。

今回は副業に関して、再度取り上げます。

ネットビジネス稼げてると言ってるブログは大抵セミナーとかへの誘導が目的

「ネットビジネス、詐欺」「副業、詐欺」とかで検索しても「実際は稼げる、詐欺とか言ってるのはやったことのない奴らだ」とか耳辺りの良いことを言ってるのが大半です。苦労して稼げるようになった、とかいう論調で、画面の下の方に行くと「セミナー」「○人限定」とか有料コンテンツへの導線があります。実際、苦労話を見ても、失敗例ばかりで、ほとんどが、やろうとしていたことで成功していない、失敗したから他のことをやって、という行き当たりばったり君ばかりです。で、そこから、何故か、成功談がなく、成功してセミナーとか商材につなげるという、起承結の謎の失敗から高収入という流れが大半です。転を売ろうとしてるのかも知れないけど、その飛躍はもはや錬金術、魔法の類です。大成功は小さな成功の積み重ねからくるもので、いきなり成功する可能性があるのは博打だけです。そして、博打は大半が負けるか良くてトントンなのですよ。そこには魔法を使えなかった人が突然大魔術師になる見えない大進化が現れます。MP0でどんな魔法使ってんだ、という。答えは簡単、チートなんですが。嘘というMPを使わない魔法です。

そもそも、何を売ってるのか、セミナーで話すのかわからないようなの参加しない方がいいです。何をしたい、どうなりたいのビジョンなく、金持ちになるために副業という人間が成功するはずがない。目的と結果を履き違えてる。地図を手に入れて、世界が見えた!俺は自由な土地に行きたい、とだけ決めて歩き出す人は道に迷うだけです。成功したとしたら、腕が後ろに回る可能性のある綱渡りを渡り切った与沢氏みたいな強運の人間だけです。実際彼が売ってたのは空気です。金持ちの雰囲気を売ってたわけです。ある種、あそこまで金に執着して稼げるのは生まれつきの化け物じみた欲がなした業で常人には無理です。少しでも人の善意があればあそこまで行けない。大半が稼げないし、稼げても逮捕される可能性が高いです。

というか、セミナーに行かないと成功しないレベルなら、副業で小銭稼ぐより、本業を磨くことをお薦めします。しかもセミナーを開催してるブロガーは何故かアイデア次第で〜とか言ってるわけで。アイデアなくて儲けられない人間だからセミナー行くわけだし、セミナー参加したらアイデアマンになれるだけのコンサル力あるなら、知らない人より、身近な人間をコンサルして、継続的にその人達にアドバイスして稼げばいいと思うんですが。新規と話してコンサルって実際はかなり大変でしょ。セミナーを不特定の他人に何回もやってる時点で固定客のコンサルで食べていけない証拠だと思いますけどね。それか、実際業界の裾野を広げる程度のまぁ、3000円取れば十分レベルの浅い話しかないかのどちらかですね。何か新しいサービスの普及とかなら後者はありうる。成功する秘訣、とかのセミナーで後者はありえないので、セミナー参加者を成功させられてないんでしょうね。参加者を成功させるんじゃなくて、セミナーに数多く流入させて参加費を稼ごうというのが目的でしょう。

基本的に副業はその時々で多少稼げるかも知れませんが、大半がグレーゾーンなので(価値のないブログに誘導して広告費で稼ぐトレンドブログとかも、広告主を騙すグレー行為と思う)、法規制とかで稼げなくなります。セミナーきた皆が稼げるようになったらパイが枯渇して、新しい手法のためにまた金を払う、それは弱者の思想です。弱者のまま稼ごうとするのでなく、耐え忍んで強者になるために鍛錬に励む時間も必要です。自分は30代前半で1000万前後稼げるようになりましたが、天才以外は30前後の1000万を目指して日々を積み上げた方が良いです。日々考えて考えて勉強して蓄積した技術は嘘をつきませんし崩れません。20代で簡単に稼ごうなんてして、運良く1000万稼げても1年後には半分になってたりします。そして、たちが悪いのは一度生活水準を上げてしまっているので我慢ができないという。そして、グレーゾーンを繰り返すわけですね。土台がないので、いつまでも稼げたり稼げなかったり不安定でしょう。そんな人生、精神的に持たないと思います。他人の土俵で、しかも正統派でないやり方(ブログであれば、唯一無二の情報・研究成果・知見などを提供できるの特化型が正統派)で稼ごうとすれば、場を作ってる人間は本来の意図に寄せようとするのが世の中のバランスです。

YouTuberとかも広告主に損害を与えるような動画で激怒して代理店が撤退するようなことがありましたし、報酬基準を変えたりしてます。当たり前です。反社会的な動画とか、悪ふざけの違法行為、炎上でも視聴数上がる迷惑行為などが収入になってましたし、未だにそういうのが数多く残ってる(というか8割方?)。子どもばかり観てて収益に繋がらない動画も数多くあります。TVだと子どもは親と一緒に観てるから広告効果あるかもですが、YouTubeはTVで見れても8割型スマホタブレットでしょう。トレンドブログとか詐欺系ブログも価値のない、もしくはうっすい記事に広告がついてるわけで、まともな人間はそっと閉じるので金を使う購買層でなく、金を稼ぎたい層にしか見られてないのが現実だと思います。広告主を騙してるようなものなので、Googleも検索の価値判断を変えていて、その内、ゴミのようなブログはかなりページを進めないと出なくなるでしょう。むしろ、Googleでその仕事をしたい…。アクセス数=価値のあるコンテンツ、という世界は10年前、スマホの登場と共に滅びました

話は戻りますが、良くわからないけど稼いでる風の人は基本的にブランディングなだけで稼いでないと思っていいでしょう。

ネットビジネスの特定のコンテンツを否定してるのもアフィリエイト誘導

uwakiaruaru.info
この辺がいい例です。YouTuberはもう儲からないからブログ、とか言って、リンクの先ではAmazonアフィリエイトが貼っています。文献とか紹介していて、tag=XXXXXとか付いていたら基本的にアフィリエイトが目的です。
アソシエイト・セントラル - ヘルプAmazonアフィリエイトのリンク記述
ちなみに同ページにあるサーバーの方もアフィリエイトです。カーソル乗せてhttps://px.a8.net/のURLが見えたら基本的に金儲けのための記事と思って良いです。この辺は宣伝と言わずに宣伝してるのでステマの一種ですね。宣伝とかPRの文字がなくアフィリエイトが貼ってあったら、流入の報酬目当てのためだけの記事と思って閉じてしまってまず間違いないでしょう。正しい情報を提供する気はありません。アクセスが稼げればなんでもいい量産型クソ記事製造業者です。

副業で何をするべきか

個人的には、仲間と将来の起業に向けての活動をするのがいいと思います。このサイトに関係が深い部分で、エンジニアなら自分の将来やりたいサービスに使えそうな未経験の技術を使っている簡単な仕事を請け負って経験や技術を蓄積するとか。より給与のいい業界(システムから自社サービス等)への足がかりとなる技術の請負とか。まず、目標となる将来の指針を立てて、そこに向かって、1ヶ月後の収入重視でなく、将来の収入を想定して動くべきです。まぁ、副業に飛びつく人は目先の金儲けしか見えない人が中心でしょうが、その誘惑に負けると大抵騙されて借金が残るわけです。簡単に金儲けができたら世の中、あなたより頭のいい人間全員が大金持ちです。大抵グレーゾーンとか黒い詐欺サイトは動かないだけだ、と言いますが、違法性をはらんだ行為は利口な、そんなことしないで稼げる人間は手段として選びません。まず行動するのが大事、続ければ成功する、と言ってる人間は大抵詐欺師です。目標設定、下調べ、準備、そして行動。成功する人は成功すべくしています。例えば、エンジニアリングで言うと、突然、レイトレーシングを実装してください、と言われて、いきなりコードを書く人間はまず書き上がらないでしょう。レイトレーシングとは何か、位の簡単な説明はあるかも知れませんが、理論を知って、それに必要な技術を一つずつ理解して身につけて初めて正しい設計ができて、手戻りの少ないプログラミングが実現できる。そういうものです。当然行動に移すのは大事ですが、目的地までの道のりを調べずいきなり歩きだすと路頭に迷うだけです。そもそも、その辺の人達が提供するものってターゲットが曖昧なんですよね。副業したい人に自分が成功した方法を、って、副業で何がしたいかわからない。元々、誰かに喜んでもらうようなことを提供する、という基本原則がなくて、トレンドブログとか、読者の時間の無駄にしかならないゴミを撒き散らすわけです。ここは営利目的ではないですが、誰かの気付きにつながって、考え方の一つとして吸収したり、騙されそうになってる人にストップをかけられれば、というのがターゲットというか主な目的ですね。技術やネットという世界で生きてきた人間の声として。

技術職の場合、本業を高めるのが最善

ITは特殊な業界で転職が経歴としてマイナスになりません。個人的には2,3年ごとに転職した方が技術が作業になって錆びつくことがないし、守備範囲も広がります。当然、なんでもできるような国際的な大企業は別です。プログラミングが好きでずっとものづくりがしたいと思う人が日本企業にいたら、転職しない方がリスクです。海外では囲い込むのに年収8000万出すような職種ですが、日本では何故かマネージャ信仰から400〜600万でプログラマは頭打ちでしょう。フリーランスなら技術力あれば1000〜1200万位までは行けそうですが、一生フリーランスというのも心細いですし、フリーランスを取るところで本当に大きな仕事はできないので、ある程度磨くと物足りなくなってくるでしょう(今の僕がそんな感じです)。

副業でブログを書かないでくれ

書籍を書くレベルの人ならいい。金儲けのためだけにブログを書かないでくれ。9割の間違った情報で、健康系なんて時に人の命を奪いかねない。
トレンドブログでググった情報に自分のコメントを付けただけ、技術の勉強でよくわからないけど、これで動くらしい、なんか動いたっぽい。そんなものは紙の日記に書いて本棚に仕舞っておいてくれ。既にゴミまみれのネット上にゴミを出すことで小銭を稼ぐ。そんなの乞食と大差ないように思える。空き缶を拾ってゴミを捨てられない子ども大人の尻拭いをしてくれてるホームレスの方がよっぽど世の中のためになってます。誰かのためにならない自分のためだけの乞食ブログなら書かないでください。
※執筆活動できるレベルとは思ってないけど、営利目的じゃないので、その辺は勘弁してね( ゚д゚)

ああ、マジでGoogleでゴミをフィルタリングする機能を作りたい。
あと、早く国が情報商材を認可とか制度で取り締まって欲しい。
情弱ビジネスって、ピュアな(無知とも言える)人間を真っ黒にしますからね…。

一歩踏み込んで考える

インフルエンサーの人が拡散してくれたのか、一時twitterからの流入が増えていたようで。僕の拙い文章を読んでくれる人が増えて嬉しい限りですが、相変わらず筆不精です。

Google Code Jam始まってますね。Qualification Roundは48点で突破でした。固定値にケアレスミスがあって、新しいシステムでもPractice mode解禁になって2個固定値修正したら普通にあってて20点無駄にした…Round1は1回目3000位台、2回目2000位台でどちらも突破の1500位以内に届いてないので、今週末に賭けます。

また、外資系プラットフォーム企業への転職準備をしつつもプロジェクトでクライアントのメインのプログラマの筆頭辺りになってしまい、フェードアウトしたいのに中々時間の取れない日々が続いています。仕事自体は楽しいんですけどね。cocos2d-xを使っていて、最近だとTableViewを横に動くようにしたり、Shaderで光彩付けたり、Android/iOSそれぞれで権限許可出したり、Perfect Pixel Detectionとかやってます。大体のことができるようになって、ホントそろそろ移らないと技術力が止まってしまう。同じ技術ばかり使って自分は大抵のことができる、と慢心すると広がる技術の世界から取り残されます。最近のも会社としては新しいことをやっていても、基本的には知ってることのcocos2d-xへの応用だし。
外資の世界トップ数社受けてダメなら、LinkedInでAI機械学習系の会社の誘いというか紹介があって、年収のレンジがどこも下限800で上限が1300〜1500位なので次のキャリアパスとしてデータサイエンティスト的なのも次の10年を楽しく開発する選択肢としては良いかも知れない。もうゲーム業界はいいや…社内でも歩きスマホが多くてストレスが開発以外のところで多いです。

自分は育ちが良いので、マナーと言うか振る舞いが下品な人が好きじゃないです。今度書くかと思うけど、前までタワマンに住んでて、住人の民度が酷くて、部屋で落ち着かないので引っ越しました。成功する人の大半は成功すべくして成功しています。そこには品格というかオーラのようなものがあって、所作振る舞いとか、マナーや気遣いが当たり前にできる人が多い。何故なら評価する人間がそういった品格のある人間が多いので、地位のある人間から人間性の下らない減点をされることが少ないわけです。同じ能力の人間が2人いたら通常、一緒に働きたいか、一緒にプロジェクト成功を祝って飲みたいか、そんな基準で人を選ぶのが人間です。反面、育ちの良い人間は気遣いに使われる脳機能が発達してる(子どもの頃のしつけで未発達の人は他人の不快を想像できないらしい)ので、無作法な振る舞いに意識しないでも気付いてしまって、無駄にストレスを感じたりもます。まぁ、一個上の次元だと下々の粗相は気にも留めない次元になりますが…。

www.forbes.com

前にも書いたかもですが、アメリカで語学学校にいた時にcontagiousという単語の例文で"A bad attitude is contagious"っていうのがあったのを今も覚えてます。contagious diseaseが伝染病なので、移りやすいとか伝染性って意味の単語なんですが、近くで悪い振る舞いをする人がいるとそれは伝染しやすいということです。マナーの悪い行動とか、迷惑な行いというのはたいていが自分にとって楽、他人に取って迷惑なものです。割り込みとかね。特に判断力のない人間(子どもとか)は人の行動を深く考えずに真似から学びます。だから、躾の時期に親は正しい振る舞いをしなきゃいけないわけで。子どもといる時は絶対信号無視するな、とか、昔は地域でも子どもの前では信号無視する大人はいなかった気がします。子どもは集中力がなく好奇心旺盛なので、よそ見しながら歩くことがよくあるので、信号無視を習慣化すると事故に合う危険はかなり上がりますよね。歩きスマホとかも、この伝染してる悪いマナーの1つで、しかも問題なのが、前のエントリーで書いたように、歩きスマホが当たり前の人は脳の超前頭野が働かない状態が続き、脳は使わない部分は縮んでいくので判断に使う部位が劣化して、善悪の判断がつきにくい、要は認知症とかのような状態になって、すべきでない悪いマナーだとそこらじゅうに貼られても止められなくなってしまうという。

今回はそんな、深く考えない行動にストップをかけて、一歩踏み込んで考えてみようという話です。一応、非技術者もしくは初心者技術者向け技術ブログのつもりなので最後は技術話、コピペ癖への警鐘に繋げます。

なぜを考える

日本人はどうもWhyよりHow toを気にする気がします。それ故、深く考える習慣がない人が多いように感じます。特に今の子どもは幼稚園、小学校低学年から親に押し付けられて塾に通い、何故を考える時間なく(外で遊んで色んなものに触れて、見て、話しての方がその能力は伸びると思ってる)、教えられたことを憶える習慣が強くなってるように思う。感受性の衰えすごいな、と感じるのは電車で2人一緒にいてもお互いスマホいじって、会話の話題もスマホからだったり。ちなみに、僕は子供の頃から何故ばかり考えて生きてきたせいか、学習能力とか理解力は高めな気がします。周り見ると発見や気づきがいっぱいあるんですけどね。ただし、一歩踏み込んで、気付きが得られると、それを気付いてない人の行動が気になってちょっと生き辛いかも知れません…。傘束ねずに傘の水滴で自分の服濡らして電車に乗ってくる人とか、店の前の邪魔な違法駐輪とか非常に気になります。How toはどうすればいいかの手順なので、深く考えたり理解は要りません。行動の理由は理解した方がいいけど。

何故というのは、一歩奥を覗き込むことのような気がします。例えば、重力の仕組みであっても、どういうことが起きてるか、の理解が先に来て、どうしてはその先、一歩先の次元にある気がします。未だに重力の計算式はわかっていても、重力が発生する理由はわかっていません。仕組みがあって現象がある。現象の理解は見える部分からの分析の結果で仕組みはその元の見えない部分です。分かる例で言うと、時計がどう動いてるか、仕組みは分解しないとわかりません。分解しても分かる人にしかわかりません。何故を考えることは物事の本質を考えることです。

邪魔の例

一つの例えとして、邪魔という感覚を取り上げます。
道とか電車を出る時に邪魔だな、と感じることはよくあると思います。でも、邪魔、で終わってしまうのでなく、一歩踏み込んでみる。なんで邪魔と感じるんだろう。それを考えると、自分が感じた邪魔、という不快な感情を他人に与えないようになります。では、邪魔と感じる状況を分析してみる。基本的に邪魔だと感じる状況というのは最善の動線を遮られた時だと思います。自分勝手な人間によって回り道、余計なコストをかけなくてはいけない状態、自分のペース・速度で歩けない状態、それが邪魔です。そう考えると、他人の動線をイメージして、そこを塞ぐ位置には立たない、流動性を遮る状態になったら一旦移動する、などという感覚ができます。そのためには周りの状況を把握しなくてはいけない。つまり、電車でドアが開いてる間は基本的には周りを見るべきです。流動性、他人の動線を把握して動くために必要な情報はスマホ上のまとめサイトではなく、周りに立ってる人との距離感や、移動する人の動線です。降車客が階段に向かう動線が想像できれば、イライラしてる人が出てきた時にぶつかられることもないでしょう。触らぬ神に祟りなしです。

邪魔の応用

邪魔がどういうことか自分なりの答えが見つかると、他のことにも理解ができます。例えば、”うるさい”。これは思考の動線、つながりを妨げられる状態です。邪魔と同じで音で気が散って流れを止められることで思考の流れが悪くなります。スポーツでも対人スポーツは自分のペースだと全く疲れないのに、相手のペースに合わせさせられると異常に疲れます。人は自分のペースを乱された時に不快に感じ疲れるものです。

コピペの弊害

プログラミング教室や現場でもコードを書く時にコピペをする人がいます。コピペは基本的にバレると思った方がいいでしょう。コードを書く時、スタイルは人それぞれです。if文も

if (flg1)
{
    // do something
}
else
{
    // do other
}

if (flg2) {
} else {
}

if (flg3) {
}
else if {
}

この辺よく見る書き方なんですが、複数のスタイルが混ざってると大抵コピペしてますね。

if(flg){
if (flg) {

半角スペースの使い方も癖が出ます。コピペでなく混ざる人は…美しくないコードを書く人なのであまり一緒に仕事したくないです。
わかりやすく(ロジックが複雑だとコメント多くしたり)美しいコードはバグが起きにくかったりします。コードレビューでも拾いやすいしね。

そして、コピペは他の箇所で正しく動いても、自分のコードではバグる場合もあります。また、他で動いてるからと言って最適とは限りません。コードアシストとか色々やってくれるので、せめて、元のを参考に、自分で動きを考えながら、最適化しつつ書く癖を付けたほうが良いです。コピー元が何をやってるかわからなくてコピーしてる人間とか正直、正気の沙汰に思えませんが、意外といます。

情報の真偽

1人1台スマホ時代で情報発信が普通になり、さらにプログラミング教室のステマが広がった今、ネットで見つかる情報は著名な専門家の書いている記事以外、何かしら間違いが混ざっていると考えていいと思います。「なんでこうなるかわかりませんが、」などと書いてるページがあったら即閉じたほうが良いです。そこをコピペしたら間違えたのがそのブロガーでもあなたの責任におけるあなたの間違いになります。結局、peer reviewをしてる紙の情報が確実なんですが、急ぎの場合でもコードの意味をしっかり考えたほうが良いです。一歩踏み込んで考えること、情報を疑うこと。悲しいことですが、発信者が増えたことで、発信者のレベルが劣化しています。URLを確認してプログラミング教室のページが書いている技術情報とかはメンター的な学生に毛が生えたか、下手すると素人に毛が生えた程度のエンジニアの卵が書いてる可能性が高いのでそっと閉じましょう。そして、そんな人間に情報発信をさせている教室は絶対に信じないほうが良いです。

ちなみに、最近見つけた仕事で使うとバグる例だと
masahirosaito.hatenablog.com
http://developer.wonderpla.net/entry/blog/engineer/Cocos2d-x_texture_hit_test/developer.wonderpla.net
前者は後者を批判していますが、どちらも現場じゃ正しく動かないでしょう。
他画面対応してる場合

this->location = CC_POINT_POINTS_TO_PIXEL(location);

initWithLocationとか作って、これでピクセル情報にしてあげないとダメ。CC_CONTENT_SCALE_FACTOR()をかけて変換してる感じ。取得する色情報はポイントじゃなくてバッファ上のピクセルの位置です。個人レベルの実験だとscaleFactorが1対1ですが、大抵変形端末は縮尺が違います。
ちなみに、color picking的な手法はopenGLでは普通の技術で特に3Dのオブジェクト選択ではオブジェクトごとに別の色を付けて、同時に描画して、取れた色のオブジェクトを選択状態にする、というのがよくやる手段ですね。さらに、3Dオブジェクトはtriangleの集合体なので、そこまで選択したい場合、ポリゴン(基本3画形と思っていい)ごとにIDを振って、それをIDごとに色情報(RGBA)に変換してglReadPixelで選択したポリゴンを選んで選択した対象を判断する、とかも学校の課題でやったりします。この場合、1回のバッファへの流し込みで住むので、cocos2sでの手法より効率がいいと思います。この辺の記事は元の技術とか仕組みわからずにStackOverFlowとかのコピペで動いたのベースでperfect pixel detectionができると思って書いた記事なんでしょうね。おそらく、openGLわかってないように思えます。

階段を登ろう

結局コピペ由来のバグの問題は深く考えず、元の技術を理解せずにショートカットしようとして、バグを起こす。しかも、仕組みがわかってないので本人がすぐ直すのは不可能です。コピペするにしても、使っている技術は全て把握しましょう。やり方がわかったとしても、正しいかは使っている技術を理解しないとわかりません。まぁ、簡単に言ってしまうと「ちゃんとやろう」ということです。

それでは、よいGWを!