2021年総括

まもなく30のへっぽこエンジニアの2021年を軽くまとめて振り返ります

月別ハイライト

  • 1月
    クライアントと協業でSLAMの技術検証を行う コロナ禍かつ真冬の超寒い中屋外含め必死こいて走り回る
    AtCoderのコンテストにちゃんと参戦するようになる

  • 2月
    技術検証とそのレポート作りと採用面接(する側)と予実管理に追われる
    様々な理由ありて本気で転職しよってなる

  • 3月
    季節外だったが昇進昇給する
    正式にteam(3人)の面倒を見る
    SLAMとネイティブアプリのtesterやbugfixやって過ごす(悲しいことに検証継続になってしまった)
    AtCoder 入茶

  • 4月
    前職に辞意をお伝えする
    テンカツの面接ラッシュがピークになってしんどくなる
    新しく入ってきた社員さんにいろいろ引継ぎながら過ごす

  • 5月
    転職先決定
    前職は7月まではいてもらわないとクライアント様相手にもしんどいということで関わることに
    Zwift購入

  • 6月
    ほぼ初めてのリモートワーク開始
    3年近い分の業務整理と引継ぎと資料作りをする
    金沢、仙台に旅行に行く

  • 7月
    クライアント様との打ち合わせに同行してもらったりハンズオンをやって引継ぎフォローする
    業務的に半年くらいは技術要素が薄い感じになってしんどみ...
    九州巡りに旅行に行く
    実家のリフォームが決まる

  • 8月
    現職に入社
    webの知見の薄さに打ちひしがれる

  • 9月
    静岡旅行に行く
    webの知見の薄さに打ちひしがれる

  • 10月
    webの知見の高まらなさに打ちひしがれる
    社内新規プロジェクト始動、新チーム体制で稼働
    ワクチン副反応でひどい目に遭う
    実家のリフォームの内容確定のために毎週末地元に向かう日々が始まる
    AtCoder入緑

  • 11月
    webの知見の高まらなさに打ちひしがれる
    ワクチン副反応でひどい目に遭う
    贔屓球団が25年ぶりに優勝する

  • 12月
    webの知見の高まらなさに打ちひしがれる
    数年ぶりに体調を崩す

よかったこと

  • キャリアの棚卸をしてよい方向で転職ができた
  • リモートワークができた
  • AtCoderで入緑できた
  • コロナ禍でできてなかった遠出をした
  • 相変わらず一緒にお仕事する方々は素晴らしく大変に恵まれている
  • 飲酒を控えることができている

よくなかったこと

  • 上半期に新たに習得するスキルがあまりなく、スキルセット・レベルの向上が薄かった
  • 何も資格取得に挑戦できなかった
  • AtCoderで入水できなかった
  • 転職後のリモートワークで会話・対話がへたくそになった気がする(気の使い方や気の回し方の肌感が行方不明になった)
  • TRPGのセッションがほとんどできなかった(対話スキル低下の一因?)
  • 望んでいない人生最大の出費をした(実家リフォーム)

総括

よい1年になったはず! bestはもっと別にあるのだろうけどbetterではある。来年も自分の弱いところを直していきたい。

業プロerが入緑した話

TL;DR

2021/10/2に行われたABC221で入緑しました!🤗

入緑した際のstatsを色々残そうと思います.
このアルゴリズムを使いました!的な記録はqiitaの方でいつか書くんじゃないかな...
※書いた

普段何してんの?

業プロerと書いてますが, 普段はRails使いのwebエンジニアとしてバックエンドを中心に開発しています. (webなんもわからん)
茶色になったときは画像処理の基礎研究系エンジニアをやっていました. 8月に転職してwebエンジニア業務に主軸が変わりました.

入茶してからの変遷

f:id:malleroid:20211004095555p:plain

入茶したのが2021/3/27なので半年ほどで色変できました.
その間15回のratedコンテストに参加しました. ギリ耐えの回も含め1度も冷えることなく単調増加で入緑できたのが1番嬉しいですね.

精進

f:id:malleroid:20211003134919p:plain

入茶時が300問だったので, 350問くらい精進したことになりますね.

典型90

f:id:malleroid:20211003135525p:plain

典型90の埋め状況です.
これだと分かりにくいかもですが, ☆2(灰), ☆3(茶)を埋めてあります.
☆3の茶diff想定を労せず本番ACできるようになるとちゃんと緑パフォ出ると思います.
E8さんの見積もりすごい😊

Boot camp for Beginners

f:id:malleroid:20211003135857p:plain

Mediumまでは埋めました.
Mediumのうちが茶diff問題が多いので, これまたこのレベル帯の問題を本番ACできるようになると緑パフォ出ると思います.

Difficulty Pies

f:id:malleroid:20211003135105p:plain

典型90とBoot camp for Beginnersで精進していたので, 取り組む問題のdiff帯が灰から茶(今は緑中心)に変わりました.
下から丁寧に埋めることに意味があるとは私も思わないので適切な問題を精進した方がいいと思います.

オススメの精進

今の環境で言うなら, 典型90をやるのが1番良いと思います.
良問集になっているので, ちゃんと本番ACできるレベルで解きこむのが近道です.

業プロで競プロの実力があがったのか?

私の場合はですが, 業プロしててアルゴリズム設計能力が上がったことはないです.
業プロするためにはアルゴリズムよりも優先的に求められる領域が他にありました. 多くの方が同じだと思います.
ですので, 私は完全にゲームとして競プロを楽しんでいます.

今後

今年の初めに年内に入水という目標を掲げていたのですが, 残り3ヶ月ではさすがにキツそうなので, 今年度のうちに入水することを目標に精進を重ねたいと思います!

ABC218参戦記

TL;DR

自分の中で結果がよかったから初めて参戦記書いてる
あくまで日記で解説じゃなくてスマン

結果

f:id:malleroid:20210912110440p:plain
Dまでの4完で緑上位のパフォ
Eを通したかったが結果的に方針間違ってたっぽいので時間あっても4完

所感

C - Shapes

今回はdiffがC>E>DになったのでCにしては難しかったと思う. (個人的な体感E>C>=D)
やっぱり幾何のdiffは高めにでるなぁと. 多分これが私が本番で通したdiffの最高値更新になった. ありがとう幾何, 割と自分が幾何に強いということが分かってきて自信出てきた( ◠‿◠ )

Cの方針としては, グリッドの外側から図形が登場しない範囲を削除して比較することを行った.
(S,Tそれぞれで 上下左右から '#' の登場しない行および列を削除したものを比較 )

外側からというのを見落として '#' の登場しない行および列を全部削除してしまって1WAしたけど割とすぐにWAの原因に気づいたので良かった.
あとコードが愚直すぎて汚くなった. 焦っていたのでしゃーない🤗

Pythonはnumpyを使えるので回転操作は愚直実装しなくてもndarray.rot90()でπ/4回転をしてくれる点は助かった.
(使わないと"for文2回回して1行目を後ろから1列目に"みたいな操作が必要だった)

これを通せたときに今回のレートの冷えがなくなったのでめっちゃ安心した.

D - Rectangles

Nの制約が小さかったので組み合わせ全探索っぽくO(N2)で通した. 解説曰くもっと高速化できるみたいなのでいつかやる.
本番中は方針がなかなか固まらなくて20分くらい座ってるだけの人になってた.
こういうの10分15分で解けるようになりたいね

key,value型のデータ構造は偉大だ

E - Destruction

解説に記載の

なおこの問題は「Ciが大きな辺から順に、その辺を削除しても連結なままなら削除する」という貪欲法でも正しい答えを得ることができますが、辺を削除した際の連結性の判定を高速に行うには高度なアルゴリズムが必要となります。

貪欲をまさにやろうとして, 連結性の判定がうまくいかなかったみたいで解けなかった.

Union-Findなんもわからん

キーワードとして最小全域木, クラスカル法, Union-Findというものを見たので現在勉強中
いい加減Union-Findをちゃんと理解して使えるようになれ,はい.

全体

これまでだったらCやDを割と諦めてたと思うが本番で通せて嬉しかった😊
あとDが一発書きで書ききれたので,実装力が上がってきているのを実感している.

E解けなかったのが悔しいのと, 1問にかかる時間長すぎというのはあるけど,
もう少しで入緑できそうでめちゃくちゃモチベーション上がってる.

最後に

茶から緑の人, ぜひお知らせください
Favってモチベにするので

転職

タイトルの通り転職することになりました.
経緯とか転職活動について備忘録がてら残しておこうというアレです.

転職理由

濁して言うと音楽性の違いというやつですね. 企業の方向と私の方向がマッチしませんでした.
長く働くのも無理やなって感じることが多かったです. (まぁ20人規模のちっちゃい企業だとそんなもんか...) *1
企業の改善を考えて行動してるのがつらくなっちゃいました.

転職活動について

1. 転職の軸
  1. 休みについて
    前職は残業が多かったり, 公休が消化できなかったりで辛かったので
    ・土日祝休みで公休120日くらい(前職105日くらい)
    ・残業は平均して月20H以内(前職50H以上だった)
    と定めました.

  2. 企業の指針について
    私はチームメンバーと同じ方向を向いて仕事をしたり,同じ軸をもって話し合いをしたいので, 企業として掲げているミッション,ビジョン,バリューについて結構重要視しました.
    ...まぁ前職は大変残念ながらそういったものが定めてなくてめっちゃ辛かったというのもあります(ぉ
    ここ語ると長いのでこれ以上は避けます...(ノ∀`)

  3. 法意識
    上場企業とかであればあり得ないことかもですが, まぁ前職は求人票や雇用契約書に記載の事項が守られてなかったり,*2 受託開発の中で預かってるデータの扱いがすげー雑だったりしたのでコンプライアンスがちゃんとしている企業にしようと定めました.

  4. リモートワーク環境
    リモートワークで開発効率上がるように取り組んでる企業がええなって思います.
    前職はリモートワークすらあまりできなかったので
    少なくともリモートワーク導入している企業がいいなと思ってました.


  5. 技術者の評価制度がどうなっているか,どう考えているかだったり,
    福利厚生として技術者への投資(技術書購入支援,勉強会,資格支援etc...)がどうなっているか
    なんかを微妙に気にしました.


  6. 金はあまり気にしませんでした. 動機が給与upっていう転職ではなかったので.
    幸い一般独身男性なので特に困ってないし, どうせ前職より上がるだろって思っていたので前職以上って定めたくらいです. 後述しますが実際にスカウトで記載/提示される金額はほとんど前職以上でした.

2. 使ったエージェント

エージェントといいつつ間にアドバイザーみたいなのは挟まないサービスを利用しました.*3
あとは企業調べてると前職よりよい企業が多くて悩みまくるので, 企業側からアプローチしてきてくれるサービスを利用しました. 1歩目が自分からじゃないだけですげー楽🤗

  1. paiza
    結果的にpaiza経由で決まりました.
    ちなみにランクはAでSではないんですが,結構スカウトは来ました.
    茶コーダーになった今ならSの一番簡単な問題なら解けるのかな,なんて思ってますがどうなんでしょう

  2. 転職ドラフト
    レジュメ書くのに苦労したっちゃそうなんですが, レジュメ書く中で今までやりたくてできてなかった自分のやってきたことの整理ができたのでよかったです.
    あとこっちもスカウトは結構来ました.

3. 面接

リモート面接がほとんどだったので本当に助かりました.
家でいいし, スーツじゃなくていいし, PCでメモ取りながら面接できるしでサイコーって感じでした😇
リモートだったからラフにいろんな企業の話を聞けた部分があって, ここだけは新型コロナの妙だと感じました.

ちょっとラフに考えすぎて結局20社近く話を聞きましたけどね(アホ
期間もめっちゃかかってて半年近く転職活動してました.
働きながらかつ前職がリモートじゃなかったのもあって面接のペースは遅かったです.
でも時間かけたから会えた企業に行くことにしたのでよかったなと思います.
お断りした企業も転職の軸を叶えてくれるいい企業が多くて本当に悩みました.

今後

自社サービスを展開していて上場を目指す企業に行くことにしました.
8月から目指せフルスタックマンとして働きます.
休みもちゃんとあるし, ちゃんとした企業だし, 自分の持ってない技術に取り組めるし, リモートワークだし, 年収も上がったので転職をすると決意してよかったです.
ホンマ楽しみ. めっちゃ精進します!

*1:ベンチャーでもなくずっとこんな規模らしいのでダメなタイプの中小です

*2:福利厚生とか嘘

*3:転職エージェントと呼ばれる人に頼った転職にいい印象がなかったので

社会人がAtCoder始めて入茶した話٩( ᐛ )و


初投稿です.
1週間たってしまったんですが入茶して色有りになったのが嬉しかったので自分語りします.

お前誰?

普段はシステム開発したり画像処理系のサービス開発したりしてる社会人.
全然違う業種から転職して技術者としては3年目になります.
頭はよくなく数学とか物理が足を引っ張ってたタイプの理工系出身です.
現職がつらいので転職したみ...

社会人~とはいいつつも企業人から見た競プロの価値みたいなところには言及しません.

AtCoderの活動履歴

実は学部生のころにAtCoderの存在は知ってたけどやらなかった過去があります.(2014年ごろ?)
知ってた理由は,twitterで当時マイク持ってるアイコンだったりコヒナタミホ...アイコンだったりしたchokudaiさんを見かけてたからですね.
やらなかったのはweb上にまだまだ情報が少なかったからだと思います.
5年以上前の私程度の検索能力,情報処理能力,英語力等々では, プログラム書いたことほとんどなかったのもありAtCoder含め競プロ参戦ってハードル高かったんですよね, 多分.

2020年5月にスキルの1つとしてアルゴリズム能力高めたいな~と思い参戦したみたいです.*1

10か月くらいかかりましたが年度区切りの3月末のABC197で入茶しました.

爆速で色変していく人たちが観測できるので,一般的*2には遅いのかなとは思いますが個人的にはようやっとるというスピードです.

レーティング変化

f:id:malleroid:20210403190435p:plain

後述しますが,ちゃんと考えてAtCoderに向き合ったらなんか突然伸びて一気に入茶しました.
kenkooooさんありがとう🤗
参加したコンテストの成績は以下です.

f:id:malleroid:20210403190716p:plain

しばらく茶パフォと灰パフォを反復横跳びしてたんですよね.*3
なんなら灰パフォばっかりで心がポキンと来てる時期もありました.
プロ野球で野手は翌日結果を取り戻すチャンスがよくあるが先発投手は負けが込むと登板がくるまでずっとストレスを抱えないといけない,みたいな話に似てる感じで凹んでました.
誰彼問わず,コンテストの順位にフォーカスしすぎるのは良くないと思います.相対評価な部分もあるので.

競プロ界隈の情報収集について

競プロを始めるにあたって取り組み方に関する情報を集めていたのですが,今の界隈は色々な方がどうやって勉強したかとか問題それぞれどう考えていたかなどの情報を公開してくれていて,インターネッツの海に転がっていますね.
最初は集合知みたく先輩方の知見をもとに効率的にレベルアップしようとか考えてました.
実際にやって実感したんですが検索上位にくる方々のやりかたをトレースできるほど自分の頭がよくなかったし,整理する能力も足りてなくやり方がとっ散らかっちゃったんですよね...(最悪)

精進

今日の状態のAtCoder Problemsの画像なので入茶した時とはちょっと異なりますが,精進量はこんな感じです.

f:id:malleroid:20210403201134p:plain f:id:malleroid:20210403201144p:plain

確か入茶したとき丁度AC数が300だった気がします.
灰diffを中心に解いてますね.

上述の通り勉強方法や精進方法はよく分からないまま色々試しすぎて失敗してました...

レーティンググラフに精進グラフを重ねるとこんな感じです.

f:id:malleroid:20210403195432p:plain

10~12月は業務が忙しかった都合と,勉強方法が全然固まらない辛さで全く取り組めませんでした.
年明けからちゃんと毎日精進はしようと決めてやってはいましたが,SolveProb 99%の問題を解いてstreak繋ぐだけ~みたいな日々も結構続きました.

3月くらいかな?
一度頭をフラットにして,何が足りてないのか改めて整理して,取り組むものを徹底するように考えを変えました.

まずは書籍できちんとした知識体系を入手することです. Qiitaで競プロ記事を複数書いてくれているけんちょんさんの本 www.amazon.co.jp を読もうと決めて読んでいます(まだDPのところまでしか読んでない)

そして精進する問題も変えました.
毎日最低1問取り組むのをAtCoder ProblemsのBoot camp for Beginnersに掲載されている問題に切り替えました.

現在の取り組み状況は以下です.まだまだですね. f:id:malleroid:20210403202542p:plain

さらに,コンテストの振り返りについても,今までは参加するだけで解けない問題についてはフォーカスしていなかったんですが*4,
最後の解けなかった問題について少なくとも解説ACするようにしました. これについてはchokudaiさんが勧めるやり方です(cf:youtu.be)

で,こんな感じに取り組みを変えて入茶できたのでよかったんだなと思ってます.

社会人が時間確保する難しさ

正直難しいんですよ.
現職企業が残業モリモリなのもあって,1日に何時間も時間ありません.
これからAtCoder始めたい社会人の人は学生よりも強い覚悟で取り組む必要はあるかと思います.*5

今後について

主観的かつ自信過剰な感覚ですが,水色までは覚悟して取り組めばいけるんじゃないかと思っています.
なんとか精進し続けてABCで解ける問題増やしていきたいし,ARCにちゃんとレジって取り組めるようになりたいですね.

最後に

よければ茶コーダーや緑コーダーの方,お知らせください.
atcoderアカウントfavって目標にさせてもらいます.

*1:目的は覚えてるんですが始めた記憶が薄いんですよね,なぜか

*2:発信してる人たちの一般という意味です

*3:未だにしてるだろっていう話でもあります

*4:アホ過ぎることに見直しとか復習っていう概念をこれまでの人生で積んでこなかったんです

*5:もちろん本人のポテンシャル次第です