1
/
5

職業プログラマーをめざすプログラム初心者はとりあえず読んどけってのを書いてみよう。

※2022.08.03 微修正 (元が2017の時期の記事・トレンド的な部分はさすがに古くなってるが、Google検索結果が汚染されてきた頃の感じ方が残ってる記事でもあり、あえて残しています。当時の作られたトレンドと実需要の乖離感もわかるし。)


私はプログラマーではないワケで、違う職種のひとの学習の仕方なんかにクチは出したくない訳だが、売り手市場やWebの広告媒体としての価値が上がったと言う背景からか、ネット上の情報の変質も感じる事だし、こういう意見は実際にこれからプログラム始めようと言う立場の人間が、なかなかたどり着けない(検索にかかりづらい系)の情報になるので、あくまで初学者向けに書いておく。
いちおうWebシステム開発者を目差すイメージになってます。

ちな。 趣味でやるって人とセンスあるぜ系の人も除外で。『職業PG狙い、ふつうの初学者』向けです。
趣味なら好きにやるのが吉。センスある連中も、方法を選ばずとも勝手に伸びる。



まず。始める前の段階。

①職業プログラマーになるには時間がかかる

プログラムに限った話ではないが、地味~な時間投資が必要です。

ひとつの要素をなんとかこなせるまでの時間を20時間として、ITに限らず多くの分野はたくさんの要素から成立している。なので、必然的に20時間の初期投資を何回も繰り返さないといけない。
例えばウチの場合160時間を入社後の外部研修に割いていますが、これはゼロからだとぜんっぜん足りない時間。すでに学習している人を対象に採用し、プラス160時間のカリキュラム。それでも実業務で一人ででナニカできるかって言うと無理。 なので、既存社員と一緒に業務にアサインとなる。

オマケに、先端技術ほど更新が早く、職業プログラマーとして食えるようになった後も、この状態はゆるやかに続く。たとえばJavascript関連などがこれに当たるワケで、クライアントサイドのMVCフレームワークなんかはいまだに主流が決まってない。 職業プログラマー(特にフロントエンドの)は、同時並行で複数のフレームワークの更新を追い、キャッチアップしなくちゃいけない。 ※ただ、今はもうかる。

現在の仕事や他のことでの拘束時間が長すぎって場合もあるだろうが、少なくとも日常生活でプログラム関連に時間使うのはイヤってひとは、職業プログラマーには合わない。やめといたほうがいい。


こう書くと大変そうに見えるが、プロの彼らはもともと半分趣味であったり、まわりのメンバーと情報交換し合って個人の負担を軽減したりと、なんとかこなしてしまってるところが恐ろしい。

プログラマーの業界に入れば、こういう連中と競争したり椅子取りゲームしたりすることになるので、その認識はもっておこう。

覚悟があるならば大丈夫。
既にプロでありながらも、技術に興味がなく、コピペでしのいでるPGも多い。
いざ椅子取りゲームのタイミングでは、彼らが負けてくれる構造ではある。



②初学でRubyonRailsはやめとけ

Web → イケメン サワヤカ 高スキル
業務系→ オタ コミュ障 高稼働 古い 低スキル
的な宗教観もありつつ。

低金利政策が続き、ベンチャーキャピタルの出資ハードルは下がり、そこから資本調達したベンチャーも増え。いわゆるWebサービス業界には金が集まっていた。(特に2016・2017あたり?)そこに対してのサービスも多くなり、結果、Web上での広告や、そちら側の意見のブログやコメントも増える。 (※その延長線上で上記の宗教観が生まれているとも。まぁ、求人のイメージがなあ・・・)

そりゃ、素直な初学者はRubyからと言う事になりやすい。


別に、学習面においてRubyが悪い訳ではない。何かの言語に加えてちょっとフレームワークやデータ操作ができれば、初期の学習レベルとしては問題ないはず。

ただし、いきなりRailsは微妙な。 (Cake・Laravel やPlayなども同じかも)

カンタンに言うと、いろいろやってくれすぎる。ソースを生成してくれる時点で、初学者にむかんだろ。

実際のプログラムコードはかなり短くなり、裏でいろいろやってくれてる感じ。 これ、やってくれてることをわかって使ってるんであれば別に問題じゃないが、わからないで使ってるとしたら、プログラマーとしては問題がある。道具に使われてる状態になるわけだ。

本来『Railsがやってくれてること』を、理解する為の時間のほかに『Rails操作』の学習の時間を食い、書くプログラムも短いと言う訳で、初学者が『プログラムスキルを得る』目的の場合は、とてもじゃないが合っていない。Rubyのピュアコードで『Railsがやってくれてること』をできるようになってから、Railsにとっかかるのが、学習には良いと思う。そんなことしてると、時間かかりすぎだけどね。

就職面においては、ほとんどのRuby求人の場合、Railsが使えるレベルをハードルにしていると思われ、(しかも、Railsのバージョンに指定があるはず。これは、Railsが短期間でも大きく進化しており、バージョンごとのキャッチアップが必要である背景からの意図かと思われる)就職面においても、初学者にとって大きく有利とはいえないと思う。


ほか、Webや業務系の宗教観に関して実情的なところを書いておくと、『個々の会社による』が実態。

Webサービスでもすでに儲かっているデカいサービスのお守りが仕事であれば、あまり新規で開発すると言う経験はしづらい。(Webマーケティング方向の知識はつくはず)コーディングスキル取得の為にこういった会社での経験が必要とは言えない。また、カネはあるので、技術の更新は常にされているはず。
リファクタリング実施可能なレベルであれば、死ぬほど仕事あると思うんだが。

逆に、どんどん新しいサービスを立てなくてはいけない会社では、どんどん新規開発をする事になるワケで、新規で書く量に関しては期待できるだろう。反面、かなりの高稼働が多い。(ケータイアプリ・ゲームなども近い)実際に運用するかは当たるかどうかにもよるので、テストコードを書かないと言う事もありうる。上場を目差して自分も利益を得ようと言う山師肌のハイスキル者も多い。彼らに会えるのはメリットと言えるかもしれない。ほか、40代以上での転職のハードルは高く、昇給もストップしがち。

業務系で、長期の運用保守系案件にアサインされれば、コーディング量は少ないし、技術も古い。業務系でスキルが伸びないイメージはまさにこのケースかと思う。しかし、このような環境で高稼働だと言う事は少ない。そもそも、大手エンドやSIerは労務管理上の理由で高稼働を好まない。
少なくとも上記のタイプより忙しいと言うイメージは間違っている。

業務系でも、大きくはない新規の案件を選んでいくとしたら、スキルは比較的新しいものになり、コーディング量も多いだろう。と言うか新規開発の場合、Webとさほど使う技術が変わらなかったりする。(ただし、大規模案件や面倒な業種のエンドだと、仕事がドキュメント作成だらけになる。)市場が大きい為、仕事選んでいく場合の選択の幅がかなり広くなる。 運用と比べれば、当然稼動は高め。しかし、やはり異常な高稼働は抑制される傾向があり、業務系は高稼働と言う指摘はだいぶウソくさい。

業務系の大規模な案件などの場合、コーディングや設計スキルのほか、特定業種・業務の『業務知識』なるものが優遇されたりする。ここに特徴をもつ技術者は、高齢であっても仕事に就きやすい。
自身の価値(安全性)を維持する為にスキルを得たいという目的であれば、『業務知識』の取得を重視する。と言うのも、なんら間違いではない。技術の新しさと両立ができるかはわからないが。

このように、会社やアサインされている業務、個人の目標によって、いろいろなケースがある。
一概に片方がどうこうと言う論調は、すこし偏りすぎている情報と考えたほうがいい。

※2018.09 Rubyの求人減って、高難易度化した印象・・・。SES市場にRubyの仕事が少ないと言う事は、新規の開発が少ない(もしくは人員は充足傾向)と言う事になる。既に出来上がったRailsのシステムの保守がメインとなると、これはなかなか難易度が高い話になるワケで・・・。

Pythonは微増傾向。Railsの代わりに選択されている感じはしない(PHP・Laravelのほうが増えたかも)
これも特に採用ハードルが低いわけではない。AIの話が多く、システム開発者のスキルは得づらいかもしれない。

Ruby Python共に、初心者が学ぶには良いが、Railsは学習コスト高く非効率。Pythonは英語スキル必要。(AIでは統計関連も)と言う感じ。




就職面の話がでたので、ここで

③就職面で言語を考えてみる

プログラミング言語別の平均年収ランキング、1位は「Scala」
国内のプログラミング言語別の平均年収ランキングを、ビズリーチが発表。1位は「Scala」の626万円だった。
http://www.itmedia.co.jp/news/articles/1708/10/news073.html#l_kf_stanby_01.jpg


プログラム言語別の平均年収が高い = その言語は給料の高いところで使われている
と、読めるが、
プログラム言語別の平均年収が高い = その言語は要求スキルが高い求人が多い
とも言い換えられるワケで。

難易度高い Scala1位 要英語気味のpython2位 まだ経験者少ないKotlin3位と。
Javascriptに関しては高難易度のものも多いはずだが、デザイナーよりの求人も含む為の平均報酬額かと。
最前線のJavascriptの技術者の給与が安いわけがない。

ほか、『求人の数』『技術者の数』『Google検索された率』『国内・国外』など、いろんな統計があって、いろいろな見せ方がある。中には統計の罠的なミスリードもあったりするので、必ず自分の頭で考えるようにしよう


既卒者の転職目的で、初学だったら、学習はJavaでいいんじゃねえかなあ。Webや書籍での情報も多いし。なにより求人数多くて要求スキルに幅があり、通過しやすそう・実業務経験を積みやすそう。
開発環境を用意するまでのハードルはあるがな。まあ、PaizaとかProgateとかあるし。今時だと。


ただし、新卒者の『有名な会社入ってブランド得つつ、行けるとこまで行く。駄目でもブランド活かして転職』戦略に関しては、Javaが最適といえない場合がある。

KotlinでAndroidアプリ作ってますとか、pythonやRでAIまわり研究してますとか。
学生でやってたら、そりゃイケてそうに見えるワケで。

日本の就職市場では、新卒時にしか得られないものがある。それを実スキルアップなどの目的でJavaやCを選ぶと言うのは、必ずしも経済的とはいえないかもしれない。
結局、新卒の就職活動はブランド勝負だからねぇ・・・。

なので、Wantedly上などでよく見かけるインターン希望者なんかは、間違ってるとは思わない。
※そもそもセンスある人だったら、なにやっても吸収しちゃうしね。


※ 2018.09 今年の↓。
http://www.itmedia.co.jp/news/articles/1808/07/news087.html
TypeScriptが入ってきて、Javascriptが圏外なあたり、やっぱ難易度高い求人が多い感じする。

https://findy-code.io/engineer-lab/github-programming-language-ranking
また、↑の統計を見ると、だいぶ印象も変わってくる・・・。

使用されてるのは当然だがjsが1位。Python Java C++ と、いつものが続く。
また注目が伸びたのは Go TypeScript それに Kotlin、Rust が続く。

別に学習時の言語で一生戦うわけではないので、普通にJavaとかでいいと思うぞ。就職を狙う為に学習するのだとしたら。ほか、jsはWebであれば、ほぼ確実に使用する言語。これも良い。
Go、Kottlinは、初学者は避けたほうがいいかもしれん。


④入社前学習とそのフォロー。

会社側で推奨したと言うよりは勝手にそうなったのだが、最近自社内の学習会に入社前の人らが参加するケースが増えて来た。

もちろん、既存社員に入社前学習のフォローをしてもらう目的での参加なのだが、それはもちろんのこと、どんな人らが、どんな技術を重視し、どうやって学習しているのか。が、わかる訳で、意外と評判が良い模様。ほか、中途入社の20代のメンバーが多い為、なんだかんだ年齢も近く、合うというのもあるかもしれない。

うちら企業側も、もっとこう言う事考えてもいいのかも。

思えば、お互いノーリスクのインターンの様なもの。プログラムを好きになれるかわからない段階での職業PGとしての入社は、企業側はもちろん、求職者側も職歴を汚して時間を無駄にするだけの結果に終わるリスクがある。お互いに若干の時間やコストをかける価値があるんじゃないだろうか。
(休日の話になりがちで、社員にも求職者にも強制すべきモノじゃない的なやりづらさがあり、企業側視点だとビミョーに推進しづらい面も・・・。)

ほか、学習とは関係ないが、アンマッチを減らすと言う意味では、評判サイトの内容などはある程度参考にできる。『退職検討理由』などはその会社をやめた人間の話であって、いい事書いてある訳がないのだが、そういう傾向があるとわかった上で参考にするのであれば、特に問題ない。

『PG入社したが、PGの仕事をしていない』とか、『スキルシートを偽造』とか。求人やホームページといった会社側が見せたい情報以外の判断基準が手に入るのは大きい。¥1000くらいの課金で評判見放題になるものが多いので、この辺はケチらず利用しよう。入社後に見ときゃよかったなどと言っても、後の祭りだ。


⑤バケモンと自分を比べるな。

元社員が名言残しよったので、一部頂いた。

成長するってことは開墾と農業に似ている。最初は小さな範囲で簡単な作物を育てる。使える農具は鍬と鋤くらい。それでも少しずつ開墾して、いろいろな作物を栽培できるようになる。
よくある失敗が、バケモンみたいなスペックの人と比べて、自信を喪失することだ。インターネットに情報を流している人たちは総じて、開墾スピードが並のそれじゃない。まれに、そういったカテゴリーに含まれるような人が隣りに座ることもある。これは、すごい惨めな気持ちになる。自分はよくて牛犁レベルなのにあとから始めたその人は知らぬ間にトラクター使ってるようなもんだ。でも、その惨めな気持ちと和解できるようになるまでは真正面で受け止めなければいけない。


プログラマーとして伸びる気がない。コピペで生き抜いてやるってんならそれは論外で、歳とって仕事がなくなる前に異業種に行った方が吉だが、そうでないならば、バケモンレベルでなかったとしてもメシをくっていけるぐらいの市場規模はあるので、それは安心していいと思う。プロ野球選手や、プロサッカー選手ほどには厳しい世界ではない。

上のほうでも書いたが、すでにプロの人間の中にも、プロとして続けていけないレベルの人間が結構いる。バケモンに勝てない=椅子取りゲームに負ける ではない。



⑥ITにいるのにいまだプログラム関われてないけどって人。

会社と相談しても特に動きがないならば、これは転職しかないと思う。

よく言われる事だが、プログラマーは歳を取ると仕事が減る。これは、日米・就業形態などを問わずに起こること。この時期のことを考えておかなくてはいけない。IT業界経験しかない人間が、そこそこ歳をとってから異業種でやっていくというのはなかなか苦しい。具体的には年齢制限が比較的ゆるい業務系の市場であっても、35歳くらいまでには設計者相当になっておきたい。

35歳設計者を目差すとして、特に中途でITに入った組にはあまり回り道する時間はないはず。

打鍵テスト、実機の評価、インフラ監視業務、ヘルプデスク、PCのキッティングなど、例外はあるが何年やっても『プログラマー』としてのスキル評価にはなっていない。また、こういった『ロースキル案件』と呼ばれるものは年齢が若い方が良いとされ、30歳を超えてくるとだいぶ苦しくなってくる。
そのタイミングで転職をしても、当然遅い。求人企業からみれば、ただのロースキルの30代だ。
喜ぶのは待機リスクがなくなる現在の所属会社だけだろう。

プログラマーになりたいのにロースキル案件に入っているとしたら、その状況を継続すればするほど、転職市場でモノを言う若さと言う資源を浪費していると言うことになる。
その状況を変えるとして、早ければ早いほど合理的だ。

35歳定年説をはじめ、似たような話はこの業界のいたるところに転がっているわけで、歳を取れば不利となるという認識がそもそもないと言う人は、かなり珍しい。歳を取って詰んでから、覚悟決めて何とかしようと思って、その時他の会社に相手をされなかったとしても、さすがにそれは自己責任の範疇だろう。



----------------------------------------------
その他の記事へは、下記リンク先が記事一覧となっておりますので、そちらからどうぞ。

INDEXへのリンク

If this story triggered your interest, why don't you come and visit us?
アジャイルチームで仕事すると、フルスタックな守備範囲になりがち。
BAMV合同会社's job postings
50 Likes
50 Likes

Weekly ranking

Show other rankings
Like Katsunori Terano's Story
Let Katsunori Terano's company know you're interested in their content