1. yimajo

    No comment

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