RandomThoughts

RandomThoughts

フリーランスプログラマー

Contents:
  1. フリーランスプログラマの多様性と自分の話
  2. フリーランスプログラマの目標
    1. どうやって目標を立てているか?
    2. 会社の目標、プロジェクトの目標との緊張関係
    3. 興味のある事をやっていくという場合
  3. フリーランスプログラマの仕事の評価
    1. 現在の仕事を評価するのは、現在の雇い主ではなく将来の雇い主である
    2. 会社のフリーランスの評価は、ほとんどジャンルの評価
    3. フリーランスの仕事の評価は、自分でする
    4. 会社のプログラマ評価なんて本当に必要なのか?(ふふん)
  4. 組織の問題とフリーランスプログラマ
  5. 会社の偉い人とフリーランスプログラマ

プログラミングエッセイ

最近読んだプログラミングエッセイがどれもそれなりの規模の会社で働くサラリーマンを前提としていて、 フリーランスでは当てはまらない事が多い。 フリーランスのプログラマはそれなりに居るので、もっとフリーランスのプログラマの日常を綴ったエッセイがあっても良いのでは無いか、と思い、フリーランスの立場からだと違いが出そうな事についてのエッセイなどを書いてみたい。

フリーランスプログラマの多様性と自分の話

最初の免責的な話として、フリーランスのプログラマにもいろいろな立場がある。そして何を言っても、それが成り立たないフリーランスのプログラマを探してくる事は出来るだろう。

ここでは基本的には自分の仕事のうち、フリーランス的な側面を語る。つまりフリーランスの一般の話というよりは、自分の話である。

自分は一般的で無いと思う所がいくつかある。

  1. 若い頃にそこそこの資産を作っていて、生活のために働く必要は無い(そんなにいつも働いてもいない)
  2. プログラムが好きで、結構な時間を使っている
  3. どんなプログラマーライフを送ったか、というような事をまぁまぁ重視している
  4. 割と毎回違う所から仕事を取り、一つの会社との長い付き合いは無い

これらの結果、フリーランスの典型的な人とは異なる事もあるかもしれない。 ただエッセイとしては自分の話をしていき、それを「フリーランスのプログラマは」と表現することもある。 いちいち余計な注釈を入れたくないのでそうした表現をすると最初に断っておく。

フリーランスプログラマの目標

フリーランスのプログラマは目標を持たないといけないか?というとそんな事は無いと思う。 ただ、普通の会社員プログラマと比べると重要性は高いかもしれない。 私にはあるので、ここでは目標を持っているフリーランスのプログラマの話をしよう。

プログラミングのエッセイなどでは、会社の目標とかチームの目標、プロジェクトの目標などは良く話題に出てくる。 そしてチームのメンバの目標をそれらと揃える事を目指していろいろな方策などが語られる。 だが、個々のメンバの目標、特にフリーランスのプログラマの目標の話は出てこない。

フリーランスのプログラマの目標というのは、例えば自分の場合は40代のプログラマ目標のようなものがそれと言える。 これらの目標は、普通は複数のプロジェクトを通して達成するなにかとなる。 複数のプロジェクトにまたがるものなので、個々のプロジェクトの上に来る部分がある。 こういう目標でなくても、「自分のプログラマライフとしてしばらくはXXXみたいな事をやっていきたい」みたいな、 ジャンルのようなものはだいたいの時期で自分は持っていた。 それらは複数のプロジェクトを通して「XXXをやっていたプログラマ」になるので、やはり個々のプロジェクトの上に来る部分がある。

フリーランスのプログラマにとって、プログラマ人生の仕事の結果というのは個々のプロジェクトをまとめたものとなる。 これは本質的にはサラリーマンプログラマと同じはずだけれど、 サラリーマンであれば勤めている会社というものがある程度アイデンティティの一部となっていて、 これがプロジェクトをこえた部分を担う事が多い。 けれどフリーランスはその会社というアイデンティティが無い分、 プロジェクトを越えた結果というのは自身がデザインする必要がある。 デザインしなくてもいいけれど、その場合は寄せ集めの結果が自分のプログラマ人生の仕事の結果という事になる。

また、フリーランスのプログラマはプロジェクトを毎回自分で選び、その選択肢に会社という枠が無いのでより幅広い。 これもよりそうしたデザインの結果の影響がサラリーマンより多くなる理由になる。 サラリーマンは同じチームにずっと居続ければ、どのプロジェクトを選ぶかというのはある程度自動的に選ばれる。 チームに残るか、という選択はあるけれど、フリーランスが毎案件ずつ選択を迫られるのに比べると選択の頻度は少ない。 だからフリーランスのプログラマの方が、より自覚的にそうした目標を立てる重要性は高いんじゃないか。

どうやって目標を立てているか?

自分のフリーランスのプログラマとしての目標、というのを考えるのは、まぁまぁ難しい事でもある。 別に正解とか無いので適当にえいっと決めても特に問題は無いという点で難しくなく終わらせる事も出来るし、そちらの方が悪いとも言えないけれど。

自分は割とそうした答えの無い問題についていろいろと考えて試行錯誤していくのを有意義な事と思っているので、 割と考えている方なのではないか。いや、どうかな?他の人がどのくらい考えているのか分からないので、実は他人より考えてないかもしれない。良く分からない。 他人との比較はおいとこおう。

期間的には5年〜10年くらいがいいんじゃないかな、と思っている。 10年以上の期間は自分にも環境にも変化が多すぎて、なにか予め立てた目標や方向性が役に立つようには思えない。 1年程度では一つのプロジェクトの影響が大きすぎて、自分の目標、という感じにはならない。 だから5年〜10年くらいがいいかなぁ、と思っている。3年くらいでもいいかもしれないけれど。

それくらいの期間の目標となると、ある日うーん、と考えて、「よし、今後10年はこれで行こう!」というふうに考えるのはあまりうまく行かない気がする。 10年もの行動指針をそんな少しの考えた事で決めてしまうのが最適には思えない。わからんけど。 それよりは、なんかぼんやりと「こんな事をしていきたいな〜」みたいなのがあって、 それを何年も掛けて粘土細工のようになにかを付け足したり削ぎ落としたりして、 だんだんと「自分がやっていきたいのはこういう事なんじゃないか」という形を作り上げていくような感じに立てるのがいいと思っている。

毎日考えているというよりは、一年のうち何回かそういう事を考える時期があって、それぞれは1週間くらい考えてる感じが多い気がする。 まず年末年始の振り返りとか抱負とかそういうのを考えている時に考える。 次になんか5月とか夏とか、年始から少し離れてきた時期になんかそういう事を考える事がある。 そして秋とか年末が少し近づいてきた時に、そういう事を考えている事がある気がする。

会社の目標、プロジェクトの目標との緊張関係

フリーランスの目標は、会社の目標とは別のものである。両者は両立しないこともあるし、当然両立する方が良い。 仕事を選ぶ時に、ある程度自分の目標と会社やプロジェクトの目標が近いものであるものをなるべく選ぶ。

プロジェクトの目標は、ある程度は仕事を受けるかどうか判断する時に聞いている。 ただ聞く相手はリーダーやPMではなく自分を誘ってくれている人なので、 実際の目標と違う場合もある。 ろくでも無い企業では、そもそも言っている目標と実際の目標が違う事は良くあるので、 そういう会社はなるべく仕事を受ける前の段階で見抜いて仕事を断るように心がけている。 今の所そうした判断は上手く行っている。

会社の目標はどうやって判断しているか? 例えば、会社の目標とかをホームページで確認しているかというと…する事もあるけれどあまりしてないかもしれない。 チームやプロジェクトの話を聞く時に、会社の目標というかどういう会社かというのは聞いていて、 その辺から判断している。 これも社長が言っている事ではなくて、自分を誘っている社員が言っている事なので、 たまに一致していない事もある。 こちらはプロジェクトよりもより一致してない事がある。 ただ大筋において、会社の方向性、キャラクターと、自分の方向性は合致している方がトラブルは少ないので、 ある程度は揃っている方が良い。

そもそもチームの目標が会社の目標と一致してないことはちょくちょくある。 これは会社というのがなにか大きな方向性を持って進んでいる時に、その脇道を探すようなプロジェクトの場合には良くある。 また、単に管理されてない結果なんでこの会社がこれやってるんだ?というプロジェクトの場合もある。 後者の場合でもある程度そういう非効率を受け入れた方がいい場合もあるのでby designの事もあるし、 フリーランスとしてはどちらでも良い。 そういう場合にはプロジェクトの目標が自分の目標に合致していれば、会社の目標とは違っていても問題は無い。 チームとしては長期的には会社の目標に沿う形になるのだろうけれど、自分にとってはそのプロジェクトだけが接点である。 そういう一期一会的なプロジェクトは、双方にとって特に問題は無い。

フリーランスのプログラマにとってはプロジェクトや会社の目標は、自分の目標というよりは制約条件に近い。 自分の目標を叶えるのに支障のない範囲で協力はするが、それは自分にとって叶えたいものでは無い。 だからそれらの目標が叶えられそうにない状況になった時に、それをなんとか頑張って叶えたいとは思わない事が多い。 「まぁこのぐらいは義理としてやってあげよう」という程度のことはやるけれど、 実現を自分の問題とは思っていない。 フリーランスにそれ以上を求めないとうまく行かないシチュエーションはすでにプロジェクトとしては失敗していると思っている。

一方で、会社やチームが自分の目標を叶えようと頑張ってくれる事はあまり無い。 快適で不自由の無いように気を配ってくれる所は多いし、それは自分の目標を叶えるのに必要な事である場合も多いけれど、 やはりフリーランスの目標は、自分が叶えるたぐいのものなのだろう。 そういう点では対称性としては割と会社側に妥協していると言えなくもない。

フリーランスの目標は先程述べた通り複数のプロジェクトの結果をつないで得られるものである。 感覚的には個々のプロジェクトで自分の目標のパーツみたいなのを拾い集めて、 必要なパーツが揃ったら目標が達成される、という感じになる。 目標のパーツが落ちているかどうかはプロジェクトを受ける前にフリーランスの側が判断をする。 だから落ちてなかったら自分のせいではある。 一方でそれを拾うためにそのプロジェクトに入る条件として、そのプロジェクトの目標とかを手伝う感じになる。 同じものであれば拾うだけでプロジェクトの要求も満たせるのでお得だし、 近いものであれば拾うついでにやりやすいので望ましい。

会社やプロジェクトの目標は会社やプロジェクトが達成するものであり、 フリーランスはそれに限定的に使える道具のようなものだ。 フリーランスにとっても自身の目標を叶えるのはフリーランスの責任であり、 会社やプロジェクトはおのおのの制約条件の範囲内で限定的に使える道具のようなものだ。

興味のある事をやっていくという場合

ここまでは目標至上主義というかすべてが目標から決まっているように書いているが、実際はそれほど目標がすべての行動の起点になっている訳でもない気はする。 良くあるものとして、その時興味の湧く好きな事をやっていく、という仕事の選び方がある。 この場合、フリーランスの目標というのは曖昧な場合もあるし、別に曖昧でも構わない事もある。

興味の湧いたものというのはある程度関連性はあるので、複数のプロジェクトの結果をつなげてみるとその人のキャラクターを表すようなストーリーというか、 キャリアのようなものが構築される場合はある。 そして実際これで構わないような気もする。

興味のあることをやっていくという行動原理を中心に考えると、会社員とフリーランスの違いは小さい場合もある。 会社員は興味のあることを社内で探してやっていって、会社の外の方にもっといいのがあったら転職する、という感じになると、 フリーランスとの違いはあまり無い。

自分は現在割とフリーランスの目標というのを中心に行動を考えているが、いつもそうだった訳でも無い。

フリーランスプログラマの仕事の評価

会社がどうプログラマを評価するべきか、みたいな話はたまにあるけれど、 フリーランスは大きく会社員と異なる所なのでフリーランスプログラマの評価という事を見てみたい。

現在の仕事を評価するのは、現在の雇い主ではなく将来の雇い主である

まず、会社がフリーランスプログラマの仕事を評価するのは、基本的には仕事の前のみである。 契約時の条件、これがフリーランスプログラマに対する会社の評価のほぼすべてだ。 それは実際にその会社の仕事を始める前に行われてしまうので、その会社の仕事はほとんど会社は評価しない、と言える。

あんまりにもひどい仕事をすれば、契約を途中で打ち切るという事も理論上はあるかもしれないが、自分はこれまで打ち切られた事は無いので、本当にそんな事があるかどうかは分からない。 本当の仕事の評価はその次に仕事を受ける時には行われうるのだが、 自分は同じ会社から仕事をもらう事はほとんど無いので、結局その機会は永遠に訪れない。 仲が悪いとかではなく世の中にはたくさんの仕事の機会があるので、普通に選ぶと二回同じ所を選ぶ可能性はほとんど無いのだ。

以前一緒に仕事をした人から仕事の紹介を受ける事は結構あるので、 一緒に仕事をした人の評価というのは全く意味が無い訳でもない。 一緒のチームのメンバが「あいつは全然たいした仕事しないので二度と一緒に仕事したくない」と思うような事があれば、 それなりには影響はあるかもしれない。 けれどこれもまぁよっぽどひどい仕事をしなければ、この業界では自分くらいのプログラマならまた仕事をしたいと思ってもらえる程度には人材不足である。 だからやっぱり自分くらいのプログラマは、こうした側面で仕事を評価される事はほとんど無いと言える。

会社は仕事を始める前にそのフリーランスのプログラマを評価する。ではそれはどうやって評価されるだろう?と考えると、 原理的にはそれ以前の仕事が評価されていると言える。 だからこれから一緒に働く事になる会社は、その仕事を評価する事はあまり無いがそれ以前の仕事は評価しているし、 今回の仕事を評価するのは今雇っている会社ではなく、将来一緒に仕事をする事になる会社である。

だから今回の仕事を一生懸命やってもらう為に評価を使う事はできない。 逆に評価をしなくても仕事を手抜かれてしまうと恐れる必要も無い。

会社のフリーランスの評価は、ほとんどジャンルの評価

会社の評価というのは契約時に行われる訳だが、一方で会社はフリーランスの過去の仕事を詳しく知る方法は無い。 会社はだいたいは、以下の2つで判断する。

  1. やってきたジャンル
  2. すごく大雑把な実力(始めたばっか、中堅、ベテランの三段階くらい)

そして2の実力に関する評価は、ほとんど労力は割かれない。 だいたい誘ってくれる人とかがある程度は自分の事を知っていて、その人が会社にある程度は売り込むのだけれど、 別に誘ってくれる人もそこまで自分の仕事の結果を良く知っている訳でも無いし、会社もその売り込みの結果でそこまで大きく条件を変える訳でも無い。

だからある程度の実力のあるプログラマにとっては、会社の評価は自分のやってきたジャンルおよび今回やるジャンルの評価になる。

この評価は、言ってしまえばプログラマの腕はほとんど評価してないに等しい。webプログラマを二人連れてきた時に、どちらが良いwebプログラマか、というのはほとんど判断しないと言って良い。 これは会社が社員のプログラマを評価する、という時とは大きく違う。 というのは社員のプログラマはだいたい同じジャンルの仕事をしているプログラマで、その違いを作るのが評価だから。

けれどフリーランスはみんな同じ扱いなのか、というと結構違う。 やってきたジャンルとこれからやるジャンルというのはとても重要な話で、 そこには大きく需給の力が働く。 その会社が「これまでこんな条件で外部のプログラマを雇った事は無い!社員だってもっとずっと安い給料なんだ!」といくら言った所で、めっちゃ需要が高い業界なら人を雇うために特例を作って条件を上げるしか無い。

だからフリーランスにとって会社の評価とは、自分のやっている分野の将来性とか目の付け所が正しいかの評価みたいなもので、 プログラマとしての実力の評価とはちょっと違う。

けれどプログラマの実力なんてどうせ会社には大して評価出来るものでも無いので、 会社員よりもこちらの方が実態にあっていて良いんじゃないかと思っている。 会社のフリーランスの評価、というのは、会社の会社員プログラマの評価よりはずっとクリアでシンプルだ。

もちろん金にならんけど楽しいジャンルというのもあるし、今は金にならんが将来は来るジャンルというのもあるので、 会社の評価がジャンルのすべてでは無い。

フリーランスの仕事の評価は、自分でする

会社はジャンルのその時点での需給しか評価しない。だからこそフリーランスの仕事の評価は、自分でするのが一番重要な評価と思っている。

自分で自分の事を評価するのは課題評価になりがちだとか問題もあるけれど、結局プログラマの実力を評価するのは自己評価が一番マシな評価方法では無かろうか。

自己評価にどういう意味があるのか? 自己の評価の結果は条件の交渉の時の自分の態度などにある程度は反映されるけれど、そちらはほとんどは需給で決まる。 だからそもそも評価なんてしなくても良い、 というのも十分ありうる話だ。

けれど、自分は自己評価はそれなりにしている。 中期的に自分がいい感じの日々を過ごしているのか、 それとも何か改善が必要なのかを考えたり、 良い仕事ができたと思えばその後にもいつかまた似たような仕事やってもいいかもな、という思いを高めたりもする。 また、俺すごくね?と思うとやる気も出るし、 こんなに凄い事やってるなら本でも書かないといけないかもな、 という気分になって本を書いたりもするかもしれない。(Androidを支える技術はそうやって書いた本では無いけれど)

ちなみに今回の仕事は過去10年でもっとも良い仕事をしている気がしている。 そう某所で言ったら、ボジョレーヌーボーみたいだな、と言われた。

会社のプログラマ評価なんて本当に必要なのか?(ふふん)

プログラマの仕事の評価は難しい。 会社は社員の評価を非常に高いコストを払って毎年行っているが、この内容にコストを掛けただけの価値が無いというのは皆も感じている事だろう。 需給で条件を決めさえすればそれで十分なら、無理して意味の無い評価をする事も無い。 これはフリーランスが会社員より優れていると思う事の一つでもある。

組織の問題とフリーランスプログラマ

フリーランスは普通組織の問題には関わらない。

会社の偉い人とフリーランスプログラマ

会社の偉い人はフリーランスプログラマにとっては別に偉くない。