3. エンジニアとして求められる能力
長年エンジニアとして経験を積んだ中で、求められる能力について理解が深まりました。
エンジニアとして仕事を始めた頃、趣味で作っていたソフトウェアと実際に企業で作成するソフトウェアは異なる印象を受けました。しかし、その具体的な違いを最初は説明することができませんでした。
駆け出しエンジニアの多忙な時期
入社1年目には実際の現場を経験し、2年目にはある企業の標準システムを使用し、多くの企業向けにカスタマイズを行いました。
これは、実際に稼働している工場に出向き、テストや調整を行う業務でした。
常に複数の案件を担当していたため、毎日日が変わるまで帰宅しない日々が続いていました。
また、現場を渡り歩く生活であったため、年間通して家に帰れる日数が100日未満である年が多かったと記憶しています。
今だと問題になりそうですが、残業時間が200時間を超えることもありました。新幹線や飛行機の中でもプログラムを作成することがあったため、常に時間に追われる日々でした。
しかし、当時はそれが思いのほか楽しく感じました。それは様々な企業のシステムや人々と関わることができためです。
また、国外から来た方と仕事をする機会もあり、文化の違いを感じることが多くありました。
記憶に残っている出来事の1つを紹介します。
スペインから来られた方の対応
スペインから来られたエンジニアと仕事をしていたのですが、一通りテストも完了し、私も帰る用意をしていると、彼らが帰国のため新大阪に向かうとのことで、案内をお願いされました。
名古屋駅で彼らと同じ時刻のチケットを購入し、改札を通過してホームに向かおうとしたとき、彼らは「お土産物屋に行きたい」と。
しかし、出発時刻まであと15分しかありません。仕方なく案内しましたが、時間がないので10分以内に戻るよう伝えました。
しかし、彼らは戻ってこなかったので(予想はしていましたが💦)、外から彼らを探し、やや怒り気味に「Hurry up!」と叫びました。
彼らが手を挙げたのが見えましたが、精算にもたつきなかなか戻ってきません。
ようやく戻ってきたのが出発時刻の2分前で、ホームまでの距離がかなりあり歩いていたら絶対に間に合わない状況でした。
そこで、時計とチケットの出発時刻を指差して彼らに見せたところ、彼らも状況を理解したようで、私を含む3人で大きな荷物を抱え、ホームまで全力疾走しました。
エスカレーターを上る最中にブザーが鳴りドアが閉じる直前だったので、とにかく最も近いドアに3人で飛び込みました。
このとき、夏ではなかったのに、汗を拭きながら3人で顔を見合わせ、思わず笑ってしまいました。
席について彼らが「チーカマ」を取り出して、日本語で「コレオイシイヨ」と言いながら、差し出したとき思わず苦笑いしたことが今でも、良い思い出となっています。
多くのシステムに関わる中で
当時取り扱っていた標準システムに様々な問題が存在したため、プログラムの改修が頻繁に発生し、現場で機械の動作ロジックを自分で考えて作ることもしばしばありました。
このとき、自身が考えた通りに機械が動作する達成感を幾度も経験できたことが、今に生かされていると感じます。
それから20代の後半までに、数多くのシステムに関わり、少しずつ「エンジニアに求められることは何か」について理解を深めていきました。
私の中でエンジニアという存在の認識が変わり始めたきっかけは次の出来事でした。
ある現場で、工場内のシステムが正常に動作していることを確認するため、全体が見渡せる場所から眺めていたとき、そこでは機械だけでなく、多くの人々が働いている姿が見えました。
その時感じたことは
「結局、ソフトウェアで工場を制御できるけれども、何かしら人が関わらなければ成り立たないんだな」
という思いでした。もちろん工場内だけを見れば、すべてを自動化することも現在では可能でしょう。
しかし、実際の製品は工場内だけでは完結せず、少なくともシステムを作るときには多くの人々との関わりが必要になります。
実際の現場で調整を行っているときに、お客さんから
「ここの設定はこのようにできないかな」
「この動きはこのようにしてほしい」
といったアイデアを提供されることもありました。
また、仕様と実際に利用される方の話が食い違っていると感じることもあり、そのようなときには、必要な機能についてヒアリングを行い、その内容と仕様とのミスマッチを関係者に伝えるなどの対応が必要になることもありました。
この連携がうまくいかないと、お客さんが期待したものとは異なるシステムが稼働してしまい、修正が困難な状況になります。
エンジニアに求められる能力
これらの経験を通してエンジニアとして必要と感じた能力は以下です
どのようなソフトウェアでも作れる技術力
リスク管理能力
仕様や制作するシステムの背景を理解する理解力
ハードウェア・デバイスの知識
客が求める物を引き出す、ヒヤリング能力
引き出した内容からシステムに落とし込む、論理的思考
より良い提案が出来る、想像力
様々な人との係わりを円滑に進める為の、コミュニケーション能力
常に新しい技術を学び続ける好奇心
これらの経験と理解を持ち合わせて初めて、一流のエンジニアと呼べるのだと気づきました。
20代後半でしたので、もう少し早く気付けばよかったと思うこともありますが、実際に多くの業務を経験したからこそ、この考えに至ったとも言えます。
現代のIT業界でコミュニケーション能力を重要視する傾向は、このような意図から来ているのだと思います。
これらの求められる要素については、別の記事で詳しく紹介したいと思います。
趣味と仕事のソフトウェアの違い
冒頭で触れた、趣味で作るソフトウェアと企業向けのソフトウェアの決定的な違いについても触れておきます。
趣味で作るソフトウェアは多少の問題があっても許容されますが、企業向けのものは問題があると工場システムが停止する可能性があります。
そのため、企業にとっては大きな損失を招きます。これが決定的な違いで企業向けのソフトウェアでは質が最優先されます。
特に制御システムの場合は99%ではダメで100%が求められます。これが大きなプレッシャーとなり、挫折するエンジニアを多く見てきました。
「ソフトウェアの質を高める」
この言葉自体は言うのは簡単ですが、実際には思いのほか大変な作業となります。
ソフトウェアの質を決定する重要な要素としては、以下のようなものがあると感じます。
基本設計
デバッグのしやすさ
情報収集の仕組み(ログ)
UIの操作感
パフォーマンス
エラー時の対応
シミュレーションによる長時間のテスト
他にも要素はありますが、大まかにはこれらが満たされている必要があります。
それぞれの内容については、この記事では詳しく書ききれないので、別の記事で紹介したいと思います。
今の時代ではこれが当たり前と思われるかもしれませんが、当時は直接教えてもらうことができず、業務を通じて自分で見つけ出さなければならなかった環境を考えると、貴重な経験でした。
また、これからはこの経験を若い人たちに伝えていく義務があると感じています。
お気持ち感謝に尽きません🙇♂️