独学プログラマーの闇落ち

今の気分を画像で表現したら,こんな感じ?

闇落ちした上に滅多差し.

「未経験でも数ヶ月でエンジニアに!」とかいう記事をよく見るわけで。
初心者向けweb開発記事のブックマーク数を見ていても人気なのが目に付く。

やはり何だかんだで「面白そう!」とか「こういう仕事やりたい!」っていう人が沢山いるんだなと実感する。

たんに薄給激務で離職率が高すぎて若者のプログラマ離れが進んだ結果,ブラック企業がそういう宣伝を自作自演で流してるのかと思ってたけど.

真っ当なプログラマだったら「未経験から,独学でも3ヶ月で一流のプログラマーになれる」なんて絶対に言わないと思う.適切な指導者の下で指導をうけられたとしても,早くて三年かなあ.

プログラマのためのサバイバルマニュアル New Programmer's Survival Manual: Navigate Your Workplace, Cube Farm, or Startup (Pragmatic Programmers)
A language - or any skill for that matter - takes about 10,000 hours of dedicated practice to reach true competency.(中略) This works out to about ten years for most people.

http://d.hatena.ne.jp/JavaBlack/20120505/p1

知識0からの完全な独学だとすごく厳しい.分からないことだらけで挫折して普通.なのであんまり気にしなくて良い.

「ある程度」のレベルに達すれば、必要な知識を持ち合わせているから解決方法を推測して円滑に進められるようになるんだろう。

とりあえず全くの初心者が全体像を掴むのにはこの本をお勧めしている.

プログラマが知るべき97のこと

プログラマが知るべき97のこと

ただし,コレ読んでもプログラマにはなれないので念のため.


Web限定で話題を流し読みするだけならコレも便利だろう.

WEB+DB PRESS総集編[Vol.1~84] (WEB+DB PRESS plus)

WEB+DB PRESS総集編[Vol.1~84] (WEB+DB PRESS plus)

2年おきくらいで新しい版が出るようだ.


それ以外については様々.プログラマといっても,色んなプログラマがいるので必用とされるスキルもバラバラなのだ.

言語は何にするか,ツールは,環境は,トラブルのあった時の解決法,基本的なデバッグ手法.何をどの順番でどこまで勉強するのか,そのためにどんな参考書を選べば良いか.経験者がいれば聞けば一瞬ですむことも,初心者はどこから手を付けて良いか分からないことも多い.

ネットでぐぐってわかるものもあるのだが,古かったり間違ってる情報も多い.ある程度の経験者ならその中から正しい情報だけを取捨選択して参考にするのだが,これも初心者には無理.公式マニュアルが最も正しい場合が多いけど,日本語化されてるとは限らず,英語でスラスラ読むのも初心者には無理だろう.仮に英語に堪能だとしても,プログラミング初心者だと専門用語が分からない.

ソースを読めという意見もあるが,初心者には良いソースと悪いソースの区別が付かない.ネット上に転がっているものはもちろん,書籍に載ってるサンプルコードでも悪い例も多い.*1 熟練者ならその中からどの部分を真似るべきか或いは真似すべきでないか判断できるが,初心者にはムリだ.アルゴリズム集の他の言語で書かれたサンプルコードを,自分の使ってる言語に移植した上で,必用なエラー処理を追加するのも初心者にはムリ.



とりあえずは何か言語を一つ,エディタ*2 の他に,シェルとコンパイラなど最低限のツールからかなあ.*3 最初はいらないけど,アルゴリズムとデータ構造もいずれは勉強すべきだし,その他にも山ほど.キーワードについては上記書籍を見れば一通り載ってると思う.

プログラミングの基礎はできてるがJavaの初心者だったらこの辺りをお勧めするのだが,プログラミング自体が未経験の人だと,これらの入門書でも消化不良を起こすと思う.上記のリストに入ってる本を読んで理解できるようになるまでだけでも,1年はかかるんじゃないだろうか.独学だともっとだ.


また,例えばこういう「練習問題」を,いくつかやってみるのもいいかもしれない.

アルゴリズムパズル ―プログラマのための数学パズル入門

アルゴリズムパズル ―プログラマのための数学パズル入門

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問

プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問

ナノピコ教室―プログラミング問題集

ナノピコ教室―プログラミング問題集

続 ナノピコ教室―プログラミング問題集

続 ナノピコ教室―プログラミング問題集

それで自分にむいてないと思うのなら,こんなアコギな業界から足を洗うに早すぎると言うことはない.

http://b.hatena.ne.jp/entry/anond.hatelabo.jp/20160323210254

  • id:sawarabi0130 未だにそこまでしてこのブラック業界に入りたがる人がいるのか?悪いことは言わないから他を探せ。
  • id:babelap ベース知識の集積がある一定を超えないと何もできない、みたいのはある。つか知識の集積方法で躓いてるみたいなのも初期はありがち。よいメンターを見つけるのが最短なんだけど、うーん
  • id:bettychang 大学や専門学校、スクール、セミナーとかいっぱいあるのはそれなりに難しいジャンルだからだし、情報さえ得られればっていう認識はよくない。英会話とか楽器とかに近いので、情報は大前提だけど、トレーニングが重要
  • id:munioka303 独学では道路交通法とか標識しか学べない。本気で習得するためには実車の実技が必要でそれはプロの現場に入らないと経験できない。独学で作れてる人は、よくよく見ると独学で作れる程度のものを作れてるだけ。
  • id:chintaro3 みんな最初はそんなもんだ。その調子でどんどんやればいい。問題なのは「初心者のイメージする理想の成長速度が早すぎる」っていう事の方。それには何の根拠もない
  • id:kumasukez 環境構築が一番面倒だし凝りだしたらキリがないんだよなぁ

「環境構築は必要最低限でいい」「この言語をやるには,最低限これとこれとこれを入れればなんとかなる」みたいなのも,初心者には判断の付きにくい部分.だから指導者がねー.

  • id:cabinotier 道具は自分の使いやすいモノを使えば良いのであって、流行ってるモノが自分に合わないのに無理に使う必要は無い。そんな修行は単なる無駄。エディタなんて最初はメモ帳でも良い。不満を感じたら解決策を探すんや

概ねその通りだけど,その判断も初心者には難しいなあ.メモ帳が許されるのだって,本当の最初のさわり部分だけで,ちょっと進んだらマトモなツールを覚えた方が結局は近道だったりするし.

「プログラミング覚えたいけど」で書いても,普通は誰も見てくれないと思うんだけど.ステマ狙いなら,もっと炎上し易いネタにすべきじゃね.

オマケ

ヨーダ様が言いました.
スター・ウォーズ ブラックシリーズ ベーシックフィギュア ヨーダ in ダゴバ 全長 約 10cm 塗装済み 可動フィギュア
「ルーク、フォースを使え。」
Forth: Quick-Start Introduction Forth: An Application Approach Forth: The Next Step (Small Computer Series) FORTH Programming 標準 FORTH FORTH入門 (I/O books)

オマケ2

闇落ちと言えばダースベイダー.闇落ちプログラマ向けのネタを探してたら,へー,こんなのあったんだ...

スター・ウォーズ ダース・ベイダーUSBハブ

スター・ウォーズ ダース・ベイダーUSBハブ

*1:一部はスペースの問題などが理由.経験者なら見れば分かる程度のことなのに,過剰な解説やエラー処理が入ってると,かえって読み難くなるだけだから.

*2:EmacsVIMのような高機能なエディタはテキストファイルの入力と編集に便利に使えるので,一つ覚えておくとプログラミング以外でも役に立つ.いきなり全機能を覚える必要は無いから,ファイルオープン/新規作成,カーソル移動,編集,保存,終了くらいから必要に応じて覚えていけばなんとかなる.
全機能を覚えようと思うと大変だが,最低限の機能に絞って使う限りは手間も利便性もメモ帳にくらべて大差ない.メモ帳なみの機能で使い始めて,慣れるに従い必要に応じて一つずつ新しい機能を覚えていけば良い.

*3:この「最低限のツール」部分も言語や時代によって変わったりするんだ.