Understanding Web Development Resources

March 10, 2010

You have a great new idea.  It’s a Web site or a product or some technology that can become the foundation of other solutions.  What kind of team do you need?

Outsourcing removed the interview process from setting up your team.  For many start-ups, that change normalized the resource pool as many outsource providers simply assign a team to the project.  In reality, there is a big difference between a developer who knows how to build an online Web store versus someone who can make Twitter scale or conceive of Ruby on Rails.

Let us help explain the difference between these types of resources.  First, we need a pyramid!

Companies have different levels or terms for engineers.  Here’s how I define them:

Web developer — A Web developer is good at creating sophisticated Web sites that have limited back end functionality.  His tools of choice are HTML/CSS/Javascript or Flash.  He loves walks in the park and open source CMS’s.

Software engineer — Software engineers are comfortable building more complex functionality that includes objects and business logic.  Ruby on Rails is the language Du jour for the hip and trendy alternative scene.  PHP is the blue collar worker’s hammer.  Java is the choice of old school guys who think the country has gone to the dogs.

Software developer — We don’t use objects, we are objects.  Pearl Jam is the new Grateful Dead.  If you haven’t modified a Unix kernal or developed in native C, then you are a poser!

Software architect — The architect is smarter than most of us, and you should avoid the ones who know it.  He spends his weekends looking for quasars or trying to eliminate a contradictory systemic anomaly from what is otherwise a harmony of mathematical precision.

For most of your projects, your team will likely be a collection of software engineers and web developers.  The more complex the project, the more you will need developers or possibly a seasoned architect.  The pay scale rises with qualifications obviously so we tend to look for one or two smart senior guys and then back fill with a cost effective pool of highly motivated individuals.

We took a look at our some of our projects from last year and charted them against the pyramid.

Understanding the type of project you have will help when selecting your team*:

Website or application – A Web site project in this case is a project that is mostly user interface with either little or standard back end functionality.  The site might have e-commerce, user sign-ups and dynamic content.  Back end functionality is supported by existing open source tools or by integration with other sites.

Product – Product development generally includes sophisticated back end functionality along with more complex interfaces.  The project often is based on some “secret sauce” that is protected IP, under a patent or otherwise considered a market differentiator.

Framework or foundation – Framework or foundation projects are projects that create technology upon which other solutions are created.

We’re product developers and like to produce complete solutions for our clients.  Framework projects are fun and challenging though there are simply less of them.  Of course, we love a good Web site project as well.  It’s just that they tend to be shorter and require more customization work than software engineering.

Next time you start up your a new project, it might help to classify the effort within this pyramid.  You can use the classification to define what type of engineers you should be asking for.

* A complete discussion of resources should include specialists and other disciplines including designer, tester, project manager and so forth.  I am working on a follow up post to help that aspect of your resource planning.


Collaboration Tips for Near Shore Development

March 11, 2009

Near shore development has a major advantage over outsourcing to locations around the globe for US companies.  The advantage is that all parties work in relatively the same time zone.  Teams collaborate more frequently because everyone works the same hours as opposed to being hindered by 24 hour communication delays.

GlobeLet me illustrate the point more clearly with a simple picture.  Look at the globe to your left.  You see North America where  Open Mountain is located and you see Latin America where our near shore partner Avantica is located in Costa Rica.  Now let me ask you, what countries are NOT visible? When it comes to real-time collaboration, countries that see the sun at the same time are at work at the same time, which means that issues can be discussed when they need to be and without delay.

In my posts about my experiences working with Avantica, I talk about collaboration a lot, but I don’t really define where it helps.  Nor do I provide any guidance on what we do based on years of near shore development experience.  Here are a few areas where we collaborate along with tips for enhancing the experience:

Product definition

The first step in the software process is to define what we’re building.  Product owners define requirements.  Interface designers provide graphics and work flows.  Everyone works together on user stories and functional specifications.  Our experience is that it helps to push the various parties to think through as much of the details as possible before we  start coding.  This ensures the engineers are working on valuable functionality and reduces the risk of re-work or of missing important aspects of a feature.

We find the best way to collaboratively manage product definition is through online document tools such as Google docs or Zoho.  Everyone references the same user stories, which is important for keeping everyone aligned.  The team avoids issues that come from developers reading an earlier version of a specification they saved on their desktop.  When we review documents in meetings, we see changes being made real-time and that validates we all have the same understanding of the decisions.

Tip: Use Google sites or some other online Wiki tool to collect information in addition to online document tools.  Some documents will come from designers using desktop tools like PhotoShop and FireWorks.  You will need a central location to store all your product documentation and an online Wiki serves as a functional central repository.  For the documents that are created online, you can embed a link to those in the Wiki.

Tip: If you are the project manager or SCRUM master, you should periodically save important information locally.  Online documents are easily changed by others and not all providers support tracking changes.

Project Management

Managers must know what each team member is working on and how long that work is taking to see how well the team is tracking to schedule or the burn down.  Tracking is harder to do when everyone is not working in the same building.  Project management software such as Rally Software or Version One enable teams to collaboratively track progress in a central location that everyone sees.  These tools support Agile processes well and enable all team members to contribute status updates in an organized fashion.  Basecamp and Zoho offer good general tools for project management as well.  Our teams find that making updates part of the process keeps everyone well informed  and allows management to see what areas need attention.

Tip: Track bugs in the same tool you use to manage projects.  In the beginning of a development cycle, features drive the work.  But at the end of a cycle, it’s all about bug management.  Using the same tool for both gives you oversight for the entire life of the project and also encourages developers to communicate bugs during development using a familiar process.

Team SCRUM

Our development teams tend to meet 3 times a week.  True Agile development zealots will tell you that you should meet every day if only for 15 minutes.  Either way, nothing beats regular discussion for managing a project.  Near shore makes this more possible. Far shore teams tend to limit meetings to once a week, which then turns the meeting into a status report, or they meet more regularly by extending the working day for the US team members.  We recommend meeting with Skype at least 3 times a week to allow the team to ask questions and reveal what they are working on.  In fact, if you achieve this, you will find all your other collaborative efforts are enhanced and supported by these regular discussions.

Tip: Use a low cost screen sharing product such as Acrobat ConnectNow or GoToMeeting to encourage code walk-throughs and interface reviews.  Start the Web conference each meeting so that if an engineer has an inkling to share, he can do it right then and there.  Imagine that, working with an outsource team and yet still talking to the engineers on a regular basis and still having the opportunity to review code.

Leads Meetings

Discussions with the team lead remind me of those back room discussions from political arenas.  You know, the meetings where all the real decisions are made.  That’s not really the case with software development, but often critical issues can be effectively resolved with a quick meeting of the key minds.  Some managers set up a regular time each week for this.  If that works for you, great.  We save leads discussions for escalation.  Leaving them off the schedule means they happen only when they need to and that makes sense since issues should in general be discussed openly with the entire team.

Tip: Use video with lead discussions to enhance communication.  Facial expressions and visual cues are extremely helpful when reviewing difficult issues.  Plus, when your lead delivers a snarky response, it helps to see if he is genuinely not happy or just yanking your chain.  Believe me, both happen although some leads aren’t as funny as they think they are (sorry guys).  Skype with video on a MacBook is awesome for this.   There is no setup and starting the video is as simple as clicking an icon.  Below is a chat from just this morning where we reviewed a few last minute changes to our release.

Video tip: When you speak, look at the green dot on your computer and not at the video of your lead.  This is like looking at the camera, and not the monitor, when you are on TV.

collab

Thanks Christian (guy in the larger image) for letting me (guy in the baseball cap) post your picture!


Near Shore Development Enhanced by Travel to Exotic Lands

March 6, 2009

We recently returned from another trip to visit our development partner Avantica Technologies in San Jose, Costa Rica. The trip was fantastic as was meeting with our teams to discuss what went well, what they liked about the products they worked on and what could be improved.

The picture below shows our CTO Tom Johnson meeting with the Avantica team that we have working with us on the solution for our client Brightstorm. I actually know all these engineers from a previous project, my last role as a company VP, and specifically requested them to work with Open Mountain.

blog-team-photo

We tell all of our clients they should plan at least one visit because meeting directly with the team enhances the understanding of the work and leads to a better unified solution. Ironically, clients take that part almost for granted and often ask us about the country and what we have seen. So far we have enjoyed the active volcano at Arenal, the wildlife of the Monteverde reserve and the warm beaches of Tamarindo (pictured below) among other places. But there is still more of the country we would like to see.

blog-photo-beach

I have to admit that I didn’t start down this path of near shore development to see an exotic land. I just happened to have a long time friendship and rewarding working relationship with someone from Costa Rica. Mario Chaves, Avantica’s CEO, and I worked together at many different companies and even went to the same college although we graduated different years.

The first time I worked with engineers from Avantica was at a small startup in the advertising space about 10 years ago. The lead was an engineer named Henry who is currently the Director of Development at Avantica. Henry is as smart as they come. I went to San Jose once to meet with him and the team. We spent the entire day collaborating on different aspects of the product.

I knew then that Henry and the team were up to speed on the latest technologies and as capable as teams I had worked with in the US. I could describe a problem and know by their questions and solutions that they understood the essence of the problem. That to me is the difference between true collaborative development and remote outsourcing. I want my team to have a stake in the product, to understand what problem we are solving, because that will drive the best result.

This last trip, as always, I stopped in to see my friend Henry. He was playing with a new Google Android phone and we caught up a bit. Henry is in the picture below along with some of the others we have worked with at Avantica.

blog-company-photo

Had I not had that first positive experience, I might not have centered Open Mountain around near shore development. I had high expectations based on my experiences as a US developer. Software developers work fast. We like to throw our ideas and brain storm. Some of the best product ideas come from engineers discussing a problem and shooting off on a tangent. This type of collaboration happened on my first trip to Costa Rica and has become a repeatable experience throughout the years working with the teams of Avantica.

I go back again and again to the country for the purpose of direct team interactions. But I’d be lying if I didn’t say that I also go to see one of the most beautiful countries in the world. After all, who would you rather be? The person reading this blog or someone in the photo below? How about both? Cheers!

blog-photo-sunset

Click the photo so see more pictures from our trip!