この記事はサークルの後輩のために「良いチーム開発をするために心がけるべきこと」という勉強会をするために思いを記事にまとめたものです。
チーム開発は難しい。
任された仕事を、優れたプログラミング能力でやり遂げる力があればチーム開発は成功するわけじゃない。
チーム開発はそんなに単純じゃない。
僕自身もチーム開発で何度も失敗をしてきた。
その失敗談の話を交えながら、良いチーム開発をするために自分が思っていること、心がけていることを紹介したい。
この記事で伝えたいことはこの4つだ。
- チームみんなで目指す目標を決める
- 隠さずに共有をする
- 謙虚、尊敬、信頼の心をもつ
- 君から変わろう
まず、自分の失敗の話からだ。
昔の話
僕はある初めてのチーム開発でリーダーをしていた。
リーダーとして、メンバーみんながやりたいことをやって成長して欲しいと思っていた。
そして、絶対にチーム開発を成功させて見せる、自分なら成功させられると思っていた。
僕は開発を成功させるために、技術を頑張って勉強をし、みんなにやりたいことを聞き、それが叶えられるような環境作りを頑張っていたつもりだった。
けれど、開発は上手くいかず、ミーティングはグダグダで、リーダーとしての頑張りを感謝もしてもらえず、メンバーに小言を言われる。当時の僕は「メンバーの誰も俺ほどにも頑張ってくれてない癖に!」と思っていた
すごくしんどかった。
そのしんどい気持ちをメンバーに相談することもできなかった。
最終的に一応物は完成したものの、自信を持って発表できるものではなく、その後は喧嘩別れのような形で僕がリーダーをやめ、そのチーム開発は終わった。
これを読んでいるみんなには辛いチーム開発をしてほしくない。
大変だったとしても、良いチーム開発だったと思って終われるようにするためにはどうしたらいいか。
目標を決めよう
チームで協力して物事を成し遂げるためには目標が大切だ。
目標がないとチームは向かうべき先が分からず、バラバラになってしまう。
ひとつの方向に向かって協力していくために、みんなが同意できる成し遂げるべき目標を決めよう。
僕は初めてのチーム開発でチームで達成する目標を決めることを疎かにした。
メンバーは僕含めてそれぞれ違う目標を持っていた。
ある人は自分の技術力向上のために、ある人はその作品でコンテスト入賞をするために、ある人はただチーム開発を経験するために、それぞれの目標を達成するためにチーム開発に取り組んだ。
その結果、チームはバラバラで何も成し遂げることができなかった。
僕の絶対にチーム開発を成功させて見せるというのはチームの目標ではなく、僕1人の目標だった。
僕は僕の目標を達成するために頑張って勉強をし、みんなにやりたいことを聞き、それが叶えられるような環境作りを頑張っていただけだった。
メンバーからすると僕がなんのためにそんなことをやっていて、1人でそんなに焦って何をやっているのだろうと思っていたと思う。
メンバーみんなも各々の目標を達成するために頑張っていたとは思うが、それは僕の目標に向かって頑張っていたことではなかったので、僕からするとみんなが頑張っているように思えず不信感を募らせてしまった。
ミーティングにおいても、メンバーそれぞれのやりたいことに気を使って何も決めることができなくなっていた。
そうならないために、各々でただ目標を抱えるのではなく、自分がこのチーム開発でやりたいこと、達成したいことを、全員が全員に共有をし、みんなが同意をできるチーム全体で共通の目標を決めよう。
これが決まれば、みんなが頑張る方向は明確になるし、その目標に向かって頑張れているかというのがチームの中での指針になる。指針ができれば、作るもの自体や、使う技術を決める際においてもチームとして決める基準ができるので、それに沿っているかという風に決めやすくなる。
チームの目標を決めよう。
共有をしよう
目標が決まっても、後はそれぞれが目標に向かって頑張ればオッケーというわけではない。
目標を達成するために、目標に向かってチームとして進めているかを常に確認をしなくちゃいけない。
実装したい機能がちゃんと実装できているか、チームに何か不安なこと、嫌なことがないか、分からないことがないか、ちゃんと共有をしなくちゃならない。
僕のチーム開発ではほとんど共有をできていなかった。
自分たちのやっていること、考えていること、できないこと、分からないことを隠す。
チームに対する不信感も共有できない。
思っていることすら共有できていなかった。
その結果、何が完成しているのか、何をしなくちゃいけないのか、メンバーそれぞれがどんなことをやっているのか、メンバーそれぞれがどんなことを思っているのか、前に進めているのか、何も分からなかった。
何も分からなくて、リーダーの僕はそれがすごく恐ろしかったのにその気持ちを共有できず、何も変えることができなかった。
なんでも良いからとにかく共有をしよう。
自分の思っていること、ちょっと分かったこと、不安、実装予定、メンバーへの感謝、自分のやりたいこと、etc…。
誰も自分のことを言わなきゃ分からないし、自分も誰のことも言われなきゃ分からない。
想像は所詮想像でその人の言葉じゃない。
言えば一緒に考えてくれるし、言ってくれれば一緒に考えられる。
とにかく、共有をしよう。
謙虚、尊敬、信頼を忘れない
上で簡単に共有をしようと言ったが、それはとても難しいことだと思う。
なぜなら、不安があるから。
人は誰しも自分が馬鹿だと思われたくないし、否定されたくない、できることなら自分が天才だと思われたい。
だから、完成していないコードを人に見せたくないし、自分の考えを人に言わない。
完成するまでコードを人に隠し、完成したものをあたかも簡単に作れたかのように見せる。
自分の弱いところを人に見せないことで強い人であろうとする。
僕も自分ができると思っていたし、メンバーに頼りないリーダーだと思われたくなかったから、自分の不安感を隠し、できないことを隠していた。
その結果、できるフリをしていたのに何もできずにただ焦っているだけのリーダーがいた。
強い人であろうとして弱い人になってしまった。
だからこそ共有をしなくちゃいけない。
1人で隠して書いたコードは実はチームに必要な機能を満たせていないかもしれない。
早めにメンバーに確認をしてもらっておけば早期に起動修正できたはずだ。
不安感やできないことを早めに共有をしておけば、その不安感を解消するために、できるようにするためにどうすべきか、メンバーは一緒に考えてくれたはずだ。
こんな単純なことをなぜできなかったのか。
それは「謙虚、尊敬、信頼」の心が欠如していたからだ。
謙虚
自分はなんでもわかるスーパーマンじゃないし、チーム、世界の中心でもないと意識しよう。(例えそうだったとしても!)
自分自身の改善できる部分を探して改善していかなくちゃいけないし、そのためにできることは色々やろう。
尊敬
リスペクトしよう。チームのメンバーを思いやろう。
メンバーは決して利用できる駒やお手伝いではなく、1人の人間、仲間として対等に立とう。
信頼
自分以外の人は有能で、正しいことをしてくれると信じよう。(例えそう思えなくても!)
相談や仕事を任せるといったことができるようになる。
「謙虚、尊敬、信頼」の心を持っていなかったから、自分はできると思い上がり、誰も頑張っていないように感じ、相談しても一緒に考えてくれると思えず、相談することができなかった。
「謙虚、尊敬、信頼」が意識すれば、きっと辛い人間関係ではなく、心地良い人間関係を築くことができるはずだ。
そして、共有をしやすい目標にみんなで進めるチームにすることができる。
「謙虚、尊敬、信頼」を忘れないようにしよう
動かせるのは君だ
長々と良いチームを作るためにこうしようという話をしてきた。
良いチームを作るために確実に変えられるものがある。
それは君自身だ。
この内容はチームのリーダー向けの内容じゃない。
チームに属する全ての人に向けて書いている。
君が例え1人のメンバーでしかなかったとしても意識をして欲しい。
人を変えるのはとても難しいが、君のことなら君に変えられるはずだ。
自分の考え、行動を振り返り、チーム開発をよくするために何ができるかを考え実践してみよう。
もしかしたら失敗をするかもしれない。
けど、それはそれで良いんだ。
反省して次はそうならないようにすればいい。
成長のためには挑戦して、失敗して、反省して、また取り組むの繰り返しだ。
これをとにかく早く回していこう。
チームを変えるために君から変わろう。
最後に
この内容は自分の経験プラス「TeamGeek」という本によって成り立っている。
「謙虚、尊敬、信頼」もこの本から学んだ考え方だ。
読んでもらうと「TeamGeek」がこの記事の中に息づいていることを感じられると思う。
君の生き方すらも変える可能性のある1冊だと思う。
チーム開発に興味がある人はぜひ読んで欲しい。
まとめ
- チームみんなで目指す目標を決める
- 隠さずに共有をする
- 謙虚、尊敬、信頼の心をもつ
- 君から変わろう
これを忘れず、良いチーム開発にして欲しい。
一緒に頑張ろう。