以下の内容はhttps://ningenme.hatenablog.com/より取得しました。


その1時間が作れない。

こんにちは、くるです。
普段エンジニアリングの仕事をしている時の話。



タイトル通りなんですが、1時間が生み出せない。

いや、毎日8時間かそれ以上は働いてるのでなんのこっちゃ、なんですが。


チームで開発をしていると、直した方がいいリファクタリングとか、すぐは必要ないけどやったほうがいい対応とかが無限に出てくる。

ただ、時間は有限なので、そういうタスクを見つけた順の貪欲法的ですぐ着手する。ってのをやっちゃうと、本来今やるべきタスクが疎かになる。

それはまずいので、優先順位が低いタスクは実際後回しになるよね。的な。(リファクタリングが大事ではないなんてことは全く思ってない。僕自身コードベースの綺麗さはプロダクト価値にかなり直結しているという思想はある)



あたり前だけど、時間というのは価値が大きく、常に優先順位を定めてエンジニアリングに取り組むのが所作になってしまっている、みたいな話。



僕はエンジニアリングが好きなので仕事でも一定残業厭わず働いてるので、1時間を錬成しまくってるのだが、それでも足りないと感じる。


マネジメント業もあるのでミーティングも日中は多い。でもまあそこはそんな障壁には感じていない(僕はミーティング聞き流しまくりなので、作業出来ないみたいなのはあんまりない)

チーム内のコードレビューなども可処分時間を一定持っていかれるが、そのあたりが辛いとかもない。

何か妨げがあるとかではなく、あらゆる時間の使い方に優先順位を常に意識してしまう、みたいな話。これ自体はちょっとストレス。


それぐらい、エンジニアリングでやることが多く感じる。
激務というより、新卒の頃より見えるようになってしまった、気になるようになってしまった、解決策が分かるようになってしまった、みたいなのを感じる。


今1番の価値はなんだろう、って常に意思決定しながら動き続ける。チームを持つと、これに他人の動きも巻き込むから決める難しさがさらに跳ね上がる。


遠い未来のtobeだけ考えるのは簡単な部分もあるが、その過程で、時間に対する価値の最大化をするのはとても難しいなと感じる今日このごろ。





個人開発やってるとこういう窮屈さがなくて楽しいよね。当たり前だけど。

他人に価値を説明できなくても、フィーリングでエンジニアリングするのも一定大事だよなと感じる部分が正直ある。言語化できないけど。これが言語化できたら僕の業務エンジニアリングスキルももう少し上がるのかも。


終わり。

僕の心のシニアエンジニア

マネージャー「では、急ぎでこのバグ修正をする必要がありますね。誰にアサインしましょうか」

みんな「 ...... 」

マネージャー「うーん、みんな忙しいですよね」

僕『うーん、僕も今は他のタスクあるし結構忙しいからなあ、他の誰かやってくれるかな』

???『くる太郎くん、そのタスクを引き受けるのです』

僕『!?』

???『くる太郎くん、そのタスクを引き受けるのです。誰かがタスクを拾わないと、課題は解決されません』

僕『き、君は!?』

僕の心のシニアエンジニア『私はシニアエンジニアです。あらゆる落ちてるボールを拾うのです。』

僕『誰!?てか僕にアサインは振られてないけど ... 』

僕の心のシニアエンジニア『自分から手を挙げるのです。あらゆるチームの課題にownershipを持つのです。早くバグを直すのがいまの最優先のことでしょう?』


--------------------------------------------------------------------


こんにちは、ソフトウェアエンジニアのくるです。

心のシニアエンジニアと対話する話。






今回も完全にソフトスキルの話。精神論です!



業務でソフトウェアエンジニアとして職に就く場合、自分の観測範囲だと、スキルや経歴に応じたグレードが会社から定められることが多いです。
そのグレードで給料なども決まる。みたいなものですね。

ここで、エンジニアとしてまだまだ未熟な部分がある人を「ジュニアエンジニア」、一方で卓越したスキルを持っていて、チームや会社を引っ張っていけるようなロールの方を「シニアエンジニア」と呼んだりする事があります。先ほどの説明でいう、グレードが低い人がジュニア、グレードが高い人がシニア、って相関がある感じです。


ここでいう、ジュニア/シニアは年齢のことなどではなく、スキルに対しての言葉です。
なので、若くしてシニアエンジニアと呼ばれるような強い方もいますし、少し年齢を経ていても業界未経験ならジュニアエンジニアと称されることもあると思います。

ただの言葉での表現なので、明確な定義とかはないかな。あるいは会社によってまちまちかなと。






シニアエンジニアとは、一体何なのか?どうやったらなれるのか、我々はその答えを探すべく ......

--------------------------------------------------------------------



シニアエンジニアとは

技術力がずば抜けて高いとなれるのでしょうか?
技術力が高いというのは、どういう状態?
ossにコミットできているとか?
プロダクトのアーキテクチャ方針を決めているとか?
twitterで有名だったり、イベントによく登壇しているかとか?

あるいは、マネジメントスキルが高いとシニアエンジニアになれる?
チームを引っ張っていれば良い?
プロジェクトを進めて幅広く人を巻き込めていると良い?


シニアエンジニアとは、一体何なのか?やはり答えは分からない ......


--------------------------------------------------------------------


ということで、若干散らかりましたが、シニアエンジニアの定義は僕にはあんまりわかっていません。
ただ、一緒に働いてきた人の中で、この人はシニアエンジニアだなと思う人はたくさんいます。
そういう人から影響を受けているなーというのはとても感じます。

僕の思うシニアエンジニアは、
・誰も手をつけないような浮いてるタスクを拾う
・エンジニアという領域にこだわらず課題を解決する
・障害対応に常に出てくる
・他の誰かと揉めたりせず常に場を収める


こんな感じかな?他にもいろいろ要素はあるけど、なんとなく僕は大人で包容力のある人がシニアエンジニアだなと感じています。
これもまた僕の主観なのですが。
あらゆることに対してownershipを広く持ってるのがカッコいいなーと。


いろんな人と仕事をしていく中で、自分の中のシニアエンジニア像というのが他人に影響されて出来上がっていくな。と感じます。

僕の中のシニアエンジニア像 = (エンジニアAさんの良いところ | エンジニアBさんの良いところ | ... | エンジニアxxxさんの良いところ)

みたいな論理和の感じのイメージ。この人のこのスキルすごいなーみたいな。



この、自分の思うシニアエンジニア像というのは新卒で働き始めた頃よりも年々解像度が増していって、自分の心の中の柱というか、指針としての大きなベクトルというか、そういったものになりつつあります。


この心の偶像がいることで、『僕の思うシニアエンジニアはこうだから、これは嫌な仕事とか気持ちが乗らない仕事でも、頑張るか。。』みたいなことがよくあります。
心の中の葛藤。
葛藤してる時点で、僕は純粋な気持ちで僕の思うシニアエンジニアにはなれていないのですが。


まあ、他者から見たイメージがあるとして、as-isとto-beに差があるならロールを意識して動いて、自分の行動のベクトルをちゃんと律しようみたいな感じかな。ちょっと大袈裟かもだけど。


--------------------------------------------------------------------

あらゆるタスクを拾うとか、手広く課題解決をする。みたいなのは新卒の頃に比べれば上手くなった気はする。



ただ、最近の具体的な話で言うと、僕はまだまだ未熟なところがあり、全ての場を丸く収める、みたいなのが苦手だなと感じています。
エンジニアリングスタンダードが下がるぐらいなら他者と揉めても良い、みたいな価値観がいまだにある。良くない。


エンジニアリングのポリシーは良いものにしつつ、誰とも揉めず、かつ全てを前に進める事ができるのが僕の思うシニアエンジニア像というか、そういう憧れはあるので、その辺はもうちょっと頑張らないとなーと。

ソフトスキルもそうだし、自分のやりたいエンジニアリングがあるなら圧倒的ハードスキルでちゃんと周りを強く巻き込む、みたいなのが必要とひしひし。




圧倒的技術力を持つために常に剣を研ぎつつ、周りのサポートもできる余裕や心構えを持ちつつ、全ての課題を破壊して自分で城を築ける、最強の王になるしかない。








というわけで、心で自問自答してる話でした。
AIで絶賛今も技術がパラダイムシフトしてる感はありますが、それもひっくるめて何でもできるようにならないとなー。焦り。


おしまい。

オンラインとオフラインの限界

こんにちは、ソフトウェアエンジニアのくるです。

「オンラインとオフラインの限界」の話

新規性はないです。もう無限に結論出てるような話を改めて自分の尺度で。


前にも書いた近い内容の記事はこちら。

sizu.me




最近の話で言うと、フルリモートワークで仕事をするということ自体が少し減ってきているのが世の中のトレンドなのかなと思う。
いわゆる出社回帰。

いいと思うし、出社した方がコミュニケーションも取りやすい。それでいてリモートワークでも業務が成り立つことはある種確立されたので、ワークライフバランスをとって各々都合が悪い日はリモートワークも使う。みたいな働き方はとても良いことだと思う。



一方で最近辛いのが、オフラインで起こるコミュニケーションのコンテキストのロストである。
情報を全てopenに記録した方が良いという意識のある人は、結構オフラインで話したことをslackなどにも残してくれる。そういう人は、テキスト上で突然決まったように見えるような意思決定も補足をしてくれたりもする。こういうのはとてもありがたい。


ただ、こういう俯瞰したソフトスキルというのは僕視点では結構高度なことで、全員がそういうことをできるわけでもないよなーというのを感じる。
なので、やっぱりオフラインとオンライン両方を混ぜて仕事をするというのは、結構難しいなと思うことがある。
出社する雰囲気があるなら、フルリモートの人はいない方がいいだろうな。と。



一方で、アウトプットの量や質を見た時に、自分はフルリモートの方が個人としては明らかに良くなるなーとも感じている。
これはもちろん人によりけりで、オンボーディングが必要な人とか、コミュニケーションが業務の主体の人はオフラインの方が生産性上がると言われて特に反論もない。



ただ、若干最近感じるのが、オフラインでコミュニケーションを取ることでなんとなくの仕事してる感が生まれてしまい、アウトプットの量を意識しない人が一定数生まれてしまっている?というのを危惧している。
何を言ってるんだ、という感じだが、現にそういう現象があるなと感じている。



テキストでのコミュニケーションというのは曖昧なことを言いづらい、というのが、オフラインでの会話に比べてあるなと感じる。
笑いで誤魔化したりしづらいというか、嘘が嘘として記録で残ってしまうので適当なことを言いづらいというか。

アウトプットを出さないといけないロールなのに、コミュニケーション主体で誤魔化すスタイル (この言い方はかなり揶揄になって良くないが) の動き方ができる構造になっていると感じる。

このムーブの発展系として、周りから一定の評価は得つつも、結局仕事としてはほとんど何も進捗していないみたいな事象も生まれてしまう可能性もあると感じる(この言い方もかなり揶揄になって良くないが)



これはまあオフライン主体で仕事をする上では普通に起きることかなと思うのと、ある意味コロナ前では当たり前のことだったので、変なことではないとも思っている。



どちらかというと上記の状況を普通と仮定して話した方が良いとも思えてくる。
オンライン主体の開発業務になると、ハードスキルが露骨に誤魔化せないというか、オフラインよりは可視化されやすい状況になるなと感じる。

加えて、物理的な通勤時間や、mtgの隙間などのオーバーヘッドがなくなることで、アウトプットの量を最大化することに徹した時の最大出力みたいなものを知ってしまったので、余計にオフラインだとアウトプットが若干減っていることを感じてしまう。

出社回帰するならもっと少ないアウトプットでも良い、みたいなのを改めて定義できるといいなと個人的には感じつつも、生産性が低くて良いなんていう会社はないとも思うので、まあそれは絵空事な感じではある。




もちろんオフラインで仕事することの意味合いはアウトプットの量だけで測れないところはあるというのは感じる。コミュニケーションパスの形成とか、チームの雰囲気作りとかはオフラインの方が良いとも自分も感じる。


仲良くなった分の連帯感で、オンライン時のアウトプットの総量を結局越えれるならそれは良いかなと思うし、実際のところそんなもの測るのは簡単ではないと思うので、是非は言いづらいなとは感じる。



てな感じで、あんまり答えのない話なのでした。
ちなみに僕個人としては毎日オフィスで作業してたい派ではある。(アウトプットの量の話はどうした、という感じですが。。)




ハードスキルあってのソフトスキルというスタンスを持っている、と数年開発していて自分の中で強く感じる (自己分析)
やっぱり技術やアウトプットを大事にしていきたいな。という思いからこんな風に謎の論理を展開しただけで、だいぶ偏った話はしているのでしょう。

おわり。

話が転がるのを待つ話。

こんにちは、ソフトウェアエンジニアのくるです。


「話が転がるのを待つ」話。


仕事をしている途中、意思決定の場面が無限にあるなと感じます。

小さいものならコードレビューでapproveをつけるとき。自分は良いと思った、という決定。
大きいものならアーキテクチャの設計とか。なかなか引き返せない意思決定もあります。



そういう、エンジニアリングにおける「決定」という作業には、周りの人と合意をとったり、共有をもって初めて決まるといった性質を感じます。
自分の中で一人で完結しない意思決定というのは、他の人にも納得をしてもらったり、形式的に記録を残しておく、みたいな所作をよくやります。


今回はそういう業務仕草の話。




自分はエンジニアリングをする際、ある程度正解というものを突き詰めながら進めるタイプです。
もちろん技術の移り変わりはあるし、世界というstateは日々変化するので、エンジニアリングにおいて絶対的な正解というのはないでしょう。


ただ、ソフトウェアを開発する上で、現状の情報から決めれるベターな解決策、みたいなものは存在していると思っています。今時点での暫定的正解、みたいなものですね。
正解と呼ぶのは些か言葉が強いので自分はよくtobeと呼んでいます。

別に後から見たときに間違っていても良い、でも今時点では全員が納得できるtobeを目指す。こういう姿勢が好きです。


正解というよりは、皆で話してこれを暫定的な「正解」とする。という立て付けかな。



tobeを描いた上で後から状況が変化し、その意思決定そのものが技術的負債になることは大いにあると思っています。
そして、それはそれで良いこと、と自分は思いながら日々エンジニアリングをしています。


tobeを描かずなんとなくで決められたことは誰の意思も存在せず、より苦しい技術的負債になっていることの方が多いかな、と自分はよく感じます。

tobeを描くというのもスキルの1つだと思うので、そういう意味でもあらゆるアウトプットに対して、自分の中でのtobeは持ち続けていたいな、というのをポリシーとして感じます。





このtobeを描いたり決める場面においては色々なシチュエーションがあるなと感じます。身近なチーム内だったり、あまり面識がないチーム間のやりとりだったり、各マネージャーが集まった場など。



例えば、ある開発チーム内なら意見がズレたときには最終的な意思決定はマネージャーだったりテックリードだったり、何かロールがある人が下すという手段はとれるでしょう。その中では相対的に良い決定を出来る人がロールについてることが多いと思いますし、普段から一緒に仕事をしているメンバーならコンテキストの共有も多く、スラスラと話が決まることも多いのかなと思います。







一方で難しいのが、チームを跨いだり、マネージャー同士などで取り決める意思決定です。

基本的には人の集まりの中で誰かしらにロールが決まっていることで、意見を集約する作業はスムーズになると感じます。
しかし、そういったロールにおける濃淡がない関係性や、関係値が薄いときにも意思決定をしていかなければならない状況というのは多々あります。



そしてこういう場面において、意見が割れてしまったときなどに意思決定のコストは跳ね上がるなと感じます。
エンジニアリング自体、こだわりの出る事柄と感じるところは多いので、議論を始めるとなかなか着地が出来ず意思決定が宙に浮くこともしばしば。



やっと本題に来ましたが
こういうときに、話が転がるのを待つほうがいいときもあるなと感じる話。



自分は割と議論を進めるのが好きで、拙くてもtobeを発言することが多いタイプと自認しています。
エンジニアリング歴を重ねるにつれ、tobeの精度も少しずつ良くなっているのかな、という自負もあり、ある程度組織内でエンジニアリングにおける方向性みたいなものの理想形を自分の中で持って話をすることが多いです。

上述したものとは異なる、いわゆる「待たない」タイプですね。

特に議論が変な方向に転びそうなときは、割とすぐ口を出すタイプです。明らかなマイナスが生まれる意思決定というのは見過ごせない。


でもそういうときに議論をしてもなかなか期待通りの着地をしない時があります。人間の意見は分かれるものです。
向こうから見れば僕がなかなか折れてくれない人になっている。


そういうときに昔は割と折れずに頑張ってしまう事が多かったのですが、最近は折れてもいいか。と思い引くことが増えました。


これは丸くなったからというよりは、意思決定の通し方を学んだという感じです。

折れてしまうともちろん議論としては自分が望んでいない意思決定にはなってしまうのですが、それが決まった後でも、結局話が途中で頓挫し、自分が最初言っていた案に戻ってくるという場面が割とあるなと感じることが増えました。


この議論の巻き戻りは、数週間で収まるときや、1年後とかだったりすることもあります。人の意思が変わるには色々なタイミングや流れがあるので、そのスパンは様々。


ただ、自分が良いと思っている方向性に関して、途中変な寄り道をしても、結局は話を戻せることもあるなあという感じです。
もちろん戻せないこともあります。

逆に自分がそもそも間違っているときも。



でも長いスパンで見て、自分の意思決定と最終的な流れが同じベクトルに向くかどうか、が大事だなと感じます。

最初の頃は割と結論を急ぎたいタイプでしたが、周りを巻き込んでtobeに持って行くには遠回りも必要だな、という感じです。これはちょっと偉そうな感じですがそう捉えることも大事みたいなモチベーションの話ですね。



自分のベクトルと、組織のベクトルの内積が大きくなってきて、自分の意思決定の打率が上がると、説得力とか信頼にも繋がるのかなと感じます。こういったものは目に見えない蓄積値があるなと。
打率を上げることで上述した「待つ」回数も減り、最初の提案の通りやすさも上がるのかなと感じます。


業務仕草すぎて辛いのですが、人間同士でエンジニアリングをやる以上自分は避けれないなと思っているのと、よりよいエンジニアリングをするために自分の打率をあげることは大事かなと思うようになりました。



もちろん、自分のエンジニアリングの方向性が良いだろうという「うぬぼれ」が前提なので、打ったら点を取れるパワーや技術は欠かせないのですが。




あと、常にtobeが見えすぎて話を通しすぎると、割と正しいとしてもワンマンな状態に近づいてしまうこともあり、人間社会では少し見栄えが悪いのかなと思うときがあります。
意思決定パワーは大事な場面で発揮して、軌道修正しやすい小さい課題は少し見守る、とかも最近感じます。意思決定介在バランシング。




そんな感じで、「話が転がるのを待つ」話でした。
コミュニケーションは難しすぎる。




ソフトスキルの話永遠にしてたけど、でもやっぱそもそもはいい意思決定を出来るハードスキルが大事かな(元も子もない)


終わり。

業務6年目終わりメモ。

6年目が終わった。テックリードを務めつつマネジメントをやった1年。もう完全にマネージャーです!

過去ログ


以下6年目までの技術スタック。


DB・データストア・ストレージ

  • この1年で触ったもの

oracle / mysql / aurora / redis / s3 / msk

  • 累積で経験はあるが、この1年で触らなかったもの

postgres / aws sqs / cassandra / memcached / dynamo / solr


kafkaの運用に振り回された。大変なものだなと実感。
めっちゃ優秀なエンジニアがチームに数人いてくれたからギリ何とかなっているが、可能ならkafkaを使うのは避けたいなと思わされた。
今のプロダクトでは必須でいる要件になってるので技術選定自体は合ってる気はしつつ、辛みが多い。

イベント連携かっこいいしオシャレだけど、やっぱ古風にapi/batchだけでシステム組めるとシンプルよね。としみじみ。
message queue の設計知見はかなり増えた気がする。イベント連携をやるにあたっての粒度とか、イベントの連鎖とか、そういう設計に向き合う時間が多かったからかなり自分なりの考えが深まった。この辺はオモシロではある。


言語

  • この1年で触ったもの

Rust / Kotlin / Java / Typescript

  • 累積で経験はあるが、この1年で触らなかったもの

c++ / go / groovy / php / javascript / python

可処分時間はRustを書いていた。楽しいね。
業務はKotlinが多い一年だった。Kotlinに触れるたびにJavaはもういいかなーの気持ちにさせられる。モダンsyntax。



フレームワーク

  • この1年で触ったもの

Axum / Spring Boot / Junit / Kotest(new) / Next / React

  • 累積で経験はあるが、この1年で触らなかったもの

Spock / Laravel / Fuel / Symfony / Vue / ReactNative


Kotestを初めて触った。Kotlinで業務コード経験薄かったからテスト周りのナレッジ初めてだった。Javaのノウハウが活かせるようで活かせないのが若干辛い。Spring Bootをわかっていればという部分では同じなんだけど、それ以外のところで躓くね。
フレームワークの勉強はマジで年々薄くなる。
2,3年目に学んだSpring Bootの知識だけで今も生き続けてしまってて、よくない感。
Spring Bootぐらい再度一通りinputしなおしたいなあ。呼吸するように使ってるし、まだお世話になるかなという感じなので。


CI/CD・IaC・コンテナ・インスタンス

  • この1年で触ったもの

terraform / github actions / K8S / ECS / ec2 / docker

  • 累積で経験はあるが、この1年で触らなかったもの

cloud formation / code build / code deploy / code pipeline / ansible / screwdriver / chef / jenkins / concourse / EKS / OpenStack / pivotal cloud foundry


インフラの進歩ゼロの1年。awsとか色々増えてるんだろうなと思いつつ何もみていないな。k8s触れたら全部何とかなってしまう。


ネットワーク

  • この1年で触ったもの

なし

  • 累積で経験はあるが、この1年で触らなかったもの

CloudFront / Route53 / ELB / nginx / apache / Kong / Amazon API Gateway

ネットワークも今年何もやってないな?
ネットワークといえどソフトなレイヤーしかそもそも触らなくていいロールなのにそれすら何もなかった。


ほか

  • この1年で触ったもの

let's encrypt / connect buf / openapi generator / mybatis generator / pt-online-schema-change / github copilot (new)

  • 累積で経験はあるが、この1年で触らなかったもの

newrelic / sonarqube / aws step functions / Jmeter / grafana / prometheus / splunk


openapi周り、最新のメジャーバージョンで結構良くなってて好き。
あと慣れてると思ってたpt-oscで今年はちょっとやらかした。
今まで外部キーをロクに貼ってないプロダクトで慣れてしまっていたために、硬め設計のmysqlですげーロックを起こしてしまった。


あとここ1年は何といってもAIか。
agent使ってコード書くの全然慣れてないけどちょっとずつ触ってる。
良さそうというよりは技術に追いつかねばという焦燥感に近い。

mcp作りまくることにバリューが出るなら、まだソフトウェアエンジニア屋にも未来ある?
とりあえずがむしゃらについていかねばだ。


技術スタックという目線だと今年も+diffは少なくて、広義のエンジニアリングにばかり時間吸い取られてる。
ハードな技術力が下がってる気がしなくもない。焦り!
実際周りの人と仕事してて、劣ってたり下がってる感はないけどinputが薄いことが長期的には響くよなーの気持ち。


この1年他にやったこととしては、とりあえずテックブログを書いた。思想。

techblog.lycorp.co.jp



他には、マネージャーロールを持つようになったので、マネジメントパートもまあ色々やっていた。
4,5チームのマネジメントっていうのは、まあできてたかはともかく自分にとっては色々初めてで面白かった。
自分の思想や責務をとどかせる範囲とあきらめる範囲のコントロールみたいなのを意識させられるね。
120%の自分のコミットのプロダクトは作れなくて、限界を感じた。


あとはプロダクト横断のtech lead的なポジションで活動もしていて、アーキテクチャのポリシーの推進とか、マクロにチームを巻き込んで大きいベクトル合わせてみんなに動いてもらう、とかそういうのをやっていた。
むずい。責務とかオーナーシップとかいうワードを1日10回ぐらい毎日言ってる気がする。


7年目は、まあいきなり6年目とやること変わるわけじゃないけど、マネジメントもまあ少しは様になってきた気もするので、もう少し大きく広げていきたい気持ち。
あと10年目とかもっと先でもいいけど、キャリアの中でVPoEとかやりたいなーって思いが出てきた。プロダクト全体のポリシーとか、自分の思想を広く浸透させていいもの作りたいという思いが出てきている。





あと年振り返りはやめた。ので2025目標が今 null になっている。

2024はこれ
2024目標メモ。 - くるのプログラミング記録


この1年の大きいことといえばあと子供が生まれたのと、結婚式をしたこととかかな。


人生パート一旦もう満足なので、エンジニアリングに打ち込まねばの気持ち。
やるぞやるぞ。







ハードスキルのinputが減った時間で多分「仕事」が上手くなったかなって所感がある。
給与の上げ方とか、バリューの出し方とか、自分の思うエンジニアリングの方向へ全員を誘導するテクとかそういうの。
意味あることかはわかんないが、まあ1,2年そういうのあってもいいかと一旦割り切り。

ただAIでパラダイムシフト来てると思うので、マジで今はinputが大事かなと感じている。
わずかな時間でもっと作れるようになるなら、個人開発でプロダクトを動かすとかそういうのもっとやらねばの気持ち。



おわり。

自分思想的マネージャー論

こんにちは、webエンジニアの くる です。

自分の業務の方で、最近マネジメントをするロールになりました。いわゆるマネージャー。それにあたって今の目線を色々メモとしてアウトプット。
忙しくなったり変に視座が上がっちゃう前に今の気持ちを残しておきたい。



プロジェクトマネジメントとかプロダクトマネジメントとか


元々、自分はマネージャーという肩書きに対して疑問が結構あった、プロダクト開発において必要なものではないだろう?と。
そこは正直今でも変わらなくて、肩書きは不要だと感じている。
チームをまとめたり、技術方針を決めたり、プロジェクトを進めたり、他チームとやりとりしたり、などという前に立つロール自体はweb開発において必要とは感じるが、これは自分の中ではプロジェクトマネージャーとか、プロジェクトリードとか、テックリードという呼称かなと思っている。そしてこのロールの人間がいれば開発はそこそこ回るし、プロジェクトリードのロールやテックリードのロールを兼ねないマネージャーという肩書きだけの存在というのは不要と思っている。

改めて見返してみても自分の思想が尖りすぎてて怖い。まあ今も同じ気持ちだけど。マネージャーに親でも殺されたかの勢い。


メンションを向けられたりmtgに出るものの何も自分で答えることができないマネージャーというロールの人間を、自分は皮肉の意味も込めて、プロキシとよく呼んでいる。なんとなくポジションは維持したいが、開発に対するキャッチアップは薄く、せっかくの裁量を全く活かそうとしないような主体性のない人に対してこれをよく言う。実際こういう人は一定数いると感じる。メンバー目線だとやだなあって感じ。いても意味ないから。

別に技術に疎くなるとか、実装をしないことはロール的に全然よくて、でも自分でプロダクトを作っていくっていう気持ちを持ってて欲しいなと感じる。

ピープルマネジメントとか

形式上のマネージャーにおいて、一番大事なのはピープルマネジメントなのかなと思うところはある。前言撤回というわけではないが、ピープルマネジメントが必要な職場では、マネージャーは必要と感じる。
ここでいうピープルマネジメントとは、人事評価、リソース管理などのことを指している。

本来、プロダクト開発において、可能であれば評価制度というのはない方が良いと感じる。プロダクトが良くなることと本質的には関係ないから。

でも実際そうは言ってられなくて、プロダクトを開発するのは「人」なのだ。それも大人数なのである。会社という集団で、給料をもらいながら多くの時間を費やしプロダクト開発をするという場合において、評価制度というのはあまり切り離せないことが多い。

全員に同じ給料を払うわけにもいかず、また全員が時間変化に対してずっと一定の給料で良いというわけでもないため、評価という仕組みは必要になってきてしまう。いわばこれは会社という場所で人間の営みでプロダクト開発をする弊害みたいな位置付けと感じている。

スタートアップとか小規模な開発において、評価という仕組みをなくす、あるいは軽くできているのならそれはとても良いことに感じる。プロダクトをより良くすることに時間をかけることができているから。

でも人が多い職場では、評価制度やリソース管理は必要で、マネージャーというロール自体が必要というのは納得感を持っている。


ピープルマネジメントの引力

ピープルマネジメントの怖さというか、自分目線でよくないなと感じるところに、ピープルマネジメント単体でマネジメントしてる感が出てしまうというところがある。

これはかなり偏見かもしれないが、ピープルマネジメントだけが自分の責務と思い込んでいる人、みたいな人を観測してきた。(少なくとも僕が主観で見た振る舞い目線で)
これももちろんポジションによっては必要な存在という認識はあるが、それはマネジメント対象のメンバーが多い場合の話であって、規模的に余裕がある場合はマネージャーもプロダクトやプロジェクトにもコミットして欲しいという思いがある。
メンバー目線ではピープルマネジメントの場面(1on1, 評価 etc ...)でしか出てこないマネージャーは、現場にいないなという感じがある。そうなると結局は何もしてくれない人、という感情が少し出てしまう。

もちろん、役職が上になればなるほど、1人での作業時間より他人とのコミュニケーション比率が上がることは認識しているので、ピープルマネジメントが100%のロールの人も必要とは思う。ただそれを少ないチームや人数の規模でされると、自分がメンバーなら辛いなと感じる時がある。

これは結局何人ならという話は難しくて、個人のキャパ次第なところかなとは思う。
組織構造にも依存するし、少ない人数だから絶対ダメというのも一概には言えないこともある。

ただ、ピープルマネジメントばかり続けていると、それだけがバリューと捉えてしまい、プロダクトやプロジェクトから離れてしまう傾向の人がいるなと少し感じる。
マネージャーは、実装をする時間がなくなっても良い。最新の技術をキャッチアップできなくなるのも仕方ないと思う。メンバーより手を動かすタスクが遅くても良い。その分の時間を他に割いているのだから。
でも、だからといってプロダクトやプロジェクトから離れていいわけではないのだ。プロダクトに向き合ったり、プロジェクトを進めたり、自分のチームのメンバーが携わっている開発に、主体的に向き合ってほしい。他人事じゃないんだよっていう。

そこらへんの気持ちを失わせるような作用というか引力が、ピープルマネジメントにはあると個人的には感じる。

マネージャーの不可逆性

組織構造上、マネージャーになるとメンバーに戻しにくい/戻りづらいという不可逆性があると感じる。
色々理由はあると思っていて
「実装などの開発タスクから離れたことによる技術離れ」
「組織上昇進しているという名目があるため安易にメンバーに戻してしまうと関係がギクシャクする」
「マネージャーを辞めると給与水準が下がることになってしまう会社のルールであるが、給与を下げることはセンシティブであるため戻せない」
など。

色々理由はあると思うけど、不可逆性が起こりやすい力学はあるなと感じる。

個人的には、いつでもマネジメントのロールがコロコロ変えられるような、人の変化に対してロバストな組織の方が強いと自分は思っているので、不可逆じゃなくなって欲しいなとは思う。
まあでも文化的なところもあるので、日本企業である以上は避けられないのかなと感じる気持ちもある。自分も助けられている部分もあるかもしれない。

肩書きの権威性とボトムアップな意識

マネージャーという肩書きを持つと、メンバーでいた時より組織内の得られる情報の絶対量が多くなる傾向があると思う。これはいわゆるマネージャー同士のミーティングや連帯感というか、少しセンシティブな話を先に共有などそういうコミュニケーションパスが出来上がるからだ。

こういうメンバーのロールの人と比べて情報の非対称性があることで、少し俯瞰した目線で意見を言いやすくなれると思う。
またマネージャーは主に他チームとの折衝係というか、窓口になることも多いため、大きなミーティングの場でも少し発言がしやすくなる傾向があると思う。
諸々の要素を兼ねて、自分はこのような作用を肩書きの権威性と捉えている。


新卒すぐの頃の自分は特に、このような権威性を持っている人がもっと頑張って欲しいという思いがあった。プロダクトを実際に進めたい方向へ動かしたり、既存のルールを変えれる立場にあるのだから、と。


実際そういう思いは今でも無くはないのだけど、ここは少し良くない見方だったなと思うことがある。

別にマネジメントロールでなくても、メンバーのロールでもプロダクトを進めていくべきだし、ルールは変えていくべきなのだ。
多くの人に対して発言をしやすいかどうか、というのは確かに権威性がないと少し不安になる部分はあるかもしれないが、それはマネージャーなんて肩書きがなくても良くて、自分の技術や知見でも補えるものなのだ。

1個上のグレードの仕事は、1個上のグレードになってからやるんじゃなくて、そういう仕事が実質できている状態で後から肩書きとかグレードがついてくる、みたいな話に近い。
結局ボトムアップで自分がやるという気持ちが大事。みたいな。




まあ、個人的にはマネージャーの肩書きに権威性があることは今でも感じるから、そういうロールの人はプロダクトを自分で変えたりルールをより良くすること自体が責務にあることを意識して欲しい、ってのは今でも全然思う。


ってなわけで

かなり偏見が強かったですが、自分なりのマネージャー論でした。


自分がやること

最後に、今の視点で自分がやっていこうと思うこととかをメモ。時間が経った時とかマネージャーのロールをやめるときに見返して、気持ちを忘れないようにしたい。

  • 全員の味方

自分がメンバーの時は、自分が何をやってるかマネージャーがわかってないって状態というのは結構辛かった記憶がある。
そういうのは無くしたいなって思いが結構あるので、主体的に人の開発やタスクに関心を持ったり、メンバー目線で何か課題とかトラブルがあったときに他人事にせず一緒に横に立って解決するのを心がけたいなーって。


  • 評価のベクトルの一致

これは人事評価あるあるかもだけど、実際に普段やってるような開発での時間の使い方の方向性と、評価とかに現れる目標の方向性の一致。100%じゃないにしても内積を大きくする必要がある。
目標設定がそもそも微妙なプロダクトだとこの辺辛いなーってメンバーの時から結構思っていたので、なかなか悩ましいところ。


  • 自分も1メンバー

自分も1メンバーという気持ちを忘れずに技術や課題に向き合いたい。
1つのタスクばっかりやっていいロールじゃないので、1人で完結する作業を積極的にやるというわけではないけど、自分のチームのプロダクトやプロジェクトがうまく進むためなら、必要に応じてコードも書くし、テストもするし、プロジェクト進行もするし、なんでもやるべきだなと感じる。
複数のチームを見る立場でもあるので、必要に応じて必要なチームにサポートするリソースプールになっておきたい。

(結局はコード書いたり作業したりしたい気持ちの方便な気もしつつ、そういうことばっかりやってるのは良くないという意識も持ちつつ)


マネージャーなんてただのロールなので、いつでも替われようになっておくべきだなと感じてる。
ここはかなり強い気持ちがあったので、マネージャーになった初日から引き継ぎ書を作って、職務に関しての色々をずっとドキュメントに残している。
初日からいつかやめることのこと考えるのネガティブか?と思いつつも綺麗に引き継げることは組織にとってもポジティブと思って書き留めている。

どの定例でファシリやるとか、mtgあるとか、組織のメンバー構造とか、地味にちゃんと明文化されてて欲しいよね。

  • プロダクトを作る

単に僕がしたいってだけなんだけど、自分の意見をチームメンバーに話す機会があることが多いなーとは感じるので、せっかくだから自分が思う作りたいシステムをチームメンバーみんなに手伝ってもらって、良いプロダクト作っていきたい、というのがある。
業務だからこそ個人開発じゃ作れないような規模のシステムを時間とリソースかけて作ってるので、そこを自分の意思を乗せてやれるのは楽しいよなーって。


おわりに

プロジェクトマネジメント、プロダクトマネジメントは別に肩書きなくても色々やってきてはいたものの、多分今の自分の視座はかなりメンバー寄りなんだろうなとは思う。
やっぱりこのロールを続けていくとプロキシになっちゃうものなのか、実は個人次第なのか。その辺どうなるか気になる。
後、自分目線では良くないと思っていたマネージャーの振る舞いも、実は意味があったりメリットがあったりしたのかとかも、気になる。

まだまだ手探りだし未熟者だけど、時間経過が楽しみなところ。
おわり。

業務5年目終わりメモ。

5年目が終わった。もう完全にテックリードエンジニアです!


4年目終わり。
ningenme.hatenablog.com
3年目終わり。
ningenme.hatenablog.com
2年目終わり。
ningenme.hatenablog.com


プロダクト全体のアーキテクチャ検討に奮闘し続けた一年かな。



以下5年目までの技術スタック。


DB・データストア・ストレージ

oracle
mysql
aurora
redis
s3
kafka
msk

(触らなかったもの)
postgres
aws sqs
cassandra
memcached
dynamo
solr


今年はkafkaがめちゃめちゃ印象にある一年。自分のチームでイベントドリブンでやりたい要件が出てきて、kafka導入した。
初めてdbを触ったときのような難しさがあってめっちゃワクワクした。今も完全理解ってわけではないけど、ある程度把握はできた気がする。
ちなみに本番運用はこれからなので、まだ痛い目見れていない。
kafka自体の良さは結構感じれるものの、周辺のエコシステムが微妙に弱い感じがした。mskのiam対応言語が少なかったり、公式cliちょっと使いにくかったり。
まあでも自分のエンジニアリングパワーで解決すべきことではあるので、まだまだパワー不足だなと思った。
dbとかはあんまりノウハウ増えてないけど、自分の好きなstateの遷移を明確にするデータの持ち方とか、データのライフサイクルとimmutableを意識した設計とかが活きてくる場面がかなり増えて、こういう設計しておいて良かったなあというのを感じれた。普段から理論的に良いと自信持って設計してるものの、価値を感じれるのって1,2年スパンかかったりするので、この辺経験できてるのは僕の中の体験としてとても良い。
自分の設計に成功体験を、ね。


言語

rust
Kotlin
Java
typescript
go
c++

(触らなかったもの)

groovy
php
javascript
python

今年は新言語開拓なし!ただrustを可能な限り書いていた。
自チームのメインの言語に採用とかは流石に無理だけど、小さいアプリケーションとか、競技プログラミングとか、趣味開発とか、こまごました場面で意識的にrust書いてた。楽しい。
web api も batch も cli も書いてみたので、rustである程度やりたいことができる感は出てきた。今年はしっかりしたwebアプリを1つ作りたい気持ち。



フレームワーク

Axum (new)
Spring Boot
Junit
Next
React

(触らなかったもの)
Spock
Laravel
Fuel
Symfony
Vue
ReactNative

rustでaxumに触れたぐらい?かな。それもまあopenapi generatorとの噛み合わせが良さそうだから採用しただけで、深いところ理解できてない。
フレームワークへの興味は年々減っちゃうなあ。


CI/CD・IaC

terraform
cloud formation
github actions

(触らなかったもの)
code build / code deploy / code pipeline
ansible
screwdriver
chef
jenkins
concourse

ansible触る機会無くなって書き方忘れてきた。terraformある程度最初に書くと保守性いいし新規のソースも少なくて、メンテ最高だなってのを感じれた1年。いい意味でキャッチアップ少なく簡単にインフラ管理できるね、やっぱ手でリソース作るのは悪。PRで僕と握手!


コンテナ・インスタンス

K8S
ECS
ec2
docker

(触らなかったもの)
EKS
OpenStack
pivotal cloud foundry


趣味開発k8sが1年以上ぬるっと動いてて良い。k8sへの抵抗も無くなったし、ecs高いし、身の回りのプロダクトは業務でもecsなくしたいな。コスト気になりすぎる。


ネットワーク

CloudFront
Route53
ELB
nginx

(触らなかったもの)
apache
Kong
Amazon API Gateway



ほか

let's encrypt (new)
connect
newrelic
sonarqube
openapi generator
mybatis generator
aws step functions
Jmeter
pt-online-schema-change
grafana

(触らなかったもの)

prometheus
splunk


let's encrypt 初めて触った。便利〜。




技術スタックという目線だと今年も差分少なめ。rustとkafkaぐらいかな。

今年一年は、自分以外の人やチーム、全体アーキテクチャなどを考える場面がかなり多かった。コストとか将来性とか、マクロな視点で考えないといけない課題が多くて、なかなか大変。パフォーマンス出すには今までやってきてない技術とか知見、考え方が必要だなと感じた。
マイクロサービスのtobeがどうなっているか、は難しくないなと感じるけど、tobeのマイクロサービスへどう変化させるか、はかなり難しいなと感じる。自分の手の届かない部分が多くて、でもみんなのメンタルモデルを変えたり、組織のあり方も変えたりとかを考えないと、技術やアーキテクチャだけでは実現できない場面が多い。
難しいね。


イベントは今年度も引き続き出てた。findyさんに招待いただいて多くのlistenerの前で発表できたのは楽しかった。

モジュラモノリス徹底解剖vol.2〜実践者から学ぶLunch LT〜 - connpass


PRレビューとかは相変わらず結構やってる、今年度も1000ぐらい見てるかなあ。


あと今年度は、自分のチームのメンバーに新卒の方が加わったのでスキトラもかなり意識した。技術を伝えるというより思想を伝えることをかなり意識してる。
技術なんて僕はすぐ抜かされちゃうし、できるだけ高速道路を走ってもらいたいなという思いが強くなっちゃうなとここ一年感じた。



他の人をtrustできる領域を増やして、マクロなエンジニアリングをしていくのが今の自分のミッションかなと感じる。
マクロばっかりやって、小さいエンジニアリングができなくなるのは避けたいので、そこはかなり意識しておきたい。

手を全く動かせないマネージャーやおじさんが嫌いという1年目の頃からの尖った気持ちを忘れずに、自分にも刃を常に向けて、精進。




6年目は、エンジニアブログ出したいなと思っているのと、イベントも出たいね。

自分の身の回りぐらいなら技術力誰にも負けないぐらいの気持ちにはなってきてて、コンフォートゾーンにいる感覚が強くなってきたので、ある程度のことを成し遂げたら少し破壊的な動きもしたいなと感じる。自分に対するカオスエンジニアリング。


強くなりた〜〜い。




以上の内容はhttps://ningenme.hatenablog.com/より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14