Big Fish in a Small Pond or Small Fish in a Big Pond?
A Developer Career Strategy

I’m going to break down the strategy that took me from an underpaid, mediocre developer to an engineering leader through a series of strategic job hops.
I love to code and help people reach their goals. I also like making money, gaining influence and status. You probably do too.
BTW — if you want to learn to code to start your journey then join me at Parsity.io
Developers are generally obsessed with salary, getting to senior levels and owning their own companies.
I think this is good overall.
In fact, this desire for more is what drives us to innovate, take on increasingly difficult tasks and automate ruthlessly. We are rewarded for doing these things well.
Unfortunately, many of you think the only way to get the money, power and respect you desire is to study LeetCode for 8 hours a day and go FAANG or bust. Or worse, you think putting in longer hours or getting infinitely better at writing code is the ticket. Wrong.
Here’s how I 4-xed my salary and climbed the engineering ladder by chasing uncomfortable-ness.
Every big fish was a small fish at one point.
The harsh truth is that staying where you are comfortable will limit your progress. I’ve seen it happen too often. I nearly fell into this trap.
I get it. Once you’re hired it’s tempting to coast.
- Interviews are stressful
- You may really enjoy your team
- Work/Life balance
- You believe the myth of stability
I want to add a disclaimer to the advice I’m going to give you: this worked for me and others engineering leaders I’ve spoken with. We also desired more money, status and influence. We chased leadership opportunities because we found them exciting and fulfilling. If you do NOT desire these things then the added stress will not be worth it.
Let’s dive in.
Step 1: Get to medium-sized fish
You are going to need to leave your first job before you get too good or else you risk becoming really good at ONLY working on that team and codebase.
Also — it’s unlikely you negotiated your salary and even getting promoted won’t give you the kind of boost that switching companies will.
Sorry, Charlie.
At my first job I barely knew JS. I also needed to learn C#, SQL and AngularJS to be productive.
It took me nearly 2 years to feel useful as a dev on this team. They people were awesome to top it off. I got mentorship, encouragement and opportunities to grow.
And then I left.
No hard feelings. I knew that I was underpaid at this role and if I wanted a massive jump in salary and to keep up with modern web development, I’d have to make a move.
I was naive at this stage.
I could build stuff. I knew how to use Git. I was a mid-level developer (or so I thought). I passed the interview for a small startup in San Francisco.
Then I got demoted.
Step 2: Become a small, lonely fish (Finding Nemo stage)
You’re going to doubt this move. You left what you thought was stability to join the unknown. You can’t just go anywhere though. This next move needs to either:
- Increase your salary
- Level you up by working with better engineers
Ideally, it does both.
How do you know it’s time to leave? Once you feel too comfortable. When the job becomes a bit mundane and thoughtless and you’re not learning OR not learning anything of value. Using AngularJS in 2023? Time to move.
I joined a fast paced startup as one of the founding engineers.
Onboarding? Well, my first day I got a laptop and an assignment and paired with one of the contractors.
The code base was Rails/EmberJS and the other developer was a super senior and regular contributor in the Ember community.
The first day someone made a joke about Djikstra.
Someone mentioned closure.
A bug that involved hoisting happened.
I was so far in over my head that my stomach turned.
The next 10 months were rough. I got called out twice for my underperformance. I was basically an anxious wreck during my tenure there.
I also learned more about unit testing, ownership and writing good software than I had in the previous 2 years.
Time to leave again.
Step 3: Join new pond as a medium-sized fish
You should now understand your technical gaps. Fill them in and seek out a new place to spread your wings with the knowledge you’ve acquired. You have 2 seasons as a developer under your belt.
Time to make a name for yourself.
The next hop is less about money and more about upward mobility. Does this new organization have room for you to grow and get promoted? Make your intentions known as soon as you get the offer.
Every new job is a chance to re-invent yourself. Now you’re a seasoned, respectable developer. Don’t prove them wrong 😅
I worked on enterprise software on a legacy platform. ✅
I joined a super small startup in SF. ✅
Now it was time for a mid-size startup.
This next company was where I knew I had to get promoted. By now my salary had doubled from the first place. But I was after more than just money. I wanted the senior title.
The 10 person startup taught me grit and how to be autonomous as a developer.
I took that attitude here and sought out every opportunity to show I could hang with the big dogs. I volunteered for on-call. I took on the feature with a tight deadline. I wrote down questions to ask during meetings. I had confidence finally.
I failed a lot.
Blew up production a few times.
Failed miserably on a high priority task.
I got promoted.
Between these failures I also did some good stuff. I reduced the latency on a query by 50% and saved money and user experience for a very popular feature.
- I fixed a critical bug after an all nighter to save a migration.
- I onboarded other devs.
2 years later I left.
Am I a big fish now?
Step 4: Make way, BIG fish coming through!
You have 2 choices now:
- Stay and climb the ladder, especially if your focus is being a technical leader (Staff or Principal) and the team is exceptional
- Skip a few rungs on the ladder by moving to an easier company
Either way, you want to seek out a way to increase your influence in your organization and get a clear path towards the next step which may be people management or technical leadership.
I chose #2.
I was slightly above average at the last startup. I was good enough to get promoted but to move up the engineering ladder would surely lead to burnout at this company.
I was also in stiff competition with people much more accomplished than I was. I was one of the few developers without a masters degree or comp-sci background.
Again, no hard feelings. I loved that team and my co-workers.
I saw an opportunity at a large company with a fairly young dev team.
This could be my chance.
I took it and was not disappointed.
This new team was starting to write React and lacked some fundamental processes which I was familiar with from the previous companies.
I was no longer a slightly above average developer. I was an authority and took on more responsibility and some risk to get promoted quickly.
I implemented PR processes. Created test suites and libraries to make work easier. I organized events and spoke to audiences outside of engineering.
I’ve made some large mistakes. I’ve thought I might be fired more than a couple times. I’m learning a lot still.
I’ve stayed at this company for the last 3 years and have gone from senior to staff to engineering manager. Chasing a slightly less comfortable experience at each step.
What’s next?
I don’t know. I just know that when I get too comfortable for too long — it’ll be time to leave again.
Call me crazy.
I don’t like sports. Or hiking. I don’t want to lounge around on a boat fishing. I enjoy the game of work, and managing a team. I am naive enough to think that I can make a difference at company-scale. So I play it for fun and profit.
It works for me.
I hope you take whatever parts you find useful from my fishy story and apply it to your own journey… if that’s your thing 😉.
If you’re ready to start your journey as a small fish then join me at Parsity.io




