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.

Friday, January 13, 2012

Hiring Great Engineers

How do you hire great engineers in this competitive market?

1. I look for people who have special skills (Lisp, F#, Popcorn, etc.) which have not yet become mainstream. That shows a person is passionate about what he does and experiments with new technologies. The best way to find people is through your network on LinkedIn or direct references.

2. Good people don't want to just be paid well. They also work on an innovative product, learn along the way, and see their work used by millions of users.
There's a good reason why A-players come to work for A-players, and B-players hire B and C players.

3. The work environment needs to be fun.
Nobody wants to work in a cubicle farm. Writing great code is not akin to typing. It takes creativity and inspiration. Most of it happens outside of the work environment. So the companies which evaluate people based on the number of hours they keep will never attract good ones.
The first thing I did for our office is get a foosball table.

4. Be genuine.
Many companies try to 'sell the company' to candidates. People can easily see through B.S. Tell your personal story about how you joined a company. What are its +s and what are the -s.

5. Always ask engineers to write code, and ask obvious questions.
A good way to understand if a software engineer knows his stuff is to ask obvious questions 'ad infinitum'.

Let's say you ask a person to implement Fibonacci sequence algorithm to compute 1,1,2,3,5,8,13,21,etc.

The obvious way is to use recursion (70% of candidates don't get even this, so they are out).
int fib(int n) {
if (n == 0 || n == 1)
return 1;
return fib(n-1)+fib(n-2);

But what are the drawbacks to recursion? About 15% of candidates know that the stack grows and can overflow if n is too large. They suggest to implement an iterative solution.
By the time, you start asking questions about assembly language and about why the stack grows, only 1-2% of candidates remain. And you should hire them.

6. Conferences
Going to Tech conferences on specific subjects (scaling, mongodb, etc.) or even better presenting at them is a good way to find engineering talent. If a person preferred to spend his weekend listening to tips on sharding, he'll be a good catch.

7. Look for engineers, who can be a co-founder of a startup at any point.
A good manager will not be afraid to lose his employees. Instead, he will cultivate them to become better technologists. 3 engineers in Cinchcast team have been CTOs in the past but prefer to work with us, because they learn new things every day.

In the end, hiring is not easy, and there's no silver bullet. But the difference between losers and winners is that losers don't fail enough. Keep trying!

And by the way we're hiring great engineering talent at Cinchcast.
You can email me at: