技術書を用いた学習方法について悩んでいます。
自分は今学生であり、エンジニアとしては初心者です。それゆえ、いろいろな技術書を読み漁りながら知識をつける機会が多いです。最近、自分の技術書の読み方よりも吸収効率がより良くなる読み方があるのではないかと思っています。もちろん、人によって適した読み方・勉強方法があることは理解しています。その上で、エンジニアとしての先輩の方々の技術書を用いた勉強方法を知りたいと思います。教えていただいた方法の中から自分にも適していそうなものがあれば、その方法を試しに使わせていただきたいです。
現在の自分の技術書の読み進め方
技術書によって勉強方法が変わるので、すごくざっくりで3種類に大別させていただきました。
- ハンズオン形式の技術書
参考書を読み進めながら手を動かして実装をしています。読み終わった後は、気になる箇所のみを自分のプロダクトに反映させてみるなどのことをしています。
- 知識が文章形式で書かれた技術書(内容浅め or 難易度低め)
特にメモを取ることもなく、一気に読んでしまいます。
- 知識が文章形式で書かれた技術書(内容深め or 難易度高め)
各章ごと(章のボリュームが大きければ節ごと)にまとめを作り、自分のメモにまとめています。
学習の目的
自分が学習を通して満たしたい最大の目的は、学んだ知識が定着して、自分で好きに使えることになります。そのために復習が大切だとも思っているので、復讐の頻度なども同時に教えていただけると嬉しいです。
初心者ということもあり、そもそもの部分で間違えている部分などもあるかもしれません。その点も指摘していただければ幸いです。
御回答のほど、よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/15 01:01
2021/07/15 01:19
2021/07/15 01:22
2021/07/15 01:36
2021/07/15 03:13
回答7件
0
そもそもの部分で間違えている部分
技術書を読めば実力が身に付くという考え方があるように見える。読むのはあくまで知識のインプット。適切なアウトプットができないと何の意味もない。
正直、技術書なんてものはある程度読めるようになれば「どの情報がどこに書いてあり、どんな場面で使えそうなのか」を知っているぐらいでいい。実際にモノを作るときにはどうせ調べながらやる。
経験の中で適切な技術を組み合わせるための試行錯誤をした方が、実践的な知識は早く定着する。
本に書いてあることを自分が作りたいモノに役立つかどうか、その優先順位もわからない中で全部覚えようとするのは、英語の勉強で辞書をAから順番に暗記するようなもん。
ここでいう「技術書」は「入門書」を含まないので、入門レベルは当然ちゃんとやってる事が前提だけども。
投稿2021/07/15 02:23
編集2021/07/15 05:06総合スコア8947
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
自分が学習を通して満たしたい最大の目的は、学んだ知識が定着して、自分で好きに使えることになります。そのために復習が大切だとも思っているので、復讐の頻度なども同時に教えていただけると嬉しいです。
使ってたら → そのうち定着
という結果論で良いんじゃないでしょうか.
よって,復習の頻度とは「使うとき」ということになるのでは.
投稿2021/07/15 03:09
総合スコア11996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/15 03:18
2021/07/15 03:30
2021/07/15 03:37
2021/07/15 03:58 編集
2021/07/15 05:05 編集
2021/07/15 04:10
2021/07/15 08:00
0
- 本は大事ではない
資格試験を目指すのであれば別ですが、プログラムのできるプログラマーになるためには、本を読んで覚えることは時間の無駄である場合が多いと思います。
私はPython歴5年(それ以前は一日だけ使ったことがあります)で、pandas歴8ヶ月ですがPythonやpandasについて、市販の書籍や電子書籍を読んだことはありません。これはそれまでの他言語での知識と経験がベースになっているので一般的に言えるとは思いません。
その経験では、いくつかの言語をちゃんと習得していれば特定の言語の入門書は読む必要がない場合が多いです。
ただし、最初三個ぐらいまでの言語は、あまり似ていないものを選んで入門書を通読しておくことは大事です。
- 覚えない方法を覚えましょう。
理解すべきものと記憶すべきものは区別して、必要に応じて調べことのできるものは覚える必要がありません。覚えておくことは、機能の存在とそれを調べる方法です。
言語を学ぶ場合、文法、データ構造と制御構造、実行論理、ライブラリの四つが大事です。
入門書は、プログラムの一般論、データ構造と制御構造の一部、ライブラリの一部を適当にまとめたものが多く中途半端です。
個々の言語の文法はわからなくなったら調べればよいので覚える必要はありません。
文法をしっかり理解するために学生の間にはBNFをちゃんと覚えておきましょう。これがわかるようになれば、あらゆるコンピュータ言語について公式ページとかにある文法定義が読めるようになります。
つまり、学生時代の間は、単なる知識ではなく、知識を理解・獲得するためのメタ知識を身につけましょう。
データ構造と制御構造は、全てを覚える必要はありませんが、良く使われるもの(1~3割)は覚えておいた方が良いです。残りは必要に応じて調べればよいので覚える必要はありません。
実行論理は通常の書籍には書いていないものが多いです。一番良いのはその言語処理系のソースファイルを読むことですが、一般のプログラマになるためにはそこまで必要はないでしょう。C言語などであればオブジェクトの属性、静的リンクと動的リンク、OSインタフェースぐらいがわかっていれば十分です。Pythonのような言語だと、バイトコードとその処理ぐらいがわかっていた方が応用が利きます。
ライブラリは重要ですが覚える必要はありません。調べることができるWebサイトを知っていて必要に応じて調べればよいでしょう。
- 良いソースコードたくさんを読みましょう。
市販本に書かれているソースコードは玉石混交です。
言語処理系やそのライブラリのソースコードがオープンになっているものがたくさんあるので、そういうものを読みましょう。
- 自身のパッションを維持しましょう。
やりたいことをやり、プログラミングを楽しみましょう。仕事に就くと楽しくないプログラミングをしなければならないこともあるでしょう。そのときに、昔やった楽しいプログラムはあなたを支えてくれるでしょう。
投稿2021/07/16 00:29
総合スコア24670
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
目的をもっと明確にしてみましょう。
「学んだ知識が定着して、自分で好きに使えること」という文面だけを見ると、プログラミング界の全知全能を目指しているようなものにしか見えません。
全知全能を目指すということはすなわち無限大の知識が必要ですが、それでは心身が疲弊するほど物事を覚えなくてはいけなくなります。
そもそも、プログラミングの勉強方法を知る必要はあるのでしょうか。その必要があるということは、覚えなければいけない知識がたくさん存在するということです。
そもそも、それほどの量の知識を覚える必要はあるのでしょうか。いえ、大抵の場合その必要はないでしょう。
例えば、プログラミングを覚える目的が「Webサイトを作ること」なのであれば、Webに関連する技術やWeb上で動作する言語に関する知識だけを得れば良いのです。「ゲームを作ること」なのであれば、ゲームを作れる言語やツールが何かを洗い出して、選定して、それだけを覚えれば良いのです。
そのようにして目的に沿った知識だけを覚えれば、目的が漠然としたままの状態と比較して覚えるスピードが段違いに変化します。
また、知識自体を無理に覚える必要はありません。それよりは知識が書かれている場所を覚えることが重要です。
例えば JavaScript を学習したいのであれば、JavaScript の言語仕様自体を覚えるよりも JavaScript の言語仕様が書かれた信頼のできるドキュメントがどこにあるかを覚えておくことです。
そうしておけば、知識自体を覚えていなくてもその場所を見ながらプログラミングすることができます。
長々と書いてきましたが、つまり、必要な情報だけに絞ればプログラミングで覚えておくことなんて実はあまり存在しないということです。
そのように考えの方向性を変えてみると、効率良く(楽しく)プログラミングを覚えることができますよ。
投稿2021/07/15 04:06
編集2021/07/15 07:37総合スコア2663
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/15 04:11
2021/07/15 04:23
2021/07/15 04:45 編集
2021/07/15 04:44
2021/07/15 04:56 編集
2021/07/15 04:57
2021/07/15 05:04
2021/07/15 05:12
2021/07/15 05:15 編集
2021/07/15 05:16
2021/07/15 05:22
2021/07/15 07:23 編集
2021/07/15 05:41
2021/07/15 05:54
2021/07/15 07:19
0
学んだ知識が定着して、自分で好きに使えることになります。
う~ん、目的が漠然としているのが良くない気がします。他の方のアドバイスと重複しますが、なにか作ったり、実践するのが一番の近道だと思います。手を動かしてみて分からないことがあれば書籍なりWebサイトで調べたりするのが一番定着すると思います。
学生さんなのであればインターンに参加してみるのも良いかもしれません。もしくはプログラミング関係のアルバイトを初めて見るとか。
「実践する」というのを念頭に頑張ってみてください。
投稿2021/07/25 01:28
総合スコア55
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
これを参考にしてください。
上記ページにも書いたように、『プログラミングは単に、人間が手作業でやっていることをシミュレーションしているだけ』です。
歴史を考えるとわかるはずです。
という事は、『実際に仕様書を書く』とか『実際にソフトを作る』とかのような実践が必要なはずです。
というか、そもそもそういう問題( 暗号解読とか ) をやるために、機械にさせるために命令するのがプログラミングですから。
なので入門書や技術書だけを読んだだけでは意味がありません。
実際に仕様書を作ったり、プログラムを組んだりとかしてやってみないと意味を成しません。
おそらく質問者さんのやっていることは、
『逆上がりができる本』とかみたいなのを読んで習得した気になっているだけじゃないかなと。
普通、相当な運動センス(一目見ただけでオリンピック選手のトリッキーなプレイを再現できるとかのようあ) が無いと無理なはずです。
普通の人や私みたいな凡人以下だと、実際に鉄棒を使ってコツをつかむとかみたいなことをしないと覚えられません。
私の場合は、とりあえず基礎部分をサラッとやって、『どういう概念があるか』とかを理解する。
これをしないとそもそもどんな道具があるかさえわからないからです。
かといって入門書とかを何周もする必要はありません。
名称や概念を理解して、『調べれば使える』程度でいいです。
そして実際に設計からやっていく。
仕様書の書き方に関する技術書であれば、ざっと読んで実際に作ってみるとかですかね。
実践あるのみ。
投稿2021/07/15 08:10
総合スコア4962
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。