Enjoy Architecting

Twitter: @taisho6339

入社後5ヶ月を過ごしてみて

入社後5ヶ月を過ごしてみて

本記事の目的

今の会社に新卒入社してから5ヶ月経ったので、現在抱えてる思いや課題意識を整理するために日記のようの書き綴ってみる。(社外秘が多いので具体的には書けません。。。)

今までやってきたこと

新卒研修(4月)

技術研修などではなく、ビジネスマナーやコンプライアンスや企画研修。内容が暑苦しかったり、やたらコミュニケーション取らせようとしたり、人が苦手な自分には若干うざい研修だったが、ディスカッションの進め方やアイデアの出し方など勉強にはなる部分は多かった。

データの配信スクリプトのリニューアル

アプリや、Webページのコンテンツに使用する元データをサーバに配信する仕組みをレガシーなものからリニューアルした。シェルスクリプトなんかを駆使して書いてた。

スマホ版Webページのリニューアル

スマホ版のWebページのデザインリニューアルにともなって、フロントのPHP部分の対応を行ってた。 ガイドラインなんかが多く、最初仕上げた時はそこに全然マッチしたものになっていなくて何度もやり直した。

Androidアプリの機能追加、改修

Android版アプリの機能追加や、細かなバグ修正を行ってた。 レガシーな部分やセキュリティ的にやばそうな部分が多くフラストレーションを溜めながら頑張ってた。

大規模な機能追加(バックエンド、アプリ両方)

大規模な機能追加にともなって、APIの開発とAndroid版アプリの開発に携わった。 APIは新規に開発するものだったので、「オブジェクト指向のこころ」などで勉強したデザインパターンをふんだんに応用してみた。 オブジェクトを「継承」ではなく「移譲」することによってカプセル化する という思想をベースに設計した結果、かなり拡張性や見通しの良いコードになった。 その思想、設計をその機能の開発チーム全体に適用できたのも幸いだった。

また、アプリ側はそのままではとても機能が追加できる状態ではなかったので、機能追加に関わる部分をすべてリファクタリングした。 (大体3週間位工数かかった) TabをActivityで切り替えるような古い設計から、Fragmentに置き換えたり、重い処理を非同期処理にしたり、一つのActivityに3つの画面の管理が書かれていたりしたので分離したりした。 DBの更新が行われたらActivityに通知を行ったりしたかったので自前でObserverパターンを適用してみたりもしたが、ここはRxJavaなどを使ってみてもよかったのかもしれない。。。(ここくらいしかちゃんと理由づけして導入するチャンスはなかったかも)

自分の評価ポイント

  • 新規API開発時に、開発を仕切ってる先輩に設計思想を説明して全体のルールとして適応できたのは良かった。
  • 何かをチーム全体に適応したいとき、人を選んでその人から説得するのは大事だとおもった。

自分の課題ポイント

  • 開発スピードは早かったが、品質の担保がまったくできていなかった。仕上げて突っ込まれたり、あとから問題になるケースが多かった。

  • 人に何かの判断を仰ぐとき、自分はきくだけで自ら提案をすることが少なかった。次からはある程度自分で仮説や提案を作ってから聞きに行きたい。

  • チームの人すべてが、先進的で向上心のあるエンジニアなわけではない。 だから、プロダクトを良いものにするために他社が普通にやっているようなことも(自動化テストや、より良い設計で開発してもらうことなど)、どう説得すればやってもらえるのかをしっかり考えて動かなくてはならない。

まとめ

チームで開発している以上、自分が技術力をつけるだけじゃだめで、コミュニケーション能力を駆使してチームを動かすことが大事なのだということを痛感した。 そしてここでいう「コミュニケーション能力」とは、

  • チームを動かすための説得力、交渉力
  • 簡潔に物事を伝えられる説明力

のことで、これらを技術力と並行して磨いていきたい。