※ 自戒をこめて
チーム開発する上で認識甘かったことがあって、最近反省することが多かったので、備忘録として残しておきます。
開発する上での前提
「開発の前提知識が整わないと生産性高く開発ってできないよね」っていうお話です。
今回反省したのは、技術レベルや実装レベル云々の話ではなく、開発する上で、同じプロトコルで話せないと生産性が上がらないということに気付かされたことです。
問題だったこと
issueを交えたgithubのプラクティス知らなかった
- オレオレコミットログを書かない
rebase
やらsquash
を使って開発ログをきれいするrefs
やらfixes
やらを使いながらissueを交えて作業ログを綺麗にする
という基礎的なところから勉強し直し。
慣れればどうってことないんですが、、、
言語仕様やら開発環境を息を吸うように使えない
こればっかりは必至に覚えました。
iOS開発のキャッチアップをしているときも、まともに経験のある言語がphpとrubyだったので、swiftみたいな書き方(scalaなんかに似てる)、言語仕様が慣れずにとりあえずプロダクションコード触ろうと思ったんですが、そもそもの言語仕様を理解していなかったり、開発に際して、xcodeの使い方を調べたりということを繰り返して中々生産性が上がってこなかったので、とりあえず地に足つけてひたすらどういう言語なのかを理解することに重きを置きました。
設計やら、実装やらを考えるにあたって、そもそもその前に前提条件が揃ってないと、全く生産性が上がってこない、もしくは開発速度が遅いというのが明確に見えてしまい、そういったところをサボってきた(言語仕様等々は作りながら覚えていく派だった)ツケが回ってきたような気がします。
レビューで言語仕様レベルで指摘されてたらリファクタリングとかしてても終わらないレビューとかになりそうなので、前提知識覚えるのってすごく大事だと実感。
開発の生産性とは?
これって、お作法も含めた常識を知っている(同じプロトコルで話ができる)同士のエンジニアが集まると、そもそも話している会話のレイヤーが同じだから開発速度が速いっていうことに直結すると感じました。
言語を知らない、前提が同じでないと、そもそも、何を話されているのかという翻訳が必要になってしまって、そこで脳みそのエネルギーが使われてしまい、そもそも、開発に効率よくエネルギーをかけることができない。
だから、そもそもチームとして生産性高いっていうのは、上記あげたような超初歩的なお作法、バックボーンが同じレベルの人間が集まることで、余計なコミュニケーションが発生することなく、結果として生産性高いっていう状態が生まれるのだなと。
そこに全く行き着いていなかったことを反省しつつ、サボらずに1からちゃんと言語仕様、開発のお作法を直していく日々...