Q. How do you manage team members who work on the other side of the country, or in another country altogether?
A. My team includes a dev on the East Coast and one in New Zealand, so being mindful of time zone differences is a must. We have a strong eMail culture, and that eMail communication is supplemented by instant messaging software and message forum software. We also make use of home-grown issue tracking software to ensure that information is available when it is needed.
That said, I’m not sure I can offer much more in the way of advice on managing remote teams. Part of the reason that having a distributed dev team has been so problem-free is that I exclusively work with devs I worked with back when I had a corporate job, before I started Cogeian Systems. So, the team is pre-gelled from prior experience together and we already know each other’s working styles, strengths and weaknesses.
Once I’ve grown the company to the point that I need to start hiring devs from outside my own sphere of previous work experience, we’ll see how managing remote work goes then. I suspect there’s going to be a bit of a learning curve that I’ve managed to sidestep by stocking my dev team with former co-workers.
Q. Are you profitable? Are you able to pay yourself a salary? How long did it take?
A. Yes and yes. Despite the obvious scaling issues, consulting margins are pretty good. I was able to pay myself right away when I started consulting, but what I was paying myself stank because work was scarce at first. It took almost 2 years before I had built up enough of a client base to pay myself the same amount I was earning when I was a corporate employee. Now I’m able to take home a salary that is some multiple of the salary I received as a corporate employee.
Q. How do you keep up with the latest technology?
A. I don’t. At least, I don’t keep up with the latest technology just because it happens to be the latest. I learn new technologies when my business needs (or the business needs of my clients) dictate that learning something new is needed. For example, I’m having fun with ASP.NET 2.0 right now. But, I think that expending the kind of energy it takes to keep up on technology for technology’s sake is silly.
I think a lot of devs lose a lot of traction by trying to stay on the bleeding edge of the ever-changing tech landscape. If you’re serving business customers, they don’t care what technology you’re using so long as you solve their problem. If a new technology presents an opportunity to profitably provide a better solution, learn it and use it. If it doesn’t, don’t. I’ve never felt the need to be the most up-to-date coder in the room; I just want to be the best problem-solver in the room, and problem-solving is a platform-independent ability.