The startup checklist for developer's interviews

As a foreword, I'd say when candidating for a job interview for a startup be more aware of the risk you are taking:
- cash flow is not yet existing so you take the risk of not being paid or being fired;
- if the product is innovative by nature ... you are not sure you will make it work.

The tarpit of the startups


I have had not very much luck with my job interviews these last weeks, so I resorted to startup. Well, startup interviews are quite different than normal job interviews, a developer must also interview the startup to assess the risk he takes.

Job description

Most startups wants a developer. When you hear them, everything is done, they just need more manpower with polyvalent sets of skills. The truth is the more impressive a job description is, the more problems you will have. That is the reason why I usually get pretty inquisitive and make the founders spill the beans about what are the remaining problems. Usually, only some little details are missing; they have made a prototype that works and only  need some industrialization.

Evil lies in the details

Never ever believe a startuper saying it is 95% done you'll only have to work on the remaining 5%.

As funny as it seems, the little details are often big details. Since I have NDAs to respect, I cannot say how laughable the 95% claim often is.

Let's sum up by saying the 5 remaining percent of the job are just 5 huge percent. Like computing a NP complex problem in a polynomial time. Or having software with real time constraint distributed amongst more than one computer and OS that are no real time OS with constraint from less than .1s using UDP protocols tunneled in TCP on any networks.

Just think of any problems for which -seasoned developers- know we have no the solutions and stuff it with a lot of other problems in the remaining 5%.

I dare say that solving a high bandwidth low latency multi host real time robust distributed signal processing with no R&D team, no budget in less than 9 months is a 1% detail on a startup scale.

Evil also lies in deadlines and wages

I have no problems trying to be smarter than the average. I have a problem in trying to solve a problem that more than one brilliant team bit their teeth on. Not that I am modest. Modesty is not my first value. I am pretty arrogant. But, when there is no state of the art for a given problem, given no hard data to analyse I pretty much chicken out given a deadline, because as far as I am concerned either my knowledge is outdated (which means I will fail) or I am right on the fact that a problem is a tricky one that requires Research and Development or is an absolute un-achievable problem of computer science.

When, you decide to be a developer for a team that has a deadline, no funding and no ideas what they face and that their are entering the realm of research you are scared.

The nature of research is you don't know how to solve a problem, and as long as you have not studied with hard enough data and theory you have a hard time
-  knowing if it is possible to deliver;
- and when!

While researching you may discover that your company is doomed!

So, adding a stressful situation to low wages (usually we are talking of 40k$/year) it is quite  unfair: you feel like atlas having to wear on your shoulder the weight of the world and having a peanut as an incentive.

Why not be rock'n roll and take a risk? 


Would you bet on you alone against some of  the most brilliant teams of the world of computer industry (MS, apple, google, facebook...) given that the odd are against you and if you win, you will be strip off everything?

Well,  you could. Given that you have:

- other incentives;
- trust in your team.

E  pluribus unum

Usually, companies looking for the developer doing the remaining 5% already has at least 1 CTO and 1 expert. If you say that the 5% belongs to the realm of research and not engineering, you are already facing a strong disapprobation from two members of the team, especially when you say that research on the opposite of engineering is far harder to deliver in time. So you are not even hired that you are challenging at least one of the most prominent figure of a startup. Well, believe my experience these are no good omens.

The other problem that it enlightens is that the company that wants to hire you have the belief it is highly versed in bleeding edge computer science, but it seems to ignore all of the field they pretend to dominate. There are 2 problems:
- they cannot assess the risk;
- they cannot assess the benefit;
- they cannot assess the cost.

Do you really want to work or contract for a company that has no money and given some good sense as no idea how to make some?

Well you could...

The last hit ... 

Imagine that you have a solution and can save them.

Do you know you will earn nothing from your hard work?

Well it is called IP law. The result of the intellectual work from any contractant or worker from a company belongs to the company. So imagine you find a new solution to a problem (innovation), not only would you earn nothing from it, but would you reuse it would you be sued for counterfeiting your own fucking innovation.

So to sum up, working as a developer of a (small french) startup is often like taking all the risks and hoping no benefits.

What is the problem with startups? 

Some say the problem is only French. In France more than once had I this discussion with executive and strangely artists that the ability to produce something is less important  than the ability to imagine things.

Let me tell you  my truth:
- everyone has ideas;
- few can deliver them in a given deadline.

So if you want startup ideas I throw a bunch of them:
- itinerant coffee vendors with a light stand that would switch from subway exits  to subway exits according to frequentation;
- auto-adaptive real time delay line for signal transmission;
- power computing efficiency consulting companies;
- printing server that would change the font to save money on printing (a liter of ink cost more than a kilo of gold);
 - highly efficient dating sites (based on my experience of automated bots on website I made);
- agency for computer talent recruitment;
- women oriented soft pornographic content. 

The problems with ideas is that you need to deliver them. And to deliver them you need a capital in order to sustain you between the time you have your idea and you deliver it. If you have been ruined once as I, you don't have any capital. You just have a know how you can negotiate.

My point is ideas are bullshits if you can't deliver them. Thus here is my factual checklist to check if you can work for a startup:

Don't get mad get even

  1. how many percents of problems remains to be solved before launching the product?
  2. what are the few remaining percent made of?
  3. if the product is already launched what are the recurring problems?
  4. when is the deadline for sustainability? 
  5. are all the technical problems understood?
  6. is there a test bench for testing all the parameters of the solution?
  7. do they understand the complexity of the problems they try to solve?
  8. do they know the state of the art? (did they even fucking read the manual or googled their problem?)
  9. what is their budget for R&D? operations? Did they at least figured both problems were quite not the same? 
  10.  do they have a QA for answering and solving their customers problem? 
  11. can they reproduce their customer's problem (it is a rephrasing of do they have a lab for experimentation?)
  12. what are their growth prediction? in terms of customers (scalability) and business model (income)
  13. do they document their code/APIs? have a bugtracker? have an SCM?
  14. do they have hard data they got from their prototype?
  15. do they understand the cost of computer engineering (effort) vs hardware (peanuts) and of infrastructure (recurring costs)?
  16. do they have a realistic charging model?
It is stupid, but you can't do R&D based on the assumptions of  a self declared technical guru or expert. You need to test, experiment, try, reproduce and understand. The absence of a lab or hard data in a supposedly innovative startup is a NO GO. The absence of knowledge of the revelant concepts they deal with (asynchronous programming, real time, distributed programming, b(i|u)g data, data processing) is a clue they are clueless. And if they are clueless, they won't know how much your knowledge worths.

 So my piece of advice is:
- if the wages are indecently excessive take the money and shut up, and prepare a backup plan because you'll need it;
- else run like hell.

You don't know how fast I am actually running!

EDIT: thx bruno 

No comments: