フリーランスエンジニアに必要なスキルとは?

こんにちは、masakiです。

近年、フリーランスという働き方のスタイルが大流行です。

確かにフリーランスだと、インターネットのおかげで働く場所を選ばくて良かったりしますね。

Web制作・システム開発会社を自分でやっていた経験から、そんなフリーランスエンジニアに必要なスキルをまとめてみました。

スポンサーリンク

フルスタックの確かなスキル

いきなりハードルが高いですか?

しかしフリーランスのエンジニアであれば、ある程度幅広いスキルを深く学ぶ必要があります。

例えばWebエンジニアの場合、フレームワークが使えて簡単なサービスを開発できる、くらいのスキルだと少し厳しいかもしれません。

クライアントがいる場合、クライアントの要求や問題は非常に多く、多岐にわたります。

その時に、『実現方法がわからない』『解決方法がわからない』といった状態では困ります。

自分の好きなサイトや小さなサービスを作って、自分の好きな機能を実装しているとはわけが違います。

技術力と知識はエンジニアにとって大前提ですので、できる限り広く深い知識を付けていきましょう。

営業力

いくら素晴らしい技術と知識を持っていても、仕事が無ければ無収入です。

『何時から何時までがA案件、次がB案件』といったように、自分のスケージュールを埋めれることで安定した収入が発生します。

一度お付き合いしたクライアントの運用業務を受けたり、再度仕事を発注して頂けることもあるでしょう。

しかしそれも永遠ではありません。

エンジニアやプログラマーの中で話すのが苦手な人がいますが、ぶっちゃけ慣れと練習だけで、話すスキルはすぐに改善できます。

以下の本はおすすめです。

クライアントのビジネスに対する深い知識

クライアントと同レベルで『ビジネスモデル』『業務フロー』を理解せずして、どうやってそれを作ることができるのでしょうか?

むしろ、クライアントが自らのビジネスモデルを理解している以上に理解するべきです。

同じレベルだと、彼らの頭の中をシステムで表現しただけであって、より良くしてあげることができません。

常にクライアントのビジネスを、深く理解するように努めましょう。

経験のないビジネス分野の開発をする場合は、その事について学びましょう。

要求をシステムに落とし込む力

おそらくこれがエンジニアに求められる、最も重要なスキルだと思います。

クライアントに要望要件をヒアリングしている時に、頭の中でそれが実現可能かどうか、それをどの様に実現したらよいか、を考えていきます。

この段階でざっくりと制作にかかる工数(何時間、何日かかるか)を、計算できなければなりません。

これができる為には、クライアントのビジネスモデルや要件を包括的に扱えるフルスタックの確かなスキルが必要になります。

例えば、クライアントが

『WEBからユーザーのこの情報を取得して、この部署はデータから商品をユーザーに配送して、この部署はデータからマーケティングして・・』

という要望を出してきた場合、即座に要件と必要な情報を把握し、頭の中でデータベースを設計できなければなりません。

『こういうキャンペーンを3日やって、目標10万会員以上を獲得したい、その会員にメールを配信したい』

という要望を出してきた場合、3日で10万人が会員登録する程のアクセスをさばけるインフラ構成やシステム構成を、すぐに思い浮かべる必要があります。

『こういう情報をWEBで配信したい、この部署がこの記事を制作し、この部署が校正し・・』

という要件を出してきたら、即座に頭の中でデータベースを設計し、WEBサイトの画面構成や管理画面のインターフェイスまである程度イメージできる必要があります。

クライアントのビジネスモデルや要求をシステムに落とし込む力を持っていないと、工数やそもそも出来る事なのかどうかが曖昧になり、スムーズに開発が進みません。

提案力

クライアントの言うことをそのまま実現しているだけでは、良いシステムはできません。

なぜなら基本的に、クライアントはエンジニアではありません。

彼らの要望を、そのまま実現していては、非効率な成果物ができあがる事が多いです。

クライアントのビジネスや要望を、より『良く』『安く』『速く』『効率的』になるように、あなたの技術や知識で提案する必要があります。

常により良くなるように提案しましょう。

そうする事で、結果的に成果物も良くなり、相手からも一目置かれるようになります。

提案というのは、人を動かすこととイコールです。

 

問題解決能力

システム開発をしていると、ありとあらゆる問題が大量に発生します。

  • クライアントのビジネスや業務フローに関する問題
  • クライアントの社内に関する問題
  • 開発しているシステムの不具合やエラー

などなど、他にも問題が大量に発生します。

問題を解決する能力こそ、エンジニアに求められる非常に重要な能力です。

コミュニケーションスキル

エンジニアだからといって、引き篭もって開発ばかりしていればよいわけではありません。

普通の会社ならば、クライアントとのコミュニケーションは他の人がやってくれたりします。

しかしフリーランスエンジニアは、自分ですべてやらなくてはいけません。

なにか不明確な点があったら、すぐに先方とコミュニケーションを取ることで認識のズレを修正することができます。

とくに進捗報告は、頻繁に行ったほうが先方は安心します。

納期を守る規律

これは非常に大切です。

クライアントはリリース日程を厳格に決めて社内全体が動いていますし、プレスリリースや広告を計画したりしています。

こちらの都合で納期が遅れることはあってはなりません。

納期を守れないと、フリーランスエンジニアとしての信用を著しく失います。

一度引き受けた内容での納期は、必ず守るようにしましょう。

クライアントの要望や仕様の変更で、開発が間に合わなそうであれば、その時に話して認識をすり合わせるべきです。

また、『要求をシステムに落とし込む力』で話したスキルを磨くことで、ミーティングの段階から開発工数を正確に把握し、間に合いそうか無理そうかの判断が可能です。

多くの案件では納期を厳格に守るために、リリース前は相当バタバタと忙しくなるでしょう。

エンジニアがおすすめするプログラミングスクール3社

スポンサーリンク