I was asked how long the end result is going to be.
It’s hard to say, but I suppose I’m somewhere in the 33% of the planned scope. Which may mean, the end result will be about 3 hours. Actually, I have a lot of fun doing this, so there might be more :) Don’t want to overpromise at the moment, though.
Some of the people who started watching the videos asked to describe more of the context of the start.
As it is right now, the videos start with requirements to implement. The requirements are given by the mysterious Jane. Who is she? What are we doing here as a programmer?
The story wasn’t really told in the videos yet. I postponed to later time, assuming that the technical content is more important. However, now I see that the story is also intruiging to many of you :) That’s good.
First, let me explain, why a story here.
Why do we need some artificial setting (company, other developers) to be introduced while learning about TDD/DDD.
Well, it’s just me having fun, after taking a writing class. Yes, that’s right, over the last months, I took a writing class (as in writing fiction). Due to the lack of time, I failed at actually participating in the class by making the homeworks. However, I was in the read-only mode and learnt a lot about stories, narrations, introducing the context to the reader etc.
I’m still far to even be able to write a 2-pages fiction story, but I’m some steps forward in having fun while creating such narrations.
I wanted to make this class but I wanted to put it in an imaginary situation which would be close to the programmers learning from the class.
What can be closer than imagining ourselves as starting a new job as a programmer? That’s how it evolved. I imagined a company called BioRubyCorp. The main character was just hired to be a Ruby programmer. Jane is an existing developer at the company. She’s the developer who knows about all the stuff but she’s got too many things on her plate, so you (the narrating character played by me) were hired to help her.
At the beginning you don’t know much about the company itself, from the business perspective. You only know that they operate in the Genetics domain, which is a domain completely foreign to you. In fact, it’s a domain also foreign to me, so I’m just learning along the way. Frankly speaking, this is the surprising side-effect to me, that learning about DNA, nucloetides became a fascinating topic to me!
Why the Genetics domain was chosen? What’s the story behind it?
In order to tell the full story, I need to tell you about the ongoing Junior Rails Developer class that we’re running for the last 3 months. It’s an online, Slack-based class which has its roots in the Rails learning program which I developed over the 5 years of teaching Rails at University of Wroclaw (BTW, students of this university are regular medal-winning participants of team-programming contests in the world).
The first student, who was taken to the Junior Rails Developer class was Janek. One of the first exercises to do in the class are the ones taken from exercism.io. Some of them are about the DNA domain. During the class, we help the student. What struck me was that even our team was suggesting the solutions based on the shortest-code instead of a one which would be more domain-revealing. That made me contemplate what’s better in such exercism context. What also bothered me was that even though the requirements were written with a nice domain language, the code was just strings and lists. Primitive obsession! I wanted to see if there’s a way of implementing it with more abstractions. You can see the result in this free video:
I was quite happy with the result. I also became fascinated with this domain! So that’s one part of the story - why the Genetics domain.
Let’s come back to the setting of the narration.
There’s the main character - me/you and Jane. There’s also the (unnamed yet) domain expert who helps us with understanding the domain. This kind of narration helps me build a typical situation in a company. It builds a good foundation for the next requirements and the planned plot twists.
To be honest, the story is not fully prepared and planned. You can also influence it by suggesting me what kind of plot twist would be “typical” in such situations. Which requirement to implement? How to deal with deadlines? How to deal with an empty budget?
The story is just the framing, though.
The real goal of the class is to teach you how to combine Rails with TDD. Other things, like DDD and mutant are also crucial. I don’t want to show the only one and true way. I’m going to present more techniques over time. I like to think of this class as a TV series, which is easy to consume in short episodes every day.
I hope this gives you more context now :) Buy here: https://vimeo.com/ondemand/arkencyruby . Imagine the first day at BioRubyCorp and start watching the videos!