Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Russ
Russ

Posted on

     

My first Coderetreat experience

What Is Coderetreat?

Coderetreat is a day-long, intensive practice event, focusing on the fundamentals of software development and design. By providing developers the opportunity to take part in focused practice, away from the pressures of 'getting things done'.

The Task

We were to build an implementation ofConway's Game of Life with an emphasis on unit testing and Test-Driven Development (TDD).

The Event

When we got started we broke up into pairs (pair programming) where we would switch off between driver (the person behind the keyboard) and navigator (the person who dictates which way we go) for 45-minute sessions.

First Session
We attempted to start by creating a grid with known cells so we could test it and the session ended before we could get anywhere. We knew the first session was a throwaway because we would be figuring how the game worked, the rules, and where to start. My partner was at the event for the first time as well, so we spent a lot of time spinning our wheels trying to figure out what we needed to do.

Second Session
In this session, the rules were switched up and one person would write a test and the second person would write the method and then switch roles. This time I paired up with someone who has come to the event before and he wrote a test to check if a cell is alive. I was like "Wait, what? Don't we need a grid first to test it against?". The discussion started from there and I was like "Oh we are creating an infinite grid where we are tracking only the live cells and we don't care about the dead cells", I had my mind blown by how over complex I was making it in the first session. I then proceeded to write the method that would satisfy that test and some other things before the session came to an end.

Third Session
The third session was about mob programming where you had a driver and a navigator (every two minutes the roles would switch and we would go through most of the group this way), the navigator could communicate with the rest of the mob about what to write next and the driver could only take instructions from the navigator. A majority of the group voted to do it in JavaScript (JS) and we had some none JS programmers and the navigator would have to talk with the mob about what to do. The interesting part about it was each person had a different approach and they could just undo what the last person did because they would do it their way. It was a very interesting experience for sure and encourages you to communicate better.

Conclusion

Test-Driven Development (TDD) seemed so odd to me and I was so lost as to why we would even write the test before writing the method. It was tough to break my habit of writing a method first, then write a test for it, and seeing the test pass. I can see why the TDD approach is a good habit to pick up. It helps you write shorter code that would pass the test and your methods would only do one thing that way you could test it and know if you break your method in a future refactoring. I'm going to try and implement TDD in my next project to see where it would take me and if I approach projects differently in the future.

Top comments(5)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
michaelrice profile image
Michael Rice
~ 3x/week - a letter (and podcast) for tech leads, engineering managers, and startup CTOs, giving you clarity, certainty, and confidence in the role. https://techleadcoaching.com
  • Email
  • Location
    Los Angeles
  • Work
    Field Engineering Manager and Tech Lead Tinkerer at VMware
  • Joined

Hey Russ I'm curious to know if your experiences with TDD are going to carry into your day to day work going forward. Think you can work it in?

CollapseExpand
 
russ profile image
Russ
Software Engineer
  • Location
    Charlotte, NC
  • Education
    Thinkful
  • Work
    Software Engineer
  • Joined

Hey Micheal, I'll be giving my best attempt to practice TDD. I'll just have to sit down and write out what the particular methods in the file are going to be and start writing my tests as I go down that list.

CollapseExpand
 
michaelrice profile image
Michael Rice
~ 3x/week - a letter (and podcast) for tech leads, engineering managers, and startup CTOs, giving you clarity, certainty, and confidence in the role. https://techleadcoaching.com
  • Email
  • Location
    Los Angeles
  • Work
    Field Engineering Manager and Tech Lead Tinkerer at VMware
  • Joined

It's pretty great when you get used to it! Really, really helps you think through what you're trying to accomplish before you start writing the implementation. At least me anyway.......... let us know how it goes with another dev.to post!

Thread Thread
 
russ profile image
Russ
Software Engineer
  • Location
    Charlotte, NC
  • Education
    Thinkful
  • Work
    Software Engineer
  • Joined

That is true before I would just be like "ah I need this, oh and this, oh and this" and in the end, I avoid tests because everything works at that moment. I'll definitely be leaving an update in the near future as I refactor a project. Going from NoSQL to SQL and had like 0 tests.

Thread Thread
 
michaelrice profile image
Michael Rice
~ 3x/week - a letter (and podcast) for tech leads, engineering managers, and startup CTOs, giving you clarity, certainty, and confidence in the role. https://techleadcoaching.com
  • Email
  • Location
    Los Angeles
  • Work
    Field Engineering Manager and Tech Lead Tinkerer at VMware
  • Joined

EXACTLY! Saves so much unnecessary design and catches both bugs and design mistakes early. That said, there are some instances where it's hard to do in practice. Thanks for sharing again Russ!

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Software Engineer
  • Location
    Charlotte, NC
  • Education
    Thinkful
  • Work
    Software Engineer
  • Joined

More fromRuss

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp