Can you tell me about a time you improved upon your work upon receiving criticism or feedback?

Situation
In my previous company at Pfida, I was tasked to work on improving the feature that was meant to improve initial load of the application as the query was too slow and was taking 20s to load the list of users.

Task
My task was to find the reason why, come up with a solution, develop and document it.

Action
I opted for using HTTP Caching on API Gateway and this would solve the issue. During the meeting where I was presenting my solution (not developed yet), the Head of Engineering, to whom I was reporting to, provided feedback. He noted that while the solution was somehow valid, it would add unnecessary complexity and potentially introduce some bugs. Essentially, the feedback was that my solution is overengineered and there’s much simpler solution for that. Instead, paginated query would have been more than enough for Cognito.

I appreciated the feedback I understood the suggestion. I researched how to set it up with cognito, refactored the API to allow search queries for pagination, updated the UI.

Result
The HoE approved the changes and we deployed to the application, which improved performance of the application. The app was loading significantly faster, because on initial load, we weren’t fetching all users. This experience taught me that sometimes the easiest solution is the best one and there’s no point to overcomplicate things for no reason. Since then, I’ve been always thinking pragmatically when building features and I try to keep it as simple as possible, unless there’s a requirement.

Can you describe a past project where you had to work with a difficult stakeholder or teammate and how you dealt with it?

In my previous role, I worked with a group of challenging stakeholders who lacked a clear understanding of the software development lifecycle. They often expected all features to be implemented immediately, which was unrealistic given the size of our team. Additionally, the requirements frequently changed mid-development, creating confusion and inefficiencies.

To address this, I introduced a structured workflow to improve collaboration and manage expectations. This involved setting up regular planning sessions where we could collectively define feature goals, align on priorities, and establish a clear roadmap. By engaging the stakeholders in this process, we were able to focus on delivering the most critical features first while minimising the impact of shifting requirements.

This approach not only improved our delivery process but also fostered better communication and trust between the team and the stakeholders. What I learnt from that is communication between teams are important and it’s important manage expectations effectively. Otherwise, it will backfire

Can you describe a time you creatively solved an engineering problem or achieved meaningful metric improvement?

It is not really work related however, I, personally, had a situation where I needed a tool for creating itineraries for my trips, where I can see places on a map, where I can easily link things together without strict rules like in typical databases, should work offline, I can easily deploy and should not involve much of a dev work due to time constraints. Taking all the above into consideration, I decided to use Obsidian as this is the tool that actually meet all of the above criteria but also, it had some plugins that allowed me to create my personal map with places that I want to visit etc. I then used it to create an itinerary for my trip to America and it worked really great, because I always had an access to my itinerary, and it was compatible with map apps, as every note had a geolocation that was clickable. This also allowed me to share all these places and the itinerary with my friends by deploying it as a static website with Hugo so that my friends can see what we are doing when. I’m still using this as a tool for planning my trips and it is now my personal knowledge about all the counties I want to visit, I visited etc.

Can you describe a time when you had to make an important engineering decision and how you decided between tradeoffs?

refer to SCSS Modules and tailwind

Can you give an example of a time when you had to work on a team project and had to compromise with others to reach a solution?

Situation
In my previous role, I was part of 5 person team and I was tasked to define a system design architecture for our UI Library so taht every app uses the same styling solution.

Task
I needed to decide on the styling solution and what we want to use. This was key decisions as it would influence how frontnends would be built in a future.

Action
Based on my experience on previous project, I initially advocated for using Tailwind. It felt it offered all you need, I enjoy using utility-first approach for laying out elements and ensure design consistency. However, some colleagues felt more comfortable with Module SCSS, especially for component specific styling and more complex CSS.
They argued that it would be faster to implement as they were already familiar with it and how it works.

We decided a technica descission session to this. We whiteboarded the API, pros and cons objectively for each solution and considered factors like learning curve, implementation speed, future complexity.

We reached a compromise and decided on a hybrid solution where Tailwind is used for utility classes for layouts, spacing, but for components and more complex styling, we opted to use Moduse SCSS. This allowed us to benefit from Tailwind’s prototyping for layouts and have more structure approach for components.

It allowed us to tap into strengths of both technologies. We gained the speed and consistency of tailwind and flexibility/familiarity of SCSS. Ultimately it led to a more efficient and organised codebase.

What do you think is your greatest area for improvement?

One area I’ve been actively developing, which is related to my ADHD, is approach to task prioritisation and time management and balacing my tendency to hyperfocus with the need to meet deadliones. I can sometimes go deep into things that capture my interest leading to spend more time on it than planned to pursuit the level of detail that might not be necessary.

When I started as a dev, this led to a few instances where I missed the deadline of the feature release. This was a learning moment for me and indicated that I need to balance it.

Since then, I’ve become more conscious of my ADHD and impact on my work and I’ve been using several strategies to manage it. I ensure that I define smaller tasks, have tools to remind myself about the deadlines and regurarily check in on my progress against the project goals. I also share the progress with others to ensure that I’m aligned with team’s expectations and priorities.

This taught me that done does not mean perfect, and in fast-paced dev env you need to make some sacrificies. However, I see this also as a positive trait as sometimes being very focused helps me to get the things done when that sharp focus is required or I can spot things that others have missed.

Describe a time you failed and had to alter course and adopt a new approach. How did you know change was necessary?

MIRO!

Can you describe a time when you had to work with a tight timeline but was not given a clear direction on how to proceed?

Talk about Multitenanting implementation

Can you describe a time when you had to adapt to changing priorities or requirements?

Tell me about a time you learnt a new skill outside of work and applied it to your work.

I once dove into DDD out of curiosity and I really liked the idea of how software is being built with that framework. I decidd to give it a try while building the admin panel.

Situation
Our admin panel was becoming a tangled web of UI views that were used by different teams. It was functional, but adding new features was problematic, because certain views had to be visible for certain users, and to get to a certain users you needed permissions that some other team shouldn’t have access to. It has become a nightmare to manage, resulting in constantly breaking UI, people loosing access etc. I has been flagged by myself and other team members.

Task
I set out to clean up the chaos by using DDD principles. I spent a few days to learn more about DDD principles and apply these ideas to our frontend. The goal was to separate domain views from each otehr making admin panel more scalable and easier to maintain from the access point of view but also feature addition point of view.

Action
After learning the theory, I organised a meeting with stakeholders and our team to understand to which resources each domain should have access to. Then began designing a solution, where we improve RBAC by having groups and attaching resourced to those groups and to add “flags” so we can use that logic to show and hide features for certain domains. This approach not only created a clear boundary between domains, but also made it easier to test the UI, but also to extend/add new features.

Result
The app became much easier to use for everyone (devs and stakeholders). When we onboarded a new person, we didn’t have to know to which resources/views an individual needs to access to but instead, we only needed to add them to a group.

Learning DDD not only expanded my skill set but also helped me to understand more about how to align business needs with technical needs, so that tech reflects the structure of the business.

Tell me about a time you learnt a new skill set after observing others leveraging it to great success

Situation
During a project, our frontend and backend teams were constantly stepping on each other’s toes. The feature development flow was broken—backend engineers would implement features without knowing the full scope, and then later have to make significant changes to meet frontend needs.

Task:
I noticed that a former colleague had successfully adopted a Contract-Driven Development (CDD) approach using code generation with OpenAPI, which resolved these issues by aligning both teams early in the process. Inspired by this success, my goal was to eliminate integration friction, streamline our development process, and ensure that both teams could work more independently and efficiently.

Action:
I began by diving into tutorials and courses, and I had in-depth discussions with my ex-colleague to fully understand the approach. I also explored pact testing and other related tools to identify what we truly needed without overcomplicating our workflow. After gathering all this insight, I documented the proposed solution and presented it to the team and management to secure buy-in.

Next, I refactored one of our existing microservices to implement the new process. I built a platform for deploying OpenAPI schemas, modified our CI/CD pipeline to build and deploy these schemas on pull request merges, and created a simple CLI tool to fetch the schemas and generate all necessary frontend code.

Result:
The impact was significant. Collaboration between teams improved dramatically—frontend and backend teams could now work independently without waiting on each other. This decoupling not only reduced bugs caused by misalignment but also opened up opportunities for writing end-to-end tests with mocked APIs using MSW, something that was previously off the table due to time constraints. It felt like upgrading our workflow from a dial-up connection to fiber-optic speed!

What I learned is that sometimes methodologies aren’t just to give a sctructure to your projects but to improve issues on the team or business level and processes. Adopting CDD wasn’t a technical upgrade but unified team, reduced frinction. Sometimes it’s about how people work together and using technologies and methodologies to make it more efficient.

Can you describe a time when you had to effectively communicate technical information to a non-technical audience and how you approached it?

A company needed a scalable UI design system to have consistency and efficiency across multiple frontend projects. Mane stakeholders were unfamilar with benefits of it and saw it as an unnecessary overhead. The reason why we needed it though was that both apps were not concise, designer was not efficient in building UIs because had not reusable blocks and business wasnted to build a native app, which was not possible with what we were using at that time

Task
My goal was to effectively communicate why a design system was crucial, how it would streamline development, how it would improve collaboration between design and dev teams and how it would open up possibility to build a native app.

Action
Instead of diving into technical details, I used analogies. I used Ikea futniture as an example to explain benefits. Ikea furniture has pre-made parts, which are like UI components and they can be reused (buttons, inputs modals) to speed up development

Ikea furniture comes with instructions to ensure consistency. Design System has intructions to guide team in using components correctly

Ikea uses universal screws and finishes for compatibiltiy. Our design system does the same with deign tokesn (colours, typography, spacing etc.)

Ikea uses flat-pack model to simplify assembly. Similar to design system , it eliminates redudant work for faster delivery

Ikea creates modular system for examples, similarily to design system, wher eyou can add new things or build on top of it.

To make it more tangible, I prepared a small demo showing how a small design system can change the software and quickly propagate across multiple applications, eliminated redudancy and workload

Result
The non-tech team not only understood the importance of it, but we also won over the leadership team. They appreciated understanding the benefits with concepts they are familiar with, and are not technical.


Tell me about a time when you had to adapt to a significant change at work.

Describe a situation where you used your creativity to solve a problem.

Describe a professional risk you’ve taken. Did that risk have a positive result? Why or why not?

I proposed rewriting our web application using React and Typescript instead of our existing Vue implementation while also fixing the issues we had with the application. Essentially, we wanted to do 2 fix at the same time, which I normally wouldn’t do it, but it felt like a right thing to do as we also had to add new features to the application at the same time. On top of that, I had no previous experience with microfrontends so I had to learn about all the concepts while working on the PoC. After creating a PoC with microfrontends and demoing a re-write of one feature in our application with a new design system, improved user experience etc. I gained leadership approval.

Client and Team Management

Describe a situation where you led a team to achieve a challenging goal.

How do you motivate your team to achieve their goals?

I like to motivate my colleagues, especially juniors by fostering a culture of continuous learning. I often ask them what they struggle with and what is their preferred way of learning (videos, books etc.) so that I can provide them with the material that will work with their learning style. Also, because sometimes people have no time after work to spend on learning, I proposed a “learning time” on Fridays to my manager and we trialed it for 3 moths. This approach has led to improved team skills and some people, because they had a bit more free time, had time to play with different tools or different approaches, which led to making some changes to the way we do things (for example using CDK instead of Terraform) and improved our efficiency.

How do you manage conflict when working as part of a team?

Usually, when there’s a disagreement between engineers in terms of implementation or the approach, I suggest a session where we can all go through both as a team to figure out what they want to implement, how and pros and cons. Sometimes, during those sessions we are able to find flaws in the approach which then resolves the issue by itself, but it also, by listing pros and cons and doing this as a whole team, we can pick and choose from each approach and find a good balance where both parties are going to be happy. At the end of the day, it’s all about a compromise and nothing is black and white.

How do you help your teammates feel comfortable and effective in the workplace?

I establish psychological safety by doing blameless code reviews, and I try to be constructive in them rather than telling my peers simply that something is wrong, without giving a reason why. I encourage pair programming when working on new features as this helps others to get up to speed, and I mentor others when I see there’s some work to do to improve and that person has potential. In my current role, when I joined, there was a person that was in a company for 4 years, but hasn’t had good exposure to frontend development and had no mentor. I immediately identified that he needs some guidance with good practices and upskilling with typescript. I provided him with materials that I used and I made it clear that he can hit me up whenever he’s stuck with something, or has any questions about certain things. He made a good progress and within 6 months he was a much better engineer.

Technical Leadership and Collaboration

Can you give an example of how you managed conflicting priorities?

When faced with multiple urgent feature development tasks and refactoring, I usually use a priotisiation matrix and during sessions with stakeholders, and other engineers, we place all of the things that we want to do on that matrix and figure out what has the biggest impact on the business and what adds value. In my current role, we had a perfect example where the business wanted to add loads of new features but there were some serious system issues that within a few months of the business scaling up, would fail over and would break current workflows. Once we created the prioritisation matrix, we knew what we need to tackle first and priorities of things that were urgent changed and became less pressing, as business noticed that there are some technical challenges that needed to be addressed immediately.

Tell me about the time when you had to persuade others to your POV

In my first role, quite a lot of developers were against using TypeScript. They argument was that it slows you down and often gets in a way. Me and my other colleague that was on my side, decided that we should do a hackaton and split the teams between those that want to use TS and those that wanted to use JavaScript. We built the same feature and then, we had to swap code bases and make changes to the feature. Colleagues that were against TypeScript noticed the benefits of using typescript as they no longer had to console log everything in their codebase and they said they were much more productive, and confident in what they are doing. Thanks to that exercise, they were happy to give TypeScript a go on our next project with React Native which was a success, as we’ve implemented more features much quicker.

How quickly do you make workplace decisions? Do you prefer to make decisions quickly or slowly, and why?

It depends on the situation. For very small technical choices, I rely on common patterns and team consensus. When it comes to architectural decisions, I prefer to take time, do research, and think about pros and cons of each option. Then I normally create a PoC to validate that the approach I want to take is not going to failover and is actually going to solve the issue. A perfect example was a time where I had to figure out how we are going to migrate Vue app to React app, without loosing the ability to add new features. I created a detailed document of the approach and created a PoC that then I showed to my manager as well as other colleagues.

Professional Growth and Performance

how do you define success?

For me success is when the product I work on genuinely makes other people’s life so much better.. This is why I like frontend development, because I am closer to the user and I feel that I have a direct impact on something that people use and see.ll

Describe a situation where you went above and beyond to achieve a goal

It is difficult to say which one is more significant as Design System is close to my heart, but I think the rewrite of the user facing app from Vue and Javascript to React and Typescript was probably the project I really had to put a lot of work in. When I was tasked to do work on it, I had no idea how I am going to achieve this. I spent hours of researching about various techniques and read various case studies where companies had similar situation. I landed on microfrontends as a solution for this as it allowed us to slowly migrate features over without disruption. However, I had no idea how to build them so I had to learn about microfronends as I was building this or even how to deploy such things. I did not even have much knowledge about terraform at that time, so that was another thing I had to learn. Within a month, I was able to research, make a decision on the approach, document it and create a PoC in development environment. That probably was the time when I pushed myself the most and I felt that I really achieved something.

Explain a time when you made a mistake at work. How did you respond to that mistake, and what was the result?

During a critical microservice deployment, I accidentally introduced a race condition that caused intermittent system failures. Instead of hiding the mistake, I immediately:

  • Alerted the team and stakeholders
  • Rolled back the deployment
  • Conducted a comprehensive root cause analysis
  • Developed additional integration tests to prevent similar issues
  • Shared a detailed post-mortem with the team

The incident became a learning opportunity. We implemented more robust testing protocols and developed a more rigorous review process. This transparency helped build trust within the team and improved our overall deployment strategy.

What strategies do you use to stay apprised of changes in your industry?

  • I play with different technologies/languages to understand how they work and learn pros and cons of each
  • I read some technical newsletters
  • I attend conferences when I can

What do you do when you encounter a situation that may not have an established business policy?

When I joined, I encountered a lack of GDPR policies and how data should be handled within the company. I

  1. Consulted it with my manager
  2. Collaborated with stakeholders to develop some guidelines on how data should be handled and processes for how to requests certain data etc.
    My approach balanced problem solving with long term policy development. I wanted to make sure that our company doesn’t end up with a lot of sign-offs to get some work done but also make sure that common practices (for example, production database not available for everyone) are followed.

Explain the importance of detail in the role you are applying for. When have you shown careful attention to detail?

When creating UI, I find it very important to have a good attention to detail so that the application looks slick and cohesive. For example, when building the design system, I implemented comprehensive cross-browser tests with Storybook and Chromatic, I did write Typescript type definitions that we use throughout the package and outside of it, documented how our components should be built and how they should be tested, and criteria they should meet. By doing so, every developer that joined this project knew how we do things, why we do things and when using those components, we now have a very consistent API that everyone is familar with.

Without this, I believe developers would either not like using the UI library that we created as the APi would be sloppy and different for every other component.

Describe a time when your personal values were challenged at work. What did you do and why?

I was asked to seed a database with data that would not truly reflect the reality, and would certainly be against FCA regulations. I documented the concerns and used FCA as a reference for it, I proposed alternative implementation strategy by creating a report that would actually reflect the real data and would not damage company’s reputation. The goal for me was to collaborate to find the best solution for business needs and make sure its also fair for the user.

How do you manage decisions when you know someone will be displeased with the result?

  • Prepared comprehensive performance benchmarks
  • Created detailed migration strategy documentation
  • Scheduled individual discussions to address concerns
  • Developed a phased implementation approach
  • Demonstrated clear technical and business benefits
  • Remained open to feedback and alternative suggestions

What do you consider to be good management and what effects have you had on others through your approach?

I think the sign of good management are:

  • Has time to talk to people and help them to develop
  • Provides constructive feedback and has time for 121s
  • Removes blockers
  • Create psychological safatey for innovation
  • Shields people from the business politics so that people are not distracted by it and can focus on delivering

What is your style of working as a software engineer?

  • I am an advocate of user centric design as I believe that good and intuitive design are they key to success of a product
  • I care about testing; I believe frontend testing is as important as backend testing, especially visual one
  • I keep things simple and don’t over engineer from the start. I even am ok with a bit of duplication if solution is cleaner. If I know something will 100% be reused in many places, then I will add some abstraction and will make sure it is easy and intuitive to use
  • I write documentation in code; jsdoc for components and propeties so that developers do not have to constantly have confluence open to read/learn about something.
  • I am organised as an individual, I like when there’s a plan for at least a few weeks in advance and there’s a high level goal that I know me and we as a team work towards - it really motivates me

How do you know when to accomplish a task yourself and when to delegate?

It depends on two things

  • Time constraint
  • complexity
  • My free time