はじめに
今年からフリーランスのエンジニアとして働くことになりました。
エンジニアとしてのキャリアは、常駐派遣型の開発者から始まり、web系の製作会社や複数の事業を展開する事業会社の社内SEを経て今に至ります。
エンジニアになる前は新卒で入社したメーカーで知的財産管理の仕事をしていました。特許や商標などを取ったり管理したりするいわゆる企業の関節部門です。
そんな僕の経験がこれからエンジニアを目指す人、フリーランスを目指している人の助けになればと思います。
受託の会社へ
社員数は20数名の小さな会社です。ディレクター、デザイナー、エンジニアというメンバーで構成されており、案件単位でそれぞれから担当がピックアップされ納品や保守運用まで行います。基本的に1案件1エンジニア程度の規模が多く、必然的にフロントエンドの案件が多い印象でした。入社当初はバックエンド担当という体でしたが上記のような案件比率のせいかフロントエンドを担当することが多くなりました。
受託会社での仕事
フロントエンド担当になったといっても、それまで業務系のバックエンドの経験がほとんどだったので、プレーンなHTMLやCSSによるコーディング案件でも初めは苦労しました。ただ、この頃からnodeなどを使ったフロントエンドの開発効率化などの情報が増えてきたこともあり、自分でgulpやgruntなどを使いつつコーディングができるのは当時の自分にとっては新鮮で楽しかったです。
また、小規模ながらもwordpressの案件が増え、社内デザイナーがデザインした独自テンプレートの組み込みなども多かったのでPHPとwordpressに関するスキルはこの頃一気に身に付けることができました。
受託会社の雰囲気(あくまで自分が勤めた会社)
小規模少人数ということもあり、各人が自立して案件を進めます。なので誰かに教えてもらうことを待つのではなく、スキルが足りない場合は自分で調べ、学び、実践することが成長への近道になります。
ただ当然ながらこの類の仕事はクライアントの都合に左右されることが多いので、深夜対応やタイトなスケジュールを求められることが多い印象です。特にエンジニアの工程は案件の後半に担うことが多いのでどうしてもスケジュール調整のしわ寄せが来やすいです。
この業界に合いそうな人
自立して仕事が出来る人など自分のスキル次第では残業も減らせるので人によっては働きやすい環境を得られる可能性があります。自分で勉強したことを実務に反映しやすいのでそれが好きな人にとってはとても充実できると思います。
この業界に合わなそうな人
非エンジニアやクライアントと接する機会も多いので、コミュニケーションが苦手な人にはちょっと生きづらい業界だと思います。
また、一概には言えませんが特に小規模の会社だと教育にあまりリソースがさけないことも多々あるのでスキル不足を自走して補えないときついと思います。これに関しては受託云々というよりエンジニアという職種全体に言えることでもありますが。
##受託からの卒業
2年ほどフロントエンドエンジニアとしてHTMLを書き続ける中で、漠然と今のままでいいのかという不安が生まれます。案件は営業次第で選べないし、システム開発とは少し違う。コーダーのまま進化できないのではないかと思うようになりました。ただ、積極的に転職活動するほどではありませんでした。
そんな中、以前から登録していた転職サービスを介してある事業会社の方からいわゆるスカウトメールが届いていました。がプライベートのメールを見ていなかったので2回ほどスルーしていたのはご愛嬌。
メールを見たところとても積極的だし自分一個人宛に送ってくれているのが文面から見て取れたので、事業が面白そうだし話だけでもと思い訪問し3回ほど面接をしあれよあれよと内定をいただきました。完全に運ですね。職種は社内SE。
##ここまでで得たこと
- HTML
- CSS
- jQuery
- PHP
- Wordpress(フルカスタマイズ)
- MySql
- grunt
- gulp
- git
- Vagrant
##社内SEとは
よく聞くイメージとしては、社内のヘルプデスク、機器の調達、管理、仕様書を作って外注に丸投げ、などでしょうか。僕の場合上記に加え、実店舗のインフラ整備、社内システムやECシステム、エンドユーザ用のアプリ開発などシステムの要件定義、設計、実装、テスト、リリースなども。割合としては半々くらいだと思いますが、最後の方はシステム開発が8割り程度を占めていました。チーム内での担当分け次第ですね。
##社内SEは働きやすい?
開発会社は納期に追われ常に忙しく、社内SEは比較的穏やかで残業も少なめ。といった記事もよく見かけ、自分も少なからずそんなイメージを持っていました。
確かに社内SEは外部に発注する立場であることが多いため、スケジュールや納期についてある程度の裁量があります。そういう意味では外部へ丸投げして納期厳守と言えば自分はあまり深夜まで残業しないで済むという状況は作れるかもしれません。
ただ、僕自身クライアントワークをしていた経験から、無理難題を外注に出しても長い目で見ていい結果は生まれないと思っています。
また、外注先に断られれば最後は自分で巻き取ってでもプロジェクトを完遂させる責任はあると思います。
さらに、コストに厳しい環境だと全て外注というわけにはいかず、結局自分で手を動かす必要があります。
社内のSEには開発をさせないという会社としてのポリシーがあるところだと杞憂ですが、エンジニアとしてのスキルはすぐに頭打ちになるでしょう。その代わり折衝や交渉など他の何らかのスキルは少なからず伸びるとは思います。結局自分が何がしたいか。
##社内SEとしての仕事
まずはSEとして事業の理解や既存システムの把握、他チームとのコミュニケーションなどを目的に小さい改修案件やキャンペーンサイトの開発など受け持ちます。半年ほど後にECサイトの決済フローのリニューアルが発足し、API開発やLaravel、rails、Dockerなどそれまでと比べてどちらかと言うとイマドキな技術を習得できました。
ちなみに、転職時に複数回メールをくれた方が直属の上司でしたが、「育成」ということに対しては積極的な考えをお持ちにようで少ない人数ながらも恵まれた環境ではありました。この方にはエンジニアとしてのスキルアップのために必要な「機会」を数多くいただき感謝の念が絶えません。今振り返ってもこの時が僕にとっても転機でした。
その後も新店舗のシステム面での担当や、既存システムの改修などを続ける中で、あるプロジェクトでスマホ・タブレットアプリを作る必要があるが外注するほどの予算がないので社内で作りたいという困ったちゃん。社内ではアプリ開発の経験がある人がいない状況だったので、すかさず挙手して担当することになりました。
もちろんiosもAndroidも開発したことないし、知識も0スタート。かなり苦戦しつつも何とか納期までにリリースまで漕ぎ着けることができました。これを期に社内ではアプリ担当みたいな位置付けになってしまいました。とりあえずでも始めれば何とかなりますね。
その後いくつものプロジェクトをこなしつつ、時には不具合に追われ夜遅くまで対応に迫られることもありましたが、スキルもついてきたせいか後半はほとんど定時内で完結できるほどになりました。事情によって夜間作業もありますが、計画を立てて進められるのでそれほどストレスはなかった印象です。
###社内SEに向いてそうな人
個人的にこれまでと違う点といえば事業視点が求められるということです。
前職、前々色では上からの指示通りに開発、リリースを行い、納期と品質を担保する必要があり、その内容が顧客の戦略のどこに位置するのか、どれほど重要なのか知ることが少ないように思えます。
その点、事業会社ではSEといえどプロジェクトの戦略を理解することは必須だし、時には戦略そのものにも意見を述べる必要があります。また、エンドユーザが絡むものに関しては本当にそれがユーザに刺さるかどうかも重要な視点となります。
そういう意味では、前述の社内SEでの仕事内容にどれほど事業的な意味を見出し、実現、改善していくことが好きな人にとってはとてもやりがいのある仕事だと思います。さらに事業の社会的意義に共感できるのであれば仕事のモチベーションは高く維持できるのではないでしょうか。
###社内SEに向いてなさそうな人
前述の通り、事業戦略や結果に結びつくかどうかという視点が求められます。逆を言えばそこが満たされていれば利用する技術に関しては何でもいいということになります。タイミングと予算が合えば新しい技術を取り入れることは問題ないです。が、新しい技術を使うことが目的ではないので、予算に余程の余裕が無い限りは業務で新技術をガシガシ取り入れる、ということが難しい面もあります。(言語やOSの選択程度であれば問題になることは少ない)
なので、常に最新技術を追い求めたい人、システム開発以外はしたくない人、非エンジニアと会話をしたくない人などは、向いていないと思います。
##社内SEを振り返る
これまでは特定の工程や領域のみを担当することが多く、身に付くスキルもどうしても限定的なものになりがちでしたが、ここでは必然的に守備範囲を広く持たざるを得ず、わずか4年半で多種多様な経験を詰めたと思っています。また、事業を遂行するにあたって「目的」を意識する癖付もできるようになりました。この点会社の文化も大きく影響するところではありますが、僕は運が良かった方だと思います。
ただ、エンジニアとして会社勤めをしてきた中でやはり日本の会社員エンジニアの待遇が平均してさほど高く無いというところに常々疑問を抱いていました。これまでは経験をお金で買ってきましたが、これからは自分の価値に妥協したく無いと思うと同時に、これからの若い方がエンジニアという職業に夢を持てるよう自分なりに活動の輪を広げたいと思うようになりました。その通過点としてまずはフリーランスになるという選択を取ることにしました。
##ここまでで得たこと
- Laravel
- CakePHP
- Linux
- EC2
- RDS
- Cognito
- DynamoDB
- ECS
- Vue.js
- React.js
- Swift
- Java(Android)
- Cordova
- Python
- Django