What Programming Language Should I Use to Build a Startup?

Often entrepreneurs ask me 'What technology should I build my startup on?' There is no right or wrong answer to this question. It's a decision every company makes for itself, depending on what it's trying to build and the skills of its cofounders. Nonetheless, there are a few rules that one should adhere to. We discuss them in this blog post.

Incident Response Policy

What happens in your company when a production incident occurs? Usually in a typical startup, you will see engineers running around frantically trying to resolve the problem. However, as soon as the incident is resolved, they forget about it and go back to their usual business. A good incident response policy can help bring order into chaos. We provide a sample template in this blog post.

Why Software Deadlines Never Make Sense

We discuss why software deadlines usually don't make sense.

Analyzing Front-End Performance With Just a Browser

We discuss a number of freely available online tools which can be used to analyze bottlenecks in your website.

Why Smaller Businesses Can't Ignore Security and How They Can Achieve It On a Budget

In this article, we show that security is both important and achievable for smaller companies without breaking a bank.

Wednesday, March 27, 2013

Self-organization and 'swarming developers'

At Cinchcast Tech, we spend a lot of time thinking about how to improve our development processes. One adjustment that our Director of PMO extraordinnaire Dan Alcalde have made to our scrum process is to use 'swarming'.

In swarming, a group aggregates together working on a same task,  just like a swarm of birds migrates in a particular direction.   For bigger tasks, instead of assigning the task to an individual developer, we have an entire team work on it. These big tasks can often be broken into smaller pieces. Also, a definition of Done for large tasks can be fairly extensive -- not only does the code need to be written, but documentation needs to be presented, unit tests developed, and demos given to stakeholders. In the past, when a single developer worked on a large feature during a sprint, he'd run out of time and skim on unit tests on documentation. By having an entire team develop a feature, each member of a team can keep the other member in check,  do pair programming, and share the architectural knowledge.

The other technique we use is 'self-organizing teams', where teams form on an ad-hoc basis. Instead of assigning specific tasks to individual developers, we let each developer choose which task he wants to work on.   When a developer finishes his tasks, he is free to select more tasks to work on (although nobody forces him to do so).  Peer pressure enforces people to keep up with their team mates, and everybody knows how much everyone delivers.

To be fair, swarming mostly works for large tasks.
1. There needs to be a clear definition of Done that everyone adheres to
2. The user story needs to be complex enough.

For smaller tasks, we continue assigning them to individual developers and not being overly strict about when a task is considered Done.

Team Building and a Scavenger Hunt

If you count the number of hours you spend at work, talking about work, thinking about work, and decompressing after work - it probably adds up to 75% of your life.  A key focus for me as a CTO is to make sure that people enjoy the work environment (and hence become more productive). Another key focus is - as the Cinchcast Tech team grows - to improve communication between various groups comprising it (IT, Engineering, QA, Telephony, Design, Product, HelpDesk).

We decided that it would be a good idea to get the Tech team out of the office into a casual environment, where the main focus was to have fun. So earlier today we took to the streets in a photo scavenger hunt ( . The team had to run through the New York city, looking for clues, and following the directions.  It was a friendly competition, where creativity and good team-work mattered. In the end, everyone felt they built better bonds with their coworkers, which will make everyone more efficient.

Pictures (cross-posted from our Tech blog