今年の4月から新卒エンジニアとしてvivit株式会社で働いている氏家です。 5月に入り、インターンでもお世話になっていたmediaチーム(主にWebメディアhinataの開発を行うチーム)から、キャンプ用品のレンタルサービスを提供するhinataレンタルの開発を行うrentalチームに移動しました。
チームが変わり、開発環境や使用言語もガラリと変わりましたが、業務をする上で気を付けていきたいことは共通していました。 今回は新卒エンジニアの私が慣れないチーム開発をしていくなかで、慣れてないからこそ気を付けていることをいくつか紹介していきたいと思います。
考えたうえで聞く
私はよく、分からないことがあっても人に聞かずにずっと考えてしまいます。 人に聞いてしまうと、自分で考えたり調べたりするスキルが身に付かず、一人で考えなければならないような状況になったときに困ってしまうと考えているからです。
特に「考えれば分かるもの」に関しては分かるまで考え続け、多くの時間を消費してしまいます。 しかし、そのせいでタスクの期限を過ぎてしまったり、他の実装に遅れが出てチームに迷惑をかけてしまっては元も子もありません。 逆に何でもすぐに聞いていては考えたり調べたりするスキルが培われないので、どこまで考えて、どこから聞くのかの線引をする必要があります。
私は30分考えて分からなかったら聞く、今書いているコードが動かなかったら聞く、などの自分ルールを設けて、ある程度自分でやったうえで分からなかったらすぐ聞くようにしています。
事実と意見を分ける
チーム開発でのコミュニケーションはとても重要なものだと実感しています。 特に報告、連絡、相談の際には事実と意見を分けて伝えることを心がけています。
話し手が伝えたい内容と、聞き手が受け取る内容に相違が無いよう、事実を伝えるときは事実のみを述べ、そこに自分が思ったことや感じたことを含めないようにします。 事実と意見が混同してしまうと聞き手に誤った解釈をさせてしまい、業務に支障が出てしまいます。
これはvivitに入社して最初に行われたエンジニア研修でも話されていた内容で、早い段階から意識することができました。 もし意識せずチーム開発に取り組んでいたら、状況の説明に時間がかかってしまったり、意図をうまく伝えることができず相手に迷惑をかけてしまっていたでしょう。
情報共有をする
少なくとも同じチームの方々には、自分が何の作業をしていて、何に困っているのかなどを共有する必要があります。 特に私のような新卒で入ったばかりのエンジニアは、どの程度のことが分かっていて、何が分からないのか共有しなければ先輩方はどうサポートすれば良いのか分からないはずです。
黙々と作業しているのか、分からずに躓いているのか、別の作業をしているのかも、共有しなければ分かりません。
vivitではSlackに個人の分報*チャンネルがあるので、これから何をするか、今何をやっているか、何で悩んでいるのかなどをなるべく共有しています。 vivitのエンジニアは困っていたらすぐサポートしてくれるので、ちょっとした疑問なども分報チャンネルに書き込むようにしています。
*分報については以下の記事で説明されています。
既存のコードを正としない
例えば機能追加のタスクを振られ、実装方法が分からなかったときは、他の同じような機能や動作をする箇所のコードを参考にすることがあります。 おそらくそのコードを書いたのはエンジニア歴の長い、自分よりも技術力がある方なので、そのコードに習って実装すれば間違いないと考え、そのコードを正として実装を進めます。
しかし、実際にそのコードが正しいコードとは限りません。 「正しいコード」がどういうものなのかという定義は難しいですが、仕様通りで、保守性があり、無駄がない、可読性の高いコードであるかどうかは担保されていません。 もしかするとまだ発見されていない未知のバグを含んでいるかもしれません。 「実装方法」という問題に対しての「答え」としてただ真似るのではなく、あくまで例の一つとして参考にしながら実装方法を考えることが大切だと思います。
もちろん既存のコード通りに実装した方が良いケースもありますが、既存のコードを疑う癖を身に付ければ、より良い実装方法を選択することができると考えています。
おわりに
チーム開発するうえで気を付けなければいけないことは他にもたくさんありますが、今回は私個人が気を付けていることについて紹介しました。
今は会社の各プロダクトについて理解を深めたり、今後のキャリアプランについて考えるために、1ヶ月ごとに開発チームを移って業務させていただいていますが、 同じチームに長くいると環境に慣れてしまい、今まで気を付けていたことができなくなったりしてしまうと思うので、自分は何に気を付けてチーム開発に取り組むべきか、どうすればチーム開発が上手くいくか考える癖を身に付けていきたいです。
おまけ
Slackの分報チャンネルではちょっとした疑問や気付きを共有していますが、エンジニアの方々がすぐにサポートしてくれます。