| @労働

可也山.jpg

プロダクトマネージャーになって 5 年ちかくが経った。最初の 2 年くらいはエンジニア気分が抜けず、 Vim を開いて何かやったりということがあった。ただ 3 年目くらいからはエンジニアっぽいことは一切やらず、プロダクトマネジメントだけをやるようになってきたと思う。ようやく自己紹介をするときによどみなく「プロダクトマネージャーです」と言えるようになってきた。

現在は登山アプリ・サービスの会社で仕事をしていて、割と頻繁に山に行ってドッグフーディングしている。なのでユーザー(山に登る人)の課題感が大体わかっているつもりだ。

もしいまの環境を変えることになったとして、自分は登山アプリ以外のプロダクトマネジメントができるのだろうかとふと思った。山が好きだから(ドメイン知識があるから)できているのか、それともプロダクトマネジメントのスキルが身についてきているのか。

これまで B2C 、 C2C 、 B2B2C など様々なサービスの開発に関わってきた。正直 ATI (圧倒的な当事者意識)が高い方ではなかった。なのでそんな自分がプロダクトマネジメントできるとは思ってもみなかったが、登山アプリの会社に就職して登山を好きになり、当事者意識が高まってプロダクトマネジメントを生業とするに至った。なのでいまの環境を離れてしまえばプロダクトマネジメントはできない可能性がある。趣味と仕事が重なる領域以外でも自分のプロダクトマネジメントスキルが活かせるのかが気になっていた。

しかしそもそも自分はソフトウェア(デジタルプロダクト)自体が好きなのだということに気がついた。あのプロダクトはこういう戦略で成長したとか、ソフトウェアの背景にある作り手の思想とか、そういうことを考えるのが好きだ。

ベンチャー企業のなかには、そのプロダクトがユーザーのどんな問題を解決しているのか作っている側も分からないまま突っ走っていることがあるのではないかと想像する。いまの職場でも、ユーザーがどの部分に最も価値を感じているのかを理解するまでにはだいぶ時間がかかった。

ある程度のシェアを獲得して、今後さらに規模を拡大したいというフェーズでは、ユーザーがプロダクトのどの部分に最も価値を感じているのか、ユーザーがプロダクトに期待している価値は何かをはっきりと理解する必要がある。ひょっとすると作り手の思い込みでユーザーが必要としていない機能を作っているかもしれない。プロダクトの価値を再定義し、機能を整理する必要性が出てくる。 0 → 1 のプロダクトマネジメントはではなく、 1 → 10 のプロダクトマネジメントだ。自分はこのような役回りが好きだし、こういった仕事もプロダクトマネージャーの気づかれにくい重要な役割の一つだと思う。

| @労働

海中ビデオデッキ

職業プログラマーになって 8 年の間に随分とジョブホッピングを繰り返してきたが、どこの会社でも評価が良くない。上司(非技術者であったことがほとんど)からは全く評価されない。なので在職時に昇給したということはほぼない。ペパボ時代にエンジニア評価制度が導入されてシニアエンジニア1になったときにががっと給料が上がったことはあったけど、あれは直属の上司ではなく技術責任者から評価されるという仕組みだったのでイレギュラーケースといえると思う。その後は転職時に増えた以外では全然給料が増えたことはない。据え置きが続いたりむしろ下がったことすらある。

しかし一度退職すると、同じチームの同僚や隣のチームの偉い人とかから良く思われていたことが判明することが多い。戻ってきてほしいとか、いなくなって困ってるとか。当然社交辞令の部分もあると思うが、全く役に立たないクソ野郎だったらそんなことを社交辞令で言われることもないはずなんで、ある程度は評価されていたといえるんだと思う。

なぜ在職中に上司から評価されないのか考えると、当時の上司がやってほしいと思ってることをやらないからだと思う。自分はチーム全体で効率が良くなるようにツールをあれこれしたり bot でガチャガチャやったりとか( Developer Productivity の向上)が好きなんで、自分の動きは会社がやりたいこと、上司がやらせたいこと(売り上げが増える何か、アプリのダウンロード数が増える何か)に直接寄与していないよう見える。

前職や現職で新しくプロジェクトが動き始めるときに何は無くともユニットテストを実行できる仕組みと Docker や CI 環境の構築をガガっとやってて、誰もがテスト書いて Pull Request 出して CI パスしてからレビュー依頼してデプロイも確認環境には自動でじゃんじゃんデプロイされて( Continuous Delivery )、誰も(新人やプログラマーでない人含む)が簡単に本番にもデプロイできる仕組みを作ったという自負がある。こういうのは直接売り上げは増やさないけど開発サイクルを早めたりチームの生産性を高めたりしていると思うが、1秒でも早く依頼したソフトウェアを納品してほしい人からはなんか勝手なことをやってるように見えるし、それが当たり前になると特にありがたみを感じられない種類のものなので評価の対象となりにくい。問題が起こって仕組みが使えなくなったときに初めてありがたみがわかる。なので在職中には評価されない。少なくとも上司からは。

加えて、自分には理想主義的なところがあって、訳の分からない指示が来たときに「そもそもそれいまやることですか」とか「会社がやるべきなのは違うことじゃないですか」と言ってしまう。そもそも論を言うので、ミーティングに参加していても荒れたり脱線してしまったりして「こいつ今これ言うのかよ…」みたいな冷たい視線を浴びることがよくある。場をかき乱す発言をするので「こいつはわかっていない」という烙印を押されてしまう。

評価が良くないと、長く同じ会社に留まり続けるメリットが得られず転職を繰り返してしまう。正直なところ転職は面接を受けに行ったり、給与交渉をしたり、退職を打診したり、仲の良い同僚と別れたり、有給がリセットされたり、人間関係を作り直したり、健康診断の履歴が失われたり、ローンを組むとき不利になったりでしんどいことが多い。できる限り同じ職場で働き続けることがハッピーだろうなぁとは思うんだけど、会社から評価されないのは不満が溜まるし、自分のような人間(間接的にだが結構会社の役に立ってる)が評価されないのはその組織にとっても良くないと思えて転職するという選択をしてしまう。良くない。会社が自分の評価を良くせざるを得ない状況に持ち込めるくらいに腕力(プログラミング能力)や胆力(度胸)をつけなければならないんだろうなぁとは思ってる。

※ なおこの記事は退職エントリーではありません。


  1. 今にして思うと当時の自分は全くシニアではなくジュニアだった https://portalshit.net/2018/10/02/we-should-hire-junior-engineers 

| @労働

プログラマーの種類、いろいろあると思う。

  1. ハッカー
    プログラミングが楽しくて、コードさえ書ければあとは何でもいいという人。
  2. OSS プログラマー
    1 と似てるけど、 OSS が楽しくてコードを書いてる人。カンファレンスで登壇したり、技術ブログを熱心に書いたりする。
  3. プロダクト指向プログラマー
    開発だけでなく事業の方向性にも口を出したい人。社長が死んだらいつだって代替ができる、というような気概の人。
  4. サラリーマンプログラマー
    プログラミングは仕事のためと割り切っていて、余暇には一切コードを書かない人。

1 〜 4 のどれか一つに綺麗に分類できるというものではなく、 1 かつ 3 とか、 3 かつ 4 とか、複数にまたがる人もいる。

職業プログラマーになりたての頃、サラリーマンプログラマーしかいない環境で働いて早くそこを抜け出したいと思っていた。プログラマーは会社の最下層で、プロジェクトマネージャーや営業が偉かった。プログラマーの人たちは仕事のために仕方なくプログラミングしてた。

それが嫌で余暇でもコード書くような人たちがいる職場に移ったけど、そこではハッカーや OSS プログラマーがよいプログラマーの代表とされていた(と思う)。自分もそういうのを目指し OSS カンファレンスに登壇したり技術的に中身のあるブログ記事を書いたりしたいと思ったけど、なかなかよいコードは書けないし、結婚して所帯を持つと町内会の草むしりや廃品回収、町内の運動会のテント設営、審判にかり出され、またあるときは子どもの幼稚園に夫婦そろって呼び出されて「お前らは夫婦そろって人間の屑以下だ、心を入れ替えるか幼稚園を辞めるかどっちか選べ」と説教されるなど多忙を極め、勉強会で話したりブログ記事を書いたりということが難しくなった。

一時期は自分は凡人プログラマーなんだろうなぁ、かつて忌み嫌っていたサラリーマンプログラマーと同じなのかなぁ、と将来を悲観していた。この頃は技術的な伸びしろがなくなって学ぶことに対する意欲が失せてしまっていた。

ただ、仕事で失敗プロジェクトを担当してつらい目に遭うことが多く、チームで仕事することだとか、失敗からどう学ぶかとか、その手のことに関してはそこそこ知見が貯まっていった。どうすればチーム開発はうまくいくのか、どういう風に情報を共有すればいいのかなどなど。業務改善のためにちょっとしたスクリプト書いたり、ぶっ壊れて動かなくなってる hubot スクリプトを直したり、 CI のセットアップを頑張ったりと、エンジニアチーム全体の生産性を上げるような落ち穂拾い業務みたいなタスクも好きだった。

いまは自分はチーム開発プログラマーなんだろうなぁと思う。ハッカー気質は皆無じゃないけどそこそこ、 OSS へのコントリビュートも気が向いたときに、プロダクトのことを気にする気持ちもある。どれも中途半端で単独では生産性高くないけどチームで仕事をするときに効能を発揮するタイプ。こんな風に自分が適している役割が分かると仕事がやりやすくなるし、目指すべき方向性のようなものが明確になって将来のことを考える上でも役に立つ。

ベンチャー企業で働く場合は自分のマインドやスキルセットが会社のステージにフィットすることも大事だと思う。もともとはベンチャー企業でも成功して上場しているような会社だとデプロイ時にハンコリレーなどがあってやるべきことをやるべきときにババッとやるのが難しい。そういうのは自分には向いてない。一方で起業したばかりの小さなスタートアップも、自分のような最初から綺麗なコードを書こうとするプログラマーはきっとフィットしない。起業したばかりのスタートアップでは自分たちの事業が社会から求められるかどうか不透明なので、そんな状態でテストがどうだとか CI がどうだとかチーム体制がどうだとかを言うようなプログラマーは必要ない。汚くてもクソコードでもテストコードなんて存在しなくてもいいからとにかく金を生み出すコードを素早く書ける人が向いている。

その意味でいまいる会社は創業当初の価値仮説の検証は済んでいて、これからいかに事業を伸ばしていくかというステージに入っているので、ちゃんとテストを書いたり、 CI を導入して継続的インテグレーションに努めたり、デプロイをいい感じにしたり、情報共有ツールを導入したり、開発チームの組織体制を云々したりといった部分で価値を発揮しやすい。

一握りの本当に優秀なソフトウェアエンジニアってのは受託会社だろうが事業会社だろうがベンチャーだろうが大企業だろうがどこにいたって価値を発揮できるのかもしれない。しかし自分のようなすべてにおいて中途半端なプログラマーは、自分に何ができるのかを理解し自分を必要とする規模とステージの会社を見つけてそこの門を叩くのがよいと思う。もちろん、事業に共感できるとか、チームメンバーとの相性も大事だけど、事業に共感できてもチームのメンバーがいい人ばかりでも、会社の規模やステージが自分を必要としなければ価値を発揮することは難しい。

関連してそうな記事

| @労働

今年は転職して働く環境が変わり、自分のエンジニアとしての能力が足りないと痛感させられることが何度もあった。しかしそれは技術力が足りないというよりも、もっとほかのもののように思えた。良いエンジニアとは何なのかについて、今年一年で考えたことを書いてみたい。

良いエンジニアとは何だろうか。技術力が高ければ当然に良いエンジニアと言えるのだろうか。そもそもエンジニアに必要なスキルとは何だろうか。技術力がまず挙げられるだろう。良いエンジニアは当然に高い技術力を持っていて生産性が高いはずだ。

技術力に加えて、プロジェクトマネジメントのスキル(以下プロマネ力と省略)も必要なのではないだろうか。これまでの自分の経験を振り返るに、技術的に秀でたエンジニアはプロマネ力も兼ね備えていることが多いと感じる。技術力が高いエンジニアはプログラミングの能力が高いので、組織や開発体制を「プログラム」する能力が培われるのかもしれないが、技術的に秀でた人が必ずプロマネ力が高いわけではない。技術力さえ磨けば良いエンジニアになれると誤解してしまいがちだが、技術力だけ磨いてもみんなから求められる良いエンジニアにはなれないだろう。

ではなぜ技術力に加えてプロマネ力が必要なのだろうか。

一般に、コードを書かずに問題を解決できるならその方がよい。相手に言われるままにコードを書くよりも、コードを書かずに問題を解決できた方が時間も金もかからずみんなハッピーだろう。もしコードを書くとしても最小限の変更に抑えられるのが良いエンジニアなはずだ。技術力が高いだけではこういう発想は出てこないだろうし、真の問題が何なのかを見極め、解決策を考える能力が求められる。

良いエンジニアには先を見通す力も必要だろう。依頼された機能を開発するためにはどんな作業が必要か、どのくらい時間がかかりそうか、誰と調整しないといけないか。

関係者に働きかけ、周りを動かす力も必要だろう。理不尽な依頼が振ってきたときに、その依頼に対して反論し、相手を説得して実現可能なやり方を受け入れてもらわないといけない。

誰かに指示されるのを待たず、自ら動くことが出来る力も必要だろう。仮にプロパーのプロジェクトマネージャーがいたとして、プロマネの指示ばかり待ってコーディングしかしないようでは良いエンジニアとは言えないだろう。

このような、プロジェクトをコントロールし推進する力が良いエンジニアには必要なのではないかと思う。

そんなに何でも出来る人はいないのだから、スクラムをやれば良いのでは、という意見もあるだろう。確かに並エンジニアの集団ではスクラムが有効そうに思える。卓越したエンジニア一人で開発するよりも、数人の並エンジニアによるチームで難しい問題に立ち向かうストーリーの方がおもしろいだろうし個人的には好きだ。

しかしそうやって並エンジニアを寄せ集めても、そこから良いエンジニアは育たないのではないかと感じる。

スクラムチームでエンジニアは、スクラムマスターとスプリント計画、プロダクトオーナーとの「合意」により保護される。自分一人で問題に向き合い、問題を解決する能力がつきにくい。

一方でスクラムを採用していない荒野のような環境では、エンジニアはチームに頼れず、自力で要件を定め、関係者の合意を取り、自らプロジェクトを推進していく必要がある。そのような厳しい環境に身を置くことで、上に挙げたようなプロマネ力が身についていくのではないかと感じる。

これまでの自分のキャリアを振り返るに、以前勤めていた職場はまさに「荒野」といえるような環境だった。誰も何を作るかはっきり分かっていないんじゃないか、いきなり一人で工数見積もりやれといわれても出来るわけないだろう、こんなウォーターフォール開発はやめてアジャイル開発がしたい、こんなクソ会社辞めたい、といつも思っていた。

しかしつらかったのは自分にプロマネ力がなかっただけなのでは、と最近思うようになった。その後入った職場では、つらいこともありはしたものの、スクラム開発のおかげで個人が一人で抱え込んで苦んだりすることなく、チームで協力して開発することが出来た。その中で自分は自分自身の能力を過信したのかもしれない。実際には大してエンジニアとしての力は身についておらず、チーム開発やスクラムをやらない組織で働くことになったときに、自分の能力のなさを思い知らされたのだった。

本題に戻る。自分が良いエンジニアになるためには、技術力も当然足りていないと思うのだけど、プロマネ力を上げていかなければならないと思っている。来年の目標はそのあたりに置きたい。

Shut the fuck up and write some code.

はい。

| @雑談

IMG_1893

この記事は地方在住ITエンジニア(元・地方在住も可) Advent Calendar 2015 - Adventar 6 日目の記事です。地方在住ウェブエンジニアの著者が思ったことを書きます。


自己紹介

熊本出身で大学生の頃は東京に住んでいました。いまは福岡市に住んでいて、東京のインターネット企業に雇ってもらってます。リモートで仕事してます。

福岡のことを書かない理由

最初は福岡での暮らしについて書こうかと思ったのですけど、福岡在住の著名 IT エンジニアはきしだなおきさんや新井俊一さんなど以前からたくさんいらっしゃって情報発信しておられますし、最近では前職でご一緒させていただいた、昼に寿司を食べた舌が乾かないうちに夜焼肉を食べたりしている金満エンジニアで、天気の話からでも HashiCorp プロダクトの話に結びつけるづらさんや、女性ファン急増中のプラチナ貴公子スーパー Go lang プログラマーモノクロメガネさんなど雨後の竹の子のようにいて情報発信しておられますし、また福岡について書いたら最終的に「福岡便利ですよ、移住してみませんか」みたいな結論になりがちですし、加えてほかの皆さんの記事を読む限り福岡は地方には含まれなさそうなので、福岡にやってくる前に住んでいた熊本県阿蘇地方での生活を綴りたいと思います。

キャリアの始まり

僕が最初ウェブ開発を生業にしたのは熊本県の過疎地域、阿蘇地方でした。元々学生時代にコンピューターサイエンスを学んでいたわけではありませんでしたし、プログラミングというより HTML マークアップと雑用担当としてウェブ開発業界に潜り込みました。

地方のつらみ

ギャラが少ないことと勉強会に参加できないことがつらかったです。

ギャラが安い

実家暮らしだったので何とか生活できていましたが、年収200万に満たなかったです。地方にもインターネット関係の仕事がないわけではないのですけど、まともな賃金が支払われる仕事がないと感じます。地方でのシステム開発は、自治体が都会の SI 会社に発注する数千万円から数億円規模の仕事か、商店のホームページのアクセスカンター設置みたいなやつしかなくて、後者に対する報酬はとても少ない。一年と少ししか働いていませんでしたが、このまま歳をとるとやばいな、という危機感はありました。

勉強会に参加できない

田舎にいると勉強会的なものに一切参加できないのもつらかったです。勉強会がしばしば開催されている福岡に引っ越してきて何度か勉強会に参加してみたけれど、勉強会は参加するだけでは無意味で発表する側にならないと得られるものが少ない、ということがわかって勉強会渇望症みたいのはなくなりました。いまにして思えば隣の芝生は青い状態なだけだったという感じがあると思います。勉強会とかなくても学ぼうと思えば学べるはずです。ただし勉強会で発表しまくって目立ちたいとかそういう人は都会に住んでないとダメでしょうね。

相談できる相手がいない

職場に質問・相談できる相手がいないのが心細かったです。常に一人で考えて試行錯誤を重ねる必要がありました。それはそれで良い経験にはなっていたと思うけど、知っている人がいてヒントを出してもらいながらステップアップしていく方が断然効率的だったと思います。もし『情熱プログラマー』でいわれるところの師匠なような存在がいたら、今頃もっとよいエンジニアなれていたのではないかと自らの怠慢を棚に上げ思います。

街の灯火が遠い

ほかの人の記事を読むと通勤時間が長いと書いてる人が多いですけど、当時の職場は家から車で 10 分のところにあったので通勤時間に関しては不満はなかったです。この辺はたまたまが職場が家から近くてラッキーだっただけだと思います。ただ仕事のあとに映画を見たいとか本を買いたいと思っても、田舎過ぎて仕事帰りに何かするというのが無理だった(そもそも仕事が終わるのも遅かった)のはつらかったです。

田舎にいて良かったこと

自然

当時の職場が森の中にあって、職場から阿蘇山の景色を望むことができました。また昼休みに職場の周りを散策すると、小川があったり農家に引かれて道を歩いてる牛とすれ違ったりして毎日がちょっとしたハイキングみたいでした。疲れたときに窓から阿蘇の山々を眺めると癒やされましたし、毎日昼に散歩すると頭がすっきりする感覚があってよかったです。キャリアのスタート段階だった、独身で時間を自由に使うことができた等様々要因はありますが、当時はよく学ぶことができていたなという感じがして、これら自然環境が少なからずよい影響を与えていると思います。

無双

ギャラが少ない一方で上司が非技術者なのでやりたい放題できるというメリットがありました。課題に対して自分の好きなとおりに解決策を考えて解答を出すことができました。以前、社内 SE は無双できると書かれている記事を読みましたが、まさにそんな感じです。信頼さえ得てしまえば無双できると思います。

結論

  • 莫大な遺産があって働かないでも食っていける
  • スタートアップで働いていたが上場してストックオプションで億単位の金融資産を得た
  • 独身、あるいは妻子に逃げられて養うべき家族がいない(慰謝料とか養育費も払わなくてよい)

等々で収入が多くなくてもかまわないなら、田舎で仕事するのも良いのではないか、と思います。特にキャリアのスタート期を終えて一定程度のスキルを身につけている状態で、働き口さえあれば、地方に引っ込んでもそれなりに楽しくやっていけるのではないでしょうか。ただし地方に引っ込んでも最新技術へのキャッチアップを怠らないことなど、意識を高く持つことは大事だと思います。

勤務先を地方に求めず、リモートで東京の仕事を請け負う、というやり方もありますが、東京の会社に雇用されて福岡でリモートワークしている僕個人の考えでは、リモートワークというのはやはりなかなか難しくて(リモートワークアドベントカレンダーで書こうと思います)、特に業務委託などでフリーランスの人が仕事を受けながら働くのは、受け手が相当の熟達者か、発注者と受け手が元同僚であるとかでないとディスコミュニケーションが発生してお互いつらい気がします。正規従業員として雇用されている僕も月一回程度東京に行って、膝をつきあわせて仕事しています。

役所が都市部のハイエナ SIer に発注するような仕事以外にも、地方在住のエンジニアがローカルビジネスのオーナーから請け負って価値を提供できるような場所はあるのではないかと思っています。以前田舎で働いていたときに、もう少し自分にスキルがあってお客さんにも意欲があれば、もっとウェブ技術を使って便利にできるのになぁと思うことがしばしばありました。ウェブサービス作ってユーザーめっちゃ増やしてドカーンだけがエンジニアリングの使いどころではないと思いますし、地方出身者が都市部に吸い寄せられていくだけでは先祖代々の墓は誰が守れば良いのか分かりません。何年先になるか分かりませんが、隙あらば地元に帰って何かしてみたいです。

跋文

最後に福岡で働くことについて一言書いておきますが、福岡はブラック企業が多い街という印象を受けます。街がコンパクトで皆歩いて帰れる範囲に住んでいるせいか、終電の概念が崩壊しており、平気で午前 2 時、 3 時まで働いている会社があります。なので福岡最高、福岡便利、福岡手榴弾!!、!などといった甘言に惑わされず、移住を検討する際にはまともな勤め先を確保した上で断行してください。僕は福岡で最初に働いた会社が本当にひどかったです。以上です。


この記事は地方在住ITエンジニア(元・地方在住も可) Advent Calendar 2015 - Adventar の 6 日目の記事でした(一日遅れて書いてます)。今日の担当は飲み会後、歩いて帰れる距離でも必ずタクシー帰宅をキメる @h_demon さんです。お楽しみに。