What would you build with 11k software devs?

Mihai Raulea
The Startup
Published in
9 min readFeb 13, 2019

There’s always a possibility you are not thinking about, which can make you win big.

In 52 B.C.E., Caesar was deep within Galic territory, slightly outnumbered. His enemy, Vercingetorix, had a favorable position, inside a hill-top fort known as Alesia, and was better supplied. Moreover, reinforcements that could tip the scale to 3 to 1 for the Gauls could arrive at any moment. Caesar had two options:

  • retreat, and lose Gaul
  • attack, knowing that his men would starve before Vercingetorix’s men

Caesar, being a military genius, created a 3rd option that his opponent did not anticipate. He created a wall facing Alesia, and another one facing the hill. The speed and execution of this new fort is also incredible, but what made Caesar a victor was the capacity to create another dimension to the battle.

Caesar’s army, show in red. Vercingetorix, inside the fort of Alesia, in blue. The gauls were numerically superior to the romans.

Caesar won because he did not micro-manage. He was always focused on the big picture, and worked on high inflection points.

Let’s leave ancient battles aside.

More recently, Peter Thiel, one of the world’s foremost venture capitalists, explored the concept of novel strategy and creation of a new dimension, in his “Zero to one” book.

To imagine what progress the future will bring, you must be able to view the present differently.

Progress, in Peter Thiel’s view, can either be horizontal or vertical.

Horizontal progress comes from expanding on existing ideas and innovations.

Vertical progress comes from entirely new technologies and methods that did not exist before.

An example of horizontal progress would be mass-producing affordable smart phones and distributing them to developing countries. A new type of camera or a software update for your handheld device is another one.

Vertical progress is the type of progress that significantly alters a macro-index on a graph. The insulin and other break-through medication would fall into this category. The Internet, Google and PayPal would be other examples.

Similar to Alan Watts’s question, what would you do with your life if money was no object, the question in the title invites to out of the box thinking.

What important truth do very few people agree with you on? Only a person who can think outside established conventions can see and change the future.

Speaking of such truths…

Distributed software development’s time has come. Let’s address a couple of points on the topic. While there aren’t(to my knowledge) any solutions out there right now, i believe it will happen soon.

1. Assembling a team of software developers

Here’s the current workflow. A manager keeps track of various tasks a team of software engineers perform. Yes, it’s a gross simplification.

At one point, an employee leaves or there is simply too much work for the current team to handle. It could also be the case that a new stand-alone project needs to be developed. This is even trickier, in part because of the lack of in-house expertise on the topic, so we won’t even discuss it. In any case, a new employee is needed.

A manager asks the team what skills the new employee should have, and hands that over to an HR person. HR starts scouting for people that would fit the profile. The information has already passed through 2 hands.

It can take as long as 3 months to schedule the first interview.

After initial screening, and a phone call with HR, a technical person in the team has an interview with the candidate. As much as 4 months have passed by.

A lot of employees, especially in the tech sector, will leave before a year has passed. Like in the elephant zen tale, and given the fact that the info passes through many hands until reaching the source, the job rarely resembles what was initially promised.

Also, workload and skills needed for the job often change. So, people just leave in search of better opportunities.

Between 2 months and 6 months have passed by the time the new employee walks in. These recruitment costs add up to 12,541 USD via a recruiter and USD 18,613 USD direct.

Horizontal progress: Different things motivate different people. For employees, it’s prestige and security. For entrepreneurs, it’s autonomy and power. Establish a powerful brand, and build a reputation of a great workplace, so that new employees are more ready to join your team.

Vertical progress: What if a network of vetted, high-end professionals, willing to work on fine-grained tasks they are experts on, existed? What if your project could tap into that wealth, with no recruitment costs? Right now, consultants and external companies offer this, but it’s by no means a streamlined, industrial and factory-like process.

2. Building software

Some domain specialists talk to business people(or an entrepreneur) and start outlining what the software should do. At some point, a Technical Product Manager gets included in the discussion.

Various forms of specifying what the software should do exist. Since there is a single source of truth, one gets arbitrarily selected.

The actual implementation is deferred to a team of Chief Architects and Architects, who, together with a manager, start splitting it into tasks and assigning it to themselves and developers.

By this unfortunate time, nobody has any kind of coherent vision of what the product and project should accomplish, so emails start flying back and forth about tasks. Time is lost.

Also, because nobody in the development team has any clue as to how important each task is to the overall project, nobody knows to what level of detail the implementation should go. Since there is no clear weight or reward to any task, nobody knows when to apply the Pareto law.

This is interesting, and deserves a couple of examples.

Loading bar with 3 services

At some point, i was leading a team of about 10 people, working on 3 separate projects. We were having a bit of trouble delivering on time, mainly because of 2 issues:

  1. Specifications were a complete mess —although highly detailed, the API had missing parameters, and getting pieces of crucial information through it was impossible with the current function signatures.
  2. Team was unfit for the project — although originally assembled to build back-end, we received the task of also implementing UI. No Objectives or Key Results were in place. Any knowledge about our customers was 100% missing. As a result, motivation to deliver was not there.

Because of this, at one point, a developer ended up wasting 2 days worth of work, or 800 USD of company money, obsessing over a progress bar. He wanted to make it sync completely with what was happening on the server. There is no doubt that it had no real impact on the product. This is a small example with a small loss, but a recurrent theme in today’s software development world.

Undisclosed company building a blockchain bank

Although heavily funded, and with an in-house team of about 20 people, this company was clearly asking the wrong questions. While they did not agree to even using consultants, they clearly lacked the in-house expertise to build a fraud detection algorithm on top of a graph.

They currently rely on an algorithm that does not take into account the topology of the network. This, in my opinion, is just a disaster waiting to happen. One would think that, between 20 people, one of them would be capable of implementing a real-time fraud detection system.

The catch here is that there are simply too many development paradigms and algorithms for one person to know. Not even 2000 people could cover all the tech stacks out there. Just imagine that, currently, 900 databases are in use, in resource-intensive scenarios.

How much time would you save, how much cheaper and faster would the development process be, if you had a wealth of experience, which you could tap into, at any moment?

The absolute show stopper

It was back in 2012, and an unnamed company was making it’s way up the ranks. Although it sold a year later for a couple of tens of millions of dollars, it could not implement a very simple search function. It’s true that the data was huge, coming in by the terabytes on an hourly basis.

While multiple technologies were tested, none worked out of the box for the solution. Money was wasted, consultants were hired to optimize various db engines and full text search tools.

In the end, the feature never got shipped. While we can’t say that this was the sole reason, the competing company which eventually bought them out successfully implemented the feature.

Most people spend more time and energy going around problems than in trying to solve them. Henry Ford

Horizontal progress: Implement solid Objectives and Key Results for the team to follow. Although with a high overhead, get more managers. Establish a working relationship with a couple of consultants, in some key technological areas.

Vertical progress: Have a completely new paradigm of building software, that has rewards built in the development model. Make it so that the 2 pizza team rule becomes obsolete. Enable collaboration on a massive scale, so that each individual contributes with his best ability and skills. Your business benefits from more years of combined experience, and more tools than ever before. Watch how developing software becomes predictable, both in terms of cost and in terms of speed.

3. Maintaining software

If your business is lucky enough, there will be plenty of new features to develop, and, of course, many bugs to resolve. Given that the average time a software developer will be with your business/startup/project, there’s a high chance none of the people who originally developed the software will still be around, 3 years down the road. Even technical co-founders of open source projects leave. Swagger is one such example.

Of course, the show must go on. If your source code is documented, this shouldn’t be a show stopper.

How can you make sure that the quality of the software stays on track?

Horizontal progress: Insist on getting a decent code coverage. Have a Test Driven Development approach. The code is the spec.

Vertical progress: Work from the get-go with somebody that does not have hubris, and knows that he does not know. Ask the right questions, build a solid foundation for the project, and automate testing. Code quality validation tools can go a very long way. Let a swarm of happy developers do their job.

In the end, if the architecture is solid, the quality of the software is automatically assessed, and both unit tests and integration tests were written and generated before the development process, mass collaboration and developing with a decentralized team should be the obvious choice.

Conclusion

What idea are you holding on to, which is holding your product and business back? Great leaders are able to create new opportunities and adapt to change. Like Caesar or Peter Thiel.

We’ve looked at the 3 pillars of software development: acquiring talent, developing and maintaining the project and briefly sketched some alternatives. Of course, a lot of details were left out, but this will be the subject of future articles, but i hope that this gives you the gist of it. I plan on releasing articles that will go in-depth on the three points above.

Assume you had all the development power one could dream of. What would you build? I know i have a long bucket list of projects. What about you? What new products would you create? How would you enhance your current product or project?

This story is published in The Startup, Medium’s largest entrepreneurship publication followed by +423,678 people.

Subscribe to receive our top stories here.

--

--