From a Financial Controller to Engineer: read about Kačka's coding journey and what her regular week in the Apify Engineering team looks like.
Apify has already made its mark in the Czech Republic and beyond as a dynamic up-and-coming start-up, with its impressive growth numbers, ambitious roadmap, and promising product. But who are the Apifiers, the heart, and soul behind the wheels of this expanding startup machine? We’ve already discovered how a former philosopher, a sculpting hobbyist from Brazil, and a digital nomad found their ways to Apify. If you are one of our Apifiers-to-be, you might find their stories quite relatable, including this new one, from Kačka Hroníková, Frontend Engineer.
A career U-turn
I spent 8 years working in finance, in the Treasury and Controlling department, to be precise. Then, out of curiosity and the sheer need to learn new things, I decided on a career switch. And as you may know, learning new things in IT and programming is a never-ending story, so it was a perfect match.
You can read about my journey in more detail in another blog article - namely my project with Czechitas. But, long story short - here I am today, a Financial Controller turned Engineer. And I'm loving it! Though I also now truly understand the phrase “the more you know, the more you know you don’t know”, but that's a story for another time.
Anyway, being a proud Frontend Engineer, I would like to share what I like the most in IT work as well as some of my personal experiences of how things work differently compared to other departments. I promise you'll be surprised!
Marathon of sprints
It all starts with the Monday morning meetings marathon (read: having three meetings in a row, though a neat MMMM abbreviation could also work). First off, there is the company-wide short morning sync (15 minutes tops) where we share the latest news, set the mood for the week, and practice being witty. Then, we dive straight into engineering!
In general, we work according to a two-week sprint schedule, which means that all the tasks on our task list should be accomplished within two weeks, ideally. And here comes the first difference between finance and engineering: the tasks are ever-changing in their complexity and direction, so there are not many boring routine tasks to be found (if any at all). Every sprint will be different and full of new challenges.
But wait, at the beginning of each new sprint, we have to make sure we've properly closed the previous one! So we run a sprint demo, during which each developer enjoys their moment in the spotlight along with a slide to show their achievements and/or progress over the past sprint. This sprint planning meeting is for the whole engineering team to attend, but anyone from the other Apify teams is welcome to join and see what the engineering crowd has been up to.
Afterward, we dive into a team retrospective which is presented by specific teams. Retrospectives surprise me with the way we approach challenges. My teammates share not only results, hard facts, and figures (hello, finance) but also soft things such as what they enjoyed or disliked when working on a particular project or issue. It is also a great place to come up with new ideas about workflow and workload improvements. My team is the Console one, specializing in taking care of the frontend, backend, billing, and other associated systems of Apify Console. So some of my impressions further on will be connected to working within the Console team specifically.
After the retrospective, it is finally time for planning. It is a very democratic process (not being sarcastic, I really mean it) where developers pick up issues they want to work on. It is a combination of backlog tasks from the Product Roadmap, Technical Roadmap, and also a few tasks the developer feels we need to accomplish. And somehow, everything always gets covered!
Bear in mind that I am a Junior Dev so a lot of tasks are a chance for me to learn new things. For example, besides other tasks, in this sprint, I am going to work on new primitive select styling - which is quite challenging but also super fun. For such tasks, we use the Storybook tool, which enables you to see any change you do in the code immediately. I really enjoy the interactivity of this tool; sometimes I change colors and sizes just out of the pure joy of seeing the output in the browser change and react to my command, but shhh 🤫
I am also undaunted by any issues that might arise with this task, because I've got Honza, my senior teammate, to guide me through the dark corners of the select styling. For every task, I work with one senior developer to help me out if needed - which is cool as well as time and energy-saving. And depending on the type of task, I also work frequently with other teams - such as this time, since I'm working on the styling and Frontend stuff, it's time to play ball with Ondra, our UX designer. Overall, the teamwork is smooth and fun, and the support I get is highly appreciated and reciprocated.
Learning to learn
So the meetings part of the week is over, I am coding at full steam, and here comes Wednesday morning. It's time for our Console team symposium - a very interesting place for all of us to discuss new ideas, approaches, out-of-the-box solutions, and difficult tasks, and share our solutions. Just being there and listening is making me smarter, for sure. Moreover, if the Universe and teammates give, there is an Eat&Learn session from time to time. It's a 30-minute-long event where you get to know about amazing stuff people around you are working on. Anybody in Apify can initiate and present anything on Eat&Learn, and just munch on their lunch during the presentation - almost like a mini-cinema.
And then, it is once again all about the programming, making PRs on GitHub, and submitting reviews to others. We try to do the reviews in the morning and after lunch, so as not to block anybody and speed up the development. This time might be ad-hocly interfered with the following possible events:
- bugs duty: by the will of the algorithm, you become responsible for fixing and issuing tasks for all reported bugs within a given period. Those get reported either by Apifiers themselves or by our customers - don't worry, there's always plenty. I find the bugs duty very useful, as all of the devs stay in touch with the product we are creating as well as with the user needs. Moreover, bugs duty is a great opportunity to get out of your comfort zone and maybe try to do something new not that's directly connected with your specialization.
- DDT: do not be scared, it means Deployment Duty Today - a person who releases the new stuff to production, not the insecticide.
- on-call duty: this is the highest level of rotary responsibility, reserved only for seniors. They get to have the pager with them and guard our platform during the night. No need to say that I envy them! This is my dream, that one day, I will have the pager duty as well and save the platform from a disaster (and then when this actually happens, I might be saying to myself - next time, be careful what you wish for, Kačko ;)
But even though I have no on-call duty, I am able to train for it through our On-call disaster recovery workshop. Mára, our CTO, intentionally breaks some things on the platform (staging environment), and in small teams, we are meant to find the culprit. This hunt reminds me of my childhood in summer camps, but instead of running through the woods and looking for hidden messages with hints about where to go next, we run through the reports and database to find the bug. I really enjoy it!
Last but not least, there are:
- joint hackathons
- regular team evening beers
- playing foosball in the hallway
- watching movies during movie nights
- going for a bike ride, climbing a wall, going for a run, enjoying a concert together
See, it's really hard to get bored. But there's some good news for introverts as well: all the activities above are optional, so you join them only if you feel like it and are in the mood to get to know people better.
And so it goes: time flies by very quickly; there is the mid-sprint check-in on the second Monday of the sprint, then some more programming, a few meetings, and before you know it, here we are at the end of the sprint. I can present what I've accomplished and what improvements I've added to Apify Console (yay, even you can see them). And guess what, I am not presenting my slide from Prague, but from Madeira - my new remote office for the next few weeks, cool, right? The whole development cycle can be experienced in our neat office right in the center of Prague or from a fully remote location - you can work in whatever way you prefer. And when Apifiers go remote all over the world, visiting each other is not uncommon - while I was in Madeira, my lovely colleague from Finance Operations Jana Michalovova flew up to hang out and go hiking (you can read her Apify story here).
Going through the cycles
I am very grateful and happy for the opportunity of going through these cycles at the Apify engineering team and learning from nice, smart, and easygoing teammates. I enjoy all the aspects of my work: absence of mundane tasks, many opportunities to learn (and be supported in learning), absolute freedom to come up with new ideas and see them come into reality, encouragement in asking about the whole picture of what is being done and why. Last but not least: you are in touch with other Apify teams, not coding from some dark basement with no sight of daylight (yeah, you can tell my preparation for this job was basically watching IT Crowd...)
Moreover, my financial background is not wasted. Quite the opposite - it's very useful when creating a connection among finance and engineering teams in any finance-related issue (integrating tax system, for example). And as the cherry on top, there is no need for me to switch the job after I learn everything from the front-end as we can easily rotate in teams and roles. What more could you wish for? (and I haven't even mentioned the chocolate and coffee in the office or our amazing team buildings yet).