何でも屋エンジニアのブログ

ソフトウェア関連技術、コミュニティ、日々の雑貨

2023年3月のふりかえり

仕事の話

近いタイミングで入社する人が多かったので、オンボーディングメンバーのチームを作って色々進めるようにしていた。(さらにそのチームには初めてエンジニアとして働く人含めジュニアが多く在籍している。)そのオンボーディングチームを直接マネジメントしていて、その仕事の中でも特に会社の文化やソフトウェアエンジニアとして働く上で必要な心構えなどをインストールしていくことを重要視し可能な限り丁寧に進めていたがそれ一段落した。 チーム全員とても良い感じに振る舞ってくれるように見えていて頼もしい。もちろん細かい仕事のやり方などはこれから伝えるべきこともたくさんあるだろうが、それは追々必要になったタイミングで伝えるでも良いし、チームメンバーに任せることもできる。しかし根本の文化や理念などは、最初にしっかり伝え浸透させていくべきで重要な仕事であると位置付けていたのでとてもほっとしている。

子供の話

おしゃべりや言葉を理解できる範囲が広くなった。「はい」のような返事も「あーぃ」のような発音が「はいっ」と言えるようになったし、少し長めの語句もどうぞを「どうじょー」やアンパンマンを「ぱんまん」のように以前と比べてはっきりと表現できるようになった。寝言でも言葉を発するようになったので、習熟度が高まっているのだろう。たまにあははと笑うことがあり、聞くたびにこちらの顔も自然とほころぶ。 言葉が出るようになったおかげか感情表現の上達し表情が豊かになってきた。楽しいとき、つまらないとき、寂しいときなど表情からも伺えるようになってきた。

ところで、ベビーカーやショッピングカートを押したがるので、妻がドールバギーを買ってあげたところ、とても喜びぬいぐるみやお気に入りのおもちゃをのせて四六時中ひいていて、とてもかわいい。

体が強くなったのか平日に体調を崩すことはだいぶ減ったが、その分土日に調子を崩すことが増えた。平日登園できるのは本当にありがたいが、これはこれで続くとお出かけして気晴らしすることができず辛い面もある。また、相変わらず子供から移る風邪は強烈で、毎週(何なら週2で)風邪をもらってきては移されているので、ずっと体調は悪いし気晴らしむできないし辛いのであるがこれは気合で乗り切るしかない。 新年度のお知らせやクラス替えのタイミングで、入園から一年経ったのかぁと感慨深い気持ちや、担任変わったり新しく入るお友達と馴染めるかなぁなど、心配半分期待半分でワクワクしている。年下の子の面倒見が良いらしいので、年下の子たちが増え色々なコミュニケーションを楽しんでくれるといいな。

委譲することが苦手

第N次無理だ仕事まわらん期をやっている。これ自体は委譲せざるを得ない状況に自分を追い込むため、そして視座を上げるために色々な課題を自分に課して意図的に追い込んでいるので別にネガティブな気持ちはないのだがさすがに体力的な辛さを感じることも増えてきた。

昨日あるタスクを誰にやってもらうかについてマネージャーと話してて、委譲したいと思っているけど踏み切れずタスクの性質的に自分たちで頑張るのも選択肢の一つにあったこともありどうしますかねぇなんて話をしていた。

その日の夜、子供から風邪をもらい体調がきつい中帰路につき、一日の体力の限界を迎えた頃にあのタスクはお願いしよう…という気持ちに自然となった。

その思考の流れとしては単にさすがに疲れた…さすがにタスクが溢れるしもっと注力したいことがあるとなったからなんだけど、なんでここまでの状態にならないとそういう意思決定が自分はできないんだろうと不思議に思っていた。

一つには、人にものを頼むのが苦手という自分の性格がある。別に自分に依頼されるのは嫌じゃないのに不思議である。

これについては、以前自分でもできる仕事を委譲するのが苦手と1on1で話した際、上司にある課題を言い渡されるときに信頼や期待をされているんだろうと嬉しくなることが多いし、僕に頼られることが嬉しいと感じてくれるメンバーも中にはいるんじゃないかという内容の会話をして、確かにと納得していた。しかしそれにも関わらずある種の申し訳なさが取りきれずにいた。委譲すること自体は上達しているものの、完璧とは言い難いし自分にとって心理的な負担を大きく伴うタスクの一つであった。

どうしてかなぁとぼんやり考えていると、委譲するという選択をある課題に対してもしくはある人に対してしたいと考えるとき、その意図が3種類あることに気づいた。そもそも仕事のベースラインの認識がちがうのでこれはあなたの仕事だからやってくださいのパターン、ある人の成長に繋がるのでやってくださいのパターン、どうしようもないので助けてくれーのパターンの3つである。もちろん得意分野が違うので委譲する(頼る)パターンもあるがこれは日常で行っているので考えないこととする。

無意識下で委譲する課題や人を選ぶときこのようなことを考えているが、いざ委譲するか否かを決めるタイミングになると単に仕事を頼むというレベルになってしまっているので、これを改めて言語化することで委譲することへの障壁を取り除けるのではないかと思い至った。そもそも最初の2つについて、期待を表明する重要性は言うまでもないので、やったほうが良いだろう。最後に関しては、この種の依頼がするということは僕が信頼している証拠であるので、それを伝えていくと良いかもしれないと感じた。

上記の内容を子供を保育園に送りながら考えていたが、今回は有効なアクションが洗い出せた気がしている。

自分が本来注力すべき課題を鮮明にするためにも、チームを強くするためにもどんどん委譲していきたいのでこれを実践していく。

2023年2月の振り返り

仕事の話

先月作成した今年のエンジニアリング方針を発表した。内容はきちんと伝わったと思うのだが、感想を聞くためにちゃんとアンケート取れば良かったなと後から反省した。とはいえ、早速「方針を聞いてどうしていこうか考えてます」という声がメンバーから聞こえてくるなど、ちゃんと反響があって安心した。

きちんと考えを示しておくと、それを見て行動する人が出てきて複利で効いてくるので、考えていることを発信するのが良いだろうと考え Slack に分報チャンネルを作った。社の CTO が #cto_jounal というチャンネルを作って発信しているので、それに影響を受け #ebihara99999_journal というチャンネル名にした。そこではとりとめもない独り言を流しているのだが、意識的に「何をしているか」と「何を考えて過ごしているか」を書くようにしている。併せて週報も作成し、一週間の主要な会議の議事録や個人的なメモをそこに残すようにしている。これにはいくつか意図があって、

  • 僕がどういう会議に出ているのか知ってもらう
  • 事業部の経営状況を話す主要な会議が多いのでそのポインタ一覧をメンバーに示せる。ほぼすべての情報がオープンになっているので興味を示して欲しい & 必要な情報があればそこから取りに行けるようにしておきい
  • 分報と同様考えていることをアウトプットする

という目的で行っている。とは言うものの、あまりしっかり残せてないなぁという反省も多いので、ちゃんと時間を作ってやっていきたい。僕がある仕事を終わらせても1の結果しかでないことがあるが、↑のようなことをきちんとしておくとメンバーが成果を5にも10にもしてくれるので、仕事の重要性をきちんと認識しやっていくべき。

 

ありがたいことに、ここ数ヶ月に新しく入社してくれている人が多く、オンボーディングメンバーでチームが組めるほどなので、いわゆる Good First Issue をチームでやっている。そのチームも僕が見ていて、実際的な技術やプラクティスを伝えることはもちろんだが、成長するためもしくは結果を出すために必要なメンタリティや文化をインストールするということもやっている。そこにおいても、チームの文化や良い振る舞いを明文化することによって生じるメリットは大きいだろうから、やっていかねばと考えている。

 

子供のこと

先月からの変化として、食事スキルがめちゃくちゃ上がった。一人で食べられるようになってきたもののスピードが遅かったり、こぼしまくったりしていてどうすると良いか考えていた。試しにスプーンの大きさを変えてみるとそれが大正解で、スピードも正確さも格段に上がった。本人も食べることがより楽しくなり、食事中に楽しそうにしていることが増え、本当に良かったと思う。

 

個人のこと

今年 Ruby 30周年とのことでとてもめでたい。おめでとうございます。Ruby や企業含めたそのコミュニティのおかげで今の自分がいると言っても過言ではなく、本当に感謝しています。生活とバランスを取りつつ、今年はコミュニティ活動も少しずつ再開していきたいなぁ。

ところで、今月はとても体調が悪かった。プライベートの疲れや仕事のプレッシャーや疲れ、睡眠不足が原因で体調を崩していた。妻にはとても迷惑をかけたのだが、3日間ほどほぼほぼ寝かせてもらい何とか回復した。一人の人間ができることは限られているので、あまり欲張りすぎず着実にやっていかなければなぁと反省した。不幸中の幸いというか、今の限界点やどういうこと・状態を辛いと感じるかを学べた良いきっかけではあるので、これを学びとして色々うまくやっていきたいと思う。

体調と関連してか、昼ごはんを普通に食べると眠くて午後の2時間くらいパフォーマンスがめちゃくちゃ落ちていた。困っていたところ「そもそもお昼の時間にはお腹空いてないのでは?」と思い昼ごはんの量を減らし、間食の頻度を増やすようにした。効果はてき面で、午後も集中力が切れずに進めることができるようになったし、夕方に空腹で辛くなることも減った。どうせ同じカロリーを取るんなら分割して取れば良かったのだった。

2023年1月の振り返り

仕事の話

直接の上長にあたる人が退職し、実質的に事業部の技術組織のトップの人間となった(別に昇格したわけではない)。選択肢として今まで通りの感覚・業務内容を継続するか、視座を上げアクセルを踏むかの二択があるが、せっかくの機会なのでアクセルを踏む方を選んだ。事業を推進する上でもその方が良いことが多いだろうし、個人的にもそのポジション(に立ったつもり)で仕事ができるチャンスは滅多にないだろうから、流れに乗ってみようと思った。 キャリアを時間・空間軸で考える / Thinking about your career from both time and space viewpoints - Speaker Deck で触れられているが、見晴らしの良い場所に立ったことで色々なことが鮮明に見えてくる。

見晴らしの良い場所に立つ、山の中腹だと全体が見えないという比喩のイラスト。

見えてくる課題の数・サイズも変わり、今までとは違ったアプローチや解決方法が必要になった。今までは(ギリギリ)直接的に情報を取得し判断することができる範囲でのマネジメントをしていたが、今後はそうはいかない。各チームに責任者を置き、かつ、そのメンバーたち適切に委譲しマネジメントを行う必要が出てきた。その場合、その責任者たちとは何を軸にしてコミュニケーションを取れば良いのかつまりミッションは何なのかという部分を明確に打ち出す必要がある。さらに、事業目標を達成するためにどういう組織を編成し何人必要なのか、どういう技術選択をすべきなのかも考えていく必要があり、去年の末から事業部のビジネスとエンジニアリングを紐づけていくという試みを行って来た。その際に Shin Takeuchi さんの記事や yasaichi さんの以下の記事・Podcast がとても参考になった。

CTOの頭の中:技術を財務で表現する|Shin Takeuchi|note

CTOの頭の中:組織と言葉とアーキテクト|Shin Takeuchi|note

CTOの頭の中:技術と組織と牽制関係|Shin Takeuchi|note

経営とソフトウェアエンジニアリングの接続 - WEB SALAD

6. 1on1 in Public by texta.fm

このような観点を組み込み、年初ということで今期の方針を作成した。

子供の話

一歳半を過ぎてからというのも、成長がさらに早くなった気がする。身体能力もメキメキ向上し、うつ伏せになって顔を上げてお絵描きをしているのを見たときには「すごい...人間じゃん...」となりとても驚き嬉しくなった。

一方でいやいや期が本格化し結構大変なことが増えた。しかし「意志がめばえてきたんだなぁ」と捉えると頼もしくもある。昔なら何かやろうとして「危ないから」と止めるときも新たに何か気をひくものを渡せば平気だったのだが、今はそうはいかない。きちんと「やりたいことが邪魔されている」という現実を認識できるようになった証拠だと思う。放っておくと自分で気持ちを落ち着かせて泣くのをやめるということが少しずつできるようになってきた。めちゃくちゃ大変だけど。こだわりという点では、最近傘がお気に入りで、天気関係なく傘を引きずって歩き回っている。

精神的な成長について他にも目に見える変化があった。保育園で自分より月齢の低い子の面倒を見たがるなど、先生からも「入園した頃はこんなにお姉さん気質があるとは思わなかった」と言われるほどの成長を見せている。言われてみると僕に飲み物をコップを持って飲ませてくれたり、頭をなでてくれたり、お姉さんのような振る舞いがあるなぁと思った。

自分のこと

筋トレしたい。重たいもの持ちたい。なんか始めよ。

ActiveJob のリトライの挙動

job の内部でネットワークエラーを拾うケースでは、定間隔より exponential backoff でリトライしたいなぁと考え調べた。

ActiveJob::Exceptions#retry_on で定義されている。

    def retry_on(*exceptions, wait: 3.seconds, attempts: 5, queue: nil, priority: nil, jitter: JITTER_DEFAULT)
        rescue_from(*exceptions) do |error|
          executions = executions_for(exceptions)
          if attempts == :unlimited || executions < attempts
            retry_job wait: determine_delay(seconds_or_duration_or_algorithm: wait, executions: executions, jitter: jitter), queue: queue, priority: priority, error: error
          else
            if block_given?
              instrument :retry_stopped, error: error do
                yield self, error
              end
            else
              instrument :retry_stopped, error: error
              raise error
            end
          end
        end
      end

rails/exceptions.rb at v7.0.4 · rails/rails · GitHub

間隔の決定は同クラスの #determine_delay 内で行っている。

  def determine_delay(seconds_or_duration_or_algorithm:, executions:, jitter: JITTER_DEFAULT)
        jitter = jitter == JITTER_DEFAULT ? self.class.retry_jitter : (jitter || 0.0)

        case seconds_or_duration_or_algorithm
        when :exponentially_longer
          delay = executions**4
          delay_jitter = determine_jitter_for_delay(delay, jitter)
          delay + delay_jitter + 2
        when ActiveSupport::Duration, Integer
          delay = seconds_or_duration_or_algorithm.to_i
          delay_jitter = determine_jitter_for_delay(delay, jitter)
          delay + delay_jitter
        when Proc
          algorithm = seconds_or_duration_or_algorithm
          algorithm.call(executions)
        else
          raise "Couldn't determine a delay based on #{seconds_or_duration_or_algorithm.inspect}"
        end
      end

rails/exceptions.rb at v7.0.4 · rails/rails · GitHub

ということで waitActiveSupport::Duration1.second など)を渡すと jitter はあるものの定間隔でリトライする。 wait:exponentially_longer を渡せば exponential backoff となる。

育児休業と仕事復帰後の振り返り

この記事は 🎄GMOペパボエンジニア Advent Calendar 2022 - Adventar 14日目の記事です。

私は2021年8月1日から2022年3月末まで育児休業を取得しました。育児休業中の子育てや過ごし方、復帰後の仕事の振り返りを書いていこうと思います。

産まれてから育休開始まで

会社からは休むことを勧められたが、仕事の区切りが悪く中途半端な状態で休みに入りたくなかったので、最初の一ヶ月は仕事をしながら育児をした。

産後ということもあり妻を夜寝かせてあげる必要があり、当面の間夜のお世話はメインで担当することにしていた。自分自身の寝つきが悪く、何度も起こされるのがつらいため、ずっと起きているという選択をした。特に産まれてから3 ~ 4ヶ月くらいは、ミルクを飲んで寝る → 数時間後に起きるというわけではなく、起きたら割とグズグズで起きているタイプだったので、この選択は正解だったのだと思う。

というわけで明け方まで起きていて昼まで寝てそのまま仕事をする、という一ヶ月になった(フレックスタイムとリモートワークのおかげで本当に助かった)。

最終日には会社の方々から出産祝いを頂いた。

取得後

このような生活をしていたので、育児休業開始当初に生活がとても楽になった。明け方に寝ることは変わらないけど、起きる時間の制約がないのはとても気楽だった。

8月

相変わらず夜のぐずりに苦しんでいる様子。

調子良いときもあるけど、逆にリズムが取れずそれはそれで難しいんだよなぁ。懐かしい。

夜の時間にコーディングをする習慣をつけた。8月頃は Gem を書いていた。

この頃の動きはまだもにょもにょする感じがありとても可愛かったよなぁ。産まれて数ヶ月だけの貴重な思い出。

9月

生後 3 ヶ月を迎え、徐々に意志を感じる行動をするようになった。

少しずつ遠めのお出かけを増やして、楽しんでいた。

書いていた Gem をリリースした。

blog.ebihara99999.com

10月

まだまだ悩んでいる。夜しっかり寝られるようになるのはだいぶ先だもんな。

お食い初めの袴を minne で購入した。妻が色々準備を進めてくれて本当にありがたかった。

minne.com

11月

平日の空いているときに行けて便利なので、コストコの会員になったのだった。継続しなかったけど、ミルクやおむつなどいろいろお世話になった。

頑張ってる様子と娘に翻弄されている様子。

12月

「絶対無理だよね」と夫婦で話しながら試してみたベビーフォト、予想通り見事撃沈していた。 撮影中スタッフの方が気を使って元気にあやそうとしてくれていたのだけど、この頃は特に大きな声や音が苦手だったのでスタッフの方が頑張れば頑張るほど泣いてしまい面白かった(面白くはない...)。

ハーフバースデー用に minne で購入したもの。着心地が良かったのか、娘も上機嫌でニコニコして着てくれていた。

minne.com

年賀状や新年の挨拶に使う写真のための帽子も minne で購入した。どちらもモフモフでとても似合っていてすごく良かった。

minne.com

minne.com

1月

勇気を出して初めての1泊旅行にチャレンジした。広い部屋で楽しんでハイハイして娘もとても楽しんでくれた様子でよかった。スケジュール管理に課題を見つけたので次の TRY とした。

2月

娘といると自分がトイレに行くのが億劫になるので水分補給を控え、かつ少ない水分補給をほぼすべてコーヒーですませた結果がこれ。マジで痛くて「このまま死ぬのかな...」と思ったので絶対ちゃんと水分取ると誓った。

ハイハイができるようになり、大喜びしている様子。

この頃には割と日常のイベントはこなせるようになっていたんだったなぁ。

3月

平日に旅行行けるのは最後になり、仕事始まったら当分行けないだろうなぁと思い1泊旅行に。前回の TRY もあったおかげかこなれた感じで楽しめた。4月から復帰のためドキドキしている。

4月

4月1日より復帰した。

取得してどうだったか

育児休業を取得して本当に良かったと感じている。

一番大きい理由は0歳から1歳までの思い出がとても多くできたことだ。今は懐かしむ余裕がそんなにないが、娘がライフイベントを迎えるたびにこの日々のことを懐かしむと思う。ふとしたときに回想できる思い出が多いというのはとても大きな財産になるのだろう。たくさんの写真とともに「あの頃はこんな様子だったなぁ」と実体験の記憶を遡れるのは本当に素敵なことだ。

ただ単純に楽しかったのかというとそうではなく、育児をメインに据えた生活は自分にとって大変だった。仕事から離れ社会との関係が希薄になっていき、新型コロナウィルスがそれに拍車をかけた。家庭の外と接点を持つのが難しく、精神的に辛いと感じることは多かった。

しかし、この大変さを考慮しても、育児休業を取得して本当によかったと感じている。

復帰後について

長期間離脱したことによる仕事への影響を書いておく。

復帰前は「ちゃんと仕事できるのだろうか...」と心配していたのだが、驚くことに以前より良い形で仕事ができている。

復帰当初はとても緊張していた。ある意味新入社員のときよりも緊張していたかもしれない。ブランクや生活の変化がある中で以前のように働けるのか、成果が出せるのかという心配が大きかった。しかし上司のサポートのおかげもあり徐々に「こんなに長く休んでいたのだからできないことがあって当たり前だし、子供がいることでプライベートの研鑽の時間はおろか仕事自体もお休みすることが増える。そんな中で全部完璧にやるなんて無理。」という事実を素直に認められるようになった。その結果

  • 周りに頼ることに躊躇しなくなった
  • 「自分にできないことがある」という事実にフラットに向き合えるようになった
  • 委譲ができるようになった
  • より大事なことに集中しようという意識を以前に増して持てるようになった

という変化が起こり以前より良い仕事ができている。

ところで、休日には子供の世話があるので、本当の意味での休みは少ない。育児が休める時間は保育園のある平日、すなわち仕事の時間なので、仕事がご褒美みたいな感覚になり「休日も平日も違う意味で休みなんでボーナスタイムじゃん」ってなっているのが面白い。仕事の間育児のことを気にせず仕事を楽しめるのは妻がそういう環境を作ってくれているおかげなので本当に感謝している。

ジュニアエンジニアに意識してほしいこと

あまり大きな成果が出せずに思い悩んでいるジュニアエンジニアの方に意識して欲しいことがある。ジュニアエンジニアとは、一人前の手前のエンジニアのことである。実績を残すこと以上に、成長するためのアクションを取れているかが求められている。成長途中なので、バーンとした実績を残すことは現実的に難しいかもしれない。だがそこでめげず成長のための種をまき続けて欲しい。

 

ミーティング中に分からないことがあれば躊躇せず聞く。もし都合が悪ければ「後でフォローするから後で話しましょう!」となるだけで誰も損しない。その都度質問することが当人に有益なのはもちろんだが、他の人が質問しやすい雰囲気を醸成することに繋がる。なんなら先輩もその環境に助けられるかもしれない。チームの良い文化を作ることに貢献するというのは誰にでもできることではない。

PRを作る時、分からないから既存の処理をコピペするという経験は誰にでもあると思う。それをしれっと出し、突っ込まれずマージしたとする。それでホッとしてしまうとそれに関する知識がつかないどころか、分からないことをやり過ごす悪習を身につけてしまうことにもなる。弊害として、意図ないコードをあげる人は信頼を得づらくもなる。誰にでも分からないことはあるので、「よく分かっていないです」と一言添えておけば誰かからのFBを得られる。自分がその知識について学べるし、チームメンバーも同じ内容を見聞きすることで学びが深まるかもしれない。

  • 分からないこと・できないことを表明する技術
  • 現状や気持ちを適切な形で表現し吐き出す技術
  • 自分が得するだけでなく他人にも影響を広げる技術

技術の前にソフトスキルとして僕はジュニアエンジニアにこれらを身につけていくことを求めている(もちろん一部であるが)。

既に書いたように、ジュニアエンジニアの成果はバーンとした実績を出すこと(だけ)ではないので、周りの職位が上のエンジニアが実績を残す中でもやもやしてしまうことがあったら、「職位が上のメンバーのようになるためにできることを今やれているか」と自問自答して欲しい。できていたら誇って良いし、できてなかったら明日からやっていけば良い。周りと比べて凹む必要は全くない。

成長スピードは人それぞれなので、色々な気持ちに折り合いをつけ成長するためのアクションをやめないことが大事なのである。