プログラミングをする上で大事なことは何か

みなさまこんにちは。さいとう(黒)です。このところ花粉が飛び始めていて辛いです。

アトラスの開発グループでは毎朝朝礼をしていますが、その中で2分間スピーチというものがあります(詳細は「アトラスの朝礼って何してるの?〜シス開編〜」を御覧ください)。

先日、そのスピーチで新卒1年目のメンバ(まだブログ未登場で今後登場予定です!乞うご期待!)が、「プログラミングをする上で大事なことは何か。先輩の皆さんは何を大事にしていますか?」という質問を投げかけてくれました。

前述の記事にも書かれていますが、開発グループではスピーチに対して他のメンバがフィードバックをする、という方式を取っています。今回も先輩エンジニアから色々とフィードバックがありました。

というわけで今回は、そのフィードバックを元に、アトラスのエンジニアがどういったことを大事にしたり、考えたりしながらプログラミングをしているのかを紹介したいと思います。

※ あくまで、プログラマ1年目のメンバに対するアドバイスも兼ねたフィードバックを元に書いていますので、その前提でお読みください。

まずは要件を満たしてきちんと動くものを作ろう

これは大前提、当たり前の話ですが、まずは要件(仕様)を満たした、きちんと動くプログラムを作らなければいけません。

当たり前といいながら、これ実は簡単ではありません。「顧客が本当に必要だったもの」という鉄板ネタのような話がありますが、顧客の要望を理解してきちんと仕様に落とし込むこともそうですし、既存のシステムを理解した上で仕様を理解し、正しく動くものを作る、というのは意外と難しかったりします。

なので、まずは仕様をきちんと理解する、自分が作るものが何なのかを理解する、ということが大切です。

アトラスでは基本的に、仕様を決めるPM(プロダクトマネージャー)がおり、その人が中心となって仕様を固め、Issueと呼ばれる開発タスクを割り振っています。タスクや仕様の内容が分からなければ、PMや先輩エンジニアに確認しながら進めるという方式を取っています。

こうやって、予めお互いの意識のズレや齟齬をなくしていくことが、「要件を満たしてきちんと動くもの」を作るには大切になります。

コードを理解しよう

これは新卒1年目のメンバ本人が大切にしていることとして話していたことでもあります。

プログラミング初学者の場合、サンプルコードや他の人が書いたコードを参考に、とにかく動くものを作ることに必死だと思います。私もそうでした。

そうなると「これで良いかわからないけど、とりあえず動いてるから良いや」となりがちです。最初はそれでも許されるかもしれませんが、さすがに2年、3年と経験を積んだプログラマがそれでは困ってしまいます。

なので、自分が書いたコードはどういった処理をしているのか、自分が使っているメソッドはどういった仕様なのかを理解していく必要があります。きちんと公式リファレンスを確認したりして、言語の特徴を学んでいかなければいけません。

場合によっては、一行一行何をしているのか読み解いて理解していく必要もあるでしょう。

素早く作ってフィードバックを得よう

とはいえ、理解するまでずっとプログラミングが進まずに納期が守れない、なんてことになったら困りますよね。

なので、素早く作ってとにかくアウトプットすることが大事でもあります。

アトラスでは他のメンバがコードレビューする決まりなので、先輩に見てもらい、間違いの指摘や、より良い書き方のフィードバックを得ることができます。これで合ってるか分からない、書き方が良くないかもしれない…と悩んで時間を費やすよりも、早く誰かに見てもらって修正したほうがより良いものを作れます。

また、実際に動いたものを見た結果、仕様が変わることもあります。大概の機能は試験実施前に機能調整が入ります。なので、出来る限り素早く作って人に見てもらい、問題や改善点があれば修正していく、という良いループを作ることが大切です。

保守することを考えよう

これに関しては何人かのメンバがフィードバックしていました。経験を積んでる人ほどその傾向がありましたが、そういうメンバは過去に苦労した経験があるからだと思います。

かく言う私もこれが一番大事だと思っていて、保守や運用のことを考えていないサービスやプログラムほど悪なものはないと思っています。

会社のサービスとして提供しているものを仕事として作る以上、メンテナンス性がとても大切です。後から他の人が見ても分かりやすく書かれているか、コードは拡張しやすいか、テストしやすいか……こういった観点が重要になります。

アトラスの開発グループでは推薦図書として「リーダブルコード」や「プリンシプル・オブ・プログラミング」を上げていますが、ここに書かれているようなことを考慮していけると保守性の高いコードが書けるようになると思います。

コーディングを楽しもう

最後に、なにより大切なのは「コーディング楽しいな」「プログラミング楽しいな」という気持ちです。

自分が書いたコードが動いて嬉しい、とか。前回より素早く書けるようになって嬉しい、とか。自分で納得のいく美しいコードが書けて満足できた、とか。「楽しさ」の源泉は何でも良いと思いますが、そうやって楽しみながらコードに向き合えると良いのではないでしょうか。

WebやITの世界は日進月歩で新しい言語や技術が出てくるので、常に勉強し続ける必要があります。その時に「楽しい!」と思えるかどうかが、エンジニアとしての成長に関わってくると思います。

おわりに

というわけで、フィードバックの一部ですがアトラスのエンジニアが何を大切にしているか、どうやって考えてプログラミングをしているかをご紹介しました。

プログラミング歴1年くらいの頃だと特にこういったことで悩んだりするのではないでしょうか。アトラスではこうやって先輩に相談してフィードバックを得る機会などもありますが、独学者や職場の環境によっては周りにこのような話をできる人が居ないこともあるかと思います。そういった方はこの記事を参考にしてみてください。

世の若手エンジニアにとって、少しでも参考になれば幸いです。