It’s that time again where I have to prepare for job interviews. Since companies aren’t looking quirky originals, you need to learn what to say to look attractive. And have some answers to the common questions.
How do you approach complex problems?
There isn’t one approach since complex problems are different. Here are some common ones:
structural/architectural problems as the application matures should be handled together with the team, since everyone has a stake in the app and should be heard. These problems arrives gradual and shouldn’t be handled with rash abstractions, but rather initial observance so that there is enough foundation to assess the problem on. Thus the problem will likely be fairly well known to team members before a meeting. Give some thoughts on possible solutions before, call a meeting and listen to input and solutions from team members.
during development an unforeseen problem arises. Investigate, research and see if you can come up with a good solution. Mention it in the PR (can also on a work in progress PR if approval or feedback is needed). Talk informally with team members if clueless. Other options include formal meeting or reaching out to other developers in your network.
In general it is good to ask team members for advice, especially if it has big ramifications for the app or if you aren’t so experienced in this particular field. It can safe a lot of rework if team disagrees on something already in review.
How do you mentor developers?
- help (re)define specifications (to keep it simple)
- help componentize sufficiently (keep components small, easy to understand and refactor)
- help separate UI and data layer (improves testability, minimizes complexity)
- general architecture, tech and language talk
- goes through diffident or unknown code/libraries/patterns
- useful feedback in PR
- praise good solutions
- pair programming
Work with others professions?
Open communication, informal tone, trust and willingness to challenge. It isn’t fruitful nor productive if we rigidly follow a process or if we can’t change any of UI in the implementation phase.
How do you prefer to work?
Programming is a mixture of team- and individual work. For a fruitful team work, it is essential to establish trust in order to allow team members to carry out their job without being micromanaged. A team works much more efficient, less needs to be written down.
This means developers should have a setup that ensures they can take the designs, implement it and push it to production with as few constrains as possible. This continuous development is enabled by:
- reasonable specifications (simple usability and UI helps ensure that users understand the product and avoids overly complex and buggy development)
- separate UI and data layer (components can be develop with Storybook and continuously deployed)
- tests (integration and unit tests)
- strict ESlint rules and automatic code formatting (prettier)
- feedback from users or other stakeholders in the company
How do you evolve as a developer?
I receive weekly newsletter containing the latest programming news on language, libraries etc. I read programming books to get a deeper understanding of a language or paradigm or explore new. Additionally I try to learn from skilled developers and co-workers in general. I am good at asking questions.
Interesting technologies and libraries
Currently I am focused on exploring functional programming paradigm. Reading “Most Adequate Guide to Functional Programming” and “Composing Software” by Eric Elliott. As well as exploring technologies such as Prisma, NextJS, RamdaJS and many others.
My last job?
The last almost 2 years I worked for a mobility startup. I joined a team that was tasked with building up a new product that offered users to purchase the car online and later also register, buy insurance and get the car delivered. I initially co-developed the new product and ended in a tech lead role, deciding on the FE architecture, mentoring and ensuring quality and deadlines. Tech stack was SSR React with Redux, I18n, Styled Components, Rebass, Jest, Storybook etc. Lots of refactoring, simplifications and improvements including introducing integration tests, storybook as essential part of the work flow, react hooks.
Additionally, we build a Typescript app for communicating with various 3rd parties endpoints. And created a internal NextJS app.