Guide to interviewing and thoughts
interviewing reflection self-insight #reflection
These are unrefined notes based on my experience of interviewing for different product companies.
I have done many interviews in 2022, and out of interviewing a lot, I have learned some things about:
- Where do I want to work?
- What type of interview processes exist?
- How do I like one or other?
- Length of interview process
- Time needed to invest on them
- Usually when I am rejected, it was a bidirectional rejection, just that the recruiter said it first. In all the cases I've been grateful for the rejection, and I have learned something
Outline
- Hiring processes:
- Email & scheduling with recruiters
- Screening
- Tech interview
- Live coding: practical case / Algorithm
- White boarding
- Read code
- Take home exercise
- Eng. management exercise
- Defend the submitted code
- System's design
- Interview with Engineering Manager // Tech lead // CTO
- Interview with team
- What I've learned
What I've learned
*** Talk to recruiters & scheduling:**
* How much refined, automated and digitalised the scheduling with the recruiter might be an indicator for the digital maturity of the organisation
* Right mindset for interview**
* One interview a day is best
* If I am too stressed, is better to reschedule
* Warm up before coding interviews
* Diagnosing culture match by talks to interviewers:
* How experienced are the interviewers, and how comfortable I feel talking with them
* Kind of empathy EMs give
* How do EM/ICs deliver feedback within the interview -> Sometimes they are too cold, too critic, might be an indicator of a culture that is more masculine (Understood according to Hofstede's culture dimensions: distinct gender roles, assertive, and concentrated on material achievements and wealth-building) driven
* People/companies I dont necessarily match well
* Lack of empathy or showing a smile but I still feel "evaluated" in a critical manner
* Put pressure/doesn't know how to help me be less nervous in coding interviews
* My needs from a workplace:
* Have support
* Understand and be understood
* Be able to be myself, this means: I am a woman who leads, codes and behaves in a collaborative manner, looking to improve the tech and the processes of building softare - In contrast of: focus on business needs alone, deadlines, compromising human wellbeing for 'progress', defensiveness, competitiveness
* Learn with, and from my colleagues
* Psychological safety
* Ideal benefits
* Unlimited paid time off
* Budget for learning
* Company focusing on building a well-being focused culture
* Work life balance
* All common baselines: hardware, safari books, hybrid or remote friendly
* Flexible working hours
* Recruiter verbally and clearly acknowledges gender pay gap, and pushes me up if I say something below people in similar positions in the company
* As an IC:
* How is the process to get professional compensation (salary increases, promotions, technical challenges)?
* Do I get continuously salary increases even if I want to stay as an IC and not take a Staff/principal or Engineering manager role?
* How do the engineering managers/company deal with frustration in the team?
* How does the engineering manager/company solves conflict?
* What are the means that the company is actively doing to foster diversity and inclusion?
* How does the company/EM deals with: choleric developers/passive aggressiveness/behaviours that derail psychological safety?
My thoughts on Coding Interviews
- Live coding: -> Is currently my least preferred version (time of writing August 2022)
- practical case: These are more approachable, and assess the things that I have been doing (or not). These are easier for me to take, but it depends on the interviewers
- algorithm: Usually these are used in companies that are building products such as: Browsers, Open source frameworks, high demand software (ie: Spotify, Miro, etc) -> They use this because they are optimising for performance in software.
- Contra:
- I have to practice and learn the skill of programming out loud and competitive programming
- The mental resources that I invest on competitive programming, are taken out of the actual programming
- You pass when you complete the task, is like a math teacher giving point for result and not for procedure.
- You have to study for this
- Benefit:
- You assess how the person collaborate with others and their capacity of leading mob programming or pair programming sessions (note: this is not entirely true, because the level of trust you have with team mates is different than the one you have with people who you just met and are evaluating you)
- Is time effective for the recruiter, if the interviewer sees that you cant solve the problem (for whatever reason) they cut you off and say is not a fit. Or if you solve the problem, you know it in 45mins (the average length)
- Studying for these types of interviews, in my personal case, gives me quick mental challenges, helps me refresh on software algorithms, and is intellectually estimating. Currently I am doing exercises of this in HackerRank, mainly for fun, and maybe as side effect become better at these types of interviews one day.
- White boarding:
- It's long time since I have one of these, therefore my contras are not listed, and the benefits might be incomplete
- Benefit:
- Like a math teacher giving points for procedure not for results
- Assess how you think of problems
- You dont have to remember the details of everything
- Read code:
- I would probably prefer this one, I've been reading code non stop during all my career, and jumping back from a management role to an individual contributor role, this version would help me better, and require less studying.
- Haven't done one of these. Benefits and contras absent therefore
- Take home exercise:
- Contra: They are the ones that require more time investment: you have to ramp yourself up, understand the tooling, the task and do it. Then you have to 'defend' your work in an interview
- Benefit: I can do the work as I normally would do work. So I dont have to study and learn the skill of competitive programming, needed in live coding interviews