Recently I had the privilege of undergoing a successful job search without the overhead of working full time in the background. This let me take time to really explore opportunities and take the temperature of the job market. I met with 19 different companies across a ton of industries. Some I went pretty far into the process before calling it off, others only went as far as informationals, and naturally a couple (3) didn't see me as the right fit for the role.
It is the candidates responsibility to find the right job, more-so than it is the company's responsibility to find the right candidate.
Along the way I learned a ton about process, the stacks used at different companies, variations in management, and the hiring philosophies. The totality of which would probably be better for long form writing (like a book).
What I also took away though, is that it is very much the candidates responsibility to find the right job, perhaps than it is the company's responsibility to find the right candidate.
Now that I've found my next home, I wanted to share a bit of advice from my recent experience with interviewing in terms of how to explore, what to look for, and what to look out for.
Taking Your Time with the Search
If you find yourself in a situation where you can afford to be unemployed for a bit while you search, or at a job with flexible enough hours to sneak out for regular interviews, I highly recommend dragging the experience out for a bit.
This was a piece of advice that I myself had received from an ex-colleague, and was at first hesitant to take. The reality is though that the practice from interviewing will give you opportunities to expand your own technical skills, speaking abilities, and most importantly give you the most chances to find the right fit for you. If you can time it right, interview at less desirable companies earlier on to practice and build confidence.
Dealing with Unrealistic Job Postings ( and what they really mean )
Not too long ago a blog post by Lara Schenck made quite a bit of buzz about titling in the industry. Often job listings are not only inaccurate to a companies needs but also quite literally impossible for any one person to fill.
They become exaggerated due to a companies various needs. Part of the issue about why they go so far astray is because often it becomes HR or management's responsibility to recruit. These individuals aren't deeply involved in the domain at hand, and thus have limited insights into what is actually needed. As an exercize in looking for better crafted posting, think about how you would write a job description if you were looking for yourself.
Because those posting don't actually know what's needed, or what they are looking for, the start of any interview process is really for the candidate more than the company, its your chance to investigate if your skill set is a match, or if the company needs you. During my process I met with companies for a ton of positions that weren't even listed, or contacted them to sell what I did, instead of looking for what they thought they needed.
At other times, I used the informational as a chance to probe for perhaps a better position that they didn't know they needed yet.
As a specialist, you are the most qualified to access their needs and your own relevancy. Knowing whether or not a job is right for you, is your first step to a successful interview.
Titling is Irrelevant
As "engineers," we get pretty hung-up on titling. I'm super guilty of this myself. In the end though its more than just a naming convention. The title you get at a job, somehow factors in with the companies reputation, and clients/product. Meaning that while it sounds impressive to be CTO of your own living room, being a junior engineer at Google clearly has more weight.
I recommend being flexible and exploring opportunities rather than worrying about what you are called (in some management philosophies everyone would actually just be the same title anyways).
Exploring Growth Opportunities
Related to my thoughts on titling, just a moment ago, weigh your own ability to grow within an organization as well. Starting at the top is great, as long as you have known what it feels like to be in all the steps in-between. Whenever there is a chance for you to learn from peers, or the environment, its only going to increase your own skill set, which translates into future stability.
Asking Tough Questions
If you think to yourself "At the end I am going to have to ask a question, so I best prepare one now." you are going about this all wrong. As you advance in your career and move through different companies, you will undoubtably have good and bad experiences. These are the best bench marks to get you started. You want to ask questions that let you know exactly how this company stacks up to the pros and cons of your past.
Ask whatever technical questions you see fit, but also ask structural ones. Perhaps for me, my greatest concern at a new company is about how actively involved the C-Level leadership is with development, their understanding of technology, and how this does or doesn't relate to autonomy of their engineers. So I drill pretty hard into these points (along with many others). If you think asking too much makes you seem picky, to me when I have interviewed candidates, its come across more as a sign of capability and selectiveness (in the positive sense).
Companies will post and interview for positions that are not open.
Getting Taken Advantage Of
Before beginning my own search, I was leading another engineering team and it was my job to hire for its open roles. One thing (that I was guilty of as well) that happens far too frequently, is that companies will post and interview for positions that are not open AND interview for them.
From the companies point of view, they are "keeping you warm," which is to say, seeing if you are skilled enough for the job, and preventing you from taking another job offer, JUST in case they need you. Its near impossible (for me at least), to really feel out early on if this is whats happening. Asking directly during the process, if the role is ready to be filled immediate can help. Often times in general, clear direct questions show an employer you know what you are talking about anyways.
Aside from not really having a position open, I find that a lot of companies also use interviews as a means of free consulting.
Consulting for Free
Its hard to really read another person, at any time really, but especially during the stress of an interview. You have a lot on the line: your career, financial stability, sometimes even your reputation. This aside, try to gauge the difference in your knowledge form the knowledge interviewer.
The value of an engineer, doesn't just come from code knowledge, or design pattern implementation, its about insights and ingenuity. Even if you are far more junior than them, you still may know some techniques or domains on a deeper level. Its important that you convey your knowledge, but also that you do so without necessarily teaching them how to do it.
If you feel that you have entered some form of "instructor mode" where you have begun teaching new skills to your interviewer, feel free to cut yourself off. Just by entering this dynamic, you have already shown you are a solid candidate, anything more should require compensation. Some companies (some REALLY big ones that I interviewed with) will quite intentionally use interviews for this. It is cost effective and a good way for them to stay relevant, they often don't realize or care that its malicious and predatory.
What I'm about to say is a bit cruel, and I hate myself a bit for it, but since companies will undoubtably be taking advantage of you, feel free to do the same.
Even if you know you aren't interested in a company, or if you aren't even really looking for a job, take the time to meet them in person, if offered, and practice your interviewing skills.
Interviewing from a candidates perspective is a good chance to find out what techniques other engineers are using, what skills are currently in demand, and what companies to keep an eye on in the future. Its also even a chance to make some friends along the way. Even if a company is "slimy", its rare for EVERY member of the team to be that way (I've been in interviews where team members have directly warned me not to work there).
My only caution to this of course would be time consumption, as interviews for engineering roles can easily run 6-8 hours in person and include take home code tests/skill assessments.
Code Tests and Skill Assessments
Since I have been on both sides of the table for interviews, I have a pretty comfortable understanding of my own strengths and weaknesses during the process. I also (hopefully) am a decent judge of others.
When you are given a code test, either in the form of a take home assignment, white boarding, of live coding during an interview, take it as a chance to do two things.
Consider what the format of the test says about your potential employer.
Evaluate if the position is what you thought it was.
Naturally feel free to add more to this list, but those are my two broadest and more key recommendations.
Considering the Format
Tests and their formats can say a lot of things about the people giving them. If I am asked to live code during an interview, I know there is a good chance that this isn't the job for me. Interviews come with a tremendous amount of pressure on a whole lot of levels, and engineering is pretty intense work. When you are asked to code something in a strange location, with an unknown person evaluating your every move, it intensifies everything. The pressure here isn't an accurate reconstruction of the work environment, and will most likely only let certain personality types get through. This filter, notably isn't about ability, it tends to be about how these people act. Naturally, I've had good experiences having to live code as well, but only when it was done comfortably, collaborative, and with a domain I was well versed in.
How a company sets this up, and what the task is should be something you consider when deciding whether or not to advance to the next steps (or whether you should/shouldn't be bummed out if you aren't given that option).
Sometimes you will go through the interview process and instead of being offered the full time work you were looking for be offered a freelance position. This is a bit of a let down, and usually will mean that the company can't afford you, doesn't really need the position full time, or wants to try you out first.
If its unclear, ask them. An employer's ability to be clear and honest with this type of situation is crucial and a good indicator for how other interactions will go with them in the future. If you are really looking for full time employment, you may even want to make sure they are fine with you stepping out as needed for calls or interviews (I had one arrangement like this during my search, and it worked out great for both of us). Letting them know that this wasn't your ideal situation will help you in terms of flexibility, and if they were testing you out, pressure them into deciding quickly.
Make no mistake, there are a lot more factors in the interview process than what I covered here. Every company I spoke with was radically different in their hiring approaches, and pretty much everything else. Looking for a solid job is a process, and should be treated like work unto itself. Use it as a time to evaluate your own skills, look more broadly across the industry, and learn along the way.