最近海外のプログラミング関係の動画でこれらの用語が出てきて、大事な視点だなと思ったので紹介したいと思います。
トップダウン、ボトムアップとは
日本語だと経営手法の用語で、トップダウン=「上層部が意思決定を行う」、ボトムアップ=「下層部の意見を上層部が汲み取って意思決定を行う」という意味で使われることが多いようですが、もともとの意味は トップダウン=「抽象から具体」、ボトムアップ=「具体から抽象」 という意味です。
プログラミングの勉強法に当てはめると
厳密な定義は無いですが、プログラミング界隈においては、トップダウンの勉強法は、ドキュメント、本、動画などすでに言語化された情報をインプットすることで、ボトムアップは逆に手を動かして学んでいく方法があてはまると思います。
利点・欠点
トップダウンの勉強法の利点・欠点
○ 技術の全体像をすばやく把握できる
○ その技術が「どう動いているか」を理論で知ることができる→実際に動かしてエラーが出た場合も何が原因なのか気づきやすい
○ その技術が生まれた背景、プログラミング界隈におけるその技術の客観的な位置付け等の周辺知識を知ることができる→納得した上でその技術を使える
☓ 机上の空論になりがち
☓ 体験を伴っていないと忘れやすい
ボトムアップの勉強法の利点・欠点
○ 実際に体験することでそのプログラムの動きを頭に刻みつけることができる
○ 教科書には出てこないエラーなど生の知識を得られる
☓ 時間がかかる
☓ 細かい業務知識の集合になりがち→他の現場や技術で再利用しにくい
バランスのいい勉強法
エンジニアとしてその現場や技術界隈で使える人材になるためにボトムアップの知識が必要なのはもちろんですが、長期的視点で見るとトップダウンの知識も同じくらい大事です。
実際の開発の現場ではボトムアップの知識が積み重なることが多いので、プライベートの時間や社内勉強会を通じてトップダウンで学ぶ時間を意識的に設ける必要があるのかなと思います。
学びのスピードでいうと 最初にトップダウンで全体像を把握 → 実装してボトムアップの知識を獲得 が効率がいいということでブートキャンプでも使われているようです。新人教育にも使えそう。
私も未経験でエンジニアになって4年間ボトムアップの知識を蓄えることに奔走してたのですが(なんとなくそれが「エンジニアに必要とされる力だ!」と思って)、最近になってただ自分の専門分野だけアホみたいに知っててもエンジニアとして伸びしろが無い気がして軌道修正中です。
ということでトップダウンの勉強法とボトムアップの勉強法の紹介でした。なんとなく勉強法でモヤモヤしてる人の助けになれば幸いです。