あまりにもブログが書けていないのですが、生きています。
忙しいのもあるのですが、記事を途中まで書いてそのままになっているものが多いです。こんな感じです。
書きたいけど、いっそ消したほうが良い気も。
最近の私
ようやく、転職して半年経とうとしています。思いがけず、新規プロダクト(立ち上げが終わった後)の一つを担当することになり、知識が無いなりになんとか自分が立ち上がってきたかな、と思っています。
一応、プロジェクトマネージャーには合格しています(下記記事参照)が、これまでまともなプロジェクト運営経験はなく、得意なのは設計技術と今でも思っています。苦しいことも多いです。
ちょっと、一人でやってきたことの感想を書いてみます。
体調とか
三カ月前から一人*1でプロダクト全体を見る立場となっています。
これ、俺が倒れたら終わるなぁ…
という思いに行きついたこともありました。というかすごく最近の話ですね。すごい遠い過去に感じます。
プロジェクト運営
一人だと、運営もくそもない、というのが結論です。何をやるにも、自分のタスク時間を削るしかないです。
オフショアのメンバーに仕事を渡すために設計するとして、設計しながら、ここまで設計するなら作ったほうが早いと思ったことは一度ではありません。
例えば、曜日を日本語で表示して、という場合、ロケール指定方法などを調べるのですが、そこまで調べるなら自分で書いたほうが早いので、なんで調べてるんだろう…という感じです。
かと言って設計で手を抜くと、余計なやり取りが発生するしコードベースが汚くなるし、というジレンマを抱えながらやっていました。
そして、自分で作る必要がある部分も設計と実装が必要であり、それとの二重タスクがあまりにも重い、というのが正直な印象です。同時に、日常発生する運用系のタスクや各種調整もこなす必要があるので、自分の実装時間を削るしかなく、結果タスクが回らないという状況に陥りました。
プロダクトのコードベース
私が入ったときにはプロダクトがあったわけですが、そこの良くない点は良く見えてきました。
すぐ直せる部分を躊躇なく修正できるのは、少人数故の利点だと思いました。今見えている課題は、
- アプリケーション層を配置したほうが良い(追加機能をControllerに書くしかなくなっている)
- リポジトリがリポジトリの役割を果たしていない(ただのORM)
- 時々、ビューのテンプレートにロジックが入っている(かなり排除した)
という感じです。全体を見れば共通になるべきところが散在しているなどの問題はありますが、修正が必要になったらリファクタリングするのを繰り返しています。
まだまだ一人でも見ていられる規模、と言い換えることもできます。
ただ、時間が無い中突っ走って実装している部分もあります。そういうのは技術的負債としてチケットを作るように心がけています。動くけど将来的には良くないというものを、その場で時間取って対応するか、将来に修正すべき点として残すか判断するのも、私の重要な仕事だと思っています。
技術面
一人でやってきただけあって、技術面ではかなり成長したと思います。
インフラ周りは知識面で非常に厳しく、学習する時間が取れていません。ただ、インフラ担当の人の支援がありますし、そこまで奇抜な環境構成になっているわけでもないので、なんとかなっています。
サイトの速度改善という観点でもいろいろやっています。他のプロダクトやその他知見は結構手に入るので、それの適用可能性や効果を見て、自分のプロダクトに適用していく感じです。
言語面では、サーバーサイドのScalaは当然として、
- HTML
- CSS(SCSS)
- Angular
辺りは普通に扱えるようになってきました。Angularはまだまだ、と言わざるを得ませんが。とにかくAngularがきつい。
先ほど書いたアプリケーション層が無い、という問題点とも絡むのですが、Scalaでの設計については、継続モナドあたりを導入できないか学習中です。
Controller層を書く際に、ここはアプリケーション層にできるという部分を切り出しておいて、分離できるようにしています。
学んだこと
いろいろやってきたのですが、学んだことも多いです。
というか、大半は私が一人で仕事が回っていないときに、お悩み相談の中でアドバイスをもらったものばかりです。
できないものはできない
一人でやっているから特にそうなのですが、やってほしいことを周りから言われてもどう足掻いてもできないものはできないと言うようになりました。
正確には、断る勇気を持て、と。
プロダクトで必要なある施策について実装している最中に、この修正を割り込みでやってほしい、みたいな依頼が来たとして。自分が見てもよっぽど効果が無い場合以外は断るようにしました。後にしましょう、と。
一人というのもあるし、依頼するにも設計が必要だったり、今の施策を止める価値があるかという観点で判断しています。一瞬で終わるものはやっていますが。
バッファを積む
施策実現の見積もりを求められるのでやっていますが、先輩社員にバッファを積むように言われました。
特に開発外からの(企画など)依頼の場合、それやらないと苦労するだけだよ、と。
今月は間に合いませんが、来月からはバッファをまとめて計上し、その枠の中で割込みタスクを受けるよう変更するつもりです。週ごとにバッファを管理すると管理するほうが面倒なので、月ぐらいでほどよいです。
使わなかった、もしくは余りそうなバッファは、技術的負債の返済に当てたり、プロダクトの改善に当てていけばよいと思っています。
感想的なもの
一言で言うなら、非常に忙しい日々です。そんな中で、ブログを書く時間を捻出できていないのが実情です。のんびり休んでいるときもあります。
というか、周りがつよつよエンジニアばかりなので、私みたいな初心者じみた記事ばかり書いていいものか…と思うことが多くなりました。
でも書いたほうがいずれ役立つ気もしています。
仕事が思うように進まず、悩むことも多いですが、調整すれば意外と何とかなることも分かってきたので、あまり抱え込まずにやっていこうとは思っています。
まあ、自分がやるべきことはしっかりこなす必要はあります。その意味で、自己研鑽も必要です。
転職して以後、決して楽な日々ではありませんし、苦しむ日もありますが、よくよく考えるとどこか充実している。そんな感じで過ごしています。こうして振り返っていると、激動の半年だったなと思います。
最近学習している分野
こんなの勉強しています。
これから
一人でプロジェクト回し続けるのが無理があるのと、プロダクトの特徴を考えると下に一人付けたほうが良いという話が上がり。現状は打破できそうです。
これからもプロダクトを成長させたい想いはあるので、それを実現するために無理のない範囲で頑張ろうと思います。倒れたら元も子もないです。