こんにちは。近藤です。
数ヶ月前に、知り合いから「プログラム未経験だけどフリーランスとして仕事して行きたいと考えている。その準備としてスクールに通うのと転職するのならどっちが良いと思う?」と相談を受けました。
最近、「未経験からフリーランスに」的な広告とかを結構目にするので「あー、何かそういう広告を見たんだな」と思ったわけですが、
この時は「スクールに通うのが良いかどうかはわからない。ただ、一回は転職(システム会社に就職)はした方がいい」と答えました。
私は「未経験からそのままフリーランスエンジニアとして活動」するのはお勧めしません。
未経験なら一回ちゃんとした会社に就職してノウハウを習得するべきだと考えています。
理由を以下に述べたいと思います。(私自身スクールには通ったことがないため、あくまでも個人的な意見なので悪しからず)
ちなみに私の経歴は、
文系大学を卒業後、システム会社に就職。客先企業に常駐してシステム設計・システム開発・テストを担当。
↓
ユーザー系SIerに転職。システム設計、システムテスト、システム移行チームリーダー、環境構築チームリーダーを担当。
主に設計、顧客折衝、プロジェクト管理などを中心に活動。
↓
SIerを退職し、フリーに。システム開発における超上流(いわゆるシステム企画等)〜下流(開発・テスト)まで幅広く担当。
となっています。
上記の経験からフリーになる前に就職した方が良い理由をまとめます。
①実際の開発現場の役割分担や仕事の進めかたなどプログラム以外のスキルを身に付けることができる
システム開発は基本的に一人では出来ません。大掛かりなシステムだと数十人、小規模なものでも2〜3人とチームを組んで仕事します。
チームの中でマネージャー、リーダー、設計者、開発者、テスターなど、様々な役割を持って仕事します。(私の経歴でもいろいろな役割が出てきたと思います)
加えて、チームのメンバーにはお客様も加わります。
もちろんチームメンバーは同じゴール(システムの安定稼働)を目指して活動するわけですが、そのチーム内でもやはり立場の違いによる折衝は発生します。
これは実際の開発現場を経験しないとなかなか掴めないものではないかと思います。
また、今の日本のシステム開発ではプログラマよりも設計や顧客折衝できる人の方が単価は高い傾向にあります。
自身をより高く売り込むにはプログラム以外のシステム開発に関するスキルを身につけておくに越したことはないと思います。
②プログラムが出来たら良いというわけではない
プログラミングスクールでJavaやなどの言語を覚えたとします。
ただ、それだけで仕事になるかといえば否です。いや、正確には「良い仕事は出来ない」だと思っています。
システム開発の目的は「開発したシステムを使って、お客さんの仕事や生活が便利になる」こと。あと、「その成果に対して正当な対価をもらう」ことです。
そのためには、「今どういうところで困っていて」、「どういう機能が必要で」、「どういう操作性にするべきか」などを費用と照らし合わせて考えないといけません。
これは開発者側も意識しておく必要がありますが、経験が必要なところだと思います。
たまに「設計書に書いてある通りに実装するのが仕事」という開発者の方がいらっしゃいますが、
私は「開発段階でもユーザーの操作感とかは意識して必要であれば設計者にエスカレーションするようなことをする必要がある」と思っています。
(もちろん設計段階できちんと検討されておくべきだとは思いますが)
あくまでもプログラム言語を用いて開発する作業は手段であって目的ではないのです。
③「ヤバい」雰囲気を感じ取れるように
これが一番の理由でしょうか。
システム開発では、様々な関係者が関わりますのでその中で利害関係も少なからずあります。
中には「費用も納期も追加出来ない。でもやるしかない。」みたいなプロジェクトもあります。
私もこれまでにいろいろなプロジェクトを経験してきました。その中で、「自分(チーム)の身を守る」ことの大切さは実感しています。
フリーランスは全て自己責任になります。誰も守ってくれません。
ですが、システムは形のあるモノではないので仕様の認識違いなどで発注者と受注者間で揉めることは割とあります。
自分の身を守る術を知らずにトラブルに巻き込まれたらどうしますか?
トラブルに巻き込まれないように、いざトラブルに巻き込まれても自分の身を守れるように予め布石を打っておくことは大事です。
これは、上位者指導の元プロジェクトを経験することで培われる嗅覚だと思います。
いろいろと書きましたが、以上が未経験でフリーランスエンジニアになることをお勧めしない理由です。