未経験からエンジニアとして働くようになるまでにやったこと、思ったこと

以前に[ロシアの天才ハッカーによる【新人エンジニアサバイバルガイド】](http://qiita.com/jacksuzuki/items/b2fa6b44962e73a53d08)を読んでから僕も退職するときに何か残そうと思っていた。その時が来たので「今までの振り返り」とこれからエンジニアを目指す人の役に立てればと思ってこの記事を書きます。

###この記事の対象者
- ～半年未満のエンジニア(これから目指す人)

未経験からエンジニアを目指して今までやったこと、感じたことを以下にまとめる。

##情報収集をする(モチベーション)
なぜプログラミングなのか、なぜITなのか、人工知能が普及して仕事はなくなるのか、みたいなITに関するサイト、記事をひたすら漁っていた。
その中で世界的に有名な企業は大体IT企業が多かったり創業者がプログラマ出身の場合が多かったりを知ったりして漠然と自分が目指す業界の全体像をつかもうとしていた。
ちなみに僕はこの段階でPCすら持っていなかった。

##オンライン学習の利用
[ドットインストール](http://dotinstall.com/)、[Progate](https://prog-8.com/)、[パイザラーニング](https://paiza.jp/works)、[Schoo](https://schoo.jp/guest)とか無料でプログラミングの基礎を学べるサービスはいっぱいある。
僕はプログラマを目指した時から勉強法をひたすら調べ続けてた。(お金出してプログラミングスクールに入るのが嫌だった)
入社する前にドットインストールとProgateのHTML、CSSは一通りやっていた。

##プログラミングは書かないと覚えられない
漢字検定試験の時に「書き」が出来なくてひたすら間違えた字を紙に書いていたことを思い出した。
プログラミングも同じで、動画だけ眺めててもコードが書けるようにはならなくて、一定量手を動かす事が必要だと感じた。もちろんセンスや元々の適正などもあるが努力すれば必ずできるようになると実感した。

##まずはググろう
ググり力は非常に大事。
研修中に先輩エンジニアに質問しに行くと必ず言われていた『ググった？』
最初の頃はgoogleの検索結果の下に「このページに〇回アクセスしてます。」が一面になるまでググっていたり、「あれ、これさっき見たし」の繰り返しだった。
もちろんググってても分からない時は誰か聞かなければいけない訳で、重要なのは何がわからなくて、どうゆう風にググってこのサイト見たけど解決しなかった(分からなかった)と言えるかが大事。

##休みの日だけ勉強しても期待した効果は得られない
まったく喋れない人が週1で英会話通ったって英語が喋れるわけないとよく英語学習本に書いていたりする。
プログラミングも一緒だと思う。
365日常にコードを書いて技術書読んで勉強しろとまでは言わないが一日1、2時間でもやるかやらないかでは全然違う。
僕は最初の半年くらいは毎日終電までPCに向かって(業務後の学習)、電車の中でも技術系の記事を読んで勉強していた。

##技術書を読む
最初はオフィスにある技術書から読んだ。
オフィスにある技術書には意味がある。先輩エンジニアがいいと思うから置いてる訳で、それに目を通さないのは非常にもったいない。
しばらくたってからオフィスの書籍に目を通すとほとんどの箇所にメモ書きや折り目がついてて、「やっぱり読んでるんだな～」と実感した。
もちろん最初の頃は既存のカリキュラム(研修)も重要だがエンジニアとして技術書に親しむことは非常に重要。
「お前は受験生か」てくらいに予備校生が持ってるようなプラスチック鞄に技術書を5冊くらい入れて持ち歩いてるやつもいたが、別にそこまでしろとはいわない。
最近話題のドラマ「逃げるは恥だが役に立つ」のヒラマサさんもこんだけ本を読んでる。
http://katamuki.hatenablog.jp/entry/2016/11/29/013626
~~ガッキーみたいな美女を雇いたいならこれくらい技術書を読もう~~


##勉強しなければいけない分野は腐るほどある
社内のカリキュラムを一通り終えて来てくると徐々に勉強しなければいけない分野が見えてくる。
会社のメイン言語はPHPだったのだが、PHPだけではダメだ。最低限のHTML、CSSは出来るようになろう。
ターミナルやコマンドプロンプト使ったり、チーム開発をするためにバージョン管理やタスク管理ツールを使ったりもする。
僕は基礎カリキュラムを終えた頃に訳あって先輩エンジニアに社内のサーバー周りの設定を教えてもらったんだが、知らない事だらけだった。
改めて「ああ、僕はまだ入り口に立っただけなのか」と実感した。
翌週には自分でVPSを借りてサーバー構築の勉強を始めた。

##GitとGitHubは必須
###状況
初期カリキュラムがGitHub上でブランチ切って進める形式だったので、ざっくりな使い方と`add`、`commit`、`push`を教わる。最初の知識としては「アドしてコミットしてプッシュするんだろ」程度。
もちろんカリキュラム以外どうやって使うのかもわからず。
そして業務レベルでの必要性に気付いた時は社内のエンジニアは僕一人だった。

###やったこと
しょうがないので[スライド](http://www.find-job.net/startup/7-git-slides)を見まくった。そんでみんな大好きドットインストール[git入門](http://dotinstall.com/lessons/basic_git)をやる。
[Gitが、おもしろいほどわかる基本の使い方33](http://www.mdn.co.jp/di/articles/3421/?page=1)を購入。ざっと目を通してCUIでの操作とGitHubでのホスティングを知りたかった事に気付き(これはGUIでの操作とBitbucketがメイン)、[GitHub実践入門](https://www.amazon.co.jp/GitHub%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-~Pull-Request%E3%81%AB%E3%82%88%E3%82%8B%E9%96%8B%E7%99%BA%E3%81%AE%E5%A4%89%E9%9D%A9-PRESS-plus/dp/477416366X)を購入。

あとは実践あるのみ。詰まったところはググれば大体理解できた。


##アウトプットをする
GitHub,Qiita,blog,Twitterなんでもいいからアウトプットをしよう。
最初はカリキュラムでいっぱいいっぱいかもしれないが、カリキュラムで学んだことを日報感覚で書くのもいい。
半年後、一年後、アウトプットしてるやつは必ず差がつく。業界の有名人やあの人よくカンファレンスで見るな～て人は大体アウトプットをしてたりするものだ。


##チュートリアルは1回で終わらせない
受験勉強でも参考書を3周しました！みたいな人もいると思う。大抵1回やって満足してる奴は理解していない。
重要なのは見ながらコード書いても理解して書けるようにならないと意味がない。
最初の頃はいろんなパターン(別サイトとか)のチュートリアルを最低3回くらいはやっていた。

 
##英語のドキュメントを読む勇気
最初のうちはググってても日本語の記事やサイトから見ていくと思う。
しかし情報量は圧倒的に英語の方が多い。
エラー文をググったりしてるといつか日本語の記事が無いときがやってくる。
そんな時に検索結果に出た英語のタイトルをクリックできるかが鍵となる。
ある程度の高みを目指すなら英語は避けて通れないので勉強しといたほうがいい。


##勉強会に行く
勉強会やイベント、カンファレンスに出てみて外の世界を知るのは重要だ。
最初は訳の分からない言葉ばかりかもしれないけど、自分のレベルを知れるし業界の動向にも触れられるし、モチベーションアップにもつながる。
あの単語知らないから後で調べてみよう(触ってみよう)とか

##資格はいらなかった
語弊を防ぐために先に言うが資格がダメなわけでない。
大学でコンピューターサイエンスを学んだ人は大体基本情報持ってたりして、もちろんそうゆう人達はすごい。
臨む姿勢がどうゆう意図なのかが重要だと思う。
全体の知識を網羅するためとか再確認するためとかならいいと思うけど、会社で決まってるから、資格取ったら給料UP、就職(転職)や面接に有利だからとか、資格を取るための勉強になってる人はあまりよくないと思う。
僕は世間一般的な大学でコンピューターサイエンスを学んで新卒でエンジニアデビューしたようなパターンでは無く、20後半になってからエンジニアを目指したタイプなので資格に頼るよりも実践を優先した。
※一人前になってある程度落ち着いたら基礎知識の再確認として受けてみようかな位。


##エンジニアになってからの情報収集

[POSTD](http://postd.cc/) 
>海外で話題になっているプログラミング関連のブログ記事やニュースを翻訳し、日本のエンジニアに向けて配信するメディアです。

[TechCrunch](http://jp.techcrunch.com/)
>スタートアップ企業の紹介やインターネットの新しいプロダクトのレビュー、そして業界の重要なニュースを扱うテクノロジーメディアです。

[ITmedia](http://www.itmedia.co.jp/)
>テクノロジー関連のニュース及び速報を中心に、レビューや特集記事を掲載。

[ForbesJAPAN](http://forbesjapan.com/)
>世界的な経済誌であるForbesの日本版として、世界中のビジネスニュース、ランキング、テクノロジー、リーダーシップ、アントレプレナー、ライフスタイル、投資、金融ニュースを配信しています。

[Qiita](http://qiita.com/)
>プログラマのための技術情報共有サービスです。 

etc

###技術ブログ
[【保存版】エンジニアが見るべきテックブログ一覧（2016年編）](http://creive.me/archives/8596/)

###Slack
上記のサイト、技術ブログはもちろん言語別の情報など、ここのslackグループでRSSみたいに全部見れる
[モヒカン](http://qiita.com/kotakanbe@github/items/32cf4eb3de1741af26fb)

###twitter
[【20選】エンジニアならフォローしておきたいTwitterアカウントまとめ](https://geechs-magazine.com/tag/lifehack/20160825_3)

###勉強会
[connpas](https://connpass.com/)
[dots](https://eventdots.jp/)

###Podcast
[rebuild.fm](https://rebuild.fm/)


大体こんな感じでしょうかね。これは僕がタイピングしか出来ない奴だったところからエンジニアとして働けるようになるまでのまとめであり、完全に独断と偏見です。参考に程度にどうぞ。