seri::diary

日常

しばらく34,35歳のおっさんである事実を忘れてみる

これはなにか

2020年5月から2022年3月の間は自分が34,35歳のおっさんであることを忘れさせて欲しい件に関するexcuseである.

なぜ忘れる必要があるのか

時々自分の年齢を思い出すと「同年代の友人たちは子育てに忙しい一方で俺は仕事とAtCoderの精進に忙しい.実は相当問題のある生き方をしているのではないか.」と不安になる.その問に対する問答を脳内でシミュレートすると,10 hop程度の問答を経ていつも同じ結論に帰着する.

「褒められた生き方ではないかもしれないが,やりたいことをやって,その結果社会に役に立つoutputをしてお金を稼げるようになりたい」

「今はそれができているか?できていない.だからそうなりたい.」

この結論に1 hopで到達できない理由は自分の年齢である.
自分は2020年4月で34歳になった.2009年4月で会社員になり,その後11年が経過している.その途中2年間は大学院にいたので会社員経験は9年間である.普通,9年もほぼ同じ職種を経験していればもうベテランである.新しくなにかを勉強する機会は少なくなり,それまでの業務経験と全く関係がない仕事をしようとは思わない年齢であると考えている.

例えば,自分で言えばずっとweb application backendをメインで開発してきたので,backend teamのpeople managementをするもよし,web applicationアーキテクトを極めるもよし,frontendやインフラに手を伸ばすもよし,はたまた開発経験と採用活動経験を生かして人事に転向してSWE採用に取り組むもよし. そうやってT字型にスキルを伸ばすのがコスパの良いキャリアアップの仕方だと思う.自分の周囲でもそのようにキャリアを伸ばしてきた元SWEを知っている.なぜなら人間それまで学んだものを捨てて新しい領域に踏み出すためには高いコストが必要である.また,ある程度経験を経ているがゆえの周囲からの期待もある程度は存在している(と思っている).そのため,この年齢になると新しい領域へのチャレンジのコストはどんどん高くなる.

こういった事実により,年齢に反した行動に対して罪悪感のようなものを感じる傾向が自分にはある.しかし人生は本当に残り短い.あと30年も現役でいられればいい方だと思っている.ほんとは以前このブログに書いたように,死ぬその日までSWEでいたい.しかし人生何があるか分からない.例えば自分がいくら健康でも,40歳ぐらいで親の介護のために仕事を諦めて実家に帰らなければならない可能性もある.

serihiro.hatenablog.com

だからまだチャンスがあるうちにやりたいことをやりたい.いや,やりたいことができるように精進する時間を取りたい.これが今の本音である.32歳の時に仕事を辞めて2年間も大学院に行ってた癖に全く懲りていない.むしろ,大学院で研究したことでやりたいことがより明確に見えたという方が正しい.

なぜ忘れさせてほしいのか

競プロが面白くなってきたので本気でAtCoder青を目指したい

atcoder.jp

実はAtCoderにsignupしたのは約3年前の2017年1月である.何を通じてAtCoderにsignupしたのかは覚えていないが,何故かその時期に突然コンテストに参加し始めた.初参加したコンテストはABC053なのだから結構昔だ.しかし,何回かコンテストに参加した後にパッタリと止めてしまっていた.理由は「仕事の役に立つとは思えない」からだった.当時はRailsでweb applicationを書く仕事をしていたが,アルゴリズムを自前実装する機会は「全く」なかった.メモリ使用量や速度について考えるのはせいぜい複雑なSQLを書く時ぐらいで,効率の良いアルゴリズムやデータ構造の実装はすべて言語の標準ライブラリやRDBMSに丸投げしていた.そのぐらい無頓着に書いても問題なく動作する程度のwork loadしかないweb applicationしか書いていなかった.それよりも,コードの保守性,テストの書きやすさ,安全なdeploymentのためのworkflowの設計,マイクロサービス間のインターフェース設計,分かりやすいdocumentationといった事の方がより重要な関心事だった.

それが今やほぼ毎日精進*1しており,多い日は1日に過去問を16問ぐらい解いた日もある.なぜか?単純に楽しいと感じるからである.例えば業務でbit DPを実装して問題を解く機会は未だにない.しかし,新しいアルゴリズムを覚えて問題を解けるようになってコンテストでのパフォーマンスを上げること自体が純粋に楽しい.

f:id:serihiro:20200519185045p:plain
これまでのレーティング推移.2019年末まではほとんどやっていなかったのが良く分かる.現在のratingは目標の青色から見ると3段階下である...

f:id:serihiro:20200519190029p:plain
横軸は日付,縦軸は解いた問題数の累積を示す.ここ一ヶ月ぐらいから急速に「精進」を始めたのがよくわかる.

また,競プロのスキルは昨今の転職活動において重要になりつつあると感じる.大学院時代,落ちたインターンは全部コーディングテストがあった.不慣れだった自分はビビって全然できずに落ち続けたのである.また,応募条件に「競プロなどで良い成績を収めた経験」を入れる企業も見かけるようになった.3年前はそんな企業は見たことがなかった.時代は間違いなく変わりつつある.募集しているpositionとアルゴリズムの実装能力に関係があるか否かはともかく,大学入試における大学入学共通テスト(a.k.a. センター試験)のような位置づけになりつつあるのではないかと考えている.

そんな訳で,最近はこっちのブログよりも別の競プロ精進ブログの更新頻度の方が高くなっている.

serihiro-competitive-programming.hatenablog.jp

どこまで目指すか?「赤」と言いたいところだが,他の人のブログなりを参考にすると初心者から1年間で到達できるのはだいたい青が限界のようだ.それも時間のある学生が,である.

なのでまずは2020年12月31日まで青到達を目指したい.なお今は茶色であり,道は長すぎるぐらい長い.でもやる.なにせ年齢を忘れたから.なんなら20歳ぐらいになった気持ちでやればいい.*2

機械学習が面白くなってきたのでE資格取るところまで行きたい

CourseraのMLコースを8週目までやってそこから時間的に厳しくなって*3一旦dropoutしてしまったのだが,機械学習は面白い.何より自分で実装するのが面白い.簡単な計算式の反復法で人間にとって有益な結果が得られるところも面白し,得られた結果からパラメータを試行錯誤する職人芸的なところも面白い.大学院時代に数値計算の講義で前処理付きCG法で一次方程式の解を求めるコードを書いたりしたがそれに近い面白さがある.

あと大学院では分散深層学習のtrainingを行う際の訓練データのread I/Oをいい感じに早くする方法について研究していたが,MLそのものはあまり深く勉強できていなかったので改めて勉強したいと思っていた.

で,やるならちゃんと客観的な結果が残るものをやろうということでディープラーニング検定E資格を取ることにした.

www.jdla.org

この資格は認定された講座を修了しないと受けられない仕組みになっており,自分は今月頭からスキルアップAIが提供する「現場で使えるディープラーニング」というコースをオンラインで受講している.*4

www.skillupai.com

オンラインなので,講義は全部動画配信で,課題提出はslack上で行われ,必要な情報はQiita::Team上で提供され,進捗報告はgoogle spreadsheet上で行われたりと,割と「今どきっぽい」ツールを使って運営されている.あと講師が現役のMLエンジニアなので結構突っ込んだ質問にも回答してもらるし,添削コメントがかなり細かったりとその品質は高いと感じている.今の所内容は既読の「ゼロから作るディープラーニング」の一巻目とかぶっているのだが復習だと思ってやっている.

↓2016年12月に謎にバズった「ゼロから作るディープラーニング」のレビュー

serihiro.hatenablog.com

当面はこれをやりつつ2021年2月のE資格試験に備える.あと一通り終わるのが8月ぐらいの見込みなのだが,終わったらkaggleもやっていきたい.あとCourseraのMLコースもせっかくなのでお金払って最初から全部やり直して認定証もらおうかなと考えている.Linked Inとかにロゴを掲載できるらしいし.

年齢を忘れる期間が2年間である理由

2年間は,自分が32歳〜33歳の間に大学院の修士課程に在籍した期間と同じであり,その経験から「30代前半において同じことに全力で取り組むことができる最長の期間は約2年間である」と予測した.よって2年間は集中して競プロと機械学習に打ち込める可能性が高い.逆にそれ以上だとマンネリ化するか燃え尽きてしまう気がしている.でもどちらも一旦止めるとすぐ忘れるのでずっと続けていきたい.

おわりに

人生の残り時間を数えるたびに不安に駆られる.でもまだギリギリ体も頭も十分に動くし,競プロをやっていて分かったのは,まだまだ自分は成長できるという事実である.本当になにか大きな変化を起こせるとしたら30代が最後だろうと思う.高校数学勉強しなおして数学検定2級取ったのも30超えてからである.*5

死ぬ直前に「30代の儂が競プロと機械学習をやっていれば...」と後悔しないようにやっていくぞい.

*1:競プロ用語.コンテストの過去問を説いたり新しいアルゴリズムについて勉強するなどの競プロのための鍛錬をすることを「精進」と呼ぶらしい.

*2:20歳の頃の自分は学部生で,バイトとサークルとCounter-Strike 1.6に明け暮れており,AM 3時に寝てAM 8時に起きて1限の講義に出る生活をしていた.体力ありすぎて笑う.

*3:競プロの精進に

*4:なおお値段は税込みで約30万円である.4ヶ月のプログラミングコースと考えれば相場より少し高いぐらいかなという気がしている.

*5:そのくせこないだのABC168のC問題は解けなかったので再び高校数学を勉強し直すべき時期時期かも知れない.