2019年の振り返り
今年も終わろうとしているので一応残しておこうかと思います
2018年からの振り返りから2019年にやりたいとしていた事
色々と外のコミュニティに参加する中で下記の勉強会は結構印象に残っている
"GO GLOBAL" meetup #1 - connpass
また全然レベルの違う感覚があった気がしている。
自分のエンジニアリングのレベルの低さを感じた気がした。
改めてエンジニアとしてもっと高いレベルに視点を持っていきたいなと感じた
グローバルレベルを意識しないとエンジニアとして先がなくなっていく危機感を感じた...
自らの意思を持って行動して得た経験や技術というのが最終的には残るのだなと感じた。
人から言われた事だったり、まぁ仕事だからやるかとか、でやった事は一つも自分の中に残っちゃいない。ある一定期間残っても最後は消える。
なので自分の中での積み上げをするにはやはり自らの意思を大切にしたいなと思っている。
来年はこの辺りを大切にしてエンジニアとして技術の鍛錬をしていきたいと思います。
自分のエンジニアリングを見つめ直して、再構築して、今後エンジニアとしていきていく道筋を模索する年にしようとしていた。らしい。
では時系列に振り返ってみる
1~3月
なんだかんだ昨年の6月頃から社内のpaymentチームに移動して色々あったが、テックリードとして仕事をしていた
自らの意思でプライベートな時間で年末年始もずっと会社の集中ルームや自宅にこもって、より良いシステムになるようにアーキテクチャ、コーディングを頑張っていた。この時はサブタスクも個人的な開発もしていなかったので全身全霊かけてた記憶がある
がしかし、最終的に自らの意思を上長に伝え、受け入れてもらいこのチームから離脱することになった。
この時の反省点
温度差を許容できなくなってしまった
自分だけ上限なく熱量あげてコミットしても周りとの温度差がどうしても出来てしまい、進捗具合や熱量の差にガッカリする事が多々あり、ツラくなった。
自分は創業時のように許す時間の多くを使って開発していた。他の人は当然契約に則りやっていた。当然色々なところでギャップが生まれる(契約に則り働くことは当然正しい事)
一番、心に残ってるのは少しでも良いシステムにしようと思い、アーキテクチャに関してメンバー、PMの合意を得ようと色々と提案や仮実装、書籍の紹介等をしていた。が結局のところ大して目も通してくれず、まともな議論もなく、却下された事。切なかった。辛かった。(キャッチアップの時間はちゃんと取ったんだが...)
その後2週間は何も仕事が手につかなかった記憶がある
時間はなんとか作り出して、少しでも理想高く、少しでもモダンな開発をしていきたい自分と、良くしていきたい気持ちは当然あるが、限られた時間の中で現実的な落とし所を見つけたいメンバーとうまく合わなくなってしまったという事だと思う。
どちらも間違っていなくてミスマッチングだったのかもしれない。誰も責め立てる気は全く無いです。
新しい取り組み
そんな出来事があり、この頃から業務とは別に自らの技術力を向上させたいと思い、1日の業務の20%を仕事と関係のない開発をすることを許してもらった。いわゆる20%ルール
今までは自分の時間でなんとか時間作ってやっていたが、業務の一部の時間を使ってokとして頂いたのでありがたかった。
自分の場合は時間を器用に使い分けが下手なので1日の20%分を1週間(5営業日なので x 5で)貯めて1週間のうちの1日を自己研磨の時間として活用した。
4月~8月
- 検索システムのリプレイス案件を一人で担当した
- 単純な検索システムを作るのではなく、可能な限りmicroserviceの流れに乗った独立したシステムと機械学習の要素をうまく活用したものが作れないか試行錯誤してた
- Goを取り入れたりもした
- 初めてGoカンファレンスに参加したのもこれがきっかけだった
社内勉強会で最近やってる機械学習についてちょっとLTした - nakamura244 blog
TFIDFを検索に活かせるかを考えてみた - nakamura244 blog
ML前のデータ前処理系の学習メモ - nakamura244 blog
Goのdatabase周りのテストではinterfaceを最大限に活用しようという話 - nakamura244 blog
Go Conference Fukuoka 2019から刺激を受けてanalysis toolを作った - nakamura244 blog
8月ごろには開発は終えて社内調整が色々と時間がかかり10月にやっとリリースできた
tsuyoshi-nakamura.hatenablog.com
引き続き改善をしています
キーワード検索システムにnDCGを導入~現状分析の話 - nakamura244 blog
9月 ~ 12月
レコメンド開発を行っている。サンプルは何個かできているが、結局はMLOpsの部分をどう組み立て回すかに一番時間をかけている感じ。
SageMakerやGCPのプロダクトのプラットフォームに乗る前提で考えるとその部分はあまり課題はなくて、どうOpsを組み立てるかが、ポイントになっている
第一弾は年明けになると思うが、リリースできるかと思います
業務外の成果
1日の業務の20%を頂いて学習したもののアウトプットは下記
アルゴリズムの学習
Hacker Rankを教材にして学習したアウトプット - nakamura244 blog
一通りのアルゴリズムの課題をGoで解いたり、Pythonで解いたりを続けてGoldメダルを取れた(メダルはどうでもいいんだが、ある程度継続して学習できたという証なのでよかった)
当然全然わからない問題とかもあってその時はgeeksforgeeksさんに大変お世話になりました GeeksforGeeks | A computer science portal for geeks
コーディング試験とかでよく出る問題とかも解いてみたりしてた
コンピューターサイエンスを少しかじった
CourseraでMathematical Thinking in Computer Scienceというビギナーコースが終了したので残しておく - nakamura244 blog
内容的には基礎の基礎な感じだったのでそこまで時間はかかっていない。むしろ英語スピーキング(ロシア訛り)で字幕も英語しかなかったので英語読解に苦労した
MLの授業を受けてる
この授業を今受けてて、来年1月のどこかでは完了予定!
Coqのような証明支援開発をかじった
正しさとは何かと色々と調べる中でCoqに出会い、学習した
何となくわかった気がして、大学の教授にアポを取ってこの領域の話を聞きに行ったが、そこで自分の無知さを思い知らされた。何もわかってはいなかった。
その教授が行っている授業のスライドを手に入れて、理解したつもりでそれを元に話をしたのだが、質問に何も答えられず、久しぶりにとても衝撃を受けた。
アカデミックな研究室でやっているプログラミングの違いを知った。
この辺から数学をちゃんと学ばなければいけないと感じたキッカケかもしれない
数学やり直してる
機械学習にしろ、大学でやっているようなコンピューターサイエンス系の授業をオンラインで学ぶにつれて数学の知識の必要性をここでも感じたのでやり直している。
数I、II、III。
やり直しているというよりは全く記憶にないので普通に学習している。
今のところ、Youtubeや書籍でなんとかなっているが、厳しくなってきたら学習塾通おうか迷ってるぐらい。受験生に紛れ込んで...
番外編
12月にIPOを経験した。特に自分が何かをしたわけでは無いが、創業からエンジニアとして参画して6年目にして迎えることができました。創業から加わっててIPOまで経験できる事は人生においてもそうあるものでは無いので良い事だったと思います。
会社的にはここからまた再スタートですね!!頑張って行きます
まとめ
この年も色々とありました。今年は勉強会や技術カンファレンスにはだいぶ絞って参加となった。CfPすら出していない。それよりも今年はinputの時間を大切にしたかったのが主な理由です。
自分のこれからのエンジニアキャリアを考えた時に
- 自分に新たな付加価値を付けないと今後、ジリ貧になるという危機感
- グローバルで活躍できるエンジニアになっていきたい。それを新しい付加価値にしていきたい
- グローバルに活躍しているエンジニアと今の自分を比較して何か不足しているのか?
- 言語、FWやライブラリ、クラウドに関する知識や使いこなし等はまぁまぁ対抗できると思ってる
- しかし、まだここに無いものを生み出す能力(originalを生み出す能力)は圧倒的に劣る
- なぜそんな事ができてるのだろうか?
- 彼らはコンピュータサイエンス系の学位のベースがあるのが普通でエンジニアとしての土台(積み上げ)が違う
- 日本は文系出身でもエンジニアになれる国だが、それは普通では無い事を再度理解
- この国のおかげで文系の自分はエンジニアになれたので感謝はしている
- じゃまずはその土台にテコ入れが必要でしょう
という事で来年からはcourseraに加え、JAIST(北陸先端科学技術大学院大学)でまずは科目履修生としてスタートします
なぜJAISTを選んだかというと土日開講で品川で受けることができ、現職に影響なくチャレンジができるため。(お休みはなくなりますけどね)
2020年へ
年の初めにやっていこうと感じた事を確実に進められているなと感じれたので、これをスピードアップさせて行きたい