From time to time, I have managed to create interesting side projects at my various jobs. After some introspection and retrospection, I have figured out the formula that I can repeatedly apply now. So far, it seems to work for me. Here is how the lifecycle of a project goes for me.
It generally starts with getting pinched by a problem. A problem that I can potentially solve but I do not have an attack on it yet. There is somehow an intuition that I can do something about it and there is motivation to do something about it. I just don’t know the what and how of it. There is a subtle inkling of a possible approach but I would lose it if I tried to articulate it. It’s a flash of insight beyond words.
I make sure that I do not start with ideas whose only contribution would be to make me look cool. Nothing wrong with using such ideas as side projects. I have just found that it does not work for me. For me, if it’s a side project, it has to be a solution to a problem that I myself faced.
Next phase of a side project is generally the longest one. This is where I develop my attack on the problem. In this phase, I remain deeply interested in the project but I let the ideas be. I don’t forcefully develop them and I don’t try to avoid them. Gradually, the dots start connecting and ideas start taking shape over weeks or months; over discussing, sleeping, actively thinking and sometimes, doodling.
Earlier, a lot of my side projects used to get killed at this stage. If I couldn’t find an attack in a short while, I would abandon the project. But not now. One of my recent side project was in this phase for over 2.5 years.
The key here is to remain interested in more than one problems. If I lose interest, my mind stops finding the dots and stops connecting the existing ones. And if I do not work on multiple problems at the same time, I won’t see anything coming out for a long long time. And that would just kill the momentum. Working on multiple problems at the same time results in a pipeline of ideas and every now and then, one of them is ripe for next stage.
Even after developing a broad outline of an attack on the problem, I do not start the work yet. I just turn my interest towards identifying the smallest possible attack that can achieve something substantial. If the previous phase is about divergent and open thinking, this phase is about consolidating and converging. In this phase, I work on minimizing the effort while maximizing the win. I don’t actively create the plan; I still remain passive and let the planning happen.
This is another phase that has given me a lot of problems in the past. I would just jump into solving the problem once I had some idea about the solution. And then it would take enormous amount of time. I would either get tired or get busy with some other pressing issues. And then, once a side project gets abandoned, it would remain abandoned.
So, now, I wait. I work on the solution boundaries till I am sure that the effort is small enough to fit into my schedule and it’s going to result in a sizable win. Not the blockbuster kind of win but enough to plant a seed that can grow incrementally.
I have found that if I cannot finish a side project in 3-5 days of my time, it would not get done. This is the maximum amount of time for which I can hold off my regular schedule. I can say no to all the meetings, send out delayed and terse email replies, avoid coffee chat, disappear from my desk, log out of IM etc; but only for 3-5 days. After that, it’s hard to hold the fort and guard the time.
So, I always try to find the attack boundaries that fit into my 3-5 days of effort. I don’t have to solve the problem all the way. I just need to put the seed which can take incremental work.
Once I pull off the side project with those 3-5 days worth of effort, I try to see if it can act as a good seed. A good seed has only one quality. It can grow and turn into something useful. If it’s not a good seed, I just go back to phase 1 wherein I let the mind chew over it passively.
However, if the results are interesting, I move to the next phase: sustaining and growing the side project. Every project needs people who are invested in it. So, this phase is essentially about identifying potential owners and building a growth structure. This is again a long phase where I need to stay interested and stay detached.
First thing I do is some kind of classification into 4 buckets: a) me, b) an-individual, c) team-internal, d) team-external. There is also open-source but unfortunately, I am yet to tread in that area.
Some projects have to be sustained by me for a long time to come. They fall into the me bucket. I avoid such projects. These projects have to be really really important for me.
Some other projects can be sustained by any individual with the right set of skills and interest in the problem space. I make sure that I don’t hand-off my project to them. More often than not, they have to really create the project from scratch to be the owner of the project. So, I only use my project as a prototype; a learning base. And I support the individual to create the project and grow it. I have to really see this project as my responsibility and other individual’s win.
There are also projects which are good internal tools for a team and that team has the shared ownership to improve the project. Internal bug tracker could be an example of this. Or a workflow that makes the team more efficient. Or an operability dashboard that reports on the status of production systems. These are generally the easiest to pull off if you are in a team with hacker mindset. I put them in team-internal bucket.
Some projects require a lot of effort over a long period of time to be successful. They require a dedicated team. They are generally the hardest to pull off but they can also be the ones with the highest impact. I need to build a business case for them and depending on who decides the team charter, I need to navigate differently. This is the team-external bucket.
Final phase of the project is evangelizing. On the whole, this is an area where I am working upon myself. In the past, I have found myself to be shy while evangelizing my side projects. I always saw them as my projects and not as useful projects. And that always limited my ability to go out and talk about them in a positive manner. Now, I cultivate the mindset of doing something useful rather than doing something that makes me look cool. However, this is an area that I am yet to fully deal with.
Finally, I have found it be extremely important to have a portfolio of side projects and not just a side project. Projects are like children. I can contribute to their growth but I cannot make them grow. Every project is special and has its own potential and growth trajectory. Working with a portfolio ensures that I always have something successful under my belt. In the portfolio approach, I just need to space out the projects such that they don’t start competing for my attention.
That’s about it for side projects for now.