Hacker Rankを教材にして学習したアウトプット
はじめに
自分は理系出身ではなく、エンジニアになりました。そして早10年ぐらいは経ちましたかね。。。つまり、仕事を通して必要になった知識等を都度学習してきました。
0 -> 1 系の事業にエンジニアとして参加することが多かった為(言い訳だな...)、エンジニアリング自体に集中する、徹底的に向き合うことが少なかったと感じています。
なので、自分の基礎部分を少しでも見直して再構築し、今後のエンジニア人生に活かしていきたいと思ったのが元々のきっかけです。
何を題材に学習したか
なんとなく、データ構造
とかアルゴリズム
の学習がしたいなぁーと思ったので探してみた結果Hacker Rankはちょっと良さげな感じがしたのでそのサービスを利用しました
このサービスの中で競技プログラミングもあるのですが、まずは一通り学習したいと思ったので、Practice
メニューの中でData Structures
,Algorithms
の所を題材にしました
なぜこのサービス(Hacker Rank)を選んだのか?
お題に対して、自分でcodingして、submitして、良かったか悪かったかのレスポンスが瞬時にある点が良いなと思いました。
例えば、sortであれば、sortに関する説明はネットや本でたくさんあります。それを読み書きすれば一定の理解ができると思います
だけど、頭だけの理解だと気づかないうちに自分の都合の良い理解にしてしまったり、本当に身についたかは微妙になる事が多いと思います。(今までの自分の経験上)
実際にcodingを通して理解が深められる事はいいなと思って選びました
学習方法とか
与えられた問題に対して、任意のプログラミング言語を選択してcodeで表現し、submitするとhackerrank側で様々なテストケース(大量データのinputからinputデータパターンまで)でテストが行われ、性能を満たせれば合格といった流れになります。
これをひたすらやり続けた感じです。
でも途中で全くわからない問題もあるし、英語の読解力不足も重なって苦しい時間もたくさんあった。
まぁそんな時は geeksforgeeks というサイトを覗きに行けば、丁寧に解説をしてくれる
なんならYoutubeで動画で解説してくれる。(ただし全て英語だけど)
GeeksforGeeks | A computer science portal for geeks
自分の場合は一回きりで全て理解などできないので、繰り返しcodeを書いてはsubmitしたり、geeksforgeeksの該当情報をなんども読み返したりと地道な方法で進めていった
Goで書いてみたり、Pythonで書いてみたりもして、深い理解に繋がるように努力しました。
その結果
全ての問題を解いた訳ではないですが、全てのカテゴリの問題は一つ以上は解くことができたかと思います
問題を解いていくと都度ポイントをGetできます。そのGetしたポイントによってスコアリングされます
自分は割と長いこと、根気強く続けたので5 Starのゴールドメダルまでいきました。さらに上をみると6 Star のゴールドメダルになります。
tsuyoshi nakamura - tsuyoshin | HackerRank
まぁ自分の場合は別にメダルの色やStarの数を競っている訳ではないので継続して学習が進められた事に満足をしています。
最後
何かを学ぼうとした時に座学だけになってしまうと本当に理解ができたのか、身についたものになったのかと心配になります。自分の場合は座学だけでは絶対身につきません。
なので、少なからず何かテストがあるものだったり、実際にcodeを書いてレビューしてもらえたりと手を動かす系のものがセットになっている題材かどうかを大切にしています。
今はまた違う課題を設定してチャレンジをしています。また一区切りついたらまとめようと思います