サイバーウェーブの中井です。僕の経歴についてはこちらで詳しくまとめられているので、読んでいただけると嬉しいです!
今回のブログでは、未経験エンジニア(中井)が実務をしていく中で見つけた僕なりの勉強方法についてご紹介できればと思います!
この記事を書こうと思ったきっかけ
小説などの本は少し読みますが、難しい言葉を使った本は苦手です。今でも調べたサイトが専門用語ばかりだと「なんでこんなにカタカナとか難しい用語が多いの!!」とよく思っています。
また、僕は記憶力が悪く、神経衰弱など記憶系の遊びがとにかく苦手で、一度勉強したことをなかなか思い出せませんでした。学生の時は何度も紙に書いて暗記していましたが、やはり暗記科目は得意ではなかったです。
そんな僕でも、今では調べたサイトの意味が少しわかるようになり、開発業務に携わることができています。
多くの人が「専門用語がわからない」「勉強しても覚えられない」という悩みを抱えていると思います。少しでも力になれればと思い勉強法のブログを書かせてもらうことになりました。
お断り
勉強法には人それぞれ「やりやすい勉強法」というのがあると思います。「覚えるまで紙に書く」という人もいれば、読んだだけで覚えられてしまう人、覚えたい場所を画面キャプチャのように記憶する人など、サイバーウェーブでも色々な人がいます。
プログラミングの勉強のためには、皆さんにあった勉強法を見つけるのが一番良いです。この記事でご紹介する勉強法はあくまで一例なのでその点だけご留意お願いします。
こんなことありませんか?
- プログラミングを勉強していくなかで本やサイトに書かれている用語の意味がわからず、内容を読み進めるのが辛い
- 一度は解決した疑問のはずなのに、同じ問題に当たってしまった。以前、疑問を解決するために調べたサイトが見つからない……となった
そんな人に読んでいただければと思います!
本に書かれている用語の意味がわからず、ぼんやりとした理解をしている人
言葉の意味がわからない場合に僕がやる事は3つです。
- 自分が理解できる言葉になるまで噛み砕く
- 自分の言葉でまとめる
- 身近な例で試す
1 自分が理解できる言葉になるまで噛み砕く
例えば、こちらの記事でイテレーターという文言がわからないとします。
イテレータという言葉で検索すると多くのサイトがヒットします。
「イテレータ(英語: iterator)とは、プログラミング言語において配列やそれに類似する集合的データ構造(コレクションあるいはコンテナ)の各要素に対する繰り返し処理の抽象化である。
実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。JISでは反復子(はんぷくし)と翻訳されている。」
参照:https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF
「イテレータとは、プログラミング言語の機能の一つで、配列のようなデータ構造の要素を順に走査していく繰り返し処理を簡潔に記述できる構文やオブジェクトなどのこと。」
参照:https://e-words.jp/w/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF.html
イテレータについて書かれた記事まで辿り着くことができました。しかし、難しい単語が多いので、一つ一つ自分が理解できる言葉で翻訳していきたいと思います。
僕は「走査」という言葉がわかりませんでした。
2 自分の言葉でまとめる
単語ごとの意味は、自分が理解できる言葉まで噛み砕くことができたと思います。その単語の意味を繋げてみると、イテレータとは「配列のようなデータ構造におけるそれぞれの要素に対して、一定の順番で繰り返し行う処理」を指している事がわかります。
「イテレータは、イテレータなんだよね」とぼんやりした理解をすると、わからない単語が連続で続いた時にはもう文章の意味が全くわからなくなります。
しかし、言葉を噛み砕いていけば、自分が理解できる文章に落とすことができるので、どれだけ難しい文章でも怖くなくなります!
3 身近な例で試す
僕は業務でRubyを扱っているため、Rubyのコードを使ってイテレータの具体的な例について見ていきます。
用語の意味を明確に理解するためには、イテレータという言葉の意味を調べるだけではなく、自分の身近なところで体験できる方がいいと思っています。
ruby:
str = "Yet Another Ruby Hacker"
enum = Enumerator.new {|y| str.scan(/\w+/) {|w| y << w }}
enum.each {|word| p word } # => "Yet"
# "Another"
# "Ruby"
# "Hacker"
str.scan(/\w+/) {|word| p word } # => "Yet"
# "Another"
# "Ruby"
# "Hacker"
出典)https://docs.ruby-lang.org/ja/latest/class/Enumerator.html#I_EACH
ここでコードを元に理解する事ができたかと思います。
具体的な例を見ることで、用語の意味が腹落ちし、不安がなくなるかと思います。
一度は解決したはずなのに、同じ問題に当たってしまった。前見たサイトが見つからない……となってしまう人
前と同じところでハマってしまった人はメモを取ることをお勧めします。
「何をいまさら、」と思うかも知れませんが、意外にも自身の勉強でメモを残す人は多くはないみたいです。僕は、勉強のメモを残すときにNotionを使用しています。
Notionを使っている理由は、紙のメモを使用すると後々になって管理できなくなると思ったからです。メモを書けば書くほど、参照する時に手間がかかっていくなんて辛すぎます……。
デジタルで管理するツールを選ぶにあたって、Notion以外にも多くの選択肢がありました。しかし、その中でもNotionは使える機能がたくさんあります。ありすぎるといっても過言ではないと思います。メモとして使用できるのはもちろん、タイトルをつけたりコードブロックを貼ったりする機能も備わっているため、見やすくするための工夫が簡単にできます。そのため、僕はNotionを使用しています。
Notionでは、以下のことを意識しています。
- メモを取ることが億劫にならないように続けやすい細かさで書く
- 自分の言葉でメモを残す
- 検索ができるようにキーワードをタイトルに入れる
1. メモを取ることが億劫にならないように丁寧に書きすぎない
見やすさに囚われすぎると、メモをする事が億劫になると思います。「毎日トレーニングウェアを着て、腹筋100回!」などのように、厳しいルールは続けられる気がしません。あくまでメモなので自分に伝わるレベルで書けば十分です。
僕が1ページで使用するものはコードブロックと見出し、画像の添付のみです。それ以外は必要に駆られていないので使用しません。
昔に書いたものですが、こんな感じです。
2. 自分の言葉でメモを残す
こちらはブログの前半でお話しした内容と同じです。自分の言葉で書かないと、次回見返した時にメモを理解するために調べる事になります。せっかくメモに残しておいたのであれば、メモを見ただけで思い出せるように書く方がいいと感じています。
3. 検索ができるようにキーワードをタイトルに入れる
学習内容をデジタルで管理するメリットは「後から見返せること」です。このメリットを最大限に生かすために、タイトルにキーワードを入れて検索しやすくしています。
例えば先ほどのようなdestroyについてのページの場合、タイトルは「レコードの削除_destroy」とします。
このように設定することで、「レコードの削除の方法がわからなくなった場合」「destroyについてわからなくなった場合」の2パターンで検索することが可能になります!
レコードの削除の方法がわからなくなった場合
destroyについてわからなくなった場合
ページ数が増えてくるほどに検索の便利さが感じられるのでおすすめしたいです!
このように記憶力に自信がなかった僕でも、勉強する時にわからない言葉をわかるまで翻訳し、それをメモに残していくことで今では業務を進められるようになりました。
学生の時のテスト勉強とは違い、仕事は暗記勝負ではないので、どれだけメモを積んで仕事に挑めるかが技術力を磨くためのカギだと思います。
皆さんの参考になれば幸いです! 読んでいただきありがとうございました!
サイバーウェーブでは一緒に働く仲間を募集しています
サイバーウェーブでは一緒に働く仲間を募集しています。当社は創業20年を機に「第2の創業期」として、事業を拡大方針へと舵を切りました。会社が急拡大しており、若いメンバーやインターン生がどんどん入社しています。個人の成長は、勢いのある環境のなかでこそ加速されるものです。成長事業に参画できるチャンスです!
サイバーウェーブはコード1行1行に対してこだわりを持って、プロ意識をもったエンジニアを育てている、技術力に自信のあるシステム開発会社です。社内には、創業23年のノウハウの詰まった研修コンテンツや、安定したシステム開発をするための手順が整っています。実力のあるシステム開発会社だからこそ、経験を積みながら、実践的なシステム開発の技術も学べます。自信をもって主義主張ができる『飯が食える』エンジニアを目指していただきます。
エンジニアとしてしっかりと飯を食べていけるまでには、道のりは決して短くありません。長期で頑張り、エンジニアになるという強い思いがあれば、実戦的な開発経験と、周りの仲間とコミュニケーションしながら、しっかりと成長できます。当社のノウハウを余すことなく活かし、技術力を大きく伸ばしていただきます。
ぜひ、エントリーをお待ちしております!
インターン採用
新卒・既卒・第二新卒採用