Hi, I’m Tomas, a full-stack developer at productboard. I’ve been meaning to put in writing how I got this gig and more importantly, why.
After giving notice to my previous employer, I thought it would be best to chart my professional trajectory to better understand what I want to do next.
My thoughts below are necessarily subjective. I still hope you might find some use in them.
All the names of my previous employers are obfuscated.
Before landing at my first programming employment, I’ve spent a lot of time doing freelance development. For most of my professional life, I’ve been doing freelance gigs on the side for extra income or when I was in between jobs. Nope, I wasn’t a consultant. Like many wide-eyed juniors before me, I picked from the low hanging fruit when it came to this market.
In general, being a freelance developer was personally rewarding and taught me so much. It was certainly an experience. Not necessarily a pleasurable one, but valuable nonetheless.
I eventually stopped doing freelance altogether.
- It can be lonely.
- There’s very little financial security when you’re starting out.
- You have to manage a business on top of being a developer. Otherwise, you’ll get squeezed by the market (and clients). But that’s a skill I didn’t care for much at that point in my life.
- It’s challenging to plan your professional growth when you can’t be picky about projects.
My first employment in tech was for a US corporation, let's call it CORP inc. They’re pretty huge with about 30K employees and offices all around the world. I was there when they moved their offices from Prague’s city centre to Karlin, which was kind of funny. I can almost see the building they’re in from productboard 😅
I’ve been doing a QA job there hoping to eventually transition to be a dev. I spent about 18 months there and learned a ton of things.
Most of it was about how to operate in a corporation rather than how to handle the cool tech. I didn’t find the culture too stifling, but I felt like a very small cog in a very big machine.
Some things I wasn’t quite satisfied with there:
- The money wasn’t as good as I hoped. But I was fresh out of school and knew jack squat about negotiation.
- I didn’t feel my contribution mattered. In one of the projects I was involved in, there was a critical need to involve more people to ensure the success of the project. But it was as if nobody cared.
- The tech was obsolete to the point senior developers didn’t want to work on it (legacy 12-year-old software solution).
- The people there were by and large easy going with and helpful. But apart from one notable exception they didn’t seem passionate about the work they were doing.
- I gave the notice before my contract was up for renewal. I felt the transition to the full dev position was still the same distance away as when I started. Part of that was due to my inexperience with self growth, paired with the fact that there was nobody who had a vested interest in seeing me grow.
I wanted to work on a web platform as a developer. This new technology called React was picking up and I wanted to get on board. I didn’t think about what the job should be about. I just wanted to do web development and avoid corporations.
Then I came across a small, family-run company that focused on creating tools for online learning. There was a lot to engage with, like peer to peer videos & audio, in-browser collaboration tools and a small focused team where every decision mattered.
It was a great place to learn how to get started as a frontend dev, to build with React, Typescript, and MS technologies. But it soon turned out that there is more to satisfying work experience than the tech stack alone.
Some of the things that made me realize this wasn’t exactly where I wanted to be:
- The team and the product didn’t grow in terms of scale and I soon reached my limit of what I could learn as a frontend developer there.
- There was no concept of culture. There was friction between people and frequent ego clashes.
- I didn’t have faith in the leadership and often questioned their decisions.
- The money was alright. I took this as an opportunity to learn and increase my value.
- It became apparent that the ambitions either weren’t there or that the founders didn’t have a clear enough vision. We were bought by a big telecom company (our biggest customer) eventually. They had a roadmap, but we just couldn’t hire.
- I burned out hard in about 3 months when I tried to fill the role of Product Manager, UX designer and Engineering lead as well as being a frontend developer.
- There were hard boundaries around the product development that I didn’t have time to learn about. There simply wasn’t time for it. Things in the realm of dev-ops, infra, and DX.
What I really wanted to do was to own the development from start to finish.
As I left my cooperation at the previous company, I interviewed for a frontend position at a small digital agency where I already knew some folks. I got the gig, started working but didn’t have enough projects lined up so I ended up having to do some freelance work to keep the lights on. It was a bit of a rough start.
But good God.
The work was so much fun. I knew every layer of the stack. I talked with talented and passionate people every day. There was so much creativity with a real “let’s get things done” mentality there.
At first, there didn’t seem to be a solidified culture concept, but then this organic culture sprang up on its own.
The agency was like the holy grail now. Small teams of capable and passionate people with well-scoped projects built from scratch to finish. The promise felt too good to be true.
The engineering team was bigger than the one at my previous job. Although I was strong in contemporary frontend development, I suddenly had to take on diverse responsibilities:
- I created a new FE build pipeline and formulated the FE coding guidelines.
- We had weekly coding challenges.
- I picked up BE development in PHP.
- Got to work with big companies.
The money was way below the market at the time, but I was happy. I was content with the money because I got to be around these amazing people every day. I got a chance to grow and learn.
But there was always this tension between projects. Sometimes, things spilt into the next project. Or the next project wasn’t quite ready. Other times, I had to make an engineering compromise I wasn’t happy about.
The engineering wasn’t the pillar on which the business stood. It was just one of the services we provided. After years of trying to bring the engineering to the next level, the lead engineer left.
Where did that leave me?
- The culture was great. There was stress and tension and hustle, but it was enjoyable in a way I didn’t think possible.
- The job felt fulfilling until it didn’t. I widened my expertise and became more of a generalist. But the project switching eventually got repetitive.
- There was a limit to how the company could solve complex problems with the engineering department and it became apparent that I wanted to go bigger.
- There was some deal of financial instability. The money wasn’t great, but I wasn’t undervalued in the context of the company. Everybody knew how much the client invoiced for an hour of our time.
- I wanted to have ownership of the code and the product. There is rarely time to be perfect, but there was seldom opportunity to be at least great. The transitive nature of short projects paid by the man-day doesn’t allow that.
- When the most senior engineer left for greater challenges, I felt the company didn’t have much to offer me.
I gave my leave notice after that and spent a lot of time thinking about what it is that I really liked and wanted to do.
I set out to get ahead of the technological curve again (as I got stuck in reusing proven tech). I knew I had to up my value on the job market for whatever it was I decided to do next.
I uploaded and polished a single GitHub project that I felt was good enough example of my work.
What I wanted to do differently was to have a clear gap between employment. To give myself time to reflect.
To give that a structure, I put down in writing different aspects of employment, such as financial compensation, remote vs on-site, tech stack, culture, mission, product. I put these on index cards and started shuffling them around, trying to envision the companies that would embody those qualities and me in them.
When I started this soul searching, I thought I wanted to work remotely for a foreign company with a product. When I ended my search, remote work ended up at the bottom of my list.
Here is what I realized mattered most to me:
- I need to feel financially secure.
- I want to be surrounded by people more capable, smarter, BETTER than me. So I can soak it all up, learn relentlessly.
- I’m scared to give up the culture I had at FNKY s.r.o.. To end up in some corporate slog. This is fear is bigger than I anticipated.
- I want to do product development. I want R&D. I want ownership of the code. I want to build and nourish a thing that I can be proud of.
- I want to work on a modern tech stack. I don’t care for cutting edge, I want a mature approach to adoption.
- I need to trust the leadership, the mission and the product. Enjoyment of work is no longer just about solving technical challenges.
Turns out that my longing for remote was dictated by the fact that I felt there was no one in the Czech republic to satisfy the rest of my requirements.
I wanted all of the above but didn’t want to move.
As I started searching for companies, I still felt that the best options were outside the Czech Republic, outside Europe even. I sent out about 15 emails, got some replies, scheduled a few interviews.
Then it happened
Out of the blue, I got an email about this USA startup called productboard — but it didn’t ring any bells at the time. It turned out that they have an engineering team in Prague.
Look, I have a lot of headhunters on my back. I imagine you do too. But this pitch was on point.
I shot them a short reply and got one back in a matter of minutes. That very same evening, I talked with a bunch of people from the engineering department. I found out they were just cooling down from ReactiveConf 2018. I also met with the CTO, Daniel, over a beer.
What were my biggest fears at the time?
- The technical prowess of the few people I met there was intimidating. Was I good enough?
- This is a startup during takeoff, would I be able to keep up in terms of skill?
- This would be my first startup. Would my work-life balance suffer?
I was scared of the technical interview. But I was intrigued by the cultural interview as it was my first. It was also obvious that they cherish and protect the culture at productboard at all costs. As Dan Jacobs famously said,
“I’d rather have a hole than an asshole.”
It turns out I’m not that much of an asshole, since I’ve been at productboard for over a year now 😅
On the fast track
It’s good to do some housecleaning each year. Did I manage to hit the goals I setup? How is productboard treating me?
Well, I’ve learned more about web frontend in a year than in the three past years combined.
I mentioned during a one-on-one talk that I might be interested in going full-stack, but that I don’t know the language. They then gave me the time allowance to go slow and learn by doing, along with a mentor who was ready and eager to help.
Now I’m full-stack 🤷♂️.
I learned a ton about Postgres, Docker and lately Kubernetes.
If I’m in the office after 6pm, it’s usually because there’s a party going on (Thirsty Thursdays FTW 🥂). I can count on the fingers of my hand how many times I had to crunch and stay late at work. All of those could have been avoided if I wasn’t an idiot 😅.
Each and every person I meet on a daily basis passes my Beer Test — basically if I would want to grab a beer outside of work with them. I also got a chance to deliver some kick-ass features and see their impact on our customers (some 2,400 companies trust productboard). A day doesn’t go by without a discussion about clean code, TDD, best practices and the adoption of new tech.
The whole company transformed tremendously. There’s a 4x increase in headcount. Amazingly, still a notable lack of assholes in the office.
When I first started, we had one QA guy. Now there’s a team of five and they run over 200,000 tests per month 🤯. Our whole shebang was migrated from Heroku to a different cloud provider by a new dedicated infra team. There was a small group playing board games every Tuesday after work. Now I’m part of a DnD campaign 🎲.
You get the point. There’s still so much to do and the learning possibilities are endless.
We also started doing a 360 feedback. There’s a career ladder being put in place. I now know what steps to take if I’m aiming for a different title. Nobody’s pushing me though.
What I’m saying is — I like it here.
The only thing missing from my year-old soul-searching list was remote work. And what do you know, we’re building a fully remote team starting this year (in European timezones).
I get goosebumps when I look at some of the customers that are using our product. It feels surreal to know who will be happily clicking away on things in your today’s deploy.
I can’t begin to imagine where productboard will be in another year. But I’m pretty certain I want to be there to see it.