ThoughtWorks University XXI

June 13th, 2011 by franktrindade 1 comment »

In March and April of this year I finally made to India to be a trainer at ThoughtWorks University. This had been a personal goal since I was a student there more than 3 years ago now, so I’m pretty happy I have achieved it.

After being back for more than a month, I’ve finally decided to stop being lazy and write about it, so there will be a couple of posts here in the near future (hopefully!) about the experience I had over there.

As a short summary though, it was truly amazing! :)

In the format that it was created (thanks Summeet for that), TWU sets a challenge to the trainers, who are asked to deliver an interesting 6 weeks training to students that are already pretty good at what they do. There were no constraints set on what we could try, and we were responsible for deciding what would be done.

For someone with no training background as me, I could not ask for a better learning experience.

If you are interested in the subject, please check also Mark’s posts about it. Im pretty sure Im not going to be able as much as him about it. :P

Page Model with Cucumber and Capybara

March 4th, 2011 by franktrindade 3 comments »

I’ve spent some time today changing the Cucumber/Capybara tests in one of my pet projects to use a page model. Since I didn’t find much stuff on the interwebs about it, why not write it here ?

The idea behind having a page model is to keep steps related to a specific page on your app in the same place, so you can reduce the repetition of steps in different tests. Is definitely not a complicated practice, and setting Capybara for it is a simple step.

Setting the context, Im using Cucumber 0.10 with Capybara 0.4.1.2 and Rails 3.0.1. Have done the standard installation steps recommended by the cucumber-rails github page.

The only modification I’ve made with the created structure is adding a folder for the page objects, so the final structure is this:

As you can see, inside the pages folder there is a home page file, which is responsible for every action/assertion related to the home page.

Nothing new with the cucumber features, which keep having it’s standard style

Feature: Manage tasks
In order to manage my tasks,
a user
wants to create tasks in different categories

Scenario: Create a new task
Given I am in the Do Me home page
When I create an urgent and important task with description "my task"
Then I should see "my task" in the "Urgent and Important" section

However, in order to create our page object, we need to inject the test driver on it, which in Capybara’s case, is the session object.

Given /^I am in the home page$/ do
@home_page = HomePage.new(Capybara.current_session)
@home_page.visit
end

When /^I create an urgent and important task with description "([^"]*)"$/ do |task_description|
@home_page.fill_task_description(task_description)
@home_page.check_important
@home_page.check_urgent
@home_page.create_task
end

And from there is just the trouble of creating the page class (or do like me, who shamelessly copied the style from here).


class HomePage


URL = "/"

def initialize(session)
@session = session
end

def visit
@session.visit URL
end

def fill_task_description(description)
@session.fill_in("Description", :with => description)
end

def check_urgent
check("Urgent")
end

def check_important
check("Important")
end

def create_task
@session.click_button("Create Task")
end

And that’s pretty much it, now is just choosing your preferred driver and run the tests. As you can see, not much effort for a nice improvement.

Can I just throw it over the wall ?

February 15th, 2011 by franktrindade No comments »

One of the good things I’ve took from one of the recent projects I’ve been in was the way the handover of stories from Dev to QA was done.

I mean, the handover topic is something that Im usually asked about, and I’ve never had a decent answer for it, since in my experience it has always been something like this…

Is this story ready to Qa ? Well, I think so,  it must be !

However, in the project mentioned above, at some point we had lot of bugs. Not really serious ones that would make us worry about the quality of the code we were writing, but a great number of small and annoying things that showed us we weren’t being really careful when developing a story.

Most of the stories that we “delivered” (yeah, right…) came back with a considerable number of small fixes to be done. Needless to say, we were losing a lot of time reworking things that should have been caught before finishing it, and not getting much code across the line because of it.

So we had some discussions about the problem and what we came up with was an amazing… checklist.

If we, as developers, were being sloppy when finishing the stories, why didn’t we have a list of what we had to do before considering it ready ?

As you can see above, there is nothing incredible about it,  just the fact that it made us remember what to do, something that is a lot of times easier said than done. Looking at this simple list I can make sure I always test the story against all the browsers we support, as well as verifying that the acceptance criteria were really met.

Talking about acceptance criteria, another goodness that came with it and facilitated the whole process was having mind maps describing what QA’s were going to be testing in every story.

Having this information available and easy to understand was miles ahead from the traditional “I’m going to find bugs in your story” mentality that dominates some teams. As usual, cross-role collaboration was a huge win for productivity.

mindmap

Knowing what was going to be tested enabled developers to take a look at the story with different eyes, verifying if all cases were accounted for before actually handing it over. As expected, we delivered more.

Whatever you do, please don’t do both…

February 14th, 2011 by franktrindade 2 comments »

Study done in the Uk shows the average IQ drop people suffer when multitasking.

From Pragmatic Thinking and Learning, by Andy Hunt.

Which side to pick ?

December 13th, 2010 by franktrindade No comments »

What would you suggest should be done with a software development team where there is a significant difference in skill levels, let’s say up to 10x difference ?

Jason Yip shared this question he proposed to Takeshi Kawabe, who answered as follows:

Set the best performers as the standard. Pair people with the masters in a master-apprentice model. Find other suitable jobs for those without aptitude. Like professional baseball players, you need to practice every day to be a professional. Software development is a team activity an team are only strong as their weakest link.

Couldn’t agree more with it, but unfortunately is not the reality in most of the companies, that seem to be trying the opposite, setting an anti-productivity policy, which could be summarized as:

Set the worst performers as standard and create rules around everyone to avoid them making big mistakes. After that, just wait for the ones with aptitude to leave for a better place.

Lean Lego Game – The Video

November 23rd, 2010 by franktrindade 4 comments »

I’ve received this video from Daniel Culkier, who presented the Lean Lego Game for a group of people in Brazil. It’s definitely the best video we have so far from it, so it could be useful for people to get an idea.

For those who don’t know, the game is open source and we have a facilitation package to help people to present it. Feel free to ask for your copy!

Focus

November 21st, 2010 by franktrindade 3 comments »

I’ve been noticing lately that is getting harder and harder for me to keep my attention in the thing I’m doing with all the distractions around. Apart from already working on a purposely distractive environment (I feel a post coming on this subject soon…), I’ve been noticing some patterns in my behaviour that are just not working:

  • I check my emails, twitter updates and similar stuff just way too much.
  • My browser has always multiple tabs open, which always makes it tempting to move to the next tab when I’m working on it
  • IM and Skype clients are always on when my computer is on, which makes it easy to get interrupted, and also to start chatting with someone and forgetting about what I was doing. This was specially bad since I have friends/co-workers all around the world now, which means there is no time of day or night when I’m online that I won’t find someone wanting to have a chat : )
  • My to-do list management has just been going out of control

So the Twitterverse has pointed me to this eBook about why you should and how you could stay more focused in the activity you are doing. Since it was a current topic on my head (and also because the book is quite short), I’ve upgraded it in my reading list went through it in a couple of days.

If you have some time to spare and are also facing the same situation I would recommend reading it. If not because of the content (more on that in a bit), just because it will help convince you to take action on the problem instead of procrastinating, which was what I was doing.

The book itself (I’m talking about the free version here, didn’t read the premium one) starts by illustrating how difficult is to keep focused in the “Distraction Age” and does some reasoning around why is it important. I’m sure it’s nothing new, but it’s always good to read some old ideas again to see if they stick to your mind.

It follows with some suggestions and practices about how you can clear your distractions, simplify your work and stay focused. It’s a collection of simple ideas that might not be useful to everyone, but I’ve found that it gave me some good insights on how to change. I was specially surprised with the tools section, where the author list some software tools that can help you being more focused when working in your computer.

After the reading and with a refreshed mind, I’ve decided to move into action. Here’s what I will try to do in case you are curious or need some inspiration:

  • Not have my email open on the browser when my computer is on
  • Check my email only at specific times of the day (will try to start with 4x a day)
  • Whenever using the browser, have only one the minimum amount of tabs open with what’s needed for me to complete my current task
  • Close Adium and Skype whenever I’m doing something that doesn’t involve communicating
  • Use WriteRoom as a text editor to write my blog posts in a focused app (I guess it’s working, since I’m writing this one..)
  • Moved my to-do list to use a collection of SimpleNote apps for the iPad, Mac and Android, in order to use a simpler and cheaper set of tools (was using Remember The Milk before, which I didn’t have it on my phone or iPad)

Don’t want to be radical here, so it doesn’t meant that there won’t be times when I will be on my computer doing random things and just browsing the web or chatting with whoever it’s online. But hopefully when I’m doing something specific, I will be able to get more into it and being more successful in completing it.

Wish me luck!

Simple Planning

May 4th, 2010 by franktrindade 4 comments »

What is necessary when you need to plan the next sprint/iteration ?

The picture above is the result of a chat with Lasse in my current project, and it was enough to set the expectations for the two weeks of work we had to plan.

Each post it is a story and time goes from left to right. Stories that are in the same vertical line can be played at the same time, and that big pile on the right means that those stories are dependent on each other, but can still be played simultaneously if developers are careful and communicate enough with each other.

This wasn’t anything planned, but it was simple enough for what we needed, and since we were working in a distributed team, taking a picture and sending it around was they way we had to share it with everyone. Worked just fine : )

Lean Lego Game @ dtsato.com

November 2nd, 2009 by franktrindade 7 comments »

Since me and Danilo started presenting the Lean Lego game in 2008, a lot of people have been asking for information about how to run the workshop by themselves, in their companies, etc.. During this time, we have created a presenter pack, which we happily distribute to anyone who wants to use the material for non-commercial purposes.

To make this information more accessible and easy to find, we have created a page for the game, where you can find more information about it, and how to get in touch with us and get the material you need.

Here you go: Lean Lego Game

Enjoy!

Agiles 2009

October 18th, 2009 by franktrindade No comments »

I’ve been for the past two weeks in Brazil, and during this trip I’ve had the opportunity to participate in the 2nd Latin American Conference on Agile Methodologies, Agiles 2009, which was also being sponsored by ThougtWorks.

The conference itself was great, with a really good attendance (around 500 people), including students and professionals from different south-american countries and lots of good speakers, including Brian Merick and Diana Larsen.

I had a presentation on the first morning, titled “Is Agile The New Waterfall ?”, which tried to propose a discussion about how the (unfortunately) de facto way of agile adoption might influence negatively the future of the movement. Gladly, the presentation went really well, with a fully packed room, lots of questions and good feedback from the audience.

ThoughtWorks also used the opportunity to announce the opening of a brazilian office in Porto Alegre, which was done at the ending of a very well received keynote from Roy, which talked about the industry, his views on South America and also about the company and its purpose.

We had a great time overall, and the organizers should be congratulated for the effort of making this event possible, specially when all the people behind it were working as volunteers.

In case you are curious, you can find pictures from the event here.