入社編 ~実務についていくために必要なこと~
こんにちは!私は3月からエンジニアとして働いている新人のエンジニア(29歳)です。
私は、大学卒業から小学校の教員を6年間勤め、エンジニアへ転職しました。
今は受託開発の会社で日々勉強しながら楽しく仕事をさせていただいてます。
全5回のアジェンダはこちら!
よかったら他の記事も読んでみてください。
未経験の私がエンジニアへ転職するまで
- 小学校教諭からエンジニアになった理由
- 学習編1 ~プログラミングって何から始めたらいいの?~
- 学習編2 ~プログラミング学習でやってはいけないこと~
- 転職活動編 ~内定をもらうために必要なことは?~
- 入社編 ~実務についていくために必要なこと~
今回は久しぶりの投稿になります。書かなきゃと思いつつ、基本情報技術者試験の勉強に時間を割いていたのでなかなか執筆できませんでした。
早いもので入社から半年以上が経過し、晴れて試用期間も終了しました。今回はこれまでの業務に携わる中で自分が感じたことを書き綴っていこうと思います。
さて、今回のタイトル「実務についていくために必要なこと」に対する回答ですが、以下の3つだと考えています。
- コミュニケーション能力 ←重要!
- 課題解決能力
- ITに関する基礎知識
「え、技術的なことじゃないの?」と思った方もおられるかもしれません。もちろんGit, SQL, Linuxの操作などの操作は必須になってきます。
しかし、エンジニアとして業務をしていく中で重要だと感じたことは技術よりも人間力です。上記に上げた3つのうち、①、②があれば十分実務についていけると思います。③や細かいコーディング技術などは入社した後でいくらでも勉強できます。
というわけで今回の内容はこちらです!
目次
1. エンジニアにコミュニケーション能力が必要な理由
2. エンジニアの実務の中で要する課題解決能力とは?
3. ITに関する基礎知識がないと理解度が上がらない、、
今回の記事を読んでいただければ、エンジニアという職業のイメージを掴むことができると思います。特に読者の皆様の中には「プログラミングを学んだけど業務についていけるか不安、、」と思っている方は多いのではないでしょうか。そんな方々への不安を少しでも解消することができたら幸いです。ぜひ最後までお付き合いください。
1. エンジニアにコミュニケーション能力が必要な理由
よく、「エンジニアにはコミュニケーション能力が欠かせない」と耳にします。一口に「コミュニケーション能力」と言っても様々な場面があります。具体的にエンジニアに必要なのは以下の能力だと考えています。
・報告、連絡、相談の仕方
・質問力
・筋道立てて説明する力
・テキストコミュニケーション力
特に、報告、連絡、相談の仕方はこの半年間で大変勉強させていただきました。業務の中のコュニケーションといえばほとんどこれなんじゃないかな、、?と思うほどです。
特にエラー等で行き詰った時に相談できないと大変苦しい思いをします。そこで必要になってくるのが質問力です。
私が質問や相談をする際に伝えるべき項目としてフォーマットとしているものあります。①達成したい目標、②現状、③自分の考え、④最後にクローズドクエスチョンです。
例えばエラーを解決したいときには「①今回のタスクのゴールは○○で、やりたいこととしては~~です。②しかし、現状として想定する値が表示されません。③デバッグを行った結果、返り値がないので④正常に通信できていないということでしょうか」というような感じです。
入社当初、「エラーが出ていて分かりません!」なんてふざけた質問をしていた自分が恥ずかしいです(笑)
大事なのは、いかに質問相手に思考させないようにするかです。先輩からは「究極、はいorいいえのどちらかで答えられるような質問を投げろ」と教えていただきました。
加えて、この業務ではシステムの仕様や不具合について調査をすることがしばしばあります。調査をしたら、その結果を正しく報告しなければいけません。そこで、筋道立てて説明する力、テキストコミュニケーション力が必要になってきます。論理が飛躍しないように、且つ、文章は短くして読む人の負担にならないように、、と考えるのがとても難しいです。今でも文章を組み立てるときはとても慎重になり、かなり時間がかかります。
このように、仕事を前に進めるためには上記で述べたようなソフトスキルが必須になってきます。エンジニアもPCと向き合う仕事ではなく、人と関わる仕事なんだなと改めて感じさせられました。
2. エンジニアの実務の中で要する課題解決能力とは?
私はこれまでの業務でバグの改修やシステムの改善などを行ってきました。常に考えていたことは「目の前の課題をどのように解決していくか」です。一口に課題解決能力と言ってもこれまた抽象的すぎるので具体的に自分が思う課題解決能力を列挙します。
・目の前の具体的なバグ(事象)を5Whyで掘り下げる
・仮説を立てて解決策を模索する
・課題を切り分ける
当たり前ですが、課題を解決する前に課題を発見しなければなりません。そこで、目の前の具体的なバグ(事象)を5Whyで掘り下げして、根本的な原因を探る必要があります。目の前のことしか見えていなければ、それは解決したとしても根本的な解決にならない可能性があるからです。5Whyとは何かというと入社研修で教わったことで、「5回『なぜ?』を繰り返せば根本的な問題にたどり着く」という論理的思考です。また、これは解決できた後も「なぜ」を大事にするように心がけています。なぜうまく動いたのかを説明できるようになれば自分の学びになると考えています。
2つ目の仮説を立てて解決策を模索するということですが、報告が上がった不具合の事象が再現しないという地獄の調査がたまにあります。再現しないと不具合の修正のしようがありません。気が滅入りそうになりますが「ここに原因があるんじゃないか」と仮説を立てることが重要です。
3つ目の課題を切り分ける。これが課題の出口を探す最もキーとなる部分だと思っています。それを肌で実感したのが自分が決済機能の実装を任されたときです。丸1日かかって何も前に進めない日がありました。入力値が正しくないのか、APIの接続の問題なのか、手探りで「どこまでできていて、どこでこけているのか」を見極める良い機会だったと感じています。
最近読んだ本が課題解決能力を上げるのに直結するなーと感じたので紹介します。会社の先輩が紹介してくれた本なのですが、物事の本質をつかむための思考法が具体的に書いてあり、とても参考になりました。
「具体⇄抽象」トレーニング 思考力が飛躍的にアップする29問
3. ITに関する基礎知識がないと理解度が上がらない、、
ここまでソフトスキルばかり話してきましたが、最後にITに関する基礎知識の大切さについてお話ししたいと思います。ITに関する知識がないとコミュニケーションをを取るうえでも話が理解できないため、足かせになってしまいます。
私はゴリゴリ文系の元教員でしたので、ITに関する知識はさっぱりでした。お恥ずかしい話、プログラミングを学習していた時もRubyやPHPはブラウザ上で動いているもんだと思っていました(笑)入社当初、業務の話の中でも知らない言葉だらけで全くついていけなくて苦しい思いをしたことを今でも覚えています。
「んなこと言ったってプログラム書ければいいじゃん」と思う方もいらっしゃると思いますが、プログラムはネットワークでつながれたサーバーとの通信の上で動いています。私自身、Webアプリケーションの中でプログラムはほんの一部に過ぎないということを思い知らされました。
私は業務が終わった後、その日分からなかった言葉の意味や概念を帰りの電車の中で調べていました。しかし、調べる中でまた分からない単語が出てきて、、といった具合に、一つの単語の意味を理解するのにとてつもない時間がかかっていました。この業界の奥深さはなんて果てしないんだと絶望しました。
少しずつ業務をこなしていく中で知識はついてきましたが、まだまだ全体像が見えなかったので基本情報技術者試験を受けることを決意しました。結果は何とか合格ラインである6割を超えました。資格の勉強をしてから、ネットの記事や書籍の理解度もぐんと上がった気がします。何より、少しずつ知識が身についてイメージできるようになったことが何よりうれしかったです。
資格を取ったから何かアドバンテージがあるわけではありませんが、知識を習得する目的だったので勉強してよかったなと感じています。
まとめ
技術を磨くことももちろん大切ですが、これは業務をしていく中で後からついてきます。それよりも大事なのは人間力です。しかも、業務は1人ではなくチームで開発を進めます。そうなるとコミュニケーション能力などの土台を磨くことが大変重要になってきます。エンジニアに限らず、仕事の本質は前に進めることです。いかにスムーズに仕事を進めるかという視点で物事を考えたら、教員もエンジニアも共通する部分があるなと感じます。
ですので、「IT業界って難しそうだから無理、、」と最初から怖がってあきらめるのではなく、興味があるならぜひ挑戦してみてほしいです。
僕自身、この半年ちょっとでとても成長できたと感じています。特に何度も述べているコミュニケーション能力や課題解決能力に関しては入社当初とは雲泥の差であると自負しています。もちろんまだまだ足りないことだらけですが、これからも人間性も技術も磨いてレベルアップしていきたいと思います。
転職シリーズはこれにて完結です。ご愛読ありがとうございました。
Discussion