Looking back at my career, the projects that have had the most impact are the projects that were not rewritten. It is unfortunately very common for projects to land and then 6 months, 1 or 2 years later to have it rewritten.
Exponential impact
Successful tech projects have this property that the growth curve is not linear but exponential. This leads to some non intuitive way to optimize for their success. Here's an example of two projects I've worked on.
![](https://blog.vjeux.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-23-at-10.12.40-AM.png)
Work as an investment
In most jobs, if you do X amount of work, you generate Y amount of impact instantly. If you want to generate 2Y amount of impact, you need to do 2X amount of work. As soon as you stop working on the job, you stop generating impact.
With those kind of exponential growth projects, it doesn't work like this. At the beginning of the project, you are "investing" X amount of work into setting up the project. Then based on how well you did there, the project is going to generate an increasing amount of impact over time.
This is very similar to compound interest for personal money management. You invest initially and then you have to wait 20-30 years later to see real return on investment.
Difficult impact estimation
A big challenge with those kind of projects is that when you are working on it at the beginning, the absolute amount of value generated is small. So if you are judged based on a X work -> Y impact formula, you are going to have a tough time selling your work.
Trying to map your impact using the exponential formula is not easy either. Nothing can be exponential for ever, in reality it looks more like a S curve that flattens at some point. The challenge is that it's extremely difficult to predict when that flattening is going to happen to estimate the total impact generated.
![](https://blog.vjeux.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-23-at-5.03.43-PM.png)
The two strategies I've seen and done myself are:
- Keep working on the project during the exponential growth. This way as time goes, you'll get more and more reward as the absolute impact of the project is getting higher.
- Leave the project but use its successful aura to help get your next [job, team, project] and help getting credibility when talking to people.
Example of failure
When I worked on open sourcing React Native, I knew that having up to date API documentation was really important. I built a system that automatically generates the documentation based on the actual source code.
Unfortunately, this system, while it solved the problem, was complex to maintain and the value proposition was not clearly communicated. I don't know the history but someone removed this entire system, likely being praised for improving the codebase and maintenance.
And now, many years later, a similar system is being introduced again. Since the project is now much bigger, it is going to be significantly more difficult to achieve than the original version I built.
![](https://blog.vjeux.com/wp-content/uploads/2020/05/Screen-Shot-2020-05-24-at-4.34.37-PM.png)
I was asked what are some of the techniques I use to be productive. I found that the most impactful one has been intentional repetition.
When I want to develop a new skill, it looks roughly like this:
- The first time, I do a lot of research into what's the absolute best way to do it and focus 100% of my energy on it.
- For the next while, I use every opportunity I get to work on that skill.
- At some point I "mastered" the skill and can do it on the side as it takes me a lot less time. I'm also starting to delegate by growing other people to do it.
Here's a concrete example:
- When I said yes to organize the first React Conf, I read everything I could about how to organize conferences. It basically took me 3 months full time. I did nothing else during that time.
- Then, for the next few years I jumped on every opportunity to organize large tech events, I helped with React Europe, the second React Conf, many internal All Hands and Summits... Each of them taking less and less time.
- Nowadays, I am able to organize those kind of events by building a team of people that are going to execute on it.
I've used intentional repetition many times over the years, here are some examples:
- In high school, I was this kid that instead of doing the one exercise that was asked, did all the exercises of the entire page to understand the pattern.
- Working on prettier, I would try to estimate how long it'd take me to fix an edge case (which there was hundreds to tackle). At first it started in the hour range and towards the end it would take in the 10 minutes range.
- Going through the open source process with React, Flow, Jest, React Native, Prettier, Excalidraw, Recoil...
- Public speaking, at first I would spend 2 weeks full time preparing for every single talk.
- More recently, I started playing Valorant, a FPS game that heavily punishes being imprecise. So I trained moving the mouse first to aim and then clicking, instead of clicking and then moving.
- Cleaning the playroom at the end of each day.
My overall strategy has been to develop one skill at a time using intentional repetition. This worked well except for one time: when I switched to being a manager a year ago. I had to learn a ton of new skills all at once (how to run meetings, 1-1s, career development, planning, exec reviews...) and was overwhelmed.