There is very little difference between looking for a new job and sales prospecting. The biggest difference being that your skills and future time and effort are the product and this particular “sale” is a more involved and long-term relationship than most business have with their customers.
Come up with a plan for how you will market and position yourself, and for what kind of a position that you are looking for.
Decide What is Important to You and What You are Looking for
The first thing that you need to do is decide what it is that you are looking for in an employer and what is important to you. This will depend on your personal preferences as well as where you are in life. If you are a few years out of college and without a family, what is currently important to you is going to be different from someone who has one child in college and two others in High School.
What values are important to you?
Ultimately, the most important thing to enumerate are your values and what sort of company culture in which you will thrive.
Things important to me:
- Honesty and Integrity
- Engineering Excellence
- Difficult Problems
- Work-life Balance
Come up with a list of at least three core values that are important that you next employer shares. Keep these in mind while interviewing and keep track as to whether or not prospective employers also share and exhibit them.
In which industries do you want to work?
Much like sales, it is difficult to get traction and referrals if you say “I want to work for any type of company”. When networking, both with recruiters and your colleagues, it is much more effective to have at least three industries that you can refer to when someone asks you what you are looking for.
For me I am interested in mission driven companies in:
- Cybersecurity
- Green energy
- ML/AI
- ideally, with some sort of hardware component
Sometimes it is also helpful to know what industries you do not want to work in. For me that would be AdTech.
What is the ideal role for you?
Come up with a solid, well-rehearsed answer to the “If you had the ideal role, what would it look like?” answer. This is a very good question for an interviewer to ask and the better the answer you have the better chance that you can communicate what it is that you are looking for and whether or not they think that you are a fit for the role at hand.
For me the answer is:
One in which I solve problems at both a tactical and organization level. Working with C-level stakeholders I help identify and define both areas for improvement and projects that need developed. I work with the business to define the high-level project goals, and then architect the system, write the code, deploy it, and run it in production. Depending on the size of the project I will assemble and lead a team of developers or if it is a smaller scale project I will typically work with a few other Senior Engineers to build everything out.
I am looking for a position where I can continually expand my software engineering knowledge where the career path isn’t managing people but taking on deeper and more involved technical challenges. I am looking for an organization with a true engineering culture, one that follows industry best practices, modern software engineering methodologies and values engineers who are committed to designing and building high quality, reliable software.
Money
Decide what you are looking for when it comes to compensation and be prepared to answer money questions early on in the process. Do your research and find out what people in similar roles are making in your industry and in your location.
Marketing and Positioning
Elevator Pitch
Come up with a three or four sentence pitch that tells someone
- Who you are and what is special about you
- What you have done recently
- What was the business value of what you did
Ideally, you should tailor one for each employer and specific position. Barring that, having one that is well though out is better than winging it.
For me my pitch is:
I am a software engineer with 25 years of experience who knows that the most important part of every project is understanding the users and the needs of the business.
In my current position as a Principal Software Engineer at Hughes my most recent challenge was to develop an enterprise-wide, cloud-based, ingest pipeline that reduces the cost and time to gain value and insights into our data while applying a set of unified data governance rules to it.
I cut the LOE for the onboarding of new data sources by almost 50% and democratized the access of the data by standardizing on GCP BigQuery datasets.
Networking
Now that you have an idea of what you are looking for and how to articulate it, in addition to posting your resume on job boards, do some networking with your existing colleagues.
Just like sales, the best way to make one is with a referral.
TODO
Preparing for common interview questions and lines of discussion
Answer to the “Tell me about yourself” question
A lot of interviewers will ask this question. An answer that will help you stand out is one that gives someone some insight into who you are, not just how long you have been writing code or how many of the hottest new languages or frameworks that you know.
However, it should speak to the position for which you are interviewing and tell them about what you are like as an Engineer. It should also tell your interviewer something about you and why you are a good candidate for the job. For me, I use some version of the following when asked this question:
I like making things. I like fixing things, breaking them, and then fixing them again. Not at all limited to technology. I do all my own work on my house, and my vehicles, and I am an avid motorcyclist. I like doing things I’ve never done before and figuring out how things work. I am not afraid to fail, and when I do, each time I see the failure as an opportunity to learn how to do things better, learn about myself, and grow.
What are you working on now?
Have a good story about the current project on which you are working. First explain what you are working on at a high level and then describe an overview of the specific components that you are building.
Be prepared to go into as much detail as your interviewer asks. Frankly, the detail part should not require too much preparation on as it should reflect the technical details of what you are working on day-to-day and you should have a good grasp of it and be able to go into as much detail as possible.
Be ready to describe, in minute detail, the projects that you mention:
- The use-case and business value of it
- The design
- Any technical challenges
- How it came together
For example:
We sell managed network services to Enterprise customers and are an ISP that sells satellite Internet service. My most recent project was building a data collection and analysis system for all of the performance metrics for the satellite Internet part of the business.
Each satellite has 10+ ground stations; lights-out data centers with dozens of different custom components running on multiple clusters of multi-node systems. Each of those components generates performance metrics. Each is a different schema and each schema can have multiple versions in-flight at a time.
I built and maintain a data analytics system to collect all of that data; process, normalize and enrich it and developed the data engineering to enable it to be written to schema managed tables in GCP BigQuery so that it is easy for the business, QA, and Data Scientist to use.
Tell me about your background? Or, how did you get where you are in your career?
- How did you get started? It could be a story about your education, an internship, or first job
- How did you progress? What is the big-picture overview of how you grew over your career?
- Where are you now? Expand a bit on what was sketched out in your elevator pitch. In general, what are you working on now?
Why are you leaving your current role?
Why are you leaving or why are you looking is a question you can guarantee to be asked.
You have to have a good answer to it, and ideally, the answer helps bolster the story about you as a candidate and what makes you unique and valuable.
Some good themes are:
- Cultural mismatch. You need to have an explanation as to what this means
- Not working with the tech stack to keep me on my career path
- Relocation. If you are moving this is an easy reason
- Exhausted opportunities for growth in an organization
What is a challenge or conflict you faced at work and how did you handle it?
This is a good open-ended question that tries to uncover what it might be like working with you and indicates what sort of things that you find as challenging or think of as a conflict. Ultimately, the best answer is going to involve some explanation about how you spent the time to listen to and understand whoever it was with which you were in conflict and how you worked with them to come to a common understanding and solution that ultimately benefited the business and not just convince someone you were correct.
Here is an example that I have used from actual experience:
I had a conflict of opinion with my direct manager about how to implement the deployment of a new system that I built which was to be deployed into an existing system that he directly managed and I had not yet worked with.
The directive was to “get it done as fast as possible” and my manager did not share my view that everything, as much as is reasonable, should be automated.
The root of the conflict was regarding my suggestion to deploy public SSH keys for myself and my team member into the root user’s authorized_keys file on the set of production servers for this project. In this case, and in others for which I have developed similar automation libraries, the boxes live within a secure subnet that accepts no incoming connections except SSH from specific subnets for managing it or a dedicated deployment server. Given that, being able to passwordlessly SSH as root to manage them was deemed to be a low security risk.
There was a non-root user on each of the servers that had passwordless, unrestricted, sudo privileges and my manager wanted us to use that user and then sudo for each command. The only problem with that is that the existing codebase that I had for automating deployments made the assumption that you would be able to ssh as the root user to execute remote commands.
His argument was that it was a security risk to add our keys to the root user even though the infrastructure team was already doing exactly the same thing to manage these hosts. In order to comply would have meant one of two things:
- Having to refactor the existing libraries, which would take much more time
- Or, do what he suggested and just deploy everything by hand based on an SOP in a wiki
I took the time to talk it through with him and to ask questions.
- How is the security risk different if we can passwordlessly SSH to a host as the non-root user and then sudo without a password?
- Is it any different if someone gets my private SSH key?
- Even if they did, wouldn’t they have to be on a machine in the specific subnet from which I am running those commands and wouldn’t they have to subvert further layers of security to get into that subnet and onto the deployment server?
I then explained that since we are in the middle of deploying something new and asked if he thought we would probably be iterating on updates to the software often, and/or if he would like us to be able to easily, reliably, and quickly deploy updates in the future as we have to make changes.
Ultimately, after taking the time to ask questions and lead him to the conclusion he agreed to enable us to set up the root SSH keys which enabled me to develop all of the deployment automation in a day and a half.
The result was that I was able to quickly iterate on deployments during the development and then all subsequent deployments were codified and executed in exactly the same way each time.
What are your greatest strengths?
A very common question. You need to think about this ahead of time and come up with strengths that lead back to being a good Engineer. My greatest strengths:
- The ability to quickly learn just about anything
- A deep understanding of business and a customer focus that enables me to understand the context of what is being built
- Curiosity to understand the reasons behind how things work both technically and organizationally
What are your greatest weaknesses?
The interviewer wants to discover three things about you
- Are you self aware? If you are, you are someone that can take steps to improve.
- Are you honest? They want to see if you provide an obviously false answer.
- Do you have a plan in place to improve?
It is also a question to get you to reveal things about yourself that they might only discover after they have hired you and wish they hadn’t. So, this can be a bit of a trap, and you do not want to reveal a weakness that could erode confidence in your ability to do the job and become a trusted member of the team.
A few things to avoid:
- I’m not good with people
- I’m bad a time management
- I’m not good at managing multiple tasks or responsibilities
My suggestion is some form of the following
- I find it difficult to say no to people and I tend to sometimes take on more work than I can handle. In the past, because of my reluctance to say no, I’ve ended up working evenings and weekends to fulfill my commitments. Before I say yes to things I make sure I assess my current workload to ensure I do have the capacity to take on more responsibilities.
- I struggle to let go of projects. I sometime get very engrossed in a project and understand that it is not always the best use of my time and I learning to finish the project and then move on to the next.
- I lack experience in <some-skill>. I know that it is important and am spending the time to build those skills and gain more experience.
- I can get stressed out if a project is going to run over a deadline. This is related to my stress around being late for things because I take pride in getting things done when I committed to getting them done and/or being where I said I would on time. I am learning to manage that stress and learn what I can do get a project finished on time and manage the expectations of those that are waiting for it.
- Think of an understandable side-effect of something you do that is good and then provide something that you do that mitigates it. For example:
- I am not the fastest person on my team, but the code that I write is well covered with tests to prevent regressions and make it easy for someone else to work on without breaking it. I also ensure that I clearly communicate how long something will take so that I can meet the expectation of when it will be done and deployed.
What would your former colleagues and/or manager say about you if asked?
I have had this and the next question asked of me and I am not sure the complete value in it. However, having a good answer that you have already thought through a bit is a good idea. The answer should include some of the following elements
- You always make yourself available to help and work with others in your organization and not just on your immediate team
- You are trustworthy
- You are detail oriented
- Your work does not require you to explain it because it is simply crafted and includes the necessary documentation for anyone with a base set of skills to clone, understand, and run it
Tell me about a time you demonstrated leadership skills/took initiative to accomplish a goal
Tell me about a time you made a mistake?
Every single one of us has made mistakes. The point isn’t the mistake you made, but how you took responsibility for it, how you handled it, and what you learned from it.
Leadership/Managerial
Leadership and project management mistakes are (typically) much more expensive and consequential than technical mistakes except the tech boo-boos that lead to days long outages and double-digit percentages of customer attrition.
Leadership and managerial mistakes tend to be the result of lack of experience or political skill and savvy. (more on this later)
Technical
These are the classic “I accidentally deleted the wrong VM in production” type of mistakes. Ideally, you will follow that up with:
- As soon as I realized it, I immediately fessed up and let my boss and whoever else needed to know about it right away
- Was able to quickly get it back up and running because
- All of the deployment for this infrastructure is automated, so I just had to push a button to redeploy and reconfigure a VM
- All of the data was backed-up so it was just a matter of restoring from the most recent snapshot once the VM was back up
- I identified the process problem that enabled me to make such a mistake
- Corrected the process problem such that this mistake cannot happen again
What is your greatest career accomplishment?
Ideally, you will refer to something that is relatively recent in your career. If you discuss something that happened 5 to 10 years ago that might lead your interviewer to think that your career has stalled for some time.