Przejdź do treści

What stops a task from starting

Here's a few ideas about what stops a task from starting. They can all of course be in place all at once:

  • lack of detail in the context and expectations (triggers the desire not to waste time chasing assumptions, or a mismatch of communication styles to convey the)
  • lack of knowing how to start, where to start (performance anxiety, lack of relevant experience, difficult to reconcile competing metrics)
  • mismatch of task description and purpose to actual need
  • barriers to independent action (micromanagement, dogmatic requirements)
  • social factors, office politics (limited psychological safety to try novel approaches)
  • lack of conviction that the task will deliver results, feeling that there is a punishment if one "chooses poorly"
  • lack of surety of how long the task will take, and wanting the results immediately
  • lack of immediate reward in any form (including emotional support, affirmation, group morale)

Overcoming Barriers to Starting Tasks: A Practical Guide

1. Lack of Detail in Context and Expectations

What's happening: You're staring at a vague requirement like "improve the user experience" or "optimize the API" without clear success criteria. Your brain recognizes this as a trap—starting without clarity means potential rework.

Mitigation strategies:

  • The 5-Minute Clarity Session: Before touching code, spend 5 minutes writing down what you understand and what's unclear. This externalizes the fog and often reveals specific questions.
  • The "Done Looks Like" technique: Draft a brief description of what "done" looks like. Share it with your stakeholder: "Just to align—when this is complete, we'll have X, Y, Z. Does that match your vision?"
  • Assumption Documentation: Create a simple text file listing your assumptions. This isn't bureaucracy—it's insurance. "Assuming we're optimizing for response time, not memory" gives you a clear starting point and discussion anchor.

Exercises:

  • Practice template: For your next unclear task, use this structure:
Task: [original description]
My understanding: [what I think needs to happen]
Success looks like: [concrete outcomes]
Unclear: [specific questions]
Assumptions I'm making: [list them]
Time to clarify: [when I'll get answers]
  • The Mock Demo approach: Sketch what you'd show in a demo when "done." PowerPoint, Figma mockup, or even hand-drawn. This surfaces gaps fast.

Remember: Asking for clarity isn't a weakness—it's professional craft. Every senior developer knows that 10 minutes of alignment saves hours of rework.


2. Lack of Knowing How to Start or Where to Start

What's happening: The blank screen problem. You know the destination but the path has a thousand possible starting points. Analysis paralysis kicks in, or you feel like you should already know how to do this.

Mitigation strategies:

  • The Spike Approach: Give yourself permission to explore without commitment. Create a branch called spike/exploration and set a 30-minute timer. Your goal isn't production code—it's learning the landscape.
  • Start with Tests: When you don't know where to start with implementation, write a failing test first. Even if it's wrong, it gives you something concrete to iterate on.
[Fact]
public void Should_ProcessUserRequest_Successfully()
{
    // I don't know how yet, but this is what I want
    var result = processor.Process(request);
    Assert.True(result.IsSuccess);
}
  • The Scaffolding Pattern: Build the simplest possible skeleton first—classes, interfaces, method signatures with throw new NotImplementedException(). This creates structure without pressure.
  • Find Your Reference Point: Search for similar problems in your codebase. You've probably solved adjacent problems before. Git log and full-text search are your friends.

Exercises:

  • The 15-Minute First Pass: Set a timer for 15 minutes. Your only goal is to create something—a class, a test, a diagram, notes. Quantity over quality. When the timer goes off, you have momentum.
  • Rubber Duck Architecture: Before writing any code, explain your approach out loud (to a colleague, or literally a rubber duck). Hearing yourself often reveals the natural starting point.
  • The Three Paths Exercise: List three different ways you could start. Don't evaluate them yet—just list. Then pick the simplest one. Decision made, forward motion achieved.

Remember: Not knowing exactly how to start is the normal state for interesting problems. You're not behind—you're at the frontier. Senior developers don't know everything; they're just better at navigating uncertainty.


3. Mismatch of Task Description and Purpose to Actual Need

What's happening: You're asked to "add a caching layer" but suspect the real issue is inefficient database queries. The described solution doesn't match the actual problem, and your developer instinct rebels.

Mitigation strategies:

  • The "Why" Ladder: Ask "why" 2-3 times to get beneath the stated requirement.
  • "Add caching" → Why? → "API is slow" → Why does it matter now? → "Customer X is threatening to churn"
  • Now you can propose: "Let me investigate the slowness first. If it's queries, we might fix it faster than implementing caching."
  • Propose a Thin Slice: Instead of arguing against the requirement, suggest: "Let me spend half a day investigating the actual bottleneck. Then we can decide if caching is the right solution."
  • Cost-Benefit Transparency: Frame alternatives in business terms: "Implementing caching as specified: 2 weeks. Optimizing these three queries: 2 days, probably solves 80% of the problem."

Exercises:

  • The Problem Reframe: Write down:
What I'm asked to do: [literal task]
What problem this solves: [the why]
Alternative solutions: [other approaches]
My recommendation: [with reasoning]
  • The Prototype Conversation: Build a 1-hour throwaway prototype of your alternative approach. A working demo often speaks louder than arguments.
  • Stakeholder Perspective Role-Play: Step into your product owner's shoes. What pressures are they under? What would convince you if you were them?

Remember: Pushing back on requirements isn't obstruction—it's collaboration. Your technical insight is valuable. Frame it as "I want us to succeed efficiently" rather than "you're wrong."


4. Barriers to Independent Action

What's happening: You need three approvals to change a configuration file. Every decision requires a meeting. You're capable of solving the problem but bureaucracy or micromanagement blocks action.

Mitigation strategies:

  • The Permission Forgiveness Spectrum: Understand what you can do without asking. For low-risk changes (refactoring, local improvements), just do them and mention in standup. For medium-risk (API changes), inform before implementing. For high-risk (architecture changes), seek consensus.
  • Document Your Autonomy Boundaries: Have an explicit conversation: "What decisions can I make independently? What needs review? What requires approval?" Get this in writing (email, chat, wiki).
  • The Branch Strategy: Work on your approach in a feature branch. You're not "committing" to anything, you're "exploring options." This psychological reframe can reduce friction.
  • Build Trust Through Consistency: Deliver small, reliable wins. Each success expands your autonomy radius. Start with unglamorous tasks if needed—bug fixes, documentation, test coverage.

Exercises:

  • The Autonomy Map: Create a simple matrix:
Can do freely: [list specifics]
Should inform first: [list specifics]
Must get approval: [list specifics]
Not clear: [list—then discuss with manager]
  • The "Here's What I Did" Retro: In your 1-on-1, proactively share decisions you made independently and outcomes. This builds confidence (theirs and yours).
  • The Bounded Experiment: Negotiate: "Let me handle all bug fixes under 4 hours independently for two weeks. If quality stays high, we continue." Prove you can be trusted.

Remember: Micromanagement often stems from fear or past bad experiences. Your job is to make trusting you the obviously safe choice. Show, don't argue.


5. Social Factors and Office Politics

What's happening: You have an idea for a better approach but suggesting it might step on toes. You've seen colleagues criticized for "not being team players" when challenging the status quo. Psychological safety feels low.

Mitigation strategies:

  • The "Yes, And" Technique: Frame new ideas as building on existing approaches: "The current plan is solid. And if we also consider X, we might reduce risk..." This is collaborative, not confrontational.
  • Find Your Advocate: Identify someone with political capital who thinks similarly. Run your idea by them first: "I'm thinking about suggesting X. Am I missing something? How would you frame it?"
  • Use Data as Shield: "I noticed in our logs that 60% of errors come from this pattern" is safer than "I think we should change this." Objective data depersonalizes disagreement.
  • The Question Approach: Instead of "We should do X," try "Has anyone considered X? What's the downside I'm not seeing?" Curiosity is safer than advocacy.

Exercises:

  • Political Mapping: Privately note:
Who are the influencers?
Who are my allies?
Who might resist and why?
Who is neutral and could be convinced?
  • The Soft Launch: Test controversial ideas in small, safe settings first: 1-on-1s, friendly Slack DMs, lunch conversations. Refine based on feedback before going public.
  • Build Social Capital First: Help others with their problems before asking for support on yours. Politics is ultimately about relationships and trust.

Remember: Office politics isn't inherently toxic—it's just human dynamics at scale. You don't have to play games, but you do need to understand the landscape. Naive idealism often accomplishes less than strategic pragmatism.


6. Lack of Conviction in Task Outcomes / Fear of Choosing Poorly

What's happening: You're worried this solution won't actually work. Or worse, you'll pick the "wrong" approach and be blamed. Better to delay than to be the one who made the bad call.

Mitigation strategies:

  • Reframe Failure as Data: Every senior developer has a graveyard of approaches that didn't work. That's not failure—that's how you developed expertise. Adopt the mindset: "This is an experiment. If it doesn't work, we learned something valuable."
  • The Reversible Decision Framework: Most decisions are reversible. Ask: "If this doesn't work, how hard is it to undo?" If it's easy to reverse, the risk is low. Move forward.
  • Explicit Risk Assessment: Write down:
Approach: [what you're considering]
Best case: [what success looks like]
Worst case: [what failure looks like]
Most likely: [realistic outcome]
Reversibility: [easy/medium/hard to undo]

Often you'll realize the worst case isn't that bad.

  • Share Your Reasoning: Document your decision process: "I chose Approach A over B because of X, Y, Z. I could be wrong, and here's what would indicate that." This shows thoughtfulness, not recklessness.

Exercises:

  • The Post-Mortem Preview: Before starting, write a fake post-mortem as if the approach failed: "This didn't work because..." This surfaces your actual fears, which you can then address proactively.
  • The Confidence Calibration: After making decisions, note your confidence level (0-100%). Over time, you'll see your calibration improve—and that 60% confidence is often enough to proceed.
  • Small Bets Portfolio: Instead of one big risky decision, make several small experiments. If three out of five work, you're net positive.

Remember: Perfectionism is the enemy of progress. Your job isn't to be right 100% of the time—it's to make reasoned decisions with available information and course-correct quickly when needed. "Good enough now" beats "perfect someday."


7. Lack of Surety About Duration / Wanting Immediate Results

What's happening: You have no idea if this is a 2-hour task or a 2-week project. The uncertainty is paralyzing. And even if you start, the stakeholders want it yesterday.

Mitigation strategies:

  • Time-Boxing Instead of Estimating: Can't estimate? Don't. Instead: "I'll spend 4 hours investigating this Friday morning. By then I'll know whether it's feasible and can give you a real estimate."
  • The Cone of Uncertainty: Be explicit about estimate confidence: "High confidence this is 3-5 days. Medium confidence it could stretch to 8 if we hit edge cases. Low confidence on X part—that's my biggest unknown."
  • Breaking Down to the Knowable: Can't estimate the whole thing? Break it into pieces until you reach parts you can estimate. Then add contingency for the unknowns.
  • Managing Impatience: For stakeholders wanting it "now," offer tranches: "I can give you a basic version by Tuesday that handles 80% of cases. The full solution needs until Friday. Which timeline works better for your needs?"

Exercises:

  • The Estimation Retrospective: After completing tasks, compare actual time to estimated time. Track patterns: "I'm consistently 2x optimistic on database changes" or "UI work is usually accurate." Learn your biases.
  • The Reference Point Technique: For every task, ask: "What similar thing have I done?" Use that as your baseline, adjust for differences.
  • The Three-Number Estimate:
Optimistic: [if everything goes perfect]
Realistic: [my actual best guess]
Pessimistic: [if typical problems arise]
Report to stakeholders: Realistic + contingency

Remember: Estimation is a skill, not a talent. You'll get better with practice. And sometimes the right answer is "I don't know yet, but I'll know more by Thursday." Uncertainty is data too.


8. Lack of Immediate Reward

What's happening: You're working on a refactoring that won't show results for weeks. Or you're deep in a complex feature with no quick wins. The motivation well runs dry without feedback loops.

Mitigation strategies:

  • Create Micro-Milestones: Break work into tiny visible wins. Refactoring a module? Celebrate each class cleaned up. Building a feature? Each method that works is progress.
  • The Done List: Not just a to-do list—a "done today" list. At end of day, write down everything you accomplished, no matter how small. This makes invisible progress visible.
  • Social Reward Structures: Share small wins: "Got the user authentication flow working today" in Slack. Humans need acknowledgment. If your team culture doesn't provide it, create it.
  • The Placeholder Victory: Working on something that won't ship for a month? Set intermediate goals: "Tests passing," "API contract defined," "Performance benchmark met." Each is a mini-release.
  • Pair Programming Sessions: Sometimes reward is just not being alone. Pair for an hour. The collaboration itself can be energizing.

Exercises:

  • The Daily Three: Every day, before you stop working, write down three things you accomplished. Some will be small. That's fine. The act of acknowledging progress creates the reward your brain needs.
  • The Progress Visualization: Create a simple checklist or progress bar for your task. Check off each sub-task. The visual progress is surprisingly motivating.
  • The Celebration Ritual: Create tiny personal celebrations. Test passes? Stand up and stretch. Feature works? Take a 5-minute walk. Condition your brain to associate progress with reward.
  • The Learning Log: If a task isn't rewarding in results, reframe it as rewarding in learning: "Today I learned how TPL Dataflow actually works." Knowledge is a reward.

Remember: Motivation follows action more than action follows motivation. Start small, create tiny wins, and momentum builds. You don't need to feel motivated to begin—you need to begin to feel motivated.


Practical Action Plan: Starting Right Now

Feeling stuck on a specific task? Here's your immediate protocol:

  1. Time-box a start (10 minutes): Set a timer. Your only goal is to take any action related to the task. Create a branch, write a test, make a diagram, list questions. When the timer ends, you'll have momentum.

  2. Externalize your barriers: Write down which of the 8 barriers above are blocking you. Naming the obstacle makes it manageable.

  3. Pick one technique: Don't try to address everything. Choose one strategy from this guide that resonates. Apply it now.

  4. Share your intent: Tell someone (colleague, manager, even yourself in a note): "I'm starting X, using Y approach." Public commitment creates accountability.

  5. Set your next checkpoint: When will you review progress? Tomorrow standup? End of day? Friday afternoon? Schedule it now.

Final Thoughts

Every task you've completed started from this same place—uncertain, potentially overwhelming, with unclear paths forward. The difference between stuck and progressing isn't the presence of barriers. It's the willingness to take imperfect action despite them.

You have permission to:

  • Start messy
  • Ask clarifying questions
  • Make reversible decisions
  • Experiment and learn
  • Take breaks when stuck
  • Ask for help
  • Challenge requirements respectfully
  • Celebrate small wins

The code you write today doesn't have to be perfect. It just has to be better than not starting. And senior developer or not, that's always the real challenge—not writing great code, but having the courage to write the first line.

Now close this document and take one small action on that task you've been avoiding. Just one. You've got this.