ふと現場で、エンジニアはコミュニケーション力が超重要と思ったので、書いてみました
まだプログラミングスキルに自信がない、あるいは未経験の人も参考になれば幸いです。
スキルはなかなか一朝一夕ではつかないので、コミュニケーションの取り方を工夫しましょう。
技術力重視でコミュニケーションを軽視している人が案外多いので、少し努力で差別化できます。
コミュニケーション力はエンジニアに必要?
コミュニケーション能力(コミュニケーションのうりょく、communication ability)は、「他者と意思疎通を上手に図る能力」を意味する。コミュ力(コミュりょく)と略されることもある[1]。
wikipediaより
エンジニアにコミュニケーション力は必要でしょうか。
言われた内容を"理解"して、プログラミングしていればいいと思いますか?
結論からいうと、めちゅくちゃ必要ですし、重要な能力です。
どんなときにコミュニケーション力が必要?
開発要望について理解し、こちらの計画を理解してもらうために
まず要望を適切に理解する能力、そして具体化していく能力が必要です。
お客様が要件を伝えるプロとは限らないです。
場合によっては理想の形ではなく、こうやったらできるんじゃないかなという仮説を立てて伝えてくる場合もあります。
逆に理想の形のみで、具体的なことが何も決まっていない状態でお願いしてくることもあります。
ですので、最も理想的な形を確認した上で、実現するためのプランを協力して具体的にしていきましょう。
理想的な形がわかれば、ゴール地点も共有できますし、計画の全体像が把握できます。
お客様にプログラミングの知識がない場合、難易度がわからずに計画を立てている場合があります。
そこはエンジニア側が補って、計画を具体化していくのを協力しましょう。
この時点できちんと相談、計画をお互いの合意で進めて、信頼関係を築けば、無理な計画を避けられます。
チームメンバーと共同開発するとき
開発は一人ではなく、チームで協力して行うことが多いです。
上記の要望をチームリーダーが取りまとめて、チームメンバーに共有して開発を協同することがあります。
このチームプレイのためにコミュニケーション力というのは大事です。
会議をしたり、認識のすり合わせをすることで、方向性や設計思想のブレがないことを確認していきます。
これがうまくいっていると、手戻りも減らせますし、計画の問題があったときも気づきやすくなります。
(うまくいっていないと問題がかなり後になって発覚したりします。。)
コミュニケーションは何も会話だけに限りません。
会話が苦手な人は、チャットやメールを駆使して、スムーズなコミュニケーションをとる人もいます。
また設計思想は明確に文書化されていたり、言語化されていないときもあります。
そういうときは既存のソースコードから意図をくみ取っていくことも大事です。
わからないことを人に聞くとき
基本的にプログラミングは"わからないこと"、"未確定"のことを決めていく必要があります。
コンピューターは記述されていることを忠実に実行していくからです。
一方、ビジネス要件は完璧に全ての要件が洗い出されているわけではないです。
なので、設計や開発を進める段階で、新たな疑問点が増えていきます。
この疑問点を会議、メール、チャットなどを駆使して、解決していく必要があります。
また、プログラミング初心者、チームに参加したばかりの場合もわからないことがたくさんあります。
一般的な問題については、Google検索やChatGPTでも解決可能です。
しかし、現場固有の問題については、チームの中で解決していく必要があります。
そのときに、やはりコミュニケーション力というは必要になってきます。
15分くらい悩んでわからなかったら、すぐに人に聞いてしまいましょう。
質問しやすい人、適切な回答をしてくれる人を見極めるのも重要です。
人に確認するときは、実際の現象、試したこと、自分なりの仮説の3点を伝えるのがよいです。
質問される側も情報が整理されている方が答えやすくなります。
障害が発生したとき
障害が発生した時、関係者の方は気が気でないです。
いつ、何が起きて、どれだけ影響があって、復旧はどのくらいかかるのかを知りたい状態です。
この時に"事実"、"意見"、"仮説"をきちんと分けて、こまめに情報共有をするのが良いです。
調査に集中しすぎていたり、いろんなことが明らかになるまで報告を後回しにする人が結構います。
しかし、まだ何もわかっていないということや推測でもいいので情報を連携していくべきです。
関係者の不安な気持ちに寄り添うということも、信頼関係を築いていくうえで重要です。
接客業経験者は有利かも?異業種からの転職で活躍するケース
接客業経験者はこういったスキルを持っている人が多いです
元家電量販店店員で、未経験からエンジニアになった方を何人か知っていますが、どの人も結果を出しています。
何を求めていて、その要求にどうこたえるか、この能力が鍛えられている人は、技術を覚えると活躍できます。
プログラミングは人と人が協力して作り上げていくものです。
どんな仕事も直接的、間接的の違いはあれど、人とかかわりあいながら仕事をしています。
異業種で培ったコミュニケーション能力は、エンジニアとしても活用していくことができます。
コミュニケーション力に自信がないからエンジニアを目指したのですが。。
この場合でも作戦はいくつか考えられます。
得意なスタイルでコミュニケーションをとっていく
コミュニケーションの方法は上記にもある通り、会話、チャット、メールと色んな手段があります。
そして、不得意という人も、会話が苦手というケースが多いです。
この場合はチャット、メールを駆使して、コミュニケーションをとっていけば問題ないです。
また話すよりも、途中まで作ったものや、動画や画像の方がわかりやすい場合も多いです。
自分な得意な方法で、相手に理解してもらえる工夫をするのが良いです。
スキル、技術力でポジションを作る
人よりスキルがあったり、技術力があれば、尊重してもらえますし、発言も通りやすくなります。
そうすれば、コミュニケーションをせずとも、周りの人もお膳立てをしてくれるようになります。
その人にしかできないことが増えるほど、コミュニケーションを気にせずとも何とかなってしまいます。
しかし、そこそこ開発できて、ちゃんとコミュニケーション取れる方がやはりチームとしてはありがたいです。
技術力+コミュニケーション力があれば、かなり重宝されます。