ラベル tddyyx の投稿を表示しています。 すべての投稿を表示
ラベル tddyyx の投稿を表示しています。 すべての投稿を表示

2019年9月8日日曜日

TDD+モブプログラミング会に参加してきた(5回目)

今日はTDD+モブプログラミングでワイワイする会 その28に参加してきました。

記録によると約1年前に初めて行き、今回で通算5回行っていることになってます。



社内でも宣伝して、いろんな人を誘って参加しています。
大学の同期だったり、会社の同期だったり。
僕は誰かと一緒に良いものを分かち合いたいという欲求があるみたいです。

今回は「社外の勉強会に参加するのはハードルが高い」というので、@yu12co_mと一緒に行きました。
台風接近という最高の天気ではありましたが、時間の都合で1モブです。

ClojureでFizzBuzz


4名でFizzBuzzを実装しました。もちろんテスト駆動開発で。
選ばれた言語はClojure + Clojure.testなんですが、全員初めて使うというのと関数型というので難易度高めでした。

途中、Core.Matchという模範解答を見つけてしまったので薄目で見ながら実装してました。ただ、使うにはdependencyを書く必要があったのですが、うまく導入できず使いませんでした。まあそんなことせずにforとかifとか使えば手続きっぽく書けそう。

感想としては、
  • Matcherにareが使えてパラメタライズドなテストが書きやすい
  • 出力テストはwith-out-stdみたいなキャプチャがあってやりやすい
  • 関数型チックな書き方がまだしっくりきていない
  • モブじゃなかったら心が折れてた
という感じです。
やはり新しい言語をやるにはモブプログラミングが楽しいですね。

写真は今回使ったプロジェクターです。いろいろ試行錯誤しました。

天井吊なので逆さにしないと使えないというアレ


2018年5月14日月曜日

TDD+モブプログラミング会に参加してきた

5/13(日)のtddyyx(てぃーでぃーでぃーわいわいかい)に参加してきました。
10分くらい遅刻しましたが、心理的安全性が保たれた素晴らしい会でした。ごめんなさい。


何をしたのか


tddyyxでは、テスト駆動開発モブプログラミングで問題を解決します。
  • テスト駆動開発は、間違いを恐れず言うと、テストを書いてからプログラミングする開発方法です。
    • テストに通らないコード(Red) -> 通るけどリファクタリングする必要があるコード(Green) -> 通るし綺麗なコード(Blue)の順に実装していく。
  • モブプログラミングは、間違いを恐れず言うと、一つの問題についてチーム全員で解決していくプログラミング方法です。
    • 作業分担は効率が良くなるように見えるけど、後に作業集約することを考慮すると良くないかもしれない。
    • モブプログラミングは作業分担しないため進みが遅いように見えるけど、全員が共通したコンテキストで動くので最終的には効率が良いかもしれない。
    • モブプログラミングはドライバー(コードを書く人)とナビゲーター(周りで調べたり知恵を出したりする人)に別れて作業する。ただし、コーディング時はモニターは同じものを見る。
    • 問題の一部でも解決したら「やったー!」と言う(重要)。
  • 問題というのは、FizzBuzzやLeapYear(うるう年)のようなプログラミングするとよく出てくるお題のことです。

今回は前半を3チームに分かれて別々の問題を解きました。後半は自由にチームを組んで好きな問題を解きました。

前半戦


@y0taさん、@hirarinさん、@ie_tetrahymenaさんと一緒に100Doorsを解きました。使用したのはCyber-dojoです。言語は参加者みんな初めてのR。

  • 仕様からのタスク分け -> テスト書く -> 実装する -> 動く -> 「ヤッター!!」 -> 以下テストから繰り返す。
以下学び
  • タスク分けに設計の話と混ざるとハマりそうなので避ける。
  • Rの文法が風変わりで楽しい。配列が作れない、三項演算子ができない等等。
  • ネストが3つ以上あると気分が悪い。できるだけ2つまでにする方法を考える。
  • 関数の挙動に注意。副作用の話。
  • 定期的におこる「ヤッター!!」はモチベの回復になる。楽しい。
  • コーディングに自信がなくても学び合うことでカバー可能。(メンバーの人柄によるかも)
    • 自信がない、わからない、と正直に声をあげることが重要だと思う。
  • お菓子大切。喜久福美味しかったです。

後半戦


ごめんなさい、一緒にコーディングしたのに名前を忘れました...。後半はLeapYearをやりました。前半戦と同様にCyber-dojoを使用しました。時間が少なかったので言語はみんな大好きPython。

以下学び
  • 文化の違いをどう解決するか。チームによって問題へのアプローチ(僕たちの場合はタスク分けから先)が違っていたので、最初にどうやってきたのかをお互いに聞くべきだった。
  • 地味にPython忘れている。悔しい。
  • 「ヤッター!!」は重要。

おわり

以上、楽しいコーディングイベントでした。
モブプログラミングはモブ+プログラミングなのでプログラミングではない別の作業でも活用ができる。モブの考え方は原始的だけど、作業が複雑になっていたり知識や経験がない状態からスタートアップする方法として頭においておくのが良さそうです。

あと、けん玉が少し上達してよかったです。

モブけん玉の様子