Edited at

社会人Androidエンジニアになって1年が経ち、もうすぐ2年が経とうとしている

この記事はnana music Advent Calendar 2018の4日目の記事です。

自分はAndroidエンジニアとして今の会社に入社して、社会人となりました。

社会人1年目はわからないことだらけで、まともに出来たと思えた仕事は数えられるほど少なかったです。

そんな自分の1年間で得た知見や経験を社内勉強で発表したりもしました。

入社して1年が経ったので振り返ってみた/Speakerdeck

今回は1年目の振り返りと、2年目ではAndroidエンジニアとして必要なスキルや知識などがどう変わったか、などをお伝えできればと思います。


社会人1年目 : 好き勝手やっていた趣味エンジニアからの脱却

自分は社会人エンジニアになるまでは、1人でしか開発したことがなく、その頃はサードパーティーのライブラリは好きなものを選び使いたい放題、好きな(適当な)設計で書き放題、面倒なところはサボり放題、といった感じで良くも悪くも自由にやれていました。入社するとそんな環境が一変します。



  • 作りたいものを期限を設けずに作れたが...



    • スクラム開発を採用してます

    • タスクはそれぞれイシューにしてカンバンで管理します

    • このイシューは1スプリントで終わらせましょう




  • 作業が終わったらmasterにプッシュ、ブランチはたまにしか切らなかったが...



    • Git-flowに従ってブランチワークしていきましょう

    • レビューするのでプルリク出してください

    • 差分は少なめにプルリク出すようにお願いします。




  • 淡々と1人で作業していたが...


    • 1スプリントごとにKPTやりましょう

    • 困ってることがあれば1on1で話しましょう


    • お菓子でも食べながらバグ出し会やりましょう

    • ホウ・レン・ソウはこまめに行い、情報共有していきましょう

    • 朝会は毎日やります

    • 朝会の後はラジオ体操しましょう



という感じで、業務としての開発に慣れるまでには時間がかかりました。

中でも、個人では出来なかった、プルリクの相互レビューは大変ですがとても有意義だなと感じています。

コーディングに自信がない中で他人のコードをレビューする、という環境が常に緊張感を与えてくれていたし、書く時間よりも読む時間の方が増えたことで、より多くのコードに触れることができています。

1年目は、社会人としての働き方に慣れること、既存のアプリコードの理解、Androidの技術トレンドのキャッチアップに手一杯で、与えられた仕事をなんとかこなしていました。2年目になると少し視野も広がり、余裕も出てきました。


1年目に覚えた技術などなど

MVP/Retrofit/OkHttp/RxJava/RxAndroid/MediaSession/ExoPlayer/

MaterialDesign/Glide/IAB3/MPAndroidChart


社会人2年目 : メンテのしやすいコード、保守性の高いコードを意識した開発への挑戦

普段の業務をこなしている時に、気持ち的な余裕が生まれてきて、勉強会で得た知見や新しい技術をとりあえず簡単に取り入れてみようとしてみたり、休日を利用して仕事で使えない技術を試してみる、という機会が増えたような気がします。結果的にプログラミングにかける時間は1年目よりも大幅に増加しています。

こうした流れからか、既存のコードをより良いものにしていこう、ユーザーにストレスなく使ってもらえるにはどうしたらいいか、ということを頻繁にチーム内でも議論したり、考えるようになってきました。

大きく以下の2つに分けれそうです。


  • アプリの見た目や動きが微妙なもの(ユーザーに影響がある部分


    • デザインチームやPOも巻き込んで改善していく

    • MaterialDesign、MaterialThemingを絡めたデザイン的な提案を意識



  • 動いてはいるが、書き方が微妙、もしくは古いもの(ユーザーに影響がない部分)


    • チーム内で改善案を出し、解決する

    • 影響範囲の広い修正はQAチームにも確認してもらう

    • テスタブルな実装、QAで出る不具合が少なくなるような実装を意識



こういった問題解決への動きを率先して引っ張ったり、解決のためのMTGに出席することが増えてきたのは1年目の時にはできていなかったことです。

コードを書く以前に決めるべき要件整理や仕様の策定の場所に参加できているのは良い勉強になっているなと感じます。

さて、3年目に突入したら何を勉強していこうかなぁ


2年目に覚えた技術などなど

Kotlin/MVVM/Dagger2/Jetpack/AAC/ConstraintLayout/

DataBinding/AdTech/Hyperion/Firebase


社会人3年目 : 苦手な分野への挑戦

抽象的ですが、学習コストが高いもの、一見地味なもの(出来るとかっこいい)、すぐには結果が出ないもの、などを勉強していこうかなぁと思います。

例えば、


  • テスト

  • Thread処理

  • カメラや動画などハード寄りな機能

  • DDD

  • CI/CD

などでしょうか!


まとめ

今回は、Qiitaにほとんど記事をあげたこともなかったので、自分事で恐縮ですが書きやすいテーマで投稿させていただきました。

今後はこれを機に技術的な投稿もやっていければ良いなと思います!

弊社 nana musicのアドベントカレンダーはまだまだ続きます。

技術的な記事も2回目でどこかで投稿しようかなぁ:eyes:

明日は @yamanemur さんが華麗にお届けします!