他社のiOSアプリ開発者と話す時、いつも同じことを聞いていたのでそれをまとめておく
特にiOSに関連深い事柄
- バージョン管理システムは何を使っているか
- ホスティングサービスは何を使っているか
- プロジェクト管理ツールは何を使っているか
- コードレビューはどのように行っているか
- ブランチの運用はどのようにやっているか
- Storyboardやプロジェクトファイルなどでコンフリクトが起こらないように工夫しているか
その他、開発の進め方に関連深い事柄
- アジャイル開発(もしくはその一部のどのような部分)を取り入れているか
- 「開発環境の改善とかコミュニケーション改善で自慢したいところ」はあるか
- 現状の開発に関する不満点や改善したい点などあるか
- テストはどのようにやっているか
実際に自分が訊いてきたものは下記にまとめている
バージョン管理システムは何を使ってる?
Xcode標準のバージョン管理システムはgitのため聞く必要もないことだけど、例えばそこであえてsvnを使っているのであればそれには何かしら外部要因があるはずなので、確認したいところ。
また、ホスティングサービスを使っているならGitHubを使っているのか、Bitbucketなのかというのも話として知っておきたい。
これと同時にプロジェクトの管理ツールなどについても聞いておきたい。
コードレビューをどのように行ってる?
コードレビューをどのようなやり方で運用しているかというのも聞きたい。
大抵、自分の得意分野でもなくパターン数が多く複雑な処理の場合のコードレビューは面倒で、時間を取られるため時間がもったいなく感じ、自分の作業を進めたいという気持ちになると思う。
そういう気持ちにならないようにするために、どのような工夫をしているのかというのも聞くとためになるし、開発工数として計上しているかどうかなどの開発フロー全体について聞き出しやすい。
ブランチの運用はどのようにやってる?
バージョン管理システムでのブランチ運用は経験とその会社のルールがよく反映されている。
具体的な参考例として下記のエンジニアブログの記事が知りたい内容になる
LINE iOSアプリ開発についてのご紹介
http://developers.linecorp.com/blog/?p=2921
この特徴を箇条書きにするとLINEでの開発スタイルが分かりやすい
- バージョンごとのmasterがある(バージョンごとにデプロイ可能なものを積む)
- 次の次のバージョンで実装など先の計画に対して実装をすすめるリソースがあるからっぽい
- リリースされたら上位のバージョンのブランチにマージして消していく
- 元々はgit-flowを元にして変化していった
Storyboardやプロジェクトファイルなどでコンフリクトが起こらないように工夫してる?
StoryboardやプロジェクトファイルはXMLファイルの仕様が公開されておらず、そのため手動でのマージは難しくコンフリクトしないような工夫をしていることは多いだろう。何か工夫があれば教えて欲しい。
アジャイル開発はどの程度取りいれてる?
使い古されたアジャイル開発というものについて、それぞれの職場ではどのような部分を取り入れ、どのような部分を取り入れていないのかということも興味がある。
具体的なコーディングに近い部分や、AppStoreの審査があることによるリリースサイクルの戦略など的を絞りたい。
時間があればスクラムについても聞きたい。スクラムはアジャイル開発の中でもチームでの開発手法のフレームワークであって、その開発チームのやり方を掘り下げていくことが出来る。
- XP(エクストリームプログラミング)
- ペアプログラミングはやってる?
- スモールリリースしてる?
- どのようなサイクルで申請するかなど具体的なことは決まっている?
- スクラムは取り入れてる?
- スクラムマスターは明確に決まっている?
- 他にアジャイルで取り入れて良いなって部分ある?
コーディングと関連性が薄い部分については、スクラムなどについて聞きたい。
スクラムマスターが明確に決まっているかどうかを知りたいのは、経験が多く責任感が強い人が自然とスクラムマスターの役割を担っているのか、それともチームやプロダクトオーナーがスクラムマスターという役割の重要さを明確に理解した上でメンバーが役割を担っているのかを知りたいため。
多くの場合前者で、誰かが暗黙的にスクラムマスターを担ったりする事が多いと感じていて、その場合はメンバーに恵まれているとは思うが、責任感ゆえに暗黙的にスクラムマスターになった当人は疲労していたりしないのか、疲労しないようにする心構えなどがあるのかなどが知りたい。
##「開発環境の改善とかコミュニケーション改善で自慢したいところ」とかある?
例えば何かの手段が自動化されている等、そういうことを聞ければありがたい。
現状の開発に関する不満点やさらに改善したい点などある?
聞くと刺激を受けることもあるだろうし、ディスカッションしてる中で問題の原因点などが浮き彫りになる。
テストはどうやってる?
- テストの自動化はやってる?
- 単体テストの自動化してる
- UIのテストの自動化してる
- 使っているライブラリは?
- QAテストはどういうふうにやってる?
- 何人ぐらいでやってる?
テストを自動化しなければいけないとは思わないけど、色々なチャレンジもあると思うので知りたい。
まとめ
自分としては開発や会社全体のことを聞いても抽象的な質問になってしまうので、質問に答えやすいように具体的で細かなことを聞いて、全体に繋がっていければと思う。