My name is Joe Basirico, I help people build secure software. Learn more »

Project Success

6/9/2017 - Posted by joe

This diagram is an approximation of how I think about iterating toward a goal to increase my likelihood for success. There are a few concepts that I've packed into this diagram, so I'll try to explain here. I've also recorded myself drawing this diagram roughly in order of operations on youtube. here.

Step 1: Set a Clear Goal

Defining a clear goal and understanding what "Success" looks like is the most important first step. A make the analogy that a goal might be to Summit a mountain. Every action is a step. Steps can take you in any direction. If you're not careful about which direction you're walking, you may not be making it closer to your goal, and in fact you may be moving farther away! Do not waste time with actions that don't take you closer to your goal.

I'm a fan of SMART Goals (https://www.projectsmart.co.uk/smart-goals.php), but having goals that are at least Specific, Measurable, and Realistic is super helpful. Being able to track your progress so you know when you're going in the right direction is important and will help keep you inspired to complete the goal.

Step 2: Try a lot of ideas!

You may feel like you want to dive right into solving your problem or that you know the best way to do so. Instead try a few different things, ask around and challenge your assumptions, do research and see what sticks and resonates for you.

Step 3: Iterate and start working

Split your work into small attainable chunks. After each chunk test if you're closer to your goal or further away. Make sure each piece of work you start work on is the most important thing you can do and that it moves you closer to your goal. Don't work on "fun" things just because they're fun. Work on important, foundational things that you will make the largest difference first.

Do not attempt action without Iteration

Get feedback, and check against the goal as frequently as possible. If you focus on action and don't look up to check against your goal you can find yourself very far away from your goal and have wasted a large amount of time going in the wrong direction

Do not overestimate Sunk Costs!

We sometimes think back on the work we've done and overestimate the value of it. In a bad scenario we will overestimate the value of the work we've already accomplished, and underestimate the work ahead of us. If something's not working, shelve it and try something new. Ask yourself the question "How would I accomplish this goal if I knew everything I know now?"

Consider going back to Step 2 then to Step 3 with your new idea!

Step 4: Iterate frequently and check against your goal

This is the same as Step 3, but with a new starting point

Good Enough

Once you've made good progress toward your goal start asking if you've achieved "Good enough" Perfect is rarely achievable. You'll naturally make the most progress toward your goal early in the project. Trying for "Perfect" is a great target, but time and other pressures may make it clear that your time and energy could be better spent elsewhere.

Celebrate Success

It is incredibly important to reflect and celebrate your success. We often get too caught up in what could have been done better or we quickly move to the next project. It's good to know what can be improved for next time, but if that's all you focus on you can become burnt out and cynical. Focus on what was great and how proud you are of your accomplishment.