Year in Numbers — Behind the Scenes of an Early-Stage Startup Engineer

Carl Rannaberg
12 min readJun 20, 2021
Outfunnel team in the summer of 2019

Have you ever wondered how does a life look like for a developer in an early-stage startup? Or you are one of those developers and wonder how people in similar circumstances work. Look no further as I deep dive into one year worth of numbers and lessons learned.

This post captures my first year in Outfunnel, a sales-centric marketing automation tool, during which we rebuilt some parts of the initial prototype and built new features next to the current functionality.

Developing fast with boring tech

Averaging 261 lines of code, 7 commits and 1.6 pull requests per workday

Joining Outfunnel together with another developer we were tasked with rebuilding the web application which was then part of a Node.js monolith. Having previously worked with Vue.js and having had a brief experience with Vuetify we decided to go with these as a foundation of our new webapp.

While building the single-page application on top of Vuetify we needed an API to connect to. For that we chose familiar and battle-tested Express.js and as our database was MongoDB we also took Mongoose to create schemas and models for our REST API.

When making the choices to our tech stack we tried to pick something which we have had experience with and implement fast but at the same time would be future proof. If you’re in the early stages of a startup where every day counts, you need optimise for coding speed and in order to do that choosing boring tech is the only sensible option. You shouldn’t experiment with technology, rather with the solution provided to customers.

Build as little as you can get away with.

During the process of rebuilding webapp and API we discovered several features which we have yet to build into the new stack as our customers have yet to mention that they miss them. The biggest lesson learned here is that when rewriting a part of your system it’s an opportunity to clean up your feature set in addition to improving your code and architecture. It’s often a waste of precious time to have feature parity between legacy and new implementation. Previous assumptions get debunked and customers needs change during the lifetime of your product.

Having recently moved out of my apartment I can relate this rebuilding effort with moving. Both are wonderful opportunities to clean house literally and figuratively. It’s about getting rid of the things that are not useful anymore and inhibit your speed of moving forward. Because every bit of code probably need to be read and understood by someone in the future which takes time and effort away from building something useful for your customers.

Startups don’t need processes, right?

As I joined the team with another developer our development team headcount rose from 1 to 3 which meant that instead of a single developer we had an engineering team which needed to communicate inside and outside the team.

Hours spent on meetings (based on my personal calendar)

As with most things in life you need balance and moderation. Processes and meetings are no different. You need just the right amount to be effective, a Goldilocks zone of processes, if you will. No processes and you might fall into chaos; too many and you can’t get any meaningful work done. Keeping that in mind we implemented parts of Scrum and Kanban:

  • Daily standup meetings: in order to be in sync and plan the day ahead
  • Retrospective meetings: reflecting on our collaboration
  • Kanban board in Github: sharing status with the team
  • Code reviews: sharing knowledge and ensuring code quality
  • Tech sync meetings: sharing knowledge and discussing architecture

After 6 months of developing we need to start recruiting again and I also took the role of managing the team which meant regular one-on-one meetings every 2 weeks with my direct reports.

Recruitment is hard work

After building out the foundations and starting build our next big feature we realised we need more developers to help build it.

Although I had conducted tens of interviews while being an Engineering Team Lead in Pipedrive I had no experience recruiting without the recruiter doing the job of outreach and scheduling meetings. As appropriate for a small company I had an opportunity to wear a recruiters hat by posting to job boards and social media, contacting acquaintances for leads, searching through LinkedIn and contacting promising candidates.

Hiring pipeline from CV’s viewed to developers hired

After looking through hundreds of CV’s, talking to tens of candidates we finally hired and onboarded 2 new developers, growing our engineering team from 3 to 5 people.

Internal hackathons for rapid prototyping

First Outfunnel hackathon in a cottage in Läänemaa, Estonia

When building a product you usually have a strategic roadmap which you implement from sprint to sprint. From day to day you also debug customer issues and fix bugs. One of the core tenets in startups is the need for experimentation in order to find the product/market fit. In order to build prototypes of new features fast we organised in-house hackathons. To stimulate our creativity and increase our energy levels we changed the scenery and went out of town to work in houses next to wilderness.

During our first hackathon we spent 2 days building a contact list with search and contact detail pages with engagement feeds. At the end of the hackathon we were able to demo a working prototype. After the event it took another week for a single developer to get the functionality ready for production and in the hands of customers.

During the hackathon we tracked our progress on physical Kanban board with “todo”, “in progress” and “done” columns using post-it notes for tasks which we created at the start of the first day during the planning session. In order to keep the energy level high and environment distraction free we used a physical timer to time our working sessions of 60–120 minutes which according to science is the maximum we can productively work in a single session. Between the sessions we had breaks of 15–30 minutes to get a snack, walk around, have a chit-chat and otherwise recharge for the next session.

Second Outfunnel hackathon in a house built on a raft in Raplamaa, Estonia

Our second hackathon had already a larger team participating where we built a lead scoring feature. It consisted of calculating the score based on events, showing the score in the app and also syncing the value to CRM. Unfortunately this time we weren’t able to demo the full feature at the end of the hackathon as there was too little time left to tie together the parts different developers built. Fortunately it took only 2 days for single developer to get the feature production ready after the event.

In addition to getting a functional prototype of a new feature there are other benefits of organising a hackathon outside of the usual working environment. New environment stimulates the creativity of the team. It’s also a great opportunity for team building and getting to know each other better. During the off-time of those two hackathons we cooked together, went to sauna and swimming, played a board game and “Who Wants to Be a Millionaire”. In general had a good time on the countryside.

The importance of individual productivity

Throughout an eight-hour workday, the average employee works for about three hours, according to a 2016 survey of 1,989 UK office workers. The rest of the time, people spend on reading news, browsing social media, eating food, socialising about non-work topics, taking smoke breaks and searching for new jobs.

When you are a part of a very small startup, your contribution has an outsized effect on the success of the whole company compared to working for an established corporation. Therefore the productivity or lack thereof of every individual can have a significant impact on the overall progress being made in the company. At first you have almost zero momentum when you are creating something new. Having everyone put in only 3 hours of productive time every workday obviously don’t cut it. It’s a sure-fire way of going out of business and everyone looking for a new job soon.

You think that you own stock and money, and this, that, and the other, but really, you don’t own anything, because it all disappears, it all goes away, and you die, and there’s nothing left. The only thing that we can say is that you own time. Taking ownership of your time means I only have this much time to live, I’d better make the most of it, I’d better make it alive time, I’d better be urgent, have a bit of an edge, be aware of each moment as it’s passing and not in a fog. — Robert Greene

Knowing that you need to be at your best, that you need to be productive is just the start. You can’t optimise something which you don’t measure. Of course you can look at the features shipped or the feeling of accomplishment at the end of a good workday, but the feedback loop is too long and too fuzzy to be actionable. It is very likely that at least some time falls through the cracks because of distractions and bad habits.

My personal Rescuetime dashboard

One of the best ways of measuring productivity I’ve encountered is using an app called Rescuetime which monitors the webpages and apps you use on your computer. Every program and page are categorised as productive or unproductive which gives you the overview of your actual productivity when you’re on your computer.

Having already used Rescuetime for several years I knew what my baseline productivity was when I was working for a bigger company. My productivity score for the previous year was around 80% and I was able to increase it to 90% during my first year at Outfunnel thanks to having a smaller team and improving my habits. I do not use social media or read news on my computer and my email use is rare because almost all of our communication is in Slack.

Over the course of the year I spent 1251 hours on the computer of which 1126 hours were productive. When I would’ve put in around 3 hours of productive time per workday the number would’ve been less than 700 hours for the year which is 50% of time lost (if we count also the 250 hours of meetings). Having focused and distraction free working days, it’s entirely possible to do the job of two averagely productive workers.

Breakdown of time spent on different apps and web pages

During the year I spent 305h in Visual Studio Code which meant actively reading or writing code. It’s 55% of the whole time spent on development related activities like reading tasks in GitHub, reviewing code in GitHub, using terminal, testing the app locally in browser or API in Postman, looking at logs in Graylog.

Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. — Robert C. Martin

I wrote 60 000 lines of code during the year which means that I was able to average 197 lines of code per hour when using my code editor. This is quite high as it already excludes changes to auto-generated files like package-lock.json. I’m guessing the reason for such a high number is copy-pasting boilerplate code. Otherwise it seems quite impossible considering 10–1 ratio of reading and writing to communicate your thoughts to the computer using only a keyboard and mouse. Having a Neuralink type of interface straight from your brain to computer would speed things up here of course.

Only 15% of overall time spent on my computer went to communication, meaning Slack, email, calendar and Zoom calls.

I averaged 5h24m productive time per day on my computer, had little over 1h of meetings every day then only 1.5h of the 8h workday is unaccounted for. This probably went to ad-hoc in-person discussions and unproductive activities.

Staying healthy and fresh

Median of 8465 steps per day during workdays

In order to be productive you need a healthy and fresh mind. For the mind to be healthy and fresh you need the mind to be in a healthy body. In recent years I have tried to walk for commutes as much as possible. This means that I get most my daily steps goal out of the way by only walking to and from to work. In the graph above a I have plotted the daily steps data from Apple Health app.

“The basic finding was that at 4,400 steps per day, these women had significantly lower mortality rates compared to the least active women,” Lee explains. If they did more, their mortality rates continued to drop, until they reached about 7,500 steps, at which point the rates leveled out. — The Atlantic

As the quote above indicates the minimum amount of steps per day is 4,400 in order to stave of serious illness and 7,500 steps per day is the point where health benefits level out so you walk mostly for fun or burning calories.

It is only ideas gained from walking that have any worth. — Friedrich Nietzsche

In addition to keeping you body healthy walking helps us think as well. There’s something about the moving scenery around you and being active which stimulates your thoughts and lets your imagination fly. Walking and listening to the nature or city sounds is actually a form of meditation.

Some people listen to music when walking, but I prefer to listen to audiobooks to educate myself and keep my mind stimulated by a certain topic which feels most relevant for me at this point in time.

Sleep is a superpower

Median of 7h 45m of sleep during workdays

In my experience sleep is the main thing which improves my health, productivity and mood. Of course exercising and eating healthy are also very important, but sleep beats them easily in my book. Working after 8–9h sleep or 5–6h sleep is like night and day. In the latter case you I can expect my productivity be about 60–70% what it normally is, depends on the sleep I have gotten the previous nights.

To your brain, one sleepless night is the cognitive equivalent of being legally drunk. — Matthew Walker

Personally I need 8–9h of sleep every night to be on top of my abilities. Having even couple of nights of 7–7.5h sleep has a noticeable effect on my ability to think. When doing physical activities you don’t notice the lack of sleep, but when you need to concentrate and be creative, then every minute of sleep matters.

During my first 6 months in Outfunnel I received so much new information and had to write so much code at the same time I felt tired even after 8 hours of sleep. So the need for sleep definitely depends on the level of stress you put on your brain as well.

Sometimes work is stressful and life hits you with emotional curve balls so it’s very hard to fall asleep as your mind races from one thought to another. There’s actually a bidirectional relationship between emotion and sleep which means that stressful and emotional days cause sleep deprivation and sleep helps to cope with stress and emotions during the day. Paradoxically you need to sleep more in order to sleep more. Sleep deprivation can sometimes behave like death-spiral, worsening with every cycle.

What I have found helpful during stressful times, when it’s difficult to turn my mind off from daily thoughts and fall asleep, is sleep meditation. Specifically body scanning technique which means that instead of letting my mind race I concentrate on feeling my body from head to toes. It has worked 100% whenever I have put my mind on it as I have been asleep in less than 5 minutes after starting the practice.

Conclusion

Working in an early-stage startup requires you to be on a much higher level of productivity and prioritization compared to companies that have already a lot of momentum going for them. In order to get better at something it’s good to set a baseline and measure it along the way. I hope this breakdown has been helpful for you and let me know in the comments where do you recognize yourself and where your experience differs from mine.

--

--