エンジニアよ、稼ぐか搾取されるか #4
本シリーズもこれを持って最後となります。読んで頂いて、本当に有難う御座います!数は少ないですが、見ている人がいるというだけで励みになります!さて、最後はフリーランスに限定せず、エンジニアとして成功するための必要なスキルについてです。
やはり大事なコミュニケーション能力
エンジニアをやっているとプログラミングをしている時間というのは、とても少ないです。仕事をしていないわけではありません(笑) 時間の大半が打ち合わせや仕様確認に費やされます。その時に円滑に進めるためのスキルがコミュニケーション能力です。
なにも特別な才能が必要とされるわけではありません!ヒトラーのような演説力などは必要ないのです。質問に対してYES・NOが言えて、その理由を簡潔に述べる、その程度です。スムーズなやり取りが出来て、気まずい空気が流れることはない、その程度なのですが、これが出来ない人が圧倒的に多いです。そして、そういう人はやはり成功しているとは言えない立場におられます。
何か特別な訓練などをしようというわけではありません。学校生活で必要とされる程度のコミュニケーション能力です。初対面の人への言葉遣いや態度、心を開く・開かせるタイミング、文字に起こすのは難しいですし、言うは易しですが…
問題解決力
バグなり新規機能実装時に必要とされる能力です。実はコレ、2つの能力に細分出来ると個人的に思っています。
1つは明確な答えのある問題の解決能力です。cocos2d-xでボタン押下時の処理が分からないとか、会社の仕様に則ったイベント発行の仕方が分からないとか、そういった類のものです。これはGoogle先生か担当者に適切に質問すれば答えは返ってきます。
検索能力や質問力と置換えてもいいかもしれません。エンジニアをするならば、必須能力であると思っています。
そして、2つ目は明確な答えのない問題の解決能力です。何か新しいサービスを作るなどする時に必要とされる能力です。個人的には成功する・しないを大きく分ける能力だと考えています。
具体的には物理の挙動を軽量化して実装したいとか、クラスを抽象化したりとかですね。要はこうすれば正解というものがない問題に対する解決能力です。答えがないが故に無駄に時間を費やすこともあれば、0から作り直しが要されることもあるでしょう。また、永遠に答えを求め続けることも出来るので、汎用性や拡張性を考慮してどこを正解とするかという判断も必要となってきます。私は一番面白い所だと思っています。
最後に
簡単ではありますが、フリーランスとして働くとは?からエンジニアとして必要な能力について書きました。稚拙な文章ではありますが読んでもらえて大変嬉しいです。少しでもお力になれれば幸いです。