As a Software Engineer, having a consistent approach to be as effective as possible is crucial.
This thread goes over the framework I use. I've polished these steps over the last 20 years, and I believe they are a fundamental piece of my success as a developer.

This thread goes over the framework I use. I've polished these steps over the last 20 years, and I believe they are a fundamental piece of my success as a developer.


I start by splitting every project into small iterations 1 or 2 weeks long.
The process I'm about to explain applies to one of these iterations. I then keep repeating it over and over again.
(This works regardless of any other process/methodology that your team uses.)
The process I'm about to explain applies to one of these iterations. I then keep repeating it over and over again.
(This works regardless of any other process/methodology that your team uses.)

During every iteration, I go through seven different phases:
1. Organization
2. Estimation and Commitment
3. Prioritization
4. Execution
5. Review and Delivery
6. Presentation
7. Reflection
Let's talk about each one of these in detail.
1. Organization
2. Estimation and Commitment
3. Prioritization
4. Execution
5. Review and Delivery
6. Presentation
7. Reflection
Let's talk about each one of these in detail.


I take all of the work I want to accomplish during the iteration and do the following:
1. Break it down into smaller pieces
2. Capture all the necessary information
3. Make sure I understand the ultimate goal
4. Come up with a way to measure success


This phase focuses on three main goals:
1. Estimate the necessary effort
2. Estimate the potential value
3. Negotiate a healthy commitment with stakeholders
This is my last chance to assess whether completing the work is possible.


I go through the list and prioritize it.
Depending on the context, I usually focus on a couple of different goals:
1. Maximize throughput
2. Minimize risk
I move on to the next phase whenever I know the next task I should focus on.


This is where all the work for the top priority task happens. A mash-up of the following activities (not necessarily in this order):
1. Design
2. Development
3. Testing
4. Refactoring
When I finish the task, I move to the next phase.


Am I fulfilling the goals I established at the beginning of the iteration for this task?
Are there any teams that need access to this? Do they need this packaged and documented?
From here, I move on back to phase 3 and repeat until all work is done.


Now it's time to work on how I need to communicate and present my work to the rest of the team and stakeholders.
1. What's the appropriate language?
2. What should I highlight?
3. How do I communicate value?
4. What should I deemphasize?


This is the time I use to think about the work I finished during the iteration.
1. How did it go?
2. What did I learn?
3. Is there anything I'd like to improve?
4. How did the team receive the work?
5. What's the temperature of the project?

This process has helped me focus tremendously, so I've been using it for years and years.
I have it tuned in a way that maximizes "delivered value" and trust from those around me (managers, clients, teammates.)
I have it tuned in a way that maximizes "delivered value" and trust from those around me (managers, clients, teammates.)
