読者です 読者をやめる 読者になる 読者になる

NZ MoyaSystem

ニュージーランド在住のプログラマがあれこれ書くブログ

カテゴリ

ニュージーランドのプログラマが毎日定時で帰れる本当の理由

f:id:imo_jo_chu:20170417132639j:plain

僕がニュージーランド(以下、NZ)でプログラマになることを目指した大きな理由は「とにかく残業したくなかった」からだ。

日本を離れた2014年当時はワークライフバランスをめぐる機運も今ほど高くはなかった。また、5年半のシステムエンジニア生活の間、多くのプログラマが失敗プロジェクトに巻き込まれ長時間労働を余儀なくされ、業界を離れていくのを数多く目にしてきた。という事情があり、

「日本でプログラマになっても残業地獄に放り込まれる可能性が高い。ならば、残業しないのが当たり前の社会に行けば、毎日定時で帰れるだろう」と考えたのだ。

その狙いは見事に当たった。今ではプログラマとして楽しく働きながら、残業ゼロ生活を実践できている。

しかし最近、ふと考えた。

僕が毎日定時で帰れるのは、NZが残業しないのが当たり前の社会だから、ではない。それは半分正解で半分間違いだ。

NZのプログラマが毎日定時で帰れるのには、もっと根本的な理由がある。

理由1: 一定の知識と技術がなければ、NZではプログラマになれない

f:id:imo_jo_chu:20170417133453j:plain

まず、「プログラマ」という職業に求められる要素が、日本とNZでは大きく異なる。

日本では、学問的なバックグラウンドや経験の有無を問わず、誰でもプログラマになれる。文系出身で1行もコード書いたこと無いけどプログラマになりました、という人は珍しくない。また、人材派遣の世界では「簡単な研修を受けただけで経験1年のプログラマとして派遣された」なんて話もある。

言い換えれば、日本のプログラマは「コードを書く人」でしかない。それが品質のいいコードなのか悪いコードなのかは、人によって極端なバラツキがある。優秀な人もいるが、全然使えない人もそれなりにいる。

一方でNZでは、情報系の学部を卒業していなければプログラマになるのは難しい。また卒業しているだけでは不十分で、企業でのインターンを中心に、ある程度の経験を積む必要がある。採用の過程では、NZ国内の学生だけでなく、世界中からやってくる移民たちとの競争にも勝ち抜かねばならない。

つまり、NZでプログラマになれるのは一定の知識と技術をもった人だけなのだ。まともなコードが書けない人間は選考過程でふるい落とされるか、万一採用されたとしても試用期間中にクビになる。

残業地獄のプロジェクトでは何が起きているのか?

f:id:imo_jo_chu:20170417133113j:plain

ここで一旦、僕が日本で働いていた職場に話を移そう。そのプロジェクトでは毎月数十時間、多いときには100時間の残業が常態化していた。なぜ長時間の残業が発生してしまったのか、多少専門的な話になるが、その理由をあげてみる。

まず、自動テストが存在しなかった。販売・会計管理という数字をシビアに扱うシステムだったにも関わらず、すべてのテストが手動で行われていた。当然ながらテスト工程そのものに時間がかかるし、ある箇所を変更した場合の影響範囲が読みきれず、致命的なバグを作り込むことがよくあった。

次に、コードの可読性が最悪だった。数千行を超えるおばけクラスが大量に存在する、モジュール名が「AAAA1234」など管理番号になっていて何をするものなのかわからない、あらゆる変更履歴がコメントアウトで残されている、などなど、やってはいけないことのオンパレード。既存のロジックを読み解くだけで無駄な労力が必要だった。

そして、リリース作業に異常な手間がかかっていた。ソースはいちおう Subversion でバージョン管理されていたものの、リリース対象でないものまで main ブランチに放り込まれているため、リリースごとに対象のファイルをピックアップするという謎作業を行っていたのだ。

書いていてだんだん頭が痛くなってきたが、まとめると、時間をかけずに品質を確保する努力を放棄し、時間をかけてミスをしやすい仕事をしていたのだ。これでは残業が減らなくて当たり前である。

知識と技術のある開発者が揃わなければ残業ゼロの職場は作れない

f:id:imo_jo_chu:20161014232706j:plain
以上の話を聞いて、まともな開発者であれば「ありえない」と感じるだろう。テストを書こうとか、リファクタリングしましょうとか、リリース手順を見直しましょうとか、考えるのが当たり前だ。

そう、まともな開発者であれば。

残業ゼロの職場を作るには、まともな開発者が揃わなければダメなのだ。ひとりだけ優秀な人がいてもしょうがない。マネージャーからメンバーにいたるまで、知識と技術をもった人間でなければ務まらない。

マネージャーが技術にうとければコード品質の話を理解できないし、メンバーが技術不足だと、せっかく確保されている品質を次々と破壊するおそれがあるからだ。

開発者の知識も技術もバラバラな日本では、よほど人を選んだ採用活動を行わなければ、全員の意識をひとつにして残業ゼロの職場を作るのは難しい。

しかし、全員の技術レベルがある程度担保されているNZでは、みな効率的な開発手法がどういうものかわかっているし、その重要性も理解しているから、自然と残業を減らす方向に向かうのだ。

理由2: NZのプログラマは残業する必要がない

f:id:imo_jo_chu:20151115151412j:plain
もうひとつ見逃してはいけないのが、労働者自身の自発的な残業だ。

あるエンジニア情報サイトが実施した「残業に関するアンケート」では、「残業する主な要因」として最も多かった回答は「残業費をもらって生活費を増やしたいから」で、「非常に当てはまる」「やや当てはまる」の合計が34.6%だった。*1

2012年の調査結果だが、日本の「SE・プログラマ」の年収の中央値は、20代で350万円、30代で450万円というデータがある。*2 決して多い金額ではなく、残業代稼ぎをしたくなる気持ちもわかる。

NZに目を移すと、プログラマが残業代稼ぎをする必要などまずない。なぜなら、そんなことしなくても十分な給料をもらっているからだ。

2017年1月時点の調査によると、NZ国内におけるITエンジニアの年収の中央値は80,000ドルである。*3

この金額は、為替レートで換算すればおよそ640万円となるが、現地の生活実感からすれば、日本での年収800万円と同等と考えてまず間違いない。平均値ではなく中央値であることに注目してほしい。一部の高所得者が数値を押し上げているのではなく、まともなプログラマならこれくらいもらえるのだ。

日本とNZでなぜプログラマの給料がこうも違ってしまうのか。やはり、プログラマが誰でもなれる職業かそうでないかが強く関係していると思う。

NZでも、ファストフードの店員や工場労働など、誰でもできるような仕事は最低賃金に近い給料になってしまう。しかし前述したように、NZのプログラマは一定の知識と技術をもつ人しか就けない、一種の高度専門職だ。適した人材は少なく、その割に人手不足なので、給料は自然と高くなる。

日本のプログラマも、優秀な人達は高い給料を得ているはずだが、それ以外の技術の低いプログラマが薄給で働いているため、中央値を押し下げているのではないかと感じる。

まとめ ー 技術を磨けば定時で帰れる! ー

NZのプログラマが毎日定時で帰れるのは、必要な知識と技術を身に着けており、かつ企業がそのスキルにじゅうぶんな給与を払っているからだ。NZの社会や文化に関係なく、残業せずに仕事が終わるのには、それなりの裏付けがあった。

これは、とても希望の持てる結論だと思う。

日本に住んでいても、技術さえあれば毎日定時帰りの生活を手に入れることができるのだ。

残業がなかなか減らないのは、あなた自身の技術力が不足しているか、もしくは、技術に見合った職場で働いていない可能性が高い。

プログラマとして働くならば、とにかくまともにコードが書けるようになろう。そして技術を正しく評価してくれる会社で働こう。

日本の労働環境はいまだにクソな部分が多いが、自分ひとりの労働環境なら行動ひとつで変えられるのだから。

関連ニュージーランドで就職した文系プログラマの技術力をさらす - NZ MoyaSystem