フリーランスの経験が浅かった時、フリーランスのプログラマとしての欠点として、チームやチーム開発的な事に口や手を出しづらくなる、という事があると思ってた。 そしてそういう傾向は実際にあると思う。

だが、これは欠点、とも言いきれない部分がある。 逆にこれは、プログラマとしての誤魔化しや惰性で乗り切れる部分を自分から封じる事で、より良いプログラマになる為の経験を積めるという利点がある、と思うようになった。

チーム的な仕事に進みがちな正規雇用

ある程度の歳のプログラマは、シニアなプログラマとして、新人とは違うアウトプットを期待される傾向は強いと思う。
そして普通にサービスなどを実装出来る、いわゆる出来る新人と比較すると、ただコードを書くだけで優位を示すのはそう楽では無い。

そこでシニアなプログラマは、個人のコーディングよりも、もっと多くの人に影響を与えるような仕事に手を出す傾向にあると思う。 具体的にはチームの開発プロセスだとか、複数のチームのトップとして折衝的な事をやったりとか、チーム横断的な活動だとか。

組織的な事や開発プロセス的な事は、シニアとしての経験が生きやすく、出来る新人よりも優位を示すのは容易に思う。 だから簡単な差別化として、20代後半くらいのプログラマが新人との違いを示す為にやる、というのは良く見られる光景に思う。

だがこの辺の仕事は、あんまり伸びしろが無い、と自分は思う。 最初に明確に違いは示せるようにはなるのだが、ひとたびそれが出来るようになると、それ以後何度か繰り返しても、あまり上達が無い。

上達は無いのだが、この能力というのは結構多くの場所で求められていて、重宝がられる。 だから、ひとたびマスターすると、しばらくそれで生きていける。

この能力は飯を食うという点では役に立つので、出来るようになる事自体は悪い事じゃないと思う。 だが、毎回同じような事ばかりやって成長が無くなるし、しかも重宝がられるとは言ってもすごい給料を出す程必要にされている訳でも無いので、高い給料をもらえるようにもあまりならない。 だから、ずっとそればっかやるのはあんまり良い事じゃないと思う。

だが、そうした物以外でちゃんとシニアな価値を示すのは、結構難しい。

評価制度の歪みで、チーム的な仕事が過大評価されてるように見える

この傾向は、評価制度などの歪みでさらに助長されていると思う。

現実問題として、割と出来る新人よりもちゃんと良いアウトプットをベテランが出すのは、結構難しいし、皆が出来る事でも無い。 だが会社では、給料を上げていく為の建前として、みんな長く仕事を続けていくと成長していく、という幻想を必要としがちだ。
で、新人よりも長く続けた方が良いエンジニアになっている、という評価の方が都合が良いので、そういう評価システムに歪みがちである。

でも、この評価制度は現実の価値を生み出している度合いをそれほどうまくは反映していない。結局結構いる役立たずなおっさんプログラマに価値があるかのように出来てる為、歳をとったプログラマにはかえって都合が良い。

だが、自分に都合の良い歪んだシステムでばかり評価されているのは、あまりよろしく無い。

チーム的な事をやらない立場に置かれてみると、それ以外のアウトプットを真面目に考えるようになる

普通にフリーランスが労働市場で価値を示すのは、もっと市場原理的な物で決まる。 特に短期のフリーランスを雇う時には、金を出す、という価値があると思う事にしか金は出さない。
お金は出せないけれど評価はしてる、とか訳分からん事も言ってこない。

ちゃんと普通のとりあえず作れる、というプログラマよりも自分は金を払うに値する事が出来る、と示すのは、結構難しい。 だが、その難しさはより実態に即しているので、自身の立ち位置をしるのにも、自分のスキルセットを構築していく指針としても、より適切と言える。

実際に難しい事が自分の立場を維持するには必要だ、という意識で日々の仕事をすると、ただなんとなくそこにある仕事をこなすのとは違った行動をするようになる。

自分が今キャリア形成という面からやらなくてはいけない事、というのに意識的になる。

目の前にあってチームが多少困っていて自分は改善方法を知っていて改善出来る、だが別に改善しなくてもとりあえず大して結果は変わらない、という事にあまり時間を使わなくなる。

こうした仕事をしない、というのは、「ではその代わりに何をやる?」と問われる事とも表裏一体で、これがよりアウトプットを意識した日々のタスクの選択を促し、それは結果として会社にとっても利益になると思う。

個人の仕事として第三者に示しやすい物というと、例えば論文を書いてトップカンファレンスに通すとか、目立つサービスやアプリを作るとか、目に見える高速化とか、そうい仕事となる。

だいたいにおいて、そんな事をいっつも出来る訳じゃないが、次の仕事を取る時に、あんまりぱっとしない過去の自分の成果をすごい事のようにアピールしても普通は逆効果なので、本当に価値を示しやすい事にフォーカスする事になる。

いっつもミーティングしたりチケットを整理したりそこにコメントを書きあったりしているのが会社の価値になってるとは思えない。さいわいな事に、フリーランスが自分のアウトプットを宣伝する時にもそういうのは役に立たない。

宣伝するのに役に立たない事も仕事を進める上では必要な事はあるが、そうした事ばかりやってると次の職場に対して自分の価値を示せなくなる。 だからそうした事をやらざるをえない 時にはそれなりの代償を求めるし、 そうした事しか出来ない職場は最初から避けるようになる。

これは組織がろくでもない方向に行くのを防ぐ圧力にもなる。ろくでも無い上の判断を頑張って達成してしまう人たちは、長期的には組織にとっては有害だ。

そう思っている所に、チームに関わるような事は社員がやってくれる、と言われれば、むしろありがたい。

「私はXXでYYの機能を実装するチームにいてチームを率いていました。プロジェクトを進める様々な困難を解決し、回りからも高い評価を得ていました」なんて言ってるフリーランスに高い給料を出したいとは思わないだろうから、むしろそんな仕事はフリーランスとしてはなるべくやらない方が望ましい。

会社に必要だがフリーランスには任せにくい仕事、というのはあるというだけの事かもしれない。 だが、そうした仕事の価値はここ数年で別段上がってはいないように見える。 一方でフリーランスに任せたいような仕事の価値はここ数年で跳ね上がった。

かつては重要でない仕事をフリーランスにやらせていたのかもしれないが、今は社員が雑用をやってフリーランスが価値ある事をやる、というのは全く珍しい事では無い。

結論

チーム的な事「以外」で自分の能力を示さないといけないのは良い事だ。 長い目で見ればそちらの方が良いプログラマになれるし、良いプログラマを目指さないという道を選ぶにしても、その事により自覚的になれる。