Branching and forking – the ultimate way to stay agile in life

Branching and forking – the ultimate way to stay agile in life

It’s not easy to stay flexible when it comes to personal life; at the end of the day in your personal live, you tend to take things personally.

If you are wondering why, it’s because your ego and other resources (money, energy, time etc.) are usually heavily invested in certain scenarios, expectations, assumptions and beliefs. The more invested you are into something, the harder it is to make any changes.

But then when things don’t happen like you planned and wanted, you get shaken up, hurt and demotivated. And unfortunately in life things rarely go as planned. Everybody has a plan until reality hits them in the face.

If a plan fails it’s not the end of the world yet. It’s only one punch. Much bigger problem is that many times people spend decades persisting at things that don’t work. You need to be smarter than that, you need to be smarter than any static plan or a life strategy that doesn’t bring the desired results.

Here is what you need not to be knocked-down by reality. A very flexible, but detailed plan that you constantly update and fine-tune. You have to make sure that you stay lean and agile in the whole process. In practical terms that means constantly adjusting your strategy according to the feedback you’re getting from the environment and yourself.

path_to_success3

Achieving your goals and visions is never a straight line, but always a path full of detours, setbacks, step backs and adjustments. If you want to achieve your goals, you need many creative ideas for how to overcome different obstacles.

You often have to innovate your way out of unexpected troubles. Doing the same things over and over again and hoping for a different result is the definition of insanity and absolutely a recipe for big failures and a lot of emotional pain.

If you want to be really successful in life, you have to be able to adjust in a single second. You stay flexible by having no problem to stop investing your resources, especially energy and time into one thing and start investing them into another thing with bigger potential. But how to do that?

The best way to stay lean and agile while following your goals is to use the “branching and forking” principle. Branches and forks are two different types of pivots. One is a small pivot, and the other is a big pivot. The principle comes from software development or, more exactly, from versioning control. You can use the same strategy in personal planning to stay more flexible.

Branching and forking is a great way to strategically brainstorm alternative paths in advance and to have as many different options as possible when you hit a wall. Then you analyze all alternative paths and decide how to adjust best.

In this blog post, you will learn everything you need to know about branching and forking and how they can help you stay more flexible in life.

Nature does it, software developers do it, so why wouldn’t you do it too?

Pivots branching and forking
You can skip this part if you have no interest in software development whatsoever.

Branching and forking in software development

To understand very well how to use branching and forking in your personal life, let’s examine how the two concepts are used in software development. Even if you aren’t a programmer by profession, it’s very easy to grasp the main ideas of these principles.

You probably worked on a very long and complex document at least once in your life. If more people were involved in the process, you will understand the tracking issues and challenges even better. After working on such a document for a while, you probably had a text with hundreds of comments, suggestions and corrections, not to mention all the different versions of files. It’s easy to get lost in such a case, especially if you don’t use a word processing tool that has a good versioning and collaboration system.

When a team of people is developing complex software, this kind of problem is even bigger. Not only is the code in several files being constantly added and upgraded by different team members, new ideas for software features are constantly flowing in. Team members want to develop parts of the software in different ways, bugs are constantly getting detected and need to be fixed, and so on.

It’s a hard task to follow all the ideas and changes and to manage the complex development process. It can easily happen that the code gets broken, things get lost and people confused. It’s a real mess.

That’s why almost all teams in software development use some kind of a versioning system or the so-called Version Control System (VCS). The most popular VCS in the software development world today is Git together with the online service GitHub (or alternatively Bitbucket).

Git allows team members to develop code simultaneously without overwriting each other’s changes, it provides historical snapshots of code so you can return  to previous versions when things go wrong, and in addition to that it’s free (open-source) and extremely fast.

GitHub further extends the power of Git. It’s a web-based Git hosting service for distributed revision control of code and source code management. It adds tons of additional functionalities to Git, like issue tracking, collaborative code review, documentation management, team management features, graphs, email notifications, and so on.

Finally, here’s the main trick. What Git and Github also allow you to do is to diverge from the main code you were writing to test new ideas. You can independently develop new features or take parts of the project to a completely new path, you can play with the project code in a new safe environment without destroying the main code, you can experiment with new technologies, and so on.

At the end, you can either merge the changes to the main code or not. It’s completely up to you. The two core ways to do that are branches and forks.

Branches in software development

Git enables you to create a new branch in any stage of the software development process. A branch is a new line of development. When you get an idea for testing a feature or developing the software in a new direction, you can create a new branch.

The main branch is called a master branch and you can name the new branch however you want. Actually, you can create as many different branches as you want, naming them as it suits you best.

When you create a new branch, you then have two branches with the same code and in the next step you can develop each part of the code in completely separate directions. Sometime in the future, you may decide to merge the new branch with the master one, and that often does happen. Other times, you get two or even more separately living projects.

The important note is that the new branch is always part of the main branch. The new branch depends on the main branch and diversions are tracked very well. A new branch always has parts of the master branch. You do branches with Git.

Forks in software development

On the other hand, forks are much bigger diversions than branches. They are more a kind of a social idea, when a group of people wants to take a project to a completely new path or a different level. Forks are a GitHub, not a Git thing.

GitHub enables you to fork a project (you copy it under your own account). It’s similar to branching a project, with the distinction that the new created fork is completely independent from the original project. It has its own users and permissions.

Technically, a fork is a completely new entity that gets stored in a separate independent folder or project. You can’t push your changes to the original project unless you have the rights to do so or the creator of the original software accepts the changes (the so called pull request).

If you fork a project, you can fork it with many branches. If the original project is deleted, you keep your forked copy together with branches, but all the branches in the original project are deleted together with the project. You connect a new fork with the Git versioning control system installed on your local machine with the cloning function. Because forking is more flexible, many developers prefer forking over branching.

I hope that wasn’t too technical. Even if you didn’t understand all the details, I’m sure you grasped the main idea. You can easily clone a project or make a new branch and take it into a whole new direction, either completely independently from the main code or not. That’s all you need to know.

Branching and forking

Using branches and forks in your personal life

Let’s move from software development to personal life. To use forks and branches in your personal life, you must first have a very well defined and prioritized vision list. Then you develop simple life stories for 5 – 7 items on the top of your vision list to specify what exactly you want, a clear outcome and even more so why.

In the next step, you build a Goal Journey Map with a strategy for how you will achieve your goal. That’s your main branch, that’s your plan for how you want things to develop. You can read more about the whole process in the “new way to set goals” article.

The main idea of branching and forking is that you have a rough plan, but you know in advance that the plan won’t work. You know that you are wrong about how things will unfold, because the plan is based more or less on your assumptions. And wrong assumptions are the mother of all fuckups. You have to be aware that you are always wrong before you are right.

Knowing that, you can do three things with the goal journey map:

  • You can brainstorm potential obstacles and risks you may encounter in different stages.
  • You can brainstorm alternative paths if the obstacles really appear – you build your own branches and forks in advance in your goal journey map by brainstorming potential pivots.
  • You can define very well when it’s time to quit, to not get misled by the sunk costs and other cognitive biases.

You absolutely can’t predict everything negative that will happen. You absolutely don’t know what will go wrong and what will go right. But you can definitely brainstorm many different scenarios that could go wrong and you can mentally prepare yourself for them.

Being a smart investor and carefully managing your resources (including your time and energy) means that you go after investments that have high upside potential and a low downside. In other words, you’re looking for low risks and high rewards. If you want to achieve that, you have to know your greatest risks and downsides, and what you will do when they appear.

You can always think of the biggest risks in advance and adjust to the smaller ones that weren’t anticipated as things go along. You can always brainstorm potential pivots and how to mitigate different risks. And with regular daily reflections, you can always adjust to small barriers that unexpectedly hit you in the face.

When you encounter an obstacle, you always have the option to:

  1. Stop investing in a project and give up. Sometimes the hardest decision you have to make in life is when to persist and when to give up.
  2. Pivot to something completely new based on what you’ve learned (a new fork).
  3. Change the course a little bit so that it will still lead you to the same goal just by using a slightly different path (a new branch).
  4. Stop doing certain small things, start doing new things, and continue doing what works without any big changes in direction (regular small changes and updates in tactics and operations).

You can always do these things, you just have to be creative enough to come up with enough potential forks, branches and updates. With such an approach, there is no way you can get stuck in life.

Maybe you’re asking yourself: why would you put so much effort into regular adjustments and into such hard-core risk management? Well, because that’s part of a superior life strategy. You want to have a small number of goals to which you are completely committed. You want to stay fully flexible about how you’ll get there.

You want to constantly pay attention to what is happening in your environment and what is happening with your emotions, and regularly adjust. You have to sense all the paradigms in your environment and you have to always pay attention to yourself, because what you think will bring you happiness and what really brings you happiness in life are two different things.

You don’t want to get stuck, you don’t want to experience big collapses or failures in a way that it will take you years to recover. You want to optimize your life for productivity and flexibility. You want to experience a series of small failures from which you can learn, and that is the only thing that can lead you to be finally right and succeed. The good news is that you have to be right only once.

Yes, if you want to be successful in life you want to stay flexible. The greatest killer of flexibility is the so-called onetis mentality. The onetis mentality means being obsessed with one single thing – one potential spouse, one job you just lost, one car you can’t afford, one scenario that failed etc.

If there is something that represents all to you, and everything else is nothing, it’s only a question of time until you are be miserable and stuck. Forks and branches are the cure for the onetis mentality.

It’s all about superior emotional management

Now you know the big value of proper risk management and staying flexible. To summarize in one sentence: the best way to do that is to have many different forks and branches and no fixed ideas.

Rather than having any fixed ideas, you should think about all the risks and potential alternative paths or pivots you can make when you encounter a problem. You should consider and analyze every possible alternative path, no matter how crazy it sounds.

The main value of preparing yourself for different scenarios (forks and branches) is in:

  • Keeping your mind flexible and open to different possibilities.
  • Staying emotionally detached when shit hits the fan, because you anticipated what could happen.
  • Not letting your ego destroy your progress and not getting mentally stuck in self-pity.
  • Putting success before being right.
  • Having a list of alternative paths you can take so you can easily choose the next best thing when you have to.

If you don’t have an alternative path, you can easily get stuck in overanalyzing how unlucky you are, you can put yourself in a position of being a victim, and you can endlessly whine, bitch and complain. But when you already know your next best alternative, you can simply move on, you already have something new to look forward to. You already know your next step.

Of course you are always emotionally invested in things you care about, you absolutely need time to heal and lick your wounds, but you don’t have to get stuck forever, you don’t have to lose years of your life feeling sorry for yourself just because something didn’t work out as planned.

An even worse scenario is if you lose motivation and enthusiasm after a few failures, and turn into a zombie. That happens to many people. They try a few times, fail big and then they give up forever. Never let that happen to you.

There are absolutely types of life disasters (deaths, losses, etc.) where there is no branch or fork that can heal you or lead you forward, and in such situations you need months if not even years to recover. The only thing you can do is to accept things, grieve and wait for better times.

But problems like that are quite rare, they happen only a few times in a lifetime. For most projects, life problems, obstacles and challenges, you can always innovate your way out. There is always a step forward you can take. Thinking of potential branches and forks is one way that can help you do that.

Alternative paths

Branches and forks are advanced brainstormed potential pivots

A list of potential branches and forks is nothing but advanced brainstormed potential pivots. You can also add new potential branches and forks when you encounter a problem or an obstacle in order to analyze and consider as many alternative paths as possible when you have to choose your next step. Let’s refresh our knowledge of what pivots in personal life are.

A pivot in personal life is a fundamental change in your life strategy or in a strategy for meeting your goal. You change your direction in life, but you still keep the same life vision and you consider all the facts you learned about yourself and your environment. You make pivots as many times as necessary until you find the perfectly right fit for you.

There are many different types of pivots you can make in personal life: a zoom-in pivot, a zoom‑out pivot, a relationship pivot, a life architecture pivot, and so on. To successfully make a pivot, you need to be passionate about the new life direction, there must be a strong and deep desire to make a change in your life, you need metrics and targets that will measure your pivot progress, and so on.

Even if you have no clue what will happen in reality, you already have a few things to rely on:

  1. Your past knowledge and experience
  2. Knowledge and experiences of other people (books, mentors etc.)
  3. A list of risks and things that could go wrong (and things that could go right)
  4. A list of potential pivots you can make (based on the 10 possible pivots)
  5. Alternative visions of your life that work for you as well as the originally planned branch

The potential pivots in personal life:

  1. A zoom-in pivot: Focusing yourself more in life
  2. A zoom-out pivot: Adding new things in your life
  3. A relationship pivot: Rearranging key relationships in your life
  4. A personal need pivot: Rearranging your priorities
  5. A life design/architecture pivot: Rearanging your values and beliefs
  6. A platform pivot: Changing environment where you work
  7. An engine of personal growth pivot: Changing your role-models and infostructure
  8. A value-capture pivot: Changing the way you make money
  9. A technology pivot: Changing technology you use
  10. Other types of pivots

Considering all this data, you can brainstorm potential pivots and how you can alternatively get to your goals when you get stuck. Every potential pivot is a new branch or fork.

When you learn new things along the way, you can always add or delete forks and branches. When you encounter a problem, you can select which new branch or fork to follow. Sometimes you can activate more branches and forks at the same time.

With that kind of a strategy, you are always prepared for the next move. If a risk comes to life, you already know a few alternatives you can undertake. You can add new ones if necessary, but you will never get stuck mentally. Your mind will already be oriented towards a solution instead of the problems that occurred.

Now let’s explore the subtle difference between forks and branches.

Path to success

Branches in personal life

Branches in personal life are small deviations from the main path, micro adjustments and mini new experiments you decide to perform in order to find a better way to achieve your goals. They are not-too-big diversions from the main path that don’t require any colossal changes in strategy.

You adjust, you do a small pivot, but the general way is still the same. Sooner or later you come back to the main path. You may adjust because an unexpected obstacle occurs, you may consciously decide for an adjustment just to try new things, or maybe you decide to implement a potential personal improvement. You should be constantly developing and experimenting with new branches. That’s what they’re here for.

Practical examples

Let’s go to an example.

Your goal is to get fit, so you have a detailed exercise and diet plan. After a few weeks, you unexpectedly injure yourself and you can’t follow your plan anymore. Well, feeling sorry for yourself won’t do any good.

There are many different branches you can follow:

  • You can adjust your workout plan
  • You can start doing a completely new sport
  • You can stretch and improve your flexibility
  • You can do physiotherapy
  • And so on

You could also decide to take a year completely off from dieting and exercising, spending that year to only madly educate yourself about health, and that would be a new fork. Here are two examples:

  • You can do different kinds of DNA, blood and other analyses to get to know your body better
  • You can read only health books while you recover

In all the life areas, you can have many different branches towards which you can unfold your life story. Your friend doesn’t have time for you; you go to a hobby meet-up and get to know new people. You don’t get a raise. You start a business in your free time.

Your trip got canceled. You decide to invest into your competences. When one door closes, another one opens. Branches, forks and pivots is what should always be on your mind when things don’t go as planned.

You should always have a list of all the different types of branches or pivots in your Goal Journey Map. Small adjustments, bigger adjustments, switching from one activity to the other, and so on. The only rule is to stay flexible and move forwards no matter what.

Staying flexible means that you’re able to disinvest your resources (ego, beliefs, values, time, energy and money) from one thing and start investing them into another that has bigger potential or works better in a certain moment. Having many branches enables you to easily regroup and reinvest your resources. No way to get stuck in life, ever.

Forks in personal life

Forks are a little bit different than branches. They are bigger pivots in your life. They are bigger changes you make in order to go forward. You take one big project or activity into a completely new direction. You take what you’ve learned, you keep the good parts, but the general direction changes a lot.

We’ve already seen an example, but here’s one more:

Practical examples

You were following a vegetarian diet, you learned a lot about your body, which foods make you feel good and which don’t, but somehow the diet doesn’t work for you. Your blood results get worse year after year. So you decide to switch to the paleo diet and see what happens to your blood. You add meat to your diet, but keep other foods that do you good in your diet plan. You keep what works, you consider what you’ve learned, but you move on to a completely new thing.

Now, if you have fixed ideas that eating meat isn’t good, you may have a hard time doing a big pivot. In such a case, you have to search for other branches that could solve your problem – adding supplements to your diet, adding more green foods and rice protein powder, and so on.

A fixed idea absolutely blocks your flexibility. It makes sense to consider all branches and forks, and then you can decide what’s acceptable to you ethically, emotionally, strategically and from other angles.

You always have many options

It’s not hard to get ideas for branches and forks. You just have to keep the abundance mentality. You can talk to other people to get new ideas, you can read, brainstorm different options and even try all kinds of crazy things. You should use the search mode to get the first insights into which branches and forks make sense and which don’t.

Put every idea to the test. Put every branch or fork to the test and see what happens. Of course you have to use common sense while doing it, but this kind of strategy will take the quality of your life to a completely new level. And your life will be much more diverse and exciting.

When you get results from your experiments based on actionable metrics, you can integrate branches that work into your life permanently, delete the branches and forks that don’t (fail and learn, in other words), and you should never stop trying new things while keeping your mind open.

When things work you persevere, when they don’t you pivot – to a new branch or fork.

Make sure that for every item on your vision list, you have a short life story (clear outcome with why), a goal journey map (strategy), and potential forks and branches. Then go out and start trying things. And when you encounter an obstacle, pivot. That’s how you will live your life to the full and sooner or later design the perfect life you want and deserve. That’s how you achieve your big goals.

Pivots forks branches

Do you want to know more about goal setting?

This article is part of the series of how to successfully set goals in the 21st century. It’s part of the AgileLeanLife Goal Setting Framework, which has the following seven steps:

  1. Define your vision list
  2. Prioritize your vision list
  3. Develop short life stories for 5 – 7 items at the top of your list – specify what exactly and why
  4. Create a goal journey map to build a superior strategy and define the process
  5. Use branching and forking to stay flexible with alternative paths
  6. Organize the superior strategy on your to-do lists with a 100-day plan and sprints
  7. Mind the principles in the AgileLeanLife Manifesto
Shares
Share This