Engineers Discuss Philosophy, But Only Late Nights in Skype

July 27, 2008

It’s 9 pm at night and I am chatting with my Ruby on Rails architect in Argentina who is working late to prepare a demo server. I know just how late it is in Buenos Aires because I have multiple world clocks set up on my iGoogle home page.

One of the things I like most about near shore development is getting to know people all around the world. This month, I have projects with team members in Argentina, Peru and Costa Rica. As a person interested in both technology and the world, I am grateful to have found a way to combine them both. And by the way, I am showing it is 1 AM in Argentina and the guy is still going. What a rock star!

While I wait to look things over, I am playing poker in facebook, perusing contacts in LinkedIn for business where I just requested to join the Intuit Alumni group, and started a download of the first season of Lost into my iPhone for my upcoming trip to see my sister in NY.

My engineer wants an iPhone. I tell him the quality is not so good but we agree the device is cool anyways. Then he introduces me to the Jawbone Blue-tooth borg ear phone and the video alone convinces me I need to have it too. Turn about is fair trade so I point him to thinkgeek.com and the 2 Gig USB drive watch I bought the other week for $30. Looking around my desk, in addition to the multitude of computers, I observe a sea of thumb drives, USB hubs, think geek devices, and wonder if maybe I should admit I have a problem.

I decide I need a new movie for my trip and buy Cloverfield instead.

While he’s waiting for a job to finish, we discuss github which he wants to use for source code control. I am open to considering this. So he sends me a YouTube link to listen to Linus Torvalds discuss his creation. We like the idea of combining EngineYard, github and RallyDev (we’re not exactly in agreement on this last one so he tries to persuade me to look at Lighthouse) in one suite of Software as a Service tools for managing a project. This seems like a very effective approach to me. I agree to look at it later.

In case you are not keeping track, the technologies and related topics we have hit in just the last 30 minutes of our Skype session include: Ruby on Rails, iGoogle, facebook, LinkedIn, Blue-tooth, Jawbone, Apple, iTunes, iPhone, USB, Intuit, YouTube, Linus Torvalds, EngineYard, github, RallyDev, SaaS, Lighthouse, and Skype

I have two minds about this (I am a gemini after all): first, this is really fun to be in the middle of such a dynamic, evolving and exploratory industry; second, how can we all possibly stay up on everything that is happening in all this industry???

I guess the answer lies in late night Skype sessions waiting for builds. But I know in the next week, a client or prospect will ask me about the latest JDK, virtualization, cloud computing, Ning, something like that, and I will be back again Googling the Web trying to keep up on the latest trends and changes. That is what I think defines a geek. Not if you do this, but do you enjoy it?

After finishing this post, we had a really funny exchange in Skype I thought to add. It really captures the essence of my point this evening:

ARCHITECT
java isn’t full oo language
you allways fall on the primitives
and all oo goes to the hell
with generics java adds some dynamic
but still you need to write to much code

ME
Yes. If you get just wood, you really need a good architect to build a good house

ARCHITECT
yes, but, you cannot build a house of ice at africa

ME
Now THAT is funny.


Agile Development Is Worth It

July 10, 2008

We moved to more of an agile mode of software development a year ago. We noticed some significant advantages, but also some pitfalls. In the end, the change the was the right decision for us and hopefully you will see why after you read about our observations.

I had a really good reason for being hesitant to adopt Agile development. This process is always brought up to me when I must explain that delivering X,Y and Z in the product will take some period of time like 3 months instead of 3 weeks. The product manager/senior exec person in front of me inevitably asks the question:

“Why can’t we do iterative development?”

Iterative development to them represents a way to go faster. The implication is that if we changed the way we managed development, the team could code faster. Iterations are definitely faster than releases in the waterfall sense. You can of course release more often. However, I have a hard time believing that changing the way you develop can’t change the fact that the coding and testing of X, Y and Z takes time. Like it or not, coding is physics and the time to do the actual work is what it is no matter how you slice it.

I throw out the usually compromises of course. Can I have more people? No. Can we cut something else? No. We’re already working more hours. Check. So given the same amount of people and no changes in the functionality, X,Y and Z can’t be done in 3 weeks.

I sat down with my good friend, Steve Greene, an industry veteran and the champion of Agile at Salesforce.com, and explained my delima. I asked him if I was wrong. If I move to iterations, can I compress 3 months of development time into a much, much shorter period of time?

Steve’s answer was definitely reassuring. The reality is, moving to Agile is not about going faster, but about going better. My response to the product manager/senior exec should be we can achieve more flxibility in releases. This allows us to be more responsive to customers. But no, Agile can not provide a unified theory for physics and code development.

Steve continued and of course I am paraphrasing what I heard versus what he may have actually said over the course of a lunch :) You are right, Bob. Completing all of X, Y and Z takes the same time* whether you use waterfall or Agile. But what you do get is**:

1) More predictability in your development – Checking in every month is better than waiting 3. Developers make a mental shift. They no longer get X merely to 80% knowing they can finish up during the mad dash bug fixing in the end. They get to 100% in month 1. There is a better focus on completion.

2) Better quality in your result – Waiting to the end to do quality increases the complexity of quality issues. Stabilizing X, then Y, then Z is easier then stabilizing X,Y and Z as a group.

3) Better flexibility in releases – We all know how expensive it is to be ramping on Y, and then find out we need W. Product teams fight hard to get W in because waiting for the next 3 month cycle for W puts the release of W out 5 to 6 months. With Agile, W can be slipped in and released, and that only pushes something else out a month.

In case you have any doubts about the benefit, I refer you to a presentation by Steve and others in his group at Salesforce.com about how releases are more frequent, customers are happy, and the development organization is not floundering under their own success. The most important part of this presentation, to me anyways, starts at slide 31 which simply states, “How’d we do it?”. I have already purchased this book on Agile development by guru Ken Schwaber. I am creating my product backlog in Google docs this weekend.

Back to my original topic, the key to a successful rollout of Agile development must include setting appropriate expectations with your product manager/senior exec stakeholders. They won’t get everything the want in month 1. But perhaps that desire comes from the fact that they don’t see anything until month 3. And worse, if they want anything else they have to wait to month 4 even to discuss it. With Agile, each month is a new day!

* Steve made the point that Agile is a bit more efficient than waterfall so really you might get X, Y and Z in 2.5 months with Agile versus 3 months with waterfall. This made sense to me.

** I did not list better product as one of the benefits simply because I doubt anyone would debate this. More collaboration within product teams and more interaction with customers will of course lead to a better product. That said, there is no reason why that can’t also be part of the waterfall process which is something I will discuss in a future post.


Costa Rica Technology Conference Is Excellent

July 5, 2008

Software development is thriving in Costa Rica, so much so that their annual technology conference is definitely worth attending. Let me tell you about my experiences this year so you can understand why I feel this way.

I intended the international technology conference Costa Rica Insight 2008 this year. The conference is sponsored by the Costa Rican government agency Procomer which helps to bridge gaps between Costa Rica and technology companies around the world.

This was an amazing experience! Speakers from Costa Rica, the US and other countries shared information about the world landscape, technology and commerce. Many countries that attended were definitely on pace with US technology adoption rates. The Internet revolution is truly a global movement (maybe no big surprise there).

Costa Rica has become a tipping point for companies wishing to interact with Central and South America. I can corroborate this through my own experience. A few years ago, I would have to talk about the government and educational system of Costa Rica as part of closing a deal that used near shore engineering resources. Now, this is no longer the case, thanks in part to pieces like this that explain the benefits of near sourcing. Many companies I spoke with plan to expand first into Costa Rica and then look to Costa Ricans to help guide movement to other countries.

Some of my favorite personal experiences:

  • Discussing mobile e-learning with a company from Columbia that demoed mobile content and a mobile LMS.
  • Brainstorming with an Indian CEO about open source platforms and Software-as-a-Service businesses.
  • Speaking with a Mexican company about cost effective out-sourced co-location.
  • Seeing a friend from Costa Rica who is building a very similar practice as mine but focused on his native country of Spain.
  • Discussing multiple topics with representatives from the Jamaican government about what works for expanding in Jamaica.

There is so much to share and learn from a conference like this that it is hard to draw a finite set of lessons or conclusions. If I had too…

Near shore and off shore companies are technologically astute and therefore a viable choice to expand operations in a cost effective manor. You can reasonably expect to find knowledge and experience with the teams you hire. Experience is key to successful out-sourced development.

Market opportunities exist in many countries throughout the world. For example, personal finance online services in the US may be saturated but perhaps not so much in say Argentina. Similarly, much of the Software-as-a-Service market in the US is wide open to companies that are nimble and can find good local subject matter experts.

And most importantly, as with so many other aspects of life, thinking, working and collaborating with a global perspective is eye-opening to say the least and exciting to say the most.

I have created photo albums in facebook to share my experiences with all of you. I took a few images from the conference, of the beautiful country, and of my weekend get-a-way to Arenal to see an active volcano.

For myself, I actually attended as a speaker talking about Software-as-a-Service. I created an online version of my presentation. Please excuse the voice over as I was trying to keep the time down. I will add an online video of my talk when one becomes available.

I recommend a trip to Costa Rica in any event. It’s a beautiful country filled with interesting people. Best of all, you can learn a lot about the global technology movement if you plan your trip around this conference.