I knew the process of interviewing and how I have interviewed hundreds of people of the course of my career. I really enjoy interviewing to learn more about myself, the market, and various companies. I want to give you a real world perspective of what it is like so you understand that the stress, fear, and overwhelming feeling you have does not have to be the case.
The number one question I get when people are prepping for interviews is this:
What should I study?
That is such an open-ended question and it leads to the typical architect response:
You need to ask yourself several questions:
- What is the role?
- What technologies does this role use?
- Where are they in their development process?
- Who is the hiring manager and his background?
What is the role?
Is it a DevOps engineer role, a web development role, a QA role, a cloud architect role, a mobile development role, etc...
Yes, those have common core compentencies but there are specializations that you can focus on to make yourself stand out in that role.
- DevOps engineers should know CI/CD pipelines and monitoring/alerting processes like the back of their hand.
- Cloud Architect should know security and scale best practices
- Web Development (Front-End), should know... leads to the next question
What technology do they use?
- Are they on GCP, AWS, Azure?
- Are they on Django, WordPress, node.js, ASP.Net?
- Do they use mongoDB, MySql, SqlServer?
- Are they using SwiftUI or Kotlin?
It is impossible to know everything in technology. Impossible. Embrace that. To be a successful developer, you need to embrace lifelong learning. It does not get to a point where you become an "expert" and you can teach the best practices to others of "the" technology. It is because there is never a single technology that lasts, especially in the web world.
You will get familiar with technologies you use, and the more you use them, the better you will become on avoiding pitfalls. So pick a direction, and go there, and realize it WILL change.
Where are they in their development process?
That question throws people for a loop sometimes (no loop pun intended).
What do you mean by that?
What I mean is what stage they are at: 1) Are they at the idea stage and looking for someone to come in an build their idea? 1) Are they realizing their current product can't handle the scale they are experiencing? 1) Are they realizing that their technology stack is "out-dated" and want to upgrade to something "new"?
The first one, you are coming in as a technical co-founder, if they aren't offering that to you, ask for it, because they need you to build their idea.
The second one is a GREAT problem to have, it means they have a market fit, have paying customers, and experiencing TOO much growth. YAY!
The third one is the most common from my experience. I always like to lead with a simple question: WHY? Why do you need to upgrade? And a few subsequent questions: What is broken? What isn't working? What problem are you solving? What are clients complaining about?
Code should always be maintained and improved. Performance, scale, new technologies to make it easier to maintain, moving to a new stack gives you a better pool of candidates to hire from. Those are all valid reasons, but understand the why.
SO, what should you study? Core compentencies, algorithms, data structures, and SOLID principles. Those will always be valuable as you interview. I hope this gives you a LITTLE insight of the questions you should be asking when you interview and what you are looking for to make sure the company is a good fit for you. If you don't like working on embedded systems, don't interview at a company that builds that. Seems obvious, but you'd be surprised. I had a person interview for a front-end web developer role who has spent 5+ years as a database administrator. Not a good fit.
Good luck in your journey and if I can help, shoot me a DM, and let's chat.