SC(非公式) Advent Calendar 2018 4日目!
文系システムエンジニアのkurimegです。
なんとなくアプリは動いたけど、
「どういう仕組みで動いているのかわからない」
「これから何を学べばよいのかわからない」
こんな壁にぶち当たったときに実践して、今も役立っているなと思うことをまとめました。
自分に合う学び方は人それぞれだと思いますので、少しでも何かのヒントになればと思います!
学び方を学ぶ
総合職で入社した新卒がクックパッドでエンジニアになるまで
[人は一ヶ月でエンジニアになれるのか - 詳細解説]
(https://www.slideshare.net/livesense/ss-46078743)
[とあるエンジニアの技術勉強法 (インターン学生向け)]
(https://www.slideshare.net/iwashi86/ss-58640407)
[学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス]
(https://www.slideshare.net/livesense/web-49772012)
こちらの資料を参考に、「まず何をどのように学んでいくか」以下のような方針を立てました。
- どのような分野があるのか、全体像を把握する
- 各分野の理論を学び、実践する
どのような分野があるのか、全体像を把握する
「アプリがどのように動いているのか」、「学ぶべき分野は何があるのか」を知るために以下を参考にしました。
[コンピュータサイエンスのカリキュラム]
(https://www.is.s.u-tokyo.ac.jp/appli/curriculum.html)
[Webで学ぶ 情報処理概論]
(http://www.infonet.co.jp/ueyama/ip/)
[コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎]
(http://amzn.asia/d/2V2kkyB)
[プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識]
(http://amzn.asia/d/50LTSWp)
より詳しく知りたい場合…
コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方
これらを読み終えてから…
-
歴史を知ることで、なぜその技術が生まれたのか分かった
何を解決するために生まれた技術かを知ることで、使いどころや似たような技術との違いが分かりやすくなりました。 -
アプリが動くイメージが具体的になった
自分の書いたプログラムがコンパイルされて、機械語になってハードウェアの領域に入って…とアプリが動くイメージが具体的になりました。 -
知識のインデックスができた
今までばらばらだった知識がどの分野の知識なのか分かることで、自分の頭の中にインデックスができ、新しい知識も覚えやすくなりました。
各分野の理論を学び、実践する
知識も大きく2つに分かれると思います。
- 理論的 主に書籍から
- 実践的 主にTwiiterなどWeb、勉強会から
実践的な知識だけあっても、応用が利かないし、
理論的な知識だけあっても業務では役に立たないと思います。
理論
私はこちらを参考に、難易度が低いものを各分野満遍なく読んでいきました。
[新卒ソフトウェアエンジニアのための技術書100冊]
(https://techlife.cookpad.com/entry/2015/03/31/093000)
ただ読むだけではなく、要約して、実際にアプリを作ってみたりしながら(題材としては有名なアプリのクローンが良いのかなと思います。)、理解を深めていきました。
中でもこちらは早いうちに読んでおけば、それぞれの概要がつかめたなと思いました!
[コーディングを支える技術]
(http://amzn.asia/d/3Eosalj)
[Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus) ]
(http://amzn.asia/d/gnqlkWb)
実践
全体像がつかめて、基礎理論が理解できたら、
その後は自分の好きな分野を学んでいけば良いと思います。
むしろ、自分の好きな分野を見つけるための全体像把握かなと思います!
私は、色々学んでいく中でフロントエンドが好きだなと感じたので、
そういった勉強会に行ったり、Twitterのアカウントをフォローして通勤時間に最新の情報を見るようにしています。
最後に
言葉にすると当たり前のようですが、
「学ぶべきものがありすぎで何から手を付けたらよいのか分からない!」状況だった私にとって、ここであげた資料は本当に助かりました!
まだまだ深められていない分野はたくさんあるので、これからもどんどん吸収していきたいなと思います!