Because we're organized like this, we carry almost no overhead. We only pay people if NXS is getting paid and this is another cost savings that we pass on to our customers. Our goal is that we always have enough projects going on that NXS can be like a full-time job for the developers if they want it to be. Or, if they want to take a break between projects, they are free to do that, as well.
Another innovation is that our main office is an IRC network. Our developers work from wherever they are the most productive. Especially in a city like Sao Paulo, known for being a commuting nightmare, this is a huge advantage for our teams. We also use video/audio teleconferencing when necessary. IRC offers advantages over traditional office settings. For example, no conversation is ever "lost" because two people are talking about it at the water cooler. Everybody can read the backlog to get caught up.
That said, we do have a physical hub in downtown San Francisco in the South of Market area for meetings with project owners. We also have a physical hub in Sao Paulo, Brazil. This deep relationship with an emerging "BRIC" economy is another innovation (at least, this trend gets talked about a lot in the business press lately).
During the project, usually I'm the technology manager and Natalie is the project manager. So, the customer has a local contact who they can talk to at any time. Most projects also have an engineering lead in Latin America. We start meeting on IRC around 7AM Pacific time every day to plan out what's going on, check in with each other, ask/answer questions, etc. Then, we all get to work and keep in touch via IRC. We have a general IRC channel and an IRC channel for each project.
As for technologies, we mostly run the development side of projects like an open source project. In addition to IRC, we also maintain mailing lists for each project for discussions that are appropriate for e-mail (we use Mailman for this). This makes sure everything is archived and if the customer later builds an internal development team, their incoming employees can get a verbatim record of everything that's happened. We use Bazaar as our versioning system.
We also use Trac which I've fallen in love with. Trac is useful because the customer can see everything that's happening via the timeline feature, we manage the dev roadmap/milestones here, all product and tech specs live in the wiki pages, it supports Bazaar so there's a full web-based interface to the code branches and there's built-in bug/task ticketing. We also have an IRC bot which reports changes on Trac in real-time to the project IRC channel. Unfortunately, Trac is still lacking internationalisation but it's coming - we're too busy right now to help out with that ;)
Where do your customers come from?
Currently, our customers are almost all from San Francisco or Los Angeles, which just reflects where the SF core team's relationships are based. However, we've noticed that more and more of our customers are geographically-dispersed themselves - for instance, we have a client with a person here in SF, their CEO is in New York City, and others spread out in other locations. A lot of potential customers we're talking to right now are more dispersed as more people find out about NXS. So, we're talking with a firm in Atlanta, a web design agency in Spain, an NGO in Belgium, etc. But, there is more than enough business here in San Francisco to keep us pretty busy for a while.
What are the advantages of using programmers based in Latin America? What are their particular strengths, both in terms of coding and otherwise? Any weaknesses?
One of the primary advantages is the time zone difference. Our developers are only 1-4 hours ahead of us so our work days are about the same. This is a big difference from working with India/Eastern Europe where they are always in "tomorrow" and it takes a lot of management effort to deal with that difference. For us, we're basically working with the East Coast and this is a big plus.