Learn how to set annual revenue goals as a solo developer. Compare stretch, realistic, and sandbagged targets to find what actually works for your business.
You're sitting at your laptop on a quiet Sunday afternoon, staring at last year's invoices. The question hits you like it always does: "How much should I actually be making this year?"
That's not a rhetorical question. It's the foundation of everything that comes next—how you price clients, which projects you take, whether you hire help, and whether you feel successful or perpetually behind at the end of the quarter.
Most solo programmers approach this in one of three ways, often without realizing they're making a deliberate choice. You might swing for the fences with a number that feels impossible, then spend the year chasing it. You might pick something reasonable based on last year's numbers plus a modest bump. Or you might quietly set a target you know you'll crush, just to guarantee a win.
Each approach has a name, a psychology, and a very different outcome.
This isn't about which one is "right"—it's about understanding what each one does to your business, your stress levels, and your actual growth trajectory. And it's about picking the flavor that matches how your brain actually works, not how it's supposed to work in theory.
Before we dig into the nuance, let's define what we're talking about. These aren't academic categories—they're real patterns that show up in how you plan your year.
A stretch goal is an ambitious target that feels genuinely difficult to hit. It's typically 20-40% above what you achieved last year, or above what you'd confidently predict based on current trends. The idea is that reaching for something harder will push you to work differently, charge more, or land bigger clients than you would if you just aimed for a modest increase.
Research on stretch goals is actually pretty interesting. The Stretch Goal Paradox from Harvard Business Review digs into how these ambitious targets can motivate people—but also how they can backfire if they're too disconnected from reality. The paradox is that stretch goals work best when you believe they're achievable with extraordinary effort, not when they feel like fantasy.
For a solo programmer, a stretch goal might look like: "I made $120K last year. I'm going to hit $160K this year." That's a 33% jump. It's not impossible—you could land a bigger retainer, raise your rates, or pick up more work—but it requires deliberate action and some luck with client acquisition.
A realistic goal is what you'd expect to achieve based on current trajectory, market conditions, and your actual capacity. It's usually a 5-15% increase from the previous year, or a projection based on your current pipeline and typical conversion rates.
This is the goal that Measure What Matters by John Doerr often emphasizes in the context of OKRs (Objectives and Key Results)—you want a mix of achievable and aspirational goals, not all one or the other. A realistic goal is grounded in data. You know your close rate. You know your average project value. You know how many hours you can realistically bill.
For the same programmer: "I made $120K last year with a relatively stable client base. I expect to make $132K this year, assuming I keep my current clients and pick up one or two new mid-sized projects."
Sandbagging is when you deliberately set a target you know you'll beat. The term comes from sales forecasting, where reps would underestimate their numbers to avoid pressure and guarantee they'd hit their goals. In the context of personal revenue targets, it means picking a number that feels safely achievable, maybe even conservative.
What Is Sandbagging in Sales? explains how this practice can create a false sense of security in forecasting, but for solo programmers, it serves a different psychological purpose. It's not about misleading anyone—it's about setting yourself up for a win.
For the same programmer: "I made $120K last year. I'll set my goal at $128K. I'm pretty confident I can hit that, and anything beyond is a bonus."
You might be thinking: "Okay, I pick a number. Why does it matter which flavor I choose?"
Because your annual revenue goal does something subtle but powerful. It shapes how you make decisions all year long.
When you set a stretch goal, you're implicitly saying: "I need to work differently." That might mean raising your rates, being more selective about clients, investing in marketing, or building a product alongside your services. It creates pressure and urgency. That pressure can be motivating—or it can be demoralizing if you're tracking progress in Q2 and realize you're way behind.
When you set a realistic goal, you're saying: "I'm planning for what's likely." This is the goal you can actually forecast against. You can break it into quarterly targets, project cash flow, and plan your year with some confidence. It's the goal that lets you sleep at night because it's grounded in actual numbers.
When you set a sandbagged goal, you're saying: "I want to feel successful." There's something psychologically powerful about hitting your targets. It builds confidence. It lets you declare victory. But it also means you might be leaving money on the table—you're not pushing as hard as you could.
None of these is inherently wrong. But they have very different consequences.
Let's dig into stretch goals first, because they're the most seductive and the most dangerous.
The appeal is obvious: if you aim higher, you'll achieve more. There's research backing this up. Stretch Goals Vs. Realistic Goals from Forbes breaks down how ambitious targets can drive innovation and performance. The theory is sound.
But here's what actually happens when you're a solo programmer with a stretch goal:
You set $160K for the year. By March, you've made $28K. You're tracking at about $112K annualized. You're already $48K behind. That gap is real, and it's visible every time you glance at your numbers. It creates a constant low-level anxiety. You start taking projects you might otherwise pass on. You start underpricing because you need to hit the number. You work harder, but not necessarily smarter.
The research on stretch goals actually shows something interesting: they work better in organizational contexts where you have teams, where the goal is distributed across many people, and where there's institutional support. For a solo programmer, a stretch goal that's too aggressive can actually reduce your decision-making quality because you're operating from a place of scarcity rather than strategy.
The right way to set ambitious goals from McKinsey emphasizes that ambitious goals need to be paired with realistic planning and adequate resources. For solo devs, "resources" is mostly your own time and energy. If your stretch goal requires you to work unsustainably, it's not actually ambitious—it's just exhausting.
That said, stretch goals aren't bad. They work really well if:
Realistic goals are the unsexy middle ground. They're not exciting. They don't feel like you're pushing yourself. But they're where most of the actual planning happens.
A realistic goal is what lets you answer the second question that every solo programmer worries about: "How's the business actually doing?" Because you can compare your actual progress against a forecast that's grounded in reality.
Here's how you build a realistic goal:
Start with your last year's revenue. Now list your current clients and their typical monthly spend. That's your base. Add in your conversion rate for new business—if you close 1 in 3 prospects and your average new project is worth $8K, and you typically get 2-3 qualified leads per month, you can forecast new client revenue. Now subtract for the clients you know are leaving or reducing their spend.
That number is your realistic forecast. It's not glamorous, but it's honest.
The power of a realistic goal is that it lets you use tools like Cashierr to actually track against it. You can set quarterly targets. You can see if you're on pace. You can spot problems early—like if you're tracking 15% below forecast in Q2, you know you need to adjust your spending or pick up new clients before Q3.
Realistic goals also have a psychological benefit that's often overlooked: they're achievable. When you hit them, it feels good. You get a genuine sense of accomplishment. And that momentum carries into the next year.
Setting Stretch Goals That Work from Gallup actually suggests that the most effective approach is to have both—a realistic goal that you're confident in, and a stretch target that represents upside. The realistic goal is your baseline. The stretch goal is your "if everything goes right" scenario.
For solo programmers, this means: "My realistic target is $132K. My stretch target is $160K. If I hit $132K, I'm happy. If I hit $160K, I'm thrilled."
That's a framework that works.
Now let's talk about sandbagging, because it's the approach that a lot of solo programmers actually use, even if they don't call it that.
Sandbagging gets a bad reputation in corporate contexts. Sandbagging Sales Forecasts from SHRM talks about how it distorts organizational planning and creates misaligned incentives. When sales teams sandbag their forecasts, the company can't plan properly.
But when you're a solo programmer, you're not misleading anyone. You're just being conservative.
The appeal is straightforward: you want to win. You set a goal you know you can hit. Then you hit it. You get to say "I crushed my targets." That feels good.
There's also a practical element: if you're uncertain about how much work you'll have, or if you're worried about client churn, sandbagging gives you a safety net. You're not betting your sense of success on factors you can't fully control.
But here's the catch: if you sandbag too much, you're leaving money on the table. Not just literally—you might actually earn $140K when you set a goal of $125K—but strategically. A sandbagged goal doesn't push you to make different decisions. You're not raising your rates. You're not being more selective about clients. You're not investing in growth. You're just coasting.
Over time, that coasting adds up. The gap between what you could be earning and what you are earning grows. And if you're using a tool like Cashierr to track your business health, you'll start to see that gap reflected in your quarterly forecasts.
Sandbagging works as a short-term psychological strategy. But it's not a long-term growth strategy.
Here's the thing that most goal-setting advice misses: the "right" goal isn't the one that's theoretically optimal. It's the one that actually motivates you and that you'll actually track against.
If you're the type of person who thrives on pressure and challenge, a stretch goal might be exactly what you need. You'll work harder, you'll make bolder decisions, and you'll probably end up earning more even if you don't hit the exact target.
If you're the type of person who gets demoralized by falling short, a realistic goal is probably better. You'll hit it more often, you'll feel successful, and you'll have the psychological momentum to push harder next year.
If you're naturally risk-averse or if you're in a period of business uncertainty, sandbagging might be the right move for now. Just be aware that it's a short-term strategy, not a permanent one.
Here's a framework for deciding:
Choose a stretch goal if:
Once you've decided which flavor you're going for, you need to build the actual number. This is where a lot of solo programmers get stuck—they pick a target without grounding it in anything.
Start with your baseline. What did you earn last year? Let's say it's $120K.
Now, what changed this year? Do you have new clients locked in? Are you losing any? Are you raising your rates? Are you changing your service offering?
For a realistic goal, you're building a bottom-up forecast:
For a stretch goal, you're taking that realistic number and adding 20-40% by making specific bets. "I'm going to raise my rates by 15% and land two bigger clients." "I'm going to launch a productized service that brings in an extra $20K." The stretch goal needs a narrative, not just a number.
For a sandbagged goal, you're being conservative with your realistic forecast. You might assume lower client retention, lower conversion rates, or smaller average project values. You're building in a buffer.
The key is that all three approaches should be grounded in actual numbers, not just vibes.
Here's where the psychology of goal-setting meets the reality of running a business: most solo programmers set an annual goal in January and then don't check progress until November.
That's a problem because it means you can't course-correct. If you set a $160K stretch goal and by June you're tracking at $70K, you don't know it until it's too late to do anything about it. By then, you're either going to miss the goal badly or you're going to make desperate decisions in Q4 that aren't good for your business.
This is where quarterly check-ins become critical. You don't need to obsess over your numbers every week, but you do need to look at them every three months and ask: "Am I on track? Do I need to adjust my goal? Do I need to adjust my strategy?"
A tool like Cashierr helps here because it's built specifically for solo developers who need to understand their business health. Instead of manually pulling together invoices and expenses and trying to forecast, you can see your quarterly revenue projection, your gap-to-goal, and your client concentration risk all in one place. The AI agents track what's happening and flag when something's off.
The point is: your annual goal is only useful if you're actually checking progress against it. Otherwise, it's just a number you wrote down in January.
Here's something that stretch goals often miss: the risk of depending too heavily on a small number of clients.
If you're a solo programmer with three retainer clients that account for 80% of your revenue, and you set a stretch goal of $160K, you're implicitly betting that all three of those clients stay. If one leaves, your goal is suddenly impossible.
This is where realistic and sandbagged goals have an advantage. They're usually built on a more conservative assumption about client retention. But stretch goals can actually push you to diversify, which is healthier long-term.
When you're setting your annual revenue goal, you should also be thinking about client concentration. What percentage of your revenue comes from your top client? Your top three? If it's more than 50% from any single client, you have concentration risk.
Your goal-setting should account for that. If you're trying to reduce concentration risk, that might be part of your stretch goal narrative: "I'm going to land three new mid-sized clients and reduce my top client from 40% to 25% of revenue."
That's a more sophisticated goal than just "I'm going to make more money." It's about building a more resilient business.
Once you've set your annual goal, you need to break it into quarterly targets. This is where the real planning happens.
If your annual goal is $132K (realistic), that's roughly $33K per quarter. But it probably won't be even. Q1 is often slower as people get budgets approved. Q4 might be stronger as companies try to spend remaining budget. You might have a big project in Q2 that skews that quarter higher.
Your quarterly targets should account for the actual rhythm of your business. If you know Q1 is typically 20% slower, your quarterly targets might be: Q1: $26K, Q2: $35K, Q3: $33K, Q4: $38K. They add up to $132K, but they're distributed based on reality.
Then, at the end of each quarter, you check: Did I hit $26K in Q1? If yes, great. If no, what happened? Did I lose a client? Did projects take longer than expected? Did I not pursue new business as aggressively as planned?
That's where you course-correct. If you're down $5K in Q1, you know you need to make that up in Q2 and Q3. You can adjust your strategy. You can pursue more clients. You can raise your rates on renewal. You can make intentional decisions instead of just hoping things work out.
This is the difference between having a goal and actually using it to run your business.
Here's something that goal-setting advice rarely talks about: sometimes you need to change your goal mid-year.
If you set a stretch goal of $160K and by Q2 it's clear that you're not going to get there—you lost a major client, the market shifted, or you just didn't execute—you have a choice. You can keep pushing for the original number, knowing you'll probably miss it. Or you can adjust.
Adjusting your goal isn't failure. It's realism. Markets change. Circumstances shift. If you set your goal based on certain assumptions and those assumptions no longer hold, it's okay to revise.
The key is to do it deliberately, not just give up. If you're going to adjust from $160K to $140K, you should understand why. What changed? What does that mean for your business? What are you going to do differently in H2 to hit the new target?
A realistic or sandbagged goal is easier to adjust because it's more conservative to begin with. A stretch goal requires more conviction, so adjusting it feels like failure. But sometimes that's the right call.
All of this comes down to one thing: you need a system for planning and tracking your revenue.
For most solo programmers, that system is a spreadsheet. You have a sheet with your clients, their monthly spend, and you project out the year. Then you have another sheet with your actual invoices, and you manually compare them to your forecast.
It works, but it's tedious. And because it's tedious, most people don't update it regularly. The forecast gets stale. You stop tracking progress. Your annual goal becomes just a number you wrote down.
That's where Cashierr comes in. It's built specifically for solo programmers and small dev teams who need to understand their business health. You connect your invoicing system, set your revenue goals, and the AI agents handle the rest. They track your actual revenue against your forecast. They flag when you're off pace. They show you your gap-to-goal, your client concentration risk, and your quarterly projections.
Instead of spending an hour a month updating a spreadsheet, you spend five minutes looking at your dashboard. You know exactly where you stand. You can make better decisions.
The point isn't that you need a fancy tool. The point is that you need a system that you'll actually use. If a spreadsheet works for you and you update it every month, great. If you need something more automated, Cashierr is built for exactly your situation.
Here's something that changes how you think about annual goals: they compound.
If you set a realistic goal of $132K this year and you hit it, next year you can set a goal of $150K with confidence. You've proven you can execute. You have more data about what's possible.
But if you set a stretch goal of $160K and miss it, landing at $140K instead, next year's goal-setting is psychologically different. You might feel like you failed, even though you earned $20K more than your realistic baseline would have been.
This is why the choice of goal flavor matters. It's not just about this year. It's about the trajectory you're setting for your business.
If you're in a phase where you're building confidence and stability, realistic or slightly sandbagged goals make sense. You're proving to yourself that you can execute. You're building a track record.
If you're in a phase where you're ready to grow aggressively, stretch goals make sense. You're pushing yourself to work differently, to charge more, to be more selective about clients.
But you should be intentional about which phase you're in. Don't sandbag forever because it's comfortable. Don't stretch forever because you think you should. Match your goal flavor to where you actually are in your business.
Last thing: your annual revenue goal is not a prediction of the future. It's a tool for decision-making.
It's a way of saying: "Here's what I'm aiming for. Here's how I'm going to know if I'm on track. Here's where I'll course-correct if I need to."
The goal itself matters less than what it makes you do. A stretch goal that pushes you to raise your rates and be more selective about clients is valuable, even if you don't hit the exact number. A realistic goal that lets you forecast accurately and make strategic decisions is valuable, even if you exceed it.
A sandbagged goal that you crush might feel good, but it's only valuable if it's a stepping stone to something bigger next year.
Pick the flavor that matches your psychology and your circumstances. Build it on actual numbers. Check progress quarterly. Adjust when you need to. And remember: the goal is just the starting point. How you use it is what matters.
Your annual revenue goal is the answer to one of the two questions every solo programmer worries about: "How much should I make this year?" The other question—"How's the business actually doing?"—is answered by actually tracking against that goal and understanding what the numbers mean. That's where the real insight lives.
Master the 3-bucket system for solo developers: operating, tax, and profit accounts. Stop leaving money on the table and make tax season painless.
Master your solo dev finances in 30 minutes every Friday. Track revenue, expenses, goals, and cash flow with this step-by-step ritual.
Master revenue forecasting by tracking just 5 metrics. Learn which data points drive 80% of forecast accuracy for freelance developers.