いきのこるには

この記事は 「フリーランス残酷物語 Advent Calendar 2016」 11日目の記事です。 長いです。

わたしはだれ?

フリーランスのエンジニアの一人で、上から下まで幅広くお手伝いさせていただき5年ほど生き残っています。 最近はWebアプリケーションから離れ、一段階下の層あたりで活動しており、ラムダアーキテクチャの方を向いています。 機械学習のほうも単価が良いそうなのでそちらも向きたいなと準備をしているところです。 お金が好きです。

フリーランスってなんだっけ?

フリーランス、これ自体はいろいろな捉え方ができるものですが、 わたし自身をフリーランスとして解釈したとき、専門家であることが第一義であると思っています。

知っていること、と言いかえてもいいです。

たとえば、プロジェクトを進めるのには必要な知識は非常に種類が多いですが、それらを知っている。 一つ一つを説明しないで済む。 さらに言えば不明なところを聞けば答えてくれたり、議論を展開できる。 結果として、プロジェクトの成功の確率を上げることができる。

これがフリーランスに求められていることというのは同意いただけると思います。

知るを知る

そこでまず大事なのは、何よりも知。 知識や知恵です。

知は、書籍を読んだり、手を動かして試したり、もちろんプロジェクトを遂行することで育てることができます。 手段にバリエーションがあればあるほど普遍的な知を手に入れられる確率があがります。

フリーランスは全ての裁量をもてるので、それらへのリソースの割り当てを全てコントロールし、 自身が思い描くなかでのもっとも良い戦略を練りあげて実行していくことができます。

特長として、複数の企業の複数のプロジェクトに同時並列に参加することができるので、 価値観の異なる人や文化、 コードベースを同時に比べながら知ることができる。 これは一つの企業の中に存在する専門家に対しても有利な点です。 もちろんNDAを結んでいるので他に話すことはありませんが個人のなかには比較的普遍な知が蓄積していきます。

ジョブホッパーや、さらにいうなら複数の顧客を持つ士業の方々と似た性質を持つ存在といえなくもありません。

しかしながらそんなスーパーマンのようなフリーランサーは実在するのでしょうか。

実在します。それはわたしです。

と胸を張って言えればいいのですが、そんなに人生甘くはないです。残酷ですネ。

ただ経験の年数が増えれば増えるほど、関係先が増えるほど、知は蓄積していくのは実感としてたしかにあり、 そうすると知っているものと知らないものの境界線がはっきりしてきます。

漠然とした問題から性質を見いだし、数値化し、それに対して解決策をひねりだすのがエンジニアです。 知るものと知らないものの境界がわかれば、知らないものを明らかにして、 それを知るものに変換するのは比較的楽なことではないでしょうか。

専門家に近づけていればいいなぁと思う毎日です。

多くを知る

わたしの多くはないエンジニア人生のなかで、先輩エンジニアの方々から折にふれ聞かされてきた話に、 専門家は分かるものは分かり、分からないものは分からないと言えることが重要だが、 それ以上に専門の話題を普通の人に伝えたり、専門家と専門家の間を繋ぐ役割が重要だ。というのがあります。

ようは異なる文化圏のあいだを取りもつ存在になれといわれていた、と理解しています。 翻訳者が重宝されるのと同じですね。

これは実はフリーランスがとりやすい戦略の一つで、本当に一つのことを極めている専門家には勝てるほど知を持てていなくても、 複数の文化圏や分野に根をはることで役に立てる役割はある。 複数の分野を知っていれば呼ばれる確率はあがるし、複数の分野の間をつなぐことができれば無二の価値を提供できる。

そんなことをよく言われてたような気がします。

撤退戦略

さて、そんないい話風なこともありますが、現実問題、何もかも合わない消耗するだけのプロジェクトはあります。

ダメなときはダメです。

要因はさまざまで、絶対的にスキルが足りてなかったり、文化圏が違いすぎてコミュニケーションが不可能だったり、 単にタイミングが悪くてキャッチアップが失敗したり。

これらは防ぐことはできるのか、そんなことをよく考えています。 現状はあまりよい答えは見つかっていません。

早めに撤退するのは有効な選択肢です。正常な判断がつくうちに行動にでましょう。 (他にはアジャイルとかリーンとか、そういう現場は逆にこういった状況に落ちいりにくい傾向があります)

確実ではないですが、いくつか経験的に効果がある時点や方法がいくつかあり、 最初はやはりプロジェクトを始める前というタイミングです。

プロジェクトが始まると途中でやめにするのはお互いにコストがかかるので、 そもそも始めるまえにコミュニケーションを密にとり共通の文脈を形成する。 形成できないようならば参加そのものすら白紙に戻すことも検討の範囲にいれておきます。

既に文化が形成されているところに途中から合流するなど事前に十分の時間がとれないときは 先方の担当者にその不安やリスクをあらかじめ伝えておきます。 そして参加後、短期の間隔でいくつかのマイルストーンを設定しておき、 そのたびこのまま進めることができるのか、改善の方法はあるのかを振り返ります。

それでも、やっぱりダメなときはあります。そのときはきっぱりと早めに担当者にダメだったと伝えます。 密に状態を共有しておけば、ダメだったときも言いやすいはずです。

これに効く仕組みとして試用期間があります。 試用期間は顧客側の視点でよく語られますが、実はフリーランスからも合わないプロジェクトから離れるときに利用できるすばらしいものです。 契約に盛り込めるときは入れることも検討する価値があります。

ほかは、契約期間を3ヶ月など短期間で始めたり、契約の内容から実作業がそれ始めたときに効く誠実協議条項:

本契約の規定に関する疑義又はこれらの規定に定めのない事項については、 甲乙誠意をもって協議の上、解決するものとする。

を入れます。協議のうえで、残念ながらまとまらないでお互いに消耗するだけのときは、 その時点で契約解除の申し出をできる余地を残します。

本来ならこれらのテクニックを駆使しなくてもプロジェクトを進められるのが理想なのは変わりありません。 ただし、 どうしようもなくなったときに撤退もできなくなる最悪の事態を避ける方法は知っておいたほうがよいでしょう。

フリーランスは駆動系の並列度が1なので停止イコール収入なし。体調および精神の状況には十分気をつけていきましょう。

いきのこる

10年もエンジニアをやっていると、さまざまな変化があります。 流行の繰り返しパターンがみえてきたり、低空飛行をしいられるときもあったり、 疲れすぎて動けなくなることもありました。正直ダメだったときの後悔のほうが鮮明に覚えています。

それでも続けていく、生きていくのが大事です。

着陸してメンテしてもいい。なにやるのも自由。自分で決められる。 それがフリーランスの強みです。

人生はゼロ和ゲームではありません。生きているかぎりスコアの延ばせる非ゼロ和ゲームです。 自分の意思で、ときに協力して生き残れれば勝ち。 そんな気概で今日もコード書いています。

ゲーム理論で思いだしましたがフリーランスこそコミュニケーションが大事だと思っています。 意識的に群れることを検討するのもよいでしょう。わたしの連絡先はここです。 Facebook Twitter