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

フリーランスプログラマになって、かれこれ10年近く経ってしまった。

昨日をもって退職しました。今日から(しばらくは)フリーランスとしてがんばります。

— 武藤スナイパーカスタム🔫 (@__tai2__) November 30, 2010

会社を辞めて、とくに深い考えもなくなんとなくフリーランスになった。しばらくすればどこかの会社に就職するのかなあ、きっとそうなんだろうなあ、とかぼんやりと思ってたことを考えると、そのまま10年近くも続けてしまったのは感慨深い。

ぼくにとって、ほかの業種、ほかの立場の人の職業生活がどういうもんなのかわからないのと同程度に、ほかの人にとってもフリーランスプログラマがどういうものか、きっとイメージがあまりわかないんだろう。そこで、フリーランスプログラマ生活を振り返って、それがどのようなものだったのかを思いつくままに語ってみたい。フリーランスプログラマという語は、フリーランスとプログラマという2つの要素からなっている。この2つをとくに明確に分けて考えるつもりもないので、フリーランスとプログラマ、両方のトピックが綯い交ぜになった文章になるんだろうと思う。いちおう、これからフリーランスプログラマになろうと検討している人に、すこしでも参考になるようなことを書きたいという気持ちで書いてはいる。

書いてみたら長くなったので、つまみ食いしやすいように見だしをつけた。ぜんぶ読むのはたいへんだろうから、興味のありそうなトピックにジャンプしてください。

目次

フリーランスプログラマになった経緯

まずは、どうやってなったのか、ことの経緯からはじめる。フリーランスプログラマになるまえは、会社員として、おもに受託開発をやっているとてもちいさな会社で、会社員受託開発プログラマをやっていた。いま思えば、当時リーマンショックの影響もあって、会社の業績がかんばしくなかったんだろう。上司や同僚などいっしょに仕事をしていた人がつぎつぎと会社をはなれていった。で、最終的に社員2人と社長1人という状況にまでなった。社長は仕事を取ってきて、それ以降のお客さんとのやりとりから納品まで、すべて社員に丸投げという感じのフロー。こちらとしては、生活に必要なお金がもらえてプログラムが書けてさえいれば、まあ満足だったので、そのまま続けていた。しかし、給料支払いの遅延や案件トラブルにつづく減給といったことに起因する、社長との感情的な軋轢から、しだいに辞めたいなという気持ちが生じてくる。

さきに辞めた職場の仲間は、フリーランスプログラマとして、会社員時代とおなじ取引先と仕事をしたりしてた。フリーランスプログラマになったら仕事を斡旋してもらえるというような会話はなんとなくしたりしていたので、まあ辞めてもなんとかなるだろうと思っていた。また、会社員として最後に納品した仕事(依頼経緯からなにから社長はまったく関与してしていなかった)も、フェーズ2以降がきまっている案件ではあったので、お客さんに相談してみた。そういうことなら今後はきみ個人に直接たのもうか、ということになった。

そんなこんなで、無事退職し、晴れてフリーランスプログラマとなった。社長からは、きみは個人ではやっていけないよというようなことを言われたのを覚えている(そんなのわかるもんかよと思った)。

フリーランスプログラマ=受託開発プログラマ

ちなみに、世の中のたいはんのフリーランスプログラマは、いわゆる受託開発で生計を立てていると思う。つまり、お客さんからなにかをつくって欲しいと依頼を受けて、それをつくり、納品するという仕事だ。さいきんは技術顧問などコンサルタント的な仕事も増えてきているようだけど、大部分はじぶんで手を動かす開発だと思う。個人受託開発プログラマと言いかえてもいい。もともと会社でも受託開発をメインにやっていたし、上司がいなくなってからは見積もりから検収まで、お客さんとのやり取りもほぼすべてじぶんでやっていた(請求だけは社長がやっていた)ため、フリーランスプログラマになっても、やっていること自体はほとんど会社員時代と変わらなかった。変わったことと言えば、業務時間や作業場所にしばられず、自宅で自由に仕事をするようになったことくらいだ。

確定申告について

独立するにあたり、今まで会社まかせだった確定申告と所得税の納税というのをじぶんでやらないといけないらしい。まずそのあたりを調べなければと思い、Amazonかなにかで適当にしらべたら評価の高かった、きたみりゅうじさんの 「フリーランスを代表して 申告と節税について教わってきました。」 という本を読んだ。個人レベルなら、この本で身につけた知識だけで、10年間じゅうぶんにやってこられた。税理士を頼ったことはない(というか、一度くらいプロに相談しようと思いつつ、めんどくさくてけっきょくやらずじまいだった)。もちろん、プロの税理士に相談すればこまかい節税の最適化テクニックなどはあるんだろうけど、ともかく、この本のおかげであるていどの自信をもって、じぶん自身で確定申告をこなすことができた。独立してから知り合ったフリーランスのなかにも、この本で税の勉強をしたという人は何人もいる。さらに、さいきんは、 freee など便利な帳簿管理サービスもある。ぼくはfreeeユーザーだけど、これをつかえば極限までかんたんに経理と確定申告ができる。フリーランスプログラマの場合、クレジットカードのつかいわけなど、経費管理の方法をくふうすれば、年間で必要な経費管理の時間は数時間から半日程度で済むと思う。こういうサービスはつかったほうがいい。

どうやって仕事を取る?

フリーランスと会社員のいちばんの違いは、プロジェクトごとの契約をお客さんとじぶんで直接交わさなきゃいけないってこと。会社員の直接の契約相手は会社で、収入を確保して社員に給料を支払う責任が雇用者にある。いっぽう、フリーランスプログラマは、仕事を取れなければそのまま収入がなくなってしまう。仕事とお金の心配をじぶんでしなくちゃいけない。ぼく自身は、さっきも言ったように、辞めるまえからあるていど仕事の算段がついていた。そして、10年間をふりかえって、仕事がなくてこまったということは一度もない。逆に、いそがしいときには、もしつぎ仕事がこなかったら、旅行にいったり、何ヶ月も趣味の勉強や開発に没頭しようという妄想をふくらませてばかりいた。でも、じっさいに何ヶ月も仕事がとぎれるというようなことは、あえて仕事をことわって自由時間をつくる努力をしないかぎり、一度もなかった。感覚としては、年に何回か、思い出したように、こういう仕事があるのだが、てつだってもらえないかという連絡が知り合いからくるかんじ。連絡手段は、電話やメール、facebookメッセージとかが多い。別にぼくがとくべつすごいって言いたいわけじゃなくて(まあ、みんなから頼られるプログラマではあるんだぜと自慢したい気持ちもそりゃなくはないけど)、身近にいるたくさんのフリーランスプログラマたちは、例外なく、みんないつもいそがしそうにしている。人手が必要で仕事の相談をすると、ちょっといそがしくて、すぐにはむずかしいと言われてしまうことも多い。つまり、世の中には、アプリやシステムを、けっして安くないお金を出してでもつくりたいと思っている人や会社がたくさんあって、フリーランスプログラマ市場には、じゅうぶんな需要がある。だから、仕事はそこらじゅうにある。いまは、仕事にあぶれるということは、あまりないんじゃないかなあ。選り好みさえしなければ。

とはいえ、やはり仕事がなかったらつらいという不安は、ほんどのフリーランスが共通して抱えている思いなんじゃないかと思う。ぼくも、そういう不安がふと頭をよぎることはある。ただ、仕事をきちんと誠実にこなしてさえいれば、一つのプロジェクトを終えるごとに、信頼というのは着実に積みかさねられていく。まあこんなのよく言われることではあるんだけど、仕事をしていくうえで、信頼はほんとうにだいじだと実際ぼくも思う。ただ、それはべつに大袈裟にかまえるようなことでもなくて、ただ誠実に仕事をやってさえいれば、かってについてくるもの。なんにも難しいことじゃない。いまのところソフトウェア開発業界では、とくべつに秀でた才能なんてなくても、プログラムをつくれるたしかな技術力さえあればいい。それだけで、ふつうにやっているだけで生きていけると思う。それほど社会はソフトウェア開発スキルを必要としているという感覚がある。

ぼくの場合は、会社員時代に受託開発をやっていたから、仕事をもらえるコネクションなど、じゅうぶんな下地ができていた。じゃあ、そういう下地なしに、いきなりフリーランスプログラマになるのはむずかしいんだろうか。

さいきんでは、エージェントがフリーランスプログラマに案件を紹介してくれるようなサービスがいくつもある。そういうサービスを活用すれば、仕事をもらう直接のつてがなくても、個人で仕事をはじめることは、じゅうぶんに可能な気がする(実際やったわけではないから気がするってだけだけど)。どういう仕事があるのか興味があったのと、仕事の選択肢を増やすつもりもあって、じぶんでもいくつか登録してみた。そのうちの一つで、 flexy というサービスの エージェント野谷さん からは、定期的(年1、2回くらい?)に案件を紹介していただいた。野谷さんは、じぶんの興味分野や得意スキルなどもしっかりと把握してくれたうえで適切な案件を紹介してくれるかたで、個人的に信用している。タイミングがなかなかあわず、相談をうけてもじっさい契約にいたったことは、いまのところないんだけど。この種のサービスは、案件成立時に契約額の何割かを、仲介会社が報酬として受け取るというようなビジネスモデルになってるんではないかと思う(聞いたわけじゃないから想像だけど)。そういったサービスにたいして、ほんらい受け取れる報酬を横取りされているように感じて嫌悪感を持っているフリーランスプログラマもいるようだ。個人的には、ほんらいなら何もなかったところに取引が生じているわけだから、立派に付加価値になっていると思う。ゼロだった売り上げがゼロでなくなっているわけじゃん?(仕事をもらう伝手がまったくない状況を想定していることに注意ね)。それに、報酬にかんして言えば、じぶんが満足する額をもらえているかどうかだけが重要なことであって、他の人があいだに入っていくら取っているかとかどうでもいいことなんじゃないのかね。たりないと感じるなら、額を増やして要求すればいいだけのことじゃない?(あたりまえだけど、いくらでも好きなだけお金がもらえるということではない。相場感みたいなものは必要。単価についてはのちほど語る)

ほかに、伝手がない人に役立ちそうなものとして、 FreelanceNow みたいなコミュニティーもある。こちらもタイミングの問題などがあり実際に契約にいたったことはない。だけど、のぞき見している感じだと、仕事はたくさんあるっぽい。クラウドワークスとかランサーズとかの、いわゆるクラウドソーシングと呼ばれるようなサービスもある。クラウドソーシングついて言うと、ソフトウェア開発系にかんしては、検索してでてくる案件がちょっと引いてしまうようなめちゃくちゃな内容のものが多く目につくので、一度もつかったことがない。

やりたいことは言っておいたほうがいい

ぼくの場合、基本的に、依頼のきた仕事はスケジュールと金額さえあえばなんでも受ける。内容で仕事を断わったことはこれまで一度もない。ほとんど毎回、なにかしらつかったことのないプログラミング言語やフレームワークでつくってくれという指定があるので、多くの案件は、まず言語やフレームワークのつかいかたを覚えることからはじまる。モバイルプログラミングの依頼があればiOSやAndroidのプログラミングガイドを読むところからはじめるし、かなりマイナーなプログラミング環境の仕事もやったことがある。技術資料を読むのが趣味みたいなところがあって、ドキュメントを読むのはまったく苦痛じゃないので、こういう仕事スタイルが性分にあっているんだと思う。なので、仕事でつかったことのある言語やフレームワークの数だけで言えば、けっこうな数になる。もちろん、どれを取っても極めるというほど深くは知らないんだけど。それでも、案件の性質によらずなにかとつかう機会の多いJavaScriptとかは、自然とけっこうくわしくなってきた。

よく、なんでもできるっていうのは、なんにもできないのと同じことだみたいな言葉を耳にすることがある。それは一理あって、なんでもやりますって人だと、なにか具体的な仕事があるときに、その仕事ならあの人にたのもうということにはなりにくいんじゃないかと思う。だから、やりたい技術とかつかってみたい言語とかがあるなら、常日頃からじぶんがそれに興味があることをまわりにチラつかせておいたほうがいい。それが記憶のフックになって、あの人に相談してみようかってことになるかもしれないから。実際にそのやりたい技術で、なにかしらのデモ的なものでもつくって見せられればなおいい。ぼくはそういうことはいっさいやってないので、まあじぶんの興味あること(コンピューターグラフィクスとか)とかんけいなく来た仕事来た仕事受けてたら、すっかり器用貧乏系プログラマになってしまった。

ただ、どんな仕事でも、そのなかで、あるていどじぶん自身がたのしめる方向に仕事を持っていく余地はあるんじゃないかと思う。言語やフレームワークが決まっていないなら、じぶんがやってみたい言語を提案するとか、じぶんが試してみたいと思っているアイデアを差し込んでみるとか。仕事を完遂さえすれば、過程や方法はなんでもいいはず。目をくばると、その余白にじぶんのやりたいことをやる自由が見つかったりする。これは、ある先輩フリーランスプログラマから影響を受けた仕事にたいする姿勢だったりする。

知名度はいらない

仕事をもらう相手についていうと、最初のころはおなじお客さんからもらうことが多かった。そして、年数を重ねるうちに、だんだんあたらしいお客さんからの仕事も増えていった。逆に、昔はよく仕事をもらっていたけど、さいきんではほとんど付き合いがなくなってしまったお客さんもいる。増えていったというか、変わっていったというほうが適切かも。なぜ声をかけてもらえなくなってしまったのかはよくわからない。知りたい気もするけど、あまり聞きたくない気もする。あたらしく仕事をもらうようになったお客さんとの出会いは、どういう経路があるか。ぼくの場合、広い意味でのコミュニティーで知り合ったつきあいが多い。コワーキングスペースに通ううちに知り合った人もいるし、勉強会の懇親会で知り合いになった人もいる。そういう人たちから、あるときふと仕事の相談を受ける。mizchiさんみたいな顔の広い有名人で、最新トレンドを追っているような人であれば、TwitterのDMで案件の相談を受けたりするみたいだけど、ぼくの場合は10年やっていてそういったことはほとんどない。

リアルでの勉強会など、なんらかの場を通じて知りあった人から相談を受けることがほとんどだった。フリーランスプログラマになるために、インターネットでの知名度が必要かというと、これは断言するけど、まったくそんなことはない。知り合いにフリーランスは何十人もいるけど、ツイッターでフォロワーが何千人もいるような有名人なんて1人もいない。そして、みんな安定して生計を立てている。ソフトウェア開発業界なら、知名度がなくても、ふつうに仕事をして、しっかりと信頼をつみかさねていけば、じゅうぶんにやっていけるはず。

単価

さて、フリーランスプログラマとして開業し、めでたく仕事の打診がきた。つぎは単価を決めないといけない。ぼくの場合は、会社で仕事を受けていたときの単価を基準として、個人なのでそれよりすこし低めという設定をした。昨今はさまざまな人がじぶんの単価を公開してくれていて、探せばいろいろでてくる。まあ、世間のフリーランスプログラマがいくらくらいの単価にしてるのか、どのように決めているのかはふつうに気になるだろうから、いくつか参考リンクを書いておく:

あとは、まわりにフリーランスプログラマの知りあいがいるなら、きっと質問すれば多くの人は教えてくれるんではないだろうか。ちなみに、ぼくの場合、現在は人月120万円だ。さっきも書いたけど、単価についてはじぶんが満足できる額を設定するということがいちばん重要なことだと思う。あんまり人の話と比較しすぎても、しあわせになれない気がする。

契約形態: 一括請負契約と準委任契約

契約形態の話も大事。ソフトウェア受託開発において、契約形態は大別して二種類、一括請負契約と準委任契約っていうのがある。一括請負は、じぶんの経験だと一番よくある形態。最初にお客さんからの要件提示があって、その要件を実現するならどのくらいの期間と費用がかかるかっていう見積もりをする。で、出した見積もりで合意が取れればその見積額で契約を交わして、計画したスケジュールに則って納期までにプログラムをつくり、納品するという形。準委任契約は、契約上、なにをいつまでにつくるということを定めず、一定時間お客さんのために労働するということだけを決める。そして、労働したなら、成果が出たかどうかにかかわらず報酬をもらえるっていうやつ。成果をあらかじめ約束するか、しないかが大きな違い。準委任契約については、さらに2つのタイプに分けられる。じっさいの稼働時間にかかわらず固定の報酬が支払われる、いわゆる月額定額制と言われるタイプの契約と、稼働時間を記録しておいて、稼働時間の実績におうじて報酬が支払われるタイプの契約。時給いくらで毎月お金をもらうので、感覚としてはアルバイトに近い。

ソフトウェア開発なんて計画どおりにいくわけがないんだから準委任契約が合理的だ。という考えが、アジャイルとかスクラムの文脈で増えつつあるというのが昨今の流れのような気がする。ただ、これは成果にたいする責任を受けるがわが持つか、発注するがわが持つかというのが本質のように思える。受ける側からすれば、成果物に責任を負わない準委任契約のほうがリスクがないのはたしか。いっぽう、一括請負でやる場合、当然リスク込みで受注しなければならないので、必然的に見積額が肥大化する。ふつうに見積もった額にたいして、バッファーとして2倍3倍をかけてお客さんに提出するのは当たり前だし、実際そうしておおきめのバッファーを持たないと、こちらがおおきな損をしてしまう可能性がある。これは、作業の実質と報酬(費用)がかけ離れてしまいがちという意味で、双方にとってあまりよくない状況だと思う。だから、ソフトウェア開発は準委任契約(月額定額制、納品のない受託開発)を基本とすべきだというのが、 ソニックガーデン倉貫さんなどの主張 だ。ただ、契約のきめかたについては、基本的にこちらに決定権がない場合がほとんどなので、提示された条件で受けるかどうかを決めるしかないのが実情なんじゃないだろうか(なかには、契約形態から相談に乗ってくれる奇特なお客さんもいるにはいるけど)。

開業からしばらくは、一括請負の仕事しかなかった。けど、ここ数年、なんでか知らないがもっぱら準委任契約の仕事ばかりで、たまに一括請負の仕事がはいってくる程度という感じになっている。10年やってわかったことがある。じぶんにいちばん合っているのは、稼働時間におうじて報酬をもらうタイプの契約だということ。それは、こんな感じの働きかた。経験上、スクラム的なプロジェクト運用と組み合わされることが多いので、スプリントごとにゆるく目標を立て、そこに向かって作業をする。スプリントは無理のない範囲で計画を立てるし、万が一なんらかの理由で目標達成できないことがあったとしても、小さなずれだから大きな問題にはならない。これが一括請負+ウォーターフォールだと納期にまにあわないのは大ごとになってしまう。納期まぎわに徹夜でがんばったり、言いわけを考えてお客さんと交渉をしたりといろいろ面倒なことになる。準委任契約+稼働時間報酬は、他の契約とは体感のプレッシャーがだいぶちがう。目標達成へのゆるいプレッシャーはあるものの、稼働時間におうじた報酬なので、稼働しなかったとしても、じぶんのもらえるお金が減るだけだし、まあいいかと気楽にかまえていられる。思わず外に出かけたくなるような気持ちのいい日に、突発的に仕事を休んでピクニックにでかけても、そんなにうしろめたい気分にならない。働いたら働いたぶんだけお金を請求できるので、生活にこまるということもない。なんとも具合のいい契約じゃないですか。

逆に、つらかったのは月額定額の契約だ。こちらは、稼働時間にかんけいなく、つねに一定の収入が保証される安定性がメリットと言われる。うらを返せば、金銭が発生している以上、一定の稼働時間が期待される。というか、ぼくはそのように感じてしまう。だから、スプリントの作業において、はやめにある程度成果を達成したとしても、なんとなくもっと働かないといけないような気分になる。結果として、つねに働ける一杯働いてしまう。そうしないと、報酬分働いていないような気がして、なんだか後ろめたい。どうもこの働き方は、じぶんにはあまり合っていないらしい。

一括請負は、見積もりがあまかったり諸々の都合で納期間際にバタバタしてしまいがちではあるけど、要は期日までに必要な成果物ができていれば、あとはどうでもいいわけで、非常にフリーランス的であり、そんなに嫌いではない。最終目標が最初の段階で明確に決まってるのがいい。それさえクリアしちゃえば、あとはなにもしなくていいわけだし。一日の決まった時間毎日働くことを要請されるよりははるかにマシだ。とりあえずバッファーをあるていど多めにとってさえおけば・・・と言って、まあスマートに納品できないことはざらなんだけど、さりとてまったく要求を満たせず契約不履行となってしまったことも、いちおうはない。

働かない自由

働きかたと言えば、フリーランスプログラマは、経済的な事情がゆるすかぎり、休むのも自由だ(もちろん契約した案件をきっちり終えることは前提)。顧客と契約しなければ、何ヶ月だって自由に休んでいられる。そして、好きなタイミングで仕事を再開できる。じっさい、子供が生まれるときには、何ヶ月か育休期間として休んだし、独身時代には、働きすぎてつかれたときにしばらく旅行に出たりもした。働かない自由もまたフリーランスプログラマの醍醐味だと思う。とはいえ、働いてお金を稼ぎつづけないと生きていけないので、稼がないとなあという気持ちがつねにつきまとうのも事実。労働者階級の悲しい宿命か。

いのちだいじに

働きすぎと言えば、一度、ひどいプロジェクトがあった。マネジメントがだめなのか、あるいはそもそも体制がめちゃくちゃなのかで、参加していること自体がとてもつらく、しまいには、一刻もはやく抜けだしたいとしか考えられなくなってしまった。比較的おおきめのプロジェクトで、末端の一実装者であるじぶん1人の力ではどうにもならなかった。その案件は、一括請負ではなく、準委任契約で稼働時間におうじた報酬の案件だった。システムのリリースは遅延につぐ遅延。きちんとうごく状態までもっていくことも絶望的なように思えた。プロジェクトとしては、混沌としたまま続いていこうとしている状態だったんだけど、あまりにもつらいので、じぶんの担当部分を形のうえだけでも、どうにかこうにかでっちあげた。で、逃げるように契約を解除させてもらった。逃げたければいつでも逃げ出せるのもフリーランスプログラマのいいところと言えるかもしれない。責任論というのもあるんだろうけど、こっちとしてはメンタルの健康がかかっていることなので、大袈裟に言えば命がけですよ。信用のために頑張ることも大事だけど、それよりもじぶんが健康でいることのほうがとうぜん大事。

と言っても、一括請負契約だと、さだめられた成果物を納品することが契約書に書かれてしまっているので、なかなか途中で投げ出すのは難しいかもしれない。最悪、民事請求なんてこともあり得るんだろうし。すくなくとも法律のうえでは。ただ、長年受託をやってきた経験から言えば、お客さんとの良好な関係を築いてさえいれば、万が一なにか問題が起きても、そんなに無茶なことは言われないんじゃないかと思う。これは受託開発にかぎらないことだけど、なにかヤバい気配とか、想定とちがった事態とかが生じたら、とにかくその時点でだれかに相談したほうがいい。1人で抱え込んで知らせるのが遅くなればなるほど、リカバリーは難しくなる。あたりまえだけど、お客さんは、べつに敵対関係にある相手ではなく、プロジェクトを無事にまるくおさめるという共通の利害をもったパートナーだ。だから、こまったことがあったら、どうすれば切り抜けられるか一緒に解決方法をかんがえてくれるはず。まあ、その結果、なんとかここまでは無理してでもやってくださいなんて、けっきょく丸投げに近いことを言われる結果になってしまうこともなくはないけど、この機能は最悪なくてもいいですとか、この部分は納期が過ぎたあとでもいいですとか、誰か助けてくれる人を探しましょうとか、なにかしら言ってくれることが多かった。無い袖は振れないわけだし。

フリーランスプログラマは高リスク?

責任論について言えば、個人は無限責任だけど、会社は有限責任なので、フリーランスプログラマはたいへん危険だという話もときどき聞く。まわりで賠償問題までこじれたという話を聞いたことはないんだけど、たぶん事実なんだろう。ぼくも含めて、まわりのフリーランスプログラマはのんきな人が多いのか、そういったことにあまり深刻にはなっていないみたい。

フリーランスでは受けられない仕事

それから、会社によっては個人には仕事を出さないらしい。じぶんは個人に仕事を出してくれる会社としか直接のつきあいがないのでわからないけど(あたりまえ)、そういう話はよく聞く。だから、フリーランスプログラマである時点で、受けられる仕事の種類・市場は限定されている。ぼくの場合も、大きい会社と直接の取引をすることはなく、大きい会社の仕事は、知り合いの会社が仕事を受けて、知り合いの会社から個人として発注を受けるという形でずっとやってきた。

案件のかけもちは2つが限界

フリーランスプログラマは、複数の会社と契約して、複数のプロジェクトを同時平行で進行していることが多いと思う。よく言われるのは、ずっとおなじ会社と契約して、ひとつのプロジェクトばかり続けるのは、社員のように保証のないフリーランスプログラマにとってリスクが高い、だから複数の会社と契約するようにしたほうがいい、という話。まあ根拠があるのか無いのかよくわからない話ではあるけど、ほうっておいても勝手にそのような感じにはなっていた。ただ、同時並行のプロジェクトをいくつまで許容するかという問題はある。仕事はあるのでことわららなければ数を増やせるんだけど、多ければいいってもんでもない。並行するプロジェクトが増えれば増えるほど、複数プロジェクトでのやりかたや内容の違いに対応するコストが大きくなって、しんどくなってくる。個人的には、コンスタントに毎週成果を出すなら、2プロジェクトが限界かなという感触を持っている。1プロジェクトなら取り組んでいることに集中できて、もっと楽に成果をだせる。次の仕事がすぐに見つかるなら、べつにそれでもいいのかもしれないような気もする。もちろん、案件の内容とか、技術顧問ではいるなどプロジェクトとのかかわりかたとかで、ここらへんの話はぜんぜん変わってくるとは思う。

フリーランス40歳の壁

フリーランスプログラマなんてずっと続けていて、歳をとったらどうするつもりなの? キャリアプランは?みたいなことをたまに言われる。 フリーランス40歳の壁 なんて話もある(ぼくも来年ちょうど40だ)。まあ、正直なにもかんがえてない。いまのところ仕事がなくなるような兆候はないし、歳をとったからといってプログラミング能力が衰えるとも思えない(老眼の問題は確実にあるだろうから気をつけないと...)。おじいちゃんになるまでひたすらプログラミングして暮らしてけばいいんじゃないのぐらいに思っている。まわりのフリーランスプログラマ仲間では、40を過ぎた人がちょいちょい出てきている感じだけど、知り合いで50代の人はたぶんいない。べつに40になったからなにかが変わったという話もいまのところは聞いてない。ソフトウェア開発の需要はあるし、リモート作業で年齢とかもあまりかんけいないし(ふだん仕事しててチームメンバーの年齢なんて気にしないよね?)、なんとかなるんじゃないの?

と言いつつ、以前、サービスの立ち上げを手伝ったスタートアップ起業家(当時20代)に、50代のプログラマに仕事をたのみたいと思うか聞いてみたら、あまり頼みたいとは思わないという返答だったこともいちおう書いておく。

あと、言うなら、べつに会社員だって、小さい会社の場合とくにだけど、いつ潰れるかなんてわからない。というか、じぶんがおじいちゃんになるまで会社が存続してる可能性のほうが低いだろう、たぶん。だったら、フリーランスとたいしてかわらないよね。大企業だって、昨今いつ業績が悪化してリストラされるかわかったもんじゃない。会社員プログラマがフリーランスプログラマにくらべて安定しているというのは、しょうじきぼくにはよくわからない話ですね。

フリーランスプログラマの仕事は受け身

つぎはフリーランスプログラマの仕事のすすめかた、フリーランスプログラマの仕事とはどのようなものなのかについて話す。冒頭にも書いたように、フリーランスプログラマは、受託開発を生業とする人が多い。受託開発をやらないとすると、サービスなりアプリなりをじぶんで企画し、つくって、それを売ってお金を稼ぐということになると思うけど、はたしてそれはフリーランスプログラマと言えるのか。いずれにしろ、受託開発とくらべて、桁違いに難易度がはねあがるので、みんながみんなできることじゃないだろう。受託開発は、ぶっちゃけ、ソフトウェア開発能力がありさえすればノーリスクでだれにでもできる仕事。

基本的には、お客さんが、こちらがやるべき仕事の内容を定義するので、その内容にしたがってプログラムを書いて納品する。タスク管理システムのようなものでチケットを管理している場合は、お客さんがそこに要件を書き出して、こちらはそれを淡々と消化して閉じていく。どのていどの詳細までお客さんが決めるか、タスクをじっさいに起票するのがだれなのかなどはケースバイケースだろうけど、なにをつくるのか、つくったものがOKなのかを判断するのはこちらではなくお客さん。これは受託開発の根本というか、まあ定義みたいなもんだよね。もちろん、こっちからなにかを提案してはいけないってことはない。もっとこうしたほうがプロジェクトが成功に近づくっていうアイデアがあれば、提案するのは自由。だけど、それを最終的に判断する責任がお客さんにあるっていう事実にはかわりない。つまり、フリーランスプログラマというのは、基本的に受け身の職業だってこと。ぼくはずっと受託開発をやってきたので、プログラマとしてのキャリアをつうじて、ある意味、ずっと受け身の姿勢でやってきた。プログラムを実装して期待された動作を実現させるという磨き上げた己の能力を、金銭を対価としてお客さんに提供するっていうのが、フリーランスプログラマの本質だとぼくは思っている。

便利につかえるのがフリーランスプログラマ

これまでフリーランスプログラマの視点から語ってきけど、雇う側は、なんでフリーランスプログラマをつかうんだろうか。社員じゃだめなのか。直接聞いたことはないから想像でしかないけど、経営者からすれば、社員を雇うとなるとリスクも高くハードルもだいぶあがる。立ちあげようとしているサービスが軌道にのるかどうかもわからない状況では、なおさらだろう。そういうときに、長期的な関係をもつことなく、収入の保障をする必要もないフリーランスプログラマはべんりな存在なんだと思う。ちょっと契約してみて、期待する仕事ができなさそうであれば、単発の仕事で関係を終えることも、フリーランスプログラマなら簡単。

これまでの仕事歴をかんがみると、まだ開発のためにあたらしく社員を雇用する余裕がないとき、経営の安定していない状況で新規プロダクトを立ちあげたいとき、とりあえずお試しでコンセプトを検証したいプロトタイピングなどを目的として仕事を依頼されることが圧倒的に多かった。あるいは、正規の社員が見つかるまでの繋ぎか。ガッと作って納品して、ちゃんと動いてますね、ではさようならという仕事ばかりで、すでに軌道に乗っているサービスの運用フェーズや改修にかかわったことはほとんどない。サービスが軌道にのっていて、安定した売りあげがあるなら、社員にやってもらえばいいわけだから、それはそうだと思う。逆に、いろんな会社のさまざまなプロジェクトで、0を1にする仕事をできるのがフリーランスプログラマの醍醐味と言えるかもしれない。

プロダクトの保守をしたことがない

こういったプロジェクトとのかかわりかたが多いため、書いたコードの長期間にわたる保守をほとんどしたことがない。書きあげて、お客さんにわたしたら終わり。あとはそれをお客さんが好きにつかうだけ。どうつかわれるかはまったく関知しない。場合によっては、しばらく経ってからこまかい改修や機能追加の依頼がくることもある。けど、それはまた別の仕事なので、プロダクトを継続的にまわしているという感覚ではない。つまり、じぶんの書いたコードのお守りを長期的にすることが基本的にない。だから、メンテナンス性の高いコードを書く動機がない。もちろん、かならずしもめちゃくちゃなコードを書くということではなく、ぼくの知り合いの範囲では、どちらかというとちゃんとしたコードを書く人が多いと思うけど、構造的にしっかりと書く理由がないという話。とくに、自動テストなんかは、どこまでやるかは完全に個々人の裁量で、まあぶっちゃけ書かれないことも多いんじゃないかと思う。さいきんはだんだんテストコードというものが根付いてきているとはいえ… だから、たんに機能としてできているかどうか以上に、いわゆる内部品質というか、コードの保守性だのテストだのまでふくめた形でのソースコードが欲しいのであれば、依頼するときに条件として指定する必要があると思う。お客さんから、コンポーネントごとにテストもちゃんと書いてねと言われれば、それはもちろんちゃんと書く。

やっておいて良かったこと

だんだん語ることもなくなってきた。あとは、フリーランスプログラマとしてやっていくにあたって、やっておいて良かったと思うことについても言っておくか。

まず、さっきも書いたけど、きたみりゅうじさんの「フリーランスを代表して 申告と節税について教わってきました。」は読んでおいてよかった。べつにこの本でなくてもいいけど、じぶんで確定申告するなら、最低限の税の知識は必須だと思う。それから、これもじぶんで申告するならだけど、なんらかの会計ソフト的なものもあったほうがいい。世の中には、エクセルでつけてSQLで帳簿管理する変人もいるようだけど、まあ専用のソフトウェアをつかったほうが楽だ。freeeとかをつかうと会計知識的な部分もだいぶ隠蔽してくれるし、電子申告までワンストップでやってくれるのでたいへんスムーズ。

それから小規模企業共済。これは、掛け金そのまま(最大月7万円)所得控除で、受けとるときも税制的に優遇されるのでかなりお得。ぼくは調べるのめんどうで加入が遅れたけど、もっとはやくやっておけばよかったなと思っている。インフレ時にお得じゃないのではみたいな話もあるようだけど、実際どうなるのかよくわからない。いちおう金利連動の仕組み自体はあるんだけど、ここ20年以上ずっとデフレなので機能してない。あとは、国保のかわりに文美に入るとお得だっていう話もよく聞く。国保は実際かなり取られるからねー。ゲーム系の人だといけたりするらしいんだけど、純粋なITエンジニアだと加入条件満たさないようなので、ぼくは未加入。

あと、フリーランスプログラマ云々とはあまり関係ないかもしれけど、togglっていう稼働時間をメモっておけるウェブサービス。案件によってはお客さんに要求されたりするらしい。ここからダイレクトに報酬を計算できる。お客さんに要求されなかったとしても、じぶんのパフォーマンスを監視するためのツールとしてつかっておくといい。ぼくは、基本的に平日日中の行動はすべてこれで記録している。どのタスクにどれくらいかかったかとか、今日は何時間仕事したかとか、インターネットどれくらい見てたかとか、まるわかりになる。そしてそれをグラフ表示して見られる。プログラマなら、こういうデータをみるだけでもたのしいんじゃないだろうか。見積にたいして、実績が随分乖離してしまったからもっと多めに見積もらないとなあとか、さいきん働き過ぎてるなあとかいったことが客観的にわかるので、ふりかえりをするときに大活躍。

あるフリーランスプログラマの一日

時間について言うと、ここ数年、ぼくの典型的な一日中のタイムスケジュールは、おおむねこんな感じになっている。

ざっくり毎月100時間とかその程度働いて暮らしている感じ。時間給なので、人月単価の額よりはすくないお金しか稼いでないけど、そんなにいそがしくなく、ワークライフバランス的にもちょうどいい感じで日々を送れている。じぶんがどのていどはたらくか、仕事以外のことにどの程度時間を割くかといったことを、完全に自己のコントロール下に置いて、ライフステージにあわせて柔軟に変えられるのはフリーランスプログラマの強みだと思う。独身でひまなら好きなだけ働けばいいし、子供がちいさいくて手がかかるあいだは今のぼくのように仕事をある程度おさえめにすることもできる。また、もうちょっと子供が大きくなって手がかからなくなってきたら、はたらく量を増やしてお金を稼ぐこともできる。もしそうしたければ。

フリーランスプログラマに向いてる人

ぼくのフリーランスプログラマ観はこのツイートにまとめられる。

あたえられたタスクを淡々とこなすことができる人、人からあたえられたお題でプログラミングをずっとやっていることが苦痛でない人は、フリーランスプログラマに向いている。それから、将来の見通しが立たなくて夜も寝られないようではこまるので、まあなんとかなるだろうと考えられる、あるていど楽観的な性格も必要だとは思う。