Archive

Uncategorized

More than few years ago I’ve read the book Agile Modeling, by Scott Ambler, and it was quite a revelation for me. I was beginning to look into extreme programming and TDD at the time, and the fact that you could (and should) write software in an evolving manner instead of the usual big architecture up front that I had studied in university was quite refreshing and empowering.

(as a side note, I actually was going to use the title Agile infrastructure for this, but I’ve promised I’m not to use the word anymore)

Not sure how many people have read the book, but it basically goes through principles and techniques that enable you to write software one piece at a time, solving the problem at hand today, and worrying about tomorrow’s one tomorrow.

If I remember correctly, there was a sentence that went something like this (please don’t quote me on that):

Your first responsibility is to make the code work for the problem you are solving now. The second one is the problem you are solving next.

Many years have passed since the book has been written. Nowadays growing software while developing is what (almost) everyone is doing. The idea of drawing some kind of detailed architecture that will be implemented in a few months or years is completely foreign in most sensible organisations.

Basically, evolving software is almost not interesting anymore. People do it, and know how to do it (as I wrote this I’ve realised it isn’t actually true, a lot of companies don’t do it or know how to, but let’s keep in mind the ones that do…).

In the meantime, a lot has evolved and new areas that were completely static in the past are becoming increasingly dynamic, the current trendy one being IT infrastructure.

The uprise of virtual infrastructure and the so called devops movement have developed tools and practices that make it possible to create thousands of instances on demand and automatically deploy packages whenever and wherever you want. However the thinking behind infrastructure within most IT departments is the equivalent of waterfall for software.

I’m not just talking about auto-scaling here, since that seems to be a concept that’s easy to grasp. What I don’t quite get is why the same thinking that we have when writing software can’t be applied when creating the servers that will run it.

In other words:

  1. Start writing your application in one process, one server*, and put it live to a few users.
  2. Try to increase the number of users until you hit a performance bottleneck
  3. Solve the problem by making it better. Maybe multiple processes? Maybe more servers? Maybe you need some kind of service that will scale separately from the main app?
  4. Repeat until you get to the next bottleneck

* ok, two for redundancy…

The tools and practices are definitely there. We can automate every part of the deployment process, we can test it to make sure it’s working and we can refactor without breaking everything. However, there are a few common themes that come back when talking about this idea:

“If we do something like this we will do things too quickly and create low quality infrastructure”

This is the equivalent of “if we don’t write an UML diagram, how do we know what we are building?” argument that used to happen when evolving software was still mystery to most people. It’s easy to misunderstand simplicity as low quality, but that doesn’t need to (and shouldn’t) be the case. As with application code, once you put complexity in, is a major pain to take it out, and unnecessary complexity just increases the chance for problems. Simple solutions are and will always be more reliable and robust.

“We have lots of users so we know what we need in terms of performance”

If a new software project is being developed, it is pretty much understood nowadays that nobody knows what is going to happen and how it is going to evolve over time. So pretending that we know it in infrastructure land is just a pipe dream in my opinion.

“We have SLA’s to comply to”

SLA’s are the IT infrastructure equivalent of software regulations and certifications, sometimes useful, sometimes just a something we can use to justify spending money. If there are SLA’s, deal with it, but still in the simplest possible way. If you need 99.9% uptime, then provide 99.9% uptime, but don’t do that and also use a CDN to make things faster (or cooler) just in case.

As it’s said about test code, infrastructure code is code. Treat it the same way.

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!

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!

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.

Lego houses

Last month me and Danilo presented an extended version of the Lego Lean Game at XP2009 in Sardinia, Italy.

This was the first time we tried this version, and it can be considered a success, with good feedback and some people asking information to run the workshop within their companies/classes.

You can find more information about how it went on this post Danilo wrote, and the slides are also available here (if you like to see how it went, pics are here). As he said, we prepared a package with all the material needed to run the workshop, so feel free to ask us for it if you have participated and are interested in doing it : )

For the Brazilian crowd (or anyone who wants to be part of it), between the 25th and 26th of April will take place in Porto Alegre (my home town : ) ), the 2009 Agile Weekend, which has my friend Daniel Wildt as part of the organizing team.

This will be hopefully the first of many Agile conferences happening in South Brazil, and will serve to boost even more Agile adoption in the region.

portoalegreagileweekend2009_banner_468x60

Needless to say, I really wanted to go, but London is not close enough to Brazil yet…

Throughout our lives, we study and practice the skill we find useful for an incredible amount of time, expecting to be ready when the moment comes that we have to use them.

Despite still agreeing with the practice/study paradigm, I’m starting to notice that knowing everything is not the best solution in all the situations. This thought came to my mind again when reading a recent article in the Sport magazine, about which conditions made possible to the British cycling team to win so many medals in the last Olympic Games (if you want to know more about it, you can read it here).

What caught my attention was the description of the research and development group, responsible to discover the best technologies to be used in the cycling competition. The group actually collaborates with many people outside the cycling industry, like F1 teams, and aerospace and defense companies. When asked to explain why, the head of development answered:

We really value ignorance. So we got to ask people who really know nothing about cycling. An aerodynamicist will ask: ‘Why do you do it like that?’ We’ll look at each other and say: ‘I don’t know.’ That really opens things up

This is also described by Richard S. Wurman, in his book Information Anxiety, where he describes common problems in understanding, citing the expert opinion syndrome:

We tend to believe that the more expert opinions we get, the more informed we will be. But we tend to forget that expert opinion is by no means synonymous with objective opinion. Unfortunately, most experts come with a bias that makes obtaining truly objective information almost impossible.

And when it comes to software development, this situation can be easily seen in coaching, either externally or internally. It is not rare to see coaching being done with a biased opinion, where coaches arrive with a ready-made solution that they want to apply, despite the conditions being face by the team.

Solving problems, complicated or not, has to be done with a clear mind. We have to assume our ignorance when facing any new situation, so we can understand it better and provide the best solution.

As a huge fan of  the “The Wire” series, as I always wondering how the Baltimore police  and its homicide department could be so bad. How could they have so many problems when trying to solve the crimes in the city?

Guess what, when watching one episode of the 5th season, I finally realized the source from all their problems, as the next picture shows…

bunk

They use Lotus Notes!

After that, is no wonder that the crime rate is so high….

Deviating a little bit from the agile topics, Im writing this post to tell a little story about my relationship with a certain british bank, and how well they use IT for the client’s benefit.

I dont want to tell the bank’s name, because the purpose is not to create bad advertising or something like that, so for the moment I will just call this institution the bank of the citi.

So, beginning the story, last month I was surprised by having been charged interests in my credit card bill, despite having the feeling that I had payed in the right day. I sent my bank a message, which was replied:

our payment due date was 27th October 2008 and your payment was made on the 29th October 2008. Because the payment was late you have been charged the late fee and the interest.

Ok, but I still thought I’d payed in the right day, so I checked my account info and verified it. Second message to the bank of the citi:

my account info show the transaction was made on the 27th.

27/10 TRANSFER 538813

Why it is just considered in the 29th?

And then comes the surprise (in form of a reply):

When making a debit card payment to your credit card the timescales are up to two working days for it to clear onto your account.
If you require anything else please don’t hesitate to contact me again.

Then I thought: What?? And kept trying to understand how possibly it could take 2 working days to transfer some money electronically to the same bank.

Since I was in a good mood and the attendant had offered me his help, I decided to send another message:

I think the only question I have is how come it takes 2 days to do an electronic transfer, but probably it won’t solve my problem.

And here comes the answer:

It takes two working days for a debit card payment to clear onto accounts as it has to go through clearing and then be allocated to the correct account.

Oh, now I understand… It’s not a simple operation, like transfer the money. You actually have to subtract the money from one account, clear it (whatever this means), and then transfer it to the other one.

For some days after this whole conversation occurred, I tried to think how someone managed to build some software that needs 2 working days to perform one operation.

I thought that maybe there’s one batch job that gets the money from my account (which runs at midnight at D+1) and another one that gets this money and adds it to the other account (midnight at D+2), or  both operations happen at D+1, but then they need 24 hours to verify if the transaction was correctly performed, or there’s actually a person that goes to the safe where my account is, counts the money, and then goes to some other building where the bank account is, opens the safe and stores the money there… actually, no, this would be much faster than 2 days.

Follow

Get every new post delivered to your Inbox.

Join 836 other followers