Velocity

方向を定めて

UoPeopleの入学を見送ってCourseraで勉強することにした

3行

  • 手段が目的化していたため、UoPeopleに入学するのは見送った
  • 入学を目指すプロセスにおいても学びは多かった
  • Courseraで数学とCS勉強中

UoPeopleの入学見送り

下記のエントリで記した通り、アメリカのオンライン大学のUoPeopleに入学しコンピュータサイエンスを学ぶために、3月頃まで英語を集中的に勉強していた。

tmkk.hatenablog.com

結論としては、入学を見送ることにした。

Twitterはてブのコメントではポジティブな反応も多く、中には応援してくれていた方もいたため、申し訳なく思う。

入学を見送るきっかけになったのは、目的を再考する機会が訪れたからだった。

目的の再考

今働いている会社では一週間に一度、チームのマネージャーと30分間話す1on1を実施している。 マネージャーにはUoPeopleに興味があることや、英語を勉強している旨は1月頃には伝えていた。

とある日の1on1でUoPeopleについての話になり、そこでキャリアについての考え方に対してツッコミをもらった。

ツッコミは「手段が目的化してない?」というものだった。 ここでいう "手段" は "コンピュータサイエンスを学ぶ" ということを指している。

その時はまぁ確かになーと思いつつ、1on1の後にゆっくり考えてみた。

...

しかし、色々キャッチアップしていくうちに、よりコンピュータサイエンスチックなことをやってるエンジニアへの憧れ・尊敬の意が強くなってきた。何より、僕が少し勉強しただけでは理解できない熟成された知識が、単純にかっこいいように見えた。

この文章は自分がコンピュータサイエンスを学ぶ意欲、つまりUoPeopleに入学しようと思った動機を言語化したものだ。(冒頭のエントリから)

改めて読み直すと、恥ずかしながら非常に抽象的なことに気づく...。

本来であれば何かやりたいことが目標としてあり、それを達成するために必要であればコンピュータサイエンスを学ぶという順序関係が自然だ。

対して、自分は明確な目標がなく「学んでいればやりたいことが何か見つかるだろう」という思考でいた。目標設定を行うために、UoPeopleで勉強しようとしていた。

ここでいくつかの疑問が出てきた。

  1. 目標はいつ見つかるのか?確実に見つかるのか?
  2. 目標が見つかると仮定しても、そのプロセスの中で他の一般教養を学ぶ必要はあるか?
  3. 一般教養の学習が目標設定に大きな意味を持つと仮定しても、投資時間が多すぎないか?

これらを踏まえて客観的に自分のアプローチを見直した時に、必ずしも今このタイミングでUoPeopleに入学する必要はないという結論に至った。

目標設定を行うためのアプローチは、他にもいくらでもあるのだから。

UoPeopleを目指して良かったこと

入学自体は見送ったわけだが、それまでの過程は決して無駄ではなく良いことばかりだった。

英語力の上達

入学の英語スキルの目安の一つとしてTOEFL iBT61点というラインがあったので、年末〜入学を見送った3月初旬にかけて英語を勉強していた。

文法は基礎から鍛え直すため「English Grammar In Use」という英語で解説されている英語の教科書を終わらせたり、「TOEFLテスト英単語3800」という単語帳を使って単語を覚えたりしていた。他にもReading対策など。

実際、英語を数ヶ月間集中的に勉強したことで英文の読解力は確実に上がった。

個人的にはEnglish Grammar In Useが一番やって良かった。英語で英語を勉強することは想像以上に学習効果が高いので文法からやり直したい人には自信を持ってオススメできる。

UoPeopleの日本人コミュニティの開設

嬉しいことに、自分のUoPeopleのエントリを読んでUoPeopleに興味を持ったという方が何人もコンタクトをくれた。

全員で交流できれば楽しいだろうなーと思いつつ、僕の観測上では日本人のUoPeopleのコミュニティは存在しなかった。せっかくなので自分で日本人向けのUoPeopleのslackワークスペースを作った。興味がある人なら自由参加のやつ。

嬉しいことに60人強の人にJOINしていただき、今でもアクティブメンバーが15人くらいいる。内半数以上はUoPeopleに入学した方々(!)で日々交流が行われている。

みんな大変そうだけど卒業者が出るといいなぁ...。

キャリアについて再考する機会

「目標が明確になっていないと、良い意思決定が出来ない」ということは一見当たり前だが、自分にとっては良い気づきだった。

今後も、自身が進むべき道が分からなくなってしまったら「何のためにやるのか?」ということを繰り返し自問しよう。

これから

このエントリを書いている今でも、未だに確固なる目標は見つかっていない。
特定の技術に対して造詣が深いエンジニアになりたいということをぼんやり思っているくらいだ。

何をするべきか考えた結果、ひとまずアルゴリズム・データ構造・コンピュータアーキテクチャあたりをピンポイントで勉強することにした。これらは領域に左右されず、特定の技術を深く理解する上で役に立つ知識だと思ったので、最低限勉強しておこうと思ったからだ。

ここら辺をピンポイントで勉強するにはCourseraが良いとお勧めされたので、Courseraを使って勉強を進めている。

とりあえずデータ構造とアルゴリズムのコースを登録してみた。

coursera.org

しかし、一番最初のイントロダクションで「離散数学の基礎知識があると理解度が上がるぞ」みたいなことを言われたので、「コンピュータサイエンスのための離散数学入門」みたいなコースからやることにした。きちんと理解したかったので...。

coursera.org

Introduction to Discrete Mathematics for Computer Science

この離散数学のコースは5つのコースから成り立っている。(ややこしいので、コース以外の呼び名が欲しい)

  • Mathematical Thinking in Computer Science
  • Combinatorics and Probability
  • Introduction to Graph Theory
  • Number Theory and Cryptography
  • Delivery Problem

5つ全部やるとして、ボリューム的には週5時間×6ヶ月くらいが目安だと公称されている。
現状2/5は終わっていて、今は3つ目のグラフ理論のコースに取り組んでいる。

数学のコースとはいえ、for Computer Science というsuffixがついている通り、練習問題としてコードを書いたりもする(言語はpython

コースが終わると証明書がもらえるのが嬉しい。

f:id:tmk_0613:20200425175136p:plain
Course Certificate (Mathematical Thinking in Computer Science)

f:id:tmk_0613:20200425175355p:plain
Course Certificate (Combinatorics and Probability)

一旦はこの離散数学のコースを終わらせることを目標として頑張っていきたい。

今度こそやりきりたい!!!