伸ばしたいスキル
2020.04 気持ち
Webサービス開発のうちアプリケーションレイヤーの開発で求められる技術力を中心に伸ばしてきた
middlewareや低レイヤーに関する理解を深めていきたい
無職期間中にやることアイデアに突っ込みたい
2020.05 気持ち
アルゴリズムに入門するだけで1ヶ月かかったので全部やるには数年かかりそう
全部マスターするのではなく以下の手順でやりたい
全体を俯瞰できる知識を身に着ける
掘り下げる領域を決める
あとはその時々の気分や業務で必要なことや関連する事柄を取り入れていく
趣味で基礎、業務で応用をやっていくぞ
ガイド
情報専門学科におけるカリキュラム標準
書籍
【転職エントリ】Googleに入社します
書籍ガイドがメインではないけどだいぶ影響を受けた
コンピュータサイエンスが気になるプログラマに勧める書籍リスト
Webエンジニアが知るべき低レイヤーの技術とその学習方法
低レイヤーを学ぶための技術書をまとめてみる
プログラマが勉強すること
Google の中途採用を受けてオファーをもらった話
実践的低レイヤプログラミング
スキルマップ
Developer Roadmap
お気持ち
どうやってテクノロジーを追いかけていますか?ジュニアソフトウェア開発者として応募したときにCI/CD、クラウドコンピューティング、Dockerとか大量のことを要求されました。もういっぱいいっぱいです。
The Missing Semester of Your CS Education (日本語版)
コンピュータサイエンスで教わらないが重要な事柄
分野別
データ構造とアルゴリズムの学習
プログラミング言語処理系
Web
((Pythonで) 書く (Lisp) インタプリタ)
YARV Maniacs
Rubyソースコード完全解説
本
✅RubyでつくるRuby
Go言語でつくるインタプリタ
コンピュータシステムの理論と実装と一部被っていそう
実践Rust入門
まつもとゆきひろ 言語のしくみ
Rubyのしくみ Ruby Under a Microscope
Compiler
web
🔥低レイヤを知りたい人のためのCコンパイラ作成入門
著者による記事
やってみた記事
セルフホスト可能なCコンパイラを書く
本
ふつうのコンパイラをつくろう
最新コンパイラ構成技法
OS
web
Operating Systems Three Easy Pieces
日本語版
Rustで始める自作組込みOS入門
本
岩波講座 ソフトウェア科学 オペレーティングシステム
コンピュータの構成と設計 第5版
作って理解するOS x86系コンピュータを動かす理論と実装
✅なるほどUnixプロセス
30日でできる! OS自作入門
ゼロからのOS自作入門
30日でできる! OS自作入門よりこちらのほうが良さそう
Linux
🔥[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識
🔥ふつうのLinuxプログラミング
Linuxカーネル2.6解読室
詳解 Linuxカーネル 第3版
Unix
✅Unixという考え方
はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ
詳解UNIXプログラミング 第3版
Computer architecture
本
✅プログラムはなぜ動くのか
2012年ぐらいに読んだが覚えていない
✅CPUの創りかた
たのしいバイナリの歩き方
ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ第5版
web
✅2ヶ月間で低レイヤを学ぶためにやったこと
✅JavaScript 製ファミコンエミュレータを公開しました
Computer Science全般
web
Open Source Society University
コンピューティングの基礎と高速化入門
モチベーション記事
✅プログラマだったら当然知ってるよね?という知識一覧
✅コンピュータサイエンスの基礎を学ぶと何ができるようになるのか
✅コンピュータ・サイエンスやりたくなって1年ちょっとコツコツやってる/やったことたち
✅プログラミングは総合格闘技である(前編)
情報科学科で学びコンピュータサイエンスを極める
東京大学理学部情報科学科のカリキュラム
Map of Computer Science
CS 30トピック
本
🚧コンピュータシステムの理論と実装
入門 コンピュータ科学 ITを支える技術と理論の基礎知識
Webを支える技術
32ビットコンピュータをやさしく語る はじめて読む486
🚧みんなのコンピュータサイエンス
ネットワーク
本
🔥マスタリングTCP/IP 入門編 第6版
web
Low-Level Academy
計算理論
本
アンダースタンディング コンピュテーション
数学の学習
暗号理論
データベース
web
Database basics: writing a SQL database from scratch in Go
✅Let's Build a Simple Database
趣味で作っている人の話
DBMの設計と実装 その0 全体の計画
The Internals of PostgreSQL
セキュリティ
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版
セキュリティエンジニアへの道:私のキャリアチェンジ物語
ハッキングという言葉に憧れるエンジニア達に贈る Hack the Box 入門
ハッキングラボの作り方
統計学
統計検定
For job interviews
System Design
Learning English
Machine Learning
GoogleのML Study Jams
CourseraのNg先生のコース
DataCampの機械学習のコース
関数型プログラミング言語
OCaml
OCaml tutorial
プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで〜
Cloud Computing
クラウド設計パターン
Microsoft, Azure
Google Cloud ソリューション
GCP
AWS サービス別資料
AWS
ラーニングパスを活用して効率的に学び始めよう !
クラウドエンジニア(AWS)ロードマップ2021
他人の方法論
エンジニアはどのようにして技術を学べば良いのか
身近な成果に結びつけられる技術から学び始めるというのは、最初の一歩としては有効と考える一方で、いつまでもそうした学び方だけをしていると、現場ロックインと呼ばれる状態に陥ることが多い印象
他者が知っていて自分は知らないという状態を極端に気にし過ぎると、学びの目的や優先順位を考えることなく、ひたすら他者に少しでも追いつくことだけを目的とした情報収集に終始してしまう
どんなプログラミング技術の学習に投資すべきか考える時にやってること
枝は少ない方が好ましいと考えています。枝を減らすコツは「別の技術で同じものを作れる」状況をなくすことです。例としてはRubyでもPythonでもWebサーバーは作れますが、SwiftでないとiOSアプリは作れないので、増やすべきはSwiftです。
ohbarye.icon アルゴリズムとデータ構造やコンピュータシステムなどの基礎領域に不足を感じる自分は記事中のXXエンジニアを選ぶ段階ですらないと感じてしまう