Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

30代からプログラミングを本格的に始めたエンジニアが生産性について思うこと

最近キーボードで文字を打つのが面倒になってきている技術本部 Eight Engineering Unitの斉藤です。
キーボードは既に100年以上使われ続けているみたいですね。そろそろ新しい入力の方法ができてもよさそうです。
例えば、頭で考えていることが文字に起こせたら、AIに任せるよりももっと便利だと思います。

前置きはさておき、Sansanではちょっと前にエンジニアの生産性と生産量の最大
化が話題になっていました。このブログをご覧の方ならご存知の方も多いのではないでしょうか。

私はこれまで何度か転職をしていますが、どの職場でも例外なくこの話題が挙がりました。
チームとして、あるいは事業としてどう最大化するかが基本前提となるのですが、私が今回話したいのは個人としての生産性の最大化についてです。
私は個人の生産性を上げることもチームの生産性を上げるのと同じくらい非常に大事なことだと考えています。
サッカーに例えると、同じ戦術のチームがあるとして、パスやドリブルが上手い人が多いチームの方が強そうですよね。

私は30代になってからエンジニアを本格的に始めたので、自身のスキルに一抹の不安があった時期があります。
しかし、焦点になるのは先に挙げたように全体の話となることが多いので、個人の成長は基本個人任せになりがちです。

そこで、どうしたら個人の生産性を上げられるのだろうか、と自問しながらこれまでエンジニアとして経験してきた中で、いい機会だと感じたので、そのやり方を言語化することにしました。
その中でも特に影響が大きかったものを3つ挙げたいと思います。

1. コードを全て把握する

コードを全て把握している、ということはどんな改修依頼がきても修正のイメージが瞬時に湧くと思います。
しかし、システムを1から作っているならともかく、誰かが作ったシステムの場合、改修を担当した箇所しか把握していないことも多いと思います。

そうなると、これができている・できていないでは大きな差になると思います。
私は空き時間を利用してコードを全て見るようにしています。
なんなら業務の一環としてこの時間を使ってもいいと考えています。

ただ、それだけではなかなか見るモチベーションが上がらないので、以下のやり方をする事で効率があがりました。

  • ユーザーストーリーに沿ってコードを追ってみる
  • 仮想修正タスクを作り、修正を加えてみる

特に前者はドメイン知識の理解にもつながるのでおすすめです。

2. 短時間でも集中する癖をつける

一日中コーディングに時間を費やすことのできる環境であれば問題はないのですが、不意の他者からの仕様確認やエラー対応などで作業が中断されることは多いと思います。
そんな時、15分後にミーティングがあるとしたら、手が動かない人もいるかも知れません。
さらにそれが繰り返されると、今日はもうコーディングを諦めよう、という境地に至るでしょう。

しかし、そんな状況でもすぐに開発作業に復帰できるのであれば、これは大きなアドバンテージです。
私は作業が中断された時は以下のやり方で集中力の復元をしてきました。

  • 短いゴールを目標に作業を再開する
  • ちょっとしたリファクタリングをする

後者は1行程度のロジックをこういう書き方にしたらもっとスマートになりそう、と考えることです。要は短い時間でも成果を出せる状態にすることです。
私はこれを繰り返すことで、集中状態にすぐに復帰できるようになったと感じています。
ただし、ミーティングが次に控えている場合は気をつけましょう。参加するのを忘れます。

3. 作っているものに興味を持つ

最後は作っているものに興味を持つことです。愛着を持つ、と言っても過言ではないです。
これがあれば、これまでに挙げたものを含めいろいろなことの原動力+触媒になり得ます。
感情論にも聞こえてプロには必要ないと思う方もいらっしゃるかも知れませんが、感情に振り回されることがよくないことであって、成果を高めるための感情は必要だと私は思います。

気持ちの入っていないサービスにユーザが興味を持つでしょうか。
瞬間的には流行ることもありますが、長続きはしないと思います。

では、この意識をどう持ったらいいか。自分はこうしました。

  • 競合サービスにはないところを列挙してみる
  • これができればNo.1になれそうな事を考えてみる

なくても考えることが大事です。
先人の偉大さを感じられますし、自分が実現すればもっと凄いことに!
複雑な実装をする時も前向きな気持ちになれます。

終わりに

以上となります。
こうしてみるとタスクの消化スピードを上げることに関連したものが多いですね。
これらを重要だと感じた理由としては、これまでの経験上意外にできてないことだと感じているからだと思いますが、皆さんはどう感じたでしょうか。

速くタスクをこなせることに越したことはないのに、速くする工夫をしないのではいつまで経っても変わりません。
チームの環境にも依存せず、やっておいて損はないことだと思います。
この内容が皆さんの成長の一助になれば幸いです。

そんなEightでは、一緒に開発してくださる仲間を募集しています!
事業状況に対して柔軟に、そして最短でプロダクトデリバリーを実現する組織を一緒に目指しませんか?

media.sansan-engineering.com

また、3/27 (水) に「持続可能で柔軟な開発プロセスの実践」というイベントで登壇します。ぜひ、お気軽にご参加ください!
sansan.connpass.com




20240312182329

20240315190344

© Sansan, Inc.