優秀なシステムエンジニアとは
私自身が優秀と言っているわけではありませんよw
10年以上エンジニアとしてシステム開発に携わってきた私が出会った、優秀なシステムエンジニアとはどんな人材なのか考察してみようと思います。
(受託開発者をメインにしています)
あくまで主観です!
今現在、エンジニアとして奮闘している方や、これからエンジニアを目指す方達に読んで頂ければと思います。
そもそも優秀なシステムエンジニアとは?
優秀と言っても色々な切り口があります。
仕事が早いとかバグが少ないとか、美しい設計をするとか・・・
一概に優秀なシステムエンジニアと言っても、業務内容や案件への関わり方によって変わってくると思います。
この業界に長くいて、何人もエンジニアを見てきた私が、優秀だなと思ったエンジニアには共通点がありました。
それは多角的な視点を持っていると言いますか、ただただシステム開発やプログラミングの知識や経験だけではなく、営業的な視点や、運用面、経済や組織等に対しても豊富な知識や考察、意見ができるような人達です。
システムエンジニアは職人気質
システムエンジニアやプログラマーというのは、とてもこだわりが強い、悪くいえば頑固な人や、人と関わるよりも1人でガチャガチャとパソコンを触っていたい、というような職人気質な人が多い気がします。
(私は業界で浮いている気がしてならないw)
職種的に個人のスキルが影響力をもつ世界なので、優秀なシステムエンジニアは誰しも何らかのこだわりを持っています。
私が知り合ったエンジニアの1人に、こんな人がいました。
彼は複数のプログラミング言語をマスターしており、データベースの知識やシステム構築技術にも長けていました。
実装も早くてバグも少ない、エンジニア、プログラマーとしては優秀と言ってよい人材だったと思います。
ある時、彼に目をつけたある起業家の方が、システム開発会社を設立し、彼を引き抜いて役員として迎えました。
彼は何人かのチームで仕事を請け負い、顧客との調整や開発を主導する立場に着きました。
1年後に倒産しましたw
彼は技術者としては非常に優秀でしたが、致命的なほどにコスト管理や工数管理が出来ない人だったのです。
顧客が望んだものを「できます。できます。」とコストを無視して請け負い、なまじ自分が優秀なだけに、他の技術者にも同じ作業量を求めました。
技術に関しての強いこだわりから、開発中にもどんどんと仕様が膨らみ、システム規模はさらに肥大化していきました。
もちろん、他の技術者が圧倒的に仕事が出来ないわけではありませんでしたが、それでも彼に追随して作業し続けることはチームの疲弊に繋がり、結果的にバグが大量に発生し、納期が遅れだし、追加のコストが必要になり・・・顧客と揉め出すことになりました。
システムエンジニアにおける「技術者としての優秀さ」と「実務における優秀さ」は少し違うと感じます。
もちろん技術者として優秀であるにこしたことはありませんし、エンジニアというのはあくまで技術者なので、技術力を求めることは間違いではありません。
しかし、現実には彼の強いこだわりがプロジェクトを頓挫させ、会社を倒産させることになりました。
彼は大好きなプログラミングやシステム開発の力量を存分に発揮できると思い、こだわりを持って仕事をしていましたが、実際の現場では営業面の調整やコスト管理、組織(チーム)の効率運用など、技術以外の面も複合して考えなければならない仕事が大半だと思います。
そういった面をカバーできる人材が一緒にいるならば、彼のような技術者は非常に有用でしょう。
残念ながらその会社にはそういった人材がいませんでした。
本当に優秀なシステムエンジニアというのは、こだわりはあるが場合によっては柔軟に対応し、物事を多角的に見れる人材だと思います。
一流?二流?それとも三流?
これは私の持論ですが・・・
・話せないSEは三流
・同業者と話せるSEは二流
・他業種の人や、ITリテラシーの低い人とも話せるSEは一流
「話せる」というのは単純に「会話ができる」という意味ではなく、システムに関しての説明や調整、工数やコスト、リスク等の話や提案ができるという意味です。
そもそも、システムエンジニアやプログラマーにはコミュニケーション能力が乏しい人が多いと感じます(SE、PGの方々ごめんなさい)。
実務の内容上、基本的にパソコンの前に座ってガチャガチャしている時間が大半ですし、人と話すのが苦手だからこの業界に入ったという人も少なくありません。
作業者としてはそれでもいいのですが、実際の仕事においてはやはりコミュニケーション能力というのは大事です。
研究者でもない限り、顧客や営業担当者と話す必要は出てくるでしょうし、表に出てこない立場の人でも、組織内部で上司や部下、同僚とコミュニケーションをとって仕事を進める場合がほとんどでしょう。
システムエンジニアが、同じシステムエンジニアやプログラマーと話ができるのは、そもそも同じような仕事をしていたり、同様の知識を持っているのですから当たり前です。
本当に優秀なシステムエンジニアというのは、あくまで技術者目線からかもしれませんが、営業的な話や企画、マーケティング、組織運用等の話まで幅広くできる人達だと感じます。
営業の話は営業職の人がすればいいじゃん
と思うかもしれませんが、その営業職の人はシステムエンジニア程の技術面の知識があるのでしょうか?
営業と開発側の調整は誰がするのでしょうか?
営業側からすれば、実務作業者であるエンジニアが「こう」と言えば「こう」なってしまうのです。
営業的にもう少しコストを抑えたいとか、スケジュールを短縮したい等の要望があった場合に、「こうすればコストを抑えられる」「この仕様を変えればスケジュールは短縮できる」といった話や、少しズルいかもしれませんが「こうした方が後々追加案件が貰える」というような話ができれば、プロジェクトはスムーズに進むでしょう。
また顧客のリテラシーが低い場合、往々にしてエンジニアの話はチンプンカンプンですw
技術的な話が分からないということは、顧客からすれば本当に要望に沿ったものができるのか不安で仕方ありません。
リテラシーの低い人にも噛み砕いて説明ができたり、不安を取り除くような話や提案ができるエンジニアは優秀と言えるでしょう。
結局のところ必要な能力は
こういった能力は、プログラミング知識やシステム構築といった技術的な能力ではなく、ある意味では人間力とも言えるかもしれません。
結局のところシステムエンジニアに限らず、人間力が高い人は優秀な人が多いのです。
しかし、システムエンジニアやプログラマーというのは技術職であるが故に、知識や経験が技術に関するもの一辺倒になりがちです。
本当に実務レベルで優秀なシステムエンジニアとなるために必要な能力とは、技術力はもちろんですが、結局のところコミュニケーション能力や管理能力といったスタンダードなスキルになっていくのではないでしょうか。
おわりに
記事を読んで頂いてありがとうございます。
この記事はあくまで私の主観ですので、気分を害した方が居られましたら申し訳ありません。
これからエンジニアとしてステップアップしたい方や、エンジニアを目指している方の指針のひとつとなれば幸いです。
宜しければフォロー、スキをお願いします。
ご意見、ご感想等のコメントも頂ければ嬉しいです。
サポートして頂けると狂喜乱舞します。 今後の励みになりますので、よろしくお願いします。