This happened because Siemens AG and Ericsson entered a joint venture called Ellemtel. It was required to produce a software product in 6 months. Each sent 500 engineers. At the end of the (successful) project, fully half the code was found to be authored by one engineer.
The contract was such that, without delivery by deadline, Ellemtel would not be paid. Without that one engineer, the project would have failed.
Details... He was responsible for assigning tasks. Tasks were two weeks. If a task was not done by the two-week deadline, he did it himself over the following weekend.
They took blood samples, periodically, to measure stress hormone levels. Stress rose as the deadline approached. It took 2 years to return to normal. (I.e. burnout is objective.) The 500x's stress level did not increase.
(On a later project, involving an OS kernel he wrote, he did have stress. Also, for English-speakers: Siemens is pronounced "Zeemanss".)
> the too-common comments on Reddit and HN where people claim that they could rebuild FB or Uber as a side project.
I do and don't agree with you. Whats really going on here is that development time scales linearly with the number of decisions you need to make. Decisions can take the form of a product questions - "what are we making?" and development questions - "how should we implement that?".
There are three reasons why people feel confident saying "I could copy that in a weekend":
- When looking at an existing thing (like r/place), most of the product decisions have already been made. You don't need to re-make them.
- If you have a lot of development experience in a given domain, you don't need to make as many decisions to come up with a good structure - your intuition (tuned by experience) will do the hard work for you.
- For most products, most of the actual work is in little features and polish thats 'below the water', and not at all obvious to an outsider. Check out this 'should we send a notification in slack' flowchart: https://twitter.com/mathowie/status/837807513982525440?lang=... . I'm sure Uber and Facebook have hundreds of little features like that. When people say "I could copy that in a weekend", they're usually only thinking about the core functionality. Not all the polish and testing you'd actually need to launch a real product.
With all that said, I bet I could implement r/place in less than a weekend with the requirements stated at the top of that blog post, so long as I don't need to think about mobile support and notifications. Thats possible not because I'm special, and not because I'm full of it but because most of the hard decisions have already been made. The product decisions are specified in the post (image size, performance requirements) and for the technical decisions I can rely on experience. (I'd do it on top of kafka. Use CQRS, then have caching nodes I could scale out and strong versions using the event stream numbers. Tie the versions into a rendered image URL and use nginx to cache ... Etc.)
But I couldn't implement r/place that quickly if reddit didn't already do all the work deciding on the scope of the problem, and what the end result should look like.
In a sense, I think programming is slow and unpredictable because of the learning we need to constantly do. Programming without needing to learn is just typing; and typing is fast. I rule out doing the mobile notifications not because I think it would be hard, but because I haven't done it before. So I'd need to learn the right way to implement it. - And hence, thats where the scope might blowout for me. Thats where I would have to make decisions, and deciding correctly takes time.
This happened because Siemens AG and Ericsson entered a joint venture called Ellemtel. It was required to produce a software product in 6 months. Each sent 500 engineers. At the end of the (successful) project, fully half the code was found to be authored by one engineer.
The contract was such that, without delivery by deadline, Ellemtel would not be paid. Without that one engineer, the project would have failed.
Details... He was responsible for assigning tasks. Tasks were two weeks. If a task was not done by the two-week deadline, he did it himself over the following weekend.
They took blood samples, periodically, to measure stress hormone levels. Stress rose as the deadline approached. It took 2 years to return to normal. (I.e. burnout is objective.) The 500x's stress level did not increase.
(On a later project, involving an OS kernel he wrote, he did have stress. Also, for English-speakers: Siemens is pronounced "Zeemanss".)