Pythonエンジニアになりたい!と思っていても、現実のPythonエンジニアの収入や生活はどうなっているのか不安な方もいるでしょう。
結論から言うと、2020年9月現在、Pythonに専念したエンジニアで生計を立てることは十分に成り立ちます。
説明のために、フリーランスエンジニアでPython案件を中心に手掛けている筆者が、Pythonエンジニアの日常生活の一例を紹介します。
この記事を読めば、あなたもPythonエンジニアに興味を持つかもしれません。
Python案件はあるのか?
あります。
日本国内ではまだまだPHPやRubyの案件が多い印象ですが、実態として、筆者はPython開発を切らしたことはありません。
フリーランスエンジニアなので、案件と案件の間に期間が空くことは当然あります。それはどの言語でも一緒です。しかし、PHPもRubyもJavaもやらず、PythonとJavaScriptに集中している筆者は、少なくとも生活に窮するような期間が空いたことはありません。特に2019年くらいから、だいぶPythonの案件は増えました。
筆者は業務アプリとDjangoを中心に手掛けていますが、業務アプリにPythonを使用する例、Web開発にDjangoやFlaskを使用する例とも実感として増えてきています。まだまだ増えるのではないでしょうか。
そして、AI開発を手掛けるなら、更に選択肢は広がります。AI開発の案件は確実に増えています。減ることは考えにくいです。AI開発はPythonの独占状態で、また報酬も高いものでは月100万円望めます。筆者にもAI開発の声はかかります。スキル不足でなかなか最終的に選ばれるまでにはいきませんが、筆者も機会さえあれば手掛けようと虎視眈々と狙っています。
フリーランスエンジニアの場合
それでは、クライアントと直接取引する形態のフリーランスエンジニアである筆者の例を取り、生活を紹介します。
Pythonを使うという提案
クライアントは、こういう機能を持つソフトウェアを開発してほしい、という要望のみを持っている場合がほとんどです。実際の開発言語やフレームワークについては一般の方は知る機会がありません。
それでなんとなくで、Excel VBAやPHPを使ってはどうか、というイメージを持っている場合もあります。
しかし子細にヒアリングすると、Pythonの方が適している場合が少なくありません。もちろん、Excel VBAやPHPの方が適していると判断した場合はそちらで行います。がしかし、Pythonの方が適していると技術的に検討して判断した場合は、ためらいなくPythonを開発言語として使用することを提案しています。判断理由をクライアントが理解できるように説明して、納得してもらえなかったことはありません。予算の都合で平均するとエンジニアの単価が安いExcel VBAやPHPに流れることはありますが、それは致し方ありません。筆者としては最適解を求めてPythonを自信をもって提案しているのですから。
フリーランスエンジニアに必要なのはこの提案力です。
設計
Pythonの場合、ライブラリやフレームワークによって、設計のポイントが決まっています。
筆者は詳細設計はしません。構造を決めるまでに抑えています。それでも見通しの良いコードが書けるのがPythonです。言語仕様が優れているので、全体の構造さえきちんと考えておけばスパゲティコードになるはずがないのです(もしスパゲティコードになったら、それはPythonを勉強しなおしましょう)。
データベースを設計し、エラー処理の仕方のルールを定め、開発するクラスの機能を定める。そういったところを決めておけば大丈夫です。
コーディング
Pythonの設計思想でも触れましたが、Pythonで何かを実現する場合、コードが極端に異なることはありません。
従って、ネット上のサンプルコードでも、同じ機能であれば同じようなコードになります。
これはPythonのコーディングを重ねていけば理解できると思います。
それと、これは特記すべきことですが、コーディング時にストレスを感じません。
ここの書き方が理解しにくい、といったことがないのです。
Pythonの言語仕様は簡潔です。複雑な書き方になる場合はありません。意図的に複雑にしようとしてもできません。これは大幅なコーディング時間の短縮につながります。労働時間が短いことはいいことです。だから、Pythonのコーディングにストレスはありません。
テスト
しかし、テストだけは、少々厄介かもしれません。
何も考えていないと、print文でのテストになるでしょう。これはバグの原因を突き止めるのは厄介です。構造設計が悪かった場合、インデントの極端な見直しが発生し、延々とバックスペースを押し続ける、なんてことにもなりかねません。
pytestというテスト自動化ツールもありますが、少し使い方が難しいです。そしてテスト用のスクリプトを書かなくてはなりません。そのスクリプトにバグがあったら、元も子もありません。
テストは開発の基本、ここは時間をかけてじっくり臨みましょう。品質を保証してくれるのはテストです。
ネットの活用
Pythonのネット記事は飛躍的に増えました。
マイナーなライブラリや最新のライブラリについては記事がないことも多いですが、メジャーなライブラリはだいたい記事があります。そして、誰が書いても似たようなコードになる、という特性があるので、サンプルコードの信頼性がとても高いです。筆者も重宝しています。
ただし、古い記事のコードは動かなかったりします。そこは経験を積むと判別できるようになりますので、経験を積むしかないですね。
気分転換
ここで趣向を変えて、筆者の気分転換を書きます。
筆者は自宅で仕事しているので、疲れたら、ソファーに横になって好きな音楽を聴きます。
会社員だったら、そんなことできませんよね。フリーランスエンジニアの特権です。
ランチも気分転換になります。時間に余裕がある時は自炊します。コンビニ弁当ではなくきちんとしたものをランチに食べられるって、なかなかの贅沢ですよ。近所の定食屋に行くこともあります。オフィス街の定食屋と違い、空いていて、店員さんと世間話をしてリフレッシュして帰ってきます。
どうしても気分が乗らないときは、カフェで仕事します。2、3時間仕事していると頭が仕事モードに切り替わるので、そうしたら家に帰ってきて続きをやります。カフェにしても、オフィス街のカフェではないので平日の昼間は空いています。
総じて筆者の気分転換は、コストパフォーマンスが抜群だと自負しています。
一日の労働時間
Pythonを主に手掛けるようになってから、一日の労働時間は平均すると実質6時間ほどに減りました。Pythonだと開発効率がいいのでそれで開発できてしまうのです。納期に遅れたこともありません。会社員なら実質8時間拘束されます(最近は残業の少ない会社も増えているようですが)。
スウェーデンではみな4時に帰宅するそうですが、筆者の生活はそれを地で行っています。働き方改革かもしれませんね。
まとめ
この記事ではフリーランスエンジニアである筆者の生活について書きました。
踏み出す一歩、持てたでしょうか?
今までにない働き方、あなたもしてみませんか?