First, let’s figure out what IT projects and skydiving have in common.
- Has an objective and planned outcome
- Is limited by time and resources (altitude)
- Requires upfront planning
- Can lead to serious issues if mistakes are made during execution
- Involves having almost no control over environment
- Depends greatly on those around you: they can either significantly contribute to success or cause failure in everything
Kind of sounds like an IT project, right? With one small difference, of course: a skydive lasts around five minutes and an IT project last five months or, if you’re unlucky, five years.So let's come back to the point what leads to a successful skydive project in order to come back in one piece.
You need to know the environment around you
This includes weather, landscape and who is with you in the airplane. In IT, a common mistake is for managers at different levels to start doing something without taking a moment to collect information about the current state of the organization or system, what is going on and why, and what is the main business direction. Unfortunately, the environment is usually out of our control and we have to adapt to it. Ignoring this simple fact can cost significantly in terms of resources and maybe even failure of project goals.
Based on information from the environment and what you want to do, you need to plan all phases of the jump, from exit to landing. You’re probably not doing it alone, so everybody in your group needs to understand who is doing what. The failure to plan and communicate in a group leads to a mess during execution. Keep in mind that time is very limited and if something goes wrong you will need to spend additional time to fix it instead of doing what you planned to do. In addition, if you fail to check the weather and didn't prepare accordingly, you can end up landing in somebody’s backyard (or tree) instead of the designated landing zone.
These issues arise in IT projects, too - people spend time to fix issues that occur because people were not working together. At some point, time is up and they have to release something into production that is quite far from what was expected or desired.
You do a gear check when you preparing for a dive, you do it again before boarding and once again in the aircraft. Also you go through emergency procedures at least a couple of times in your head. Of course, you have a reserve parachute which is checked every 180 days, and if you’re smart enough, you checked the map to know where your reserve landing zone will be.
Now let's have a look at production systems execution:
- Who knows what to do if production servers go down? Are people trained for it?
- How often did you check to see that the business continuous plan works for real? Do you even have backups?
- Did you ever try out your deployment rollback procedure? Do you check it every time before deploy? Do you have one?
- Do you know what to do if your surrounding environment changes, increasing request time to them in several times?
- Do you monitor what is going on and are you able to react before an issue becomes critical?
I think the majority of IT projects fail on all of these questions, even though a day of production system downtime can cost to your organization significant revenue that could be critical for the business or even kill it.
You should know your priorities
Priorities for a jump sound simple:
- You should open your parachute.
- Open the parachute at the proper altitude.
- Open the parachute in a stable position.
But these simple rules give you the ability to act fast when you need to and not lose time and altitude trying to do things perfectly when you just need to open the chute. In IT projects, priorities may not be so simple but from what I see, people either don't have them at all, or they are so vague that it makes it hard to make a simple choice between two JIRA tickets.
Worse yet - everything is a number one priority and you're supposed to do everything. In such cases, with a few changes in the environment or a few obstacles, the team has no other option but to work overtime or move release dates forward.
Teammates are key to success
In skydiving, when time is limited, good teamwork is vital to achieve great things. If teams know one another and know the behavior of their colleagues, they are better able to react to issues and fix them. To build such teams it takes the experience of several jumps before people start working together as one team. Experienced members help build a team more quickly and take on more difficult challenges, but you can’t expect that people who have never worked together will do a great job with their very first attempt.
For some reason, people don't have a chance to build teams in IT – they aren't motivated to do it and would rather act as a set of independent actors, or they shuffle back and forth so much that they basically don't have the time to learn how their team members work. A key indicator of a well-built team is that it produces coherent work. This means that when you turn to find your teammate's shoulder, it’s exactly where you expect it to be.
The second thing that is usually missed is the fact that teamwork takes time. If you are solo, you able to do the same maneuvers planned for group, but much faster since you don't need to wait on other people and coordinate with them. In IT, the number one mistake is, "Let's add more people and we’ll get it done faster," which completely misses both points above.
Stress reduces your ability to think. A diver's first jump is so stressful that it's hard to remember and repeat three simple actions. The major rule is to relax and not make any sudden or sharp moves. Don't delay your actions, but don't rush either - rushing leads to mistakes and it takes 5-10 times longer to recover from a mistake than just simply taking a deep breath. So, relax!
Actually, all activities in the skydiving world have one objective, which is to make jumps safer and more predictable. The industry is constantly progressing in this area. If you combine knowledge about the environment and safety with proper planning and prioritization, teamwork and calmness, your project's execution will be fun - just like one of the scariest sports on the planet. That's probably why I like it - people create a balance between having fun and sticking with rules that save lives.
PS: No skydiver was hurt or injured during the writing of this article.
Mikhail Druzhinin has over ten years' experience in software development. He has participated in full-cycle application development, leading development groups and providing hands-on experience in a variety of programming languages and technologies, including solution design and architecture. He works as a trainer in Luxoft’s Training Center, where he conducts trainings in the area of architecture and Java development. His major zones of interest is cloud- based and distributed applications, and DevOps.