Thinking Differently About Your Annual Review

Your annual review is an important part of your success as a team lead, and as a software engineer. However, not everyone truly understands their value and how to leverage them properly. As a team lead, I’ve seen too many self reviews that have very little content, much less supporting details to emphasize their wins, strengths, and their impact that they’ve made. I understand, it’s tedious. But if people understood their true value, it should be different. You don’t want to write a novel, but you need more than just a couple of sentences. But why?

Sell Yourself

Understand that your self review is like your resume. It isn’t for you. Your annual review in general is about communicating to your boss, and the people above your boss, your value in the company. Your boss likely knows your contributions, but does your VP? The CTO, or CEO? Not likely. How about HR or people in charge of making salary decisions? Even less likely. Your job is to sell yourself and your value to them, as well as your boss.

If you look at it from that lens, then you need to understand what to communicate, and how to communicate it. Use terminology they’ll understand. Change the net result of your communication too to make it convincing and actionable for your audience. Just like your resume, highlight what you accomplished, but also the value that each accomplishment gave to the company. Do the same for your strengths, and every other item in your review.

Understand the Use of Your Annual Review

Your annual review isn’t a box to check at the end of the year. You must understand what it’s used for. These documents are used for:

  • Layoff decisions – layoffs are going to happen? They’re less likely to lay off someone bringing lots of value to the company compared to someone who may contribute as much, but failed to communicate it
  • Promotions – want a promotion? Clearly communicate what you’re doing, and the impact. And this is a verifiable piece of evidence that you deserve the promotion, or it indicates what you need to work on to achieve that promotion
  • Salary compensation – want a better raise? Use this as a bargaining chip in your negotiation. Or allow it to speak for itself. If you highlight well what you’ve done, you’ll have a greater chance at being given a better raise to begin with

Use your annual review as a means to help yourself. There are many things you need to do regularly to help yourself in your career. This is one of them.

Understanding the Technical Screening for Software Engineers

The technical screening phase of the interview process has always been a debated subject. No one can agree on what the best strategy is for screening candidates. We must understand why this stage in the process is necessary however. Software engineers are paid very well for their time and experience. And most highly paid jobs do have screening some process to filter out people that can talk the talk, but can’t walk the walk. This is a safety precaution for companies.

Why is the Technical Screening So Important?

The company has to pay your salary, and benefits. And they also pay your taxes as well. So a single software engineer is a very large expense for a company, much less an entire team or organization. The largest expense for most companies is payroll. So companies have to ensure that they’re not wasting their time or money.

You also have to understand that both hiring and replacing a person is very expensive. Just hiring a new engineer can reach up to $50,000. And replacing a software engineer can cost a company up to 1-2x their salary as well. It’s not just the salary and benefits of the new person. It’s the time lost in productivity, meetings, screening people, discussions, negotiations, onboarding, and more.

With all of that in mind, we agree that it’s crucial that companies find the right person for the job. And that requires diligence in the screening process for hiring engineers. You simply can’t take the resume as fact and hire someone. There’s the whole process of evaluating fit, and soft skills. But the person has to do the work too. Teams, peers, and companies need that person to be productive.

What Options Exist to Evaluate Engineers?

There are many options companies can use to dive into a person’s technical capabilities to see if they’re a good fit or not. Not all are good, and many are misused.


Leetcode is essentially an online tool to quickly assess someone’s ability to understand and use data structures and algorithms. You are given 1-2 short problems and are given a small timeframe to solve the problem and meet the requirements. This can fortunately be done in the interview timeframe itself. And many people opt to screenshare and watch the candidate work. This is the most pervasive option right now.


  • Easy for companies to implement
  • Easy for candidates to study. Just grid leetcode exercises.
  • Short timeframe
  • Moderately gives you an understanding of the person’s ability


  • Most questions are odd and not close to reality of what the person does on the job
  • The candidate is in a stressful situation to understand the requirements, build the solution, and complete the work in a really small timeframe, while being watched by someone
  • Has the risk of candidates studying solutions and have already completed the exercise given, obscuring the results
  • Have to use the website and their UI and tools to write the code, so you don’t have the luxury of using the setup that most engineers configure for themselves to work optimally

Take-Home Exercise

In this scenario, a candidate receives an assignment to complete independently over several days. Typically, these assignments entail a larger scope of work compared to a typical LeetCode question and are completed outside of an interview setting. However, this approach is also flawed as it is often misused and misunderstood. Many companies underestimate the time required, claiming it will only take a few hours when in reality, it takes days to complete. To produce work that impresses the hiring panel, candidates must excel in communication, documentation, testing, code coverage, proper abstraction, attention to detail, and other essential aspects.


  • Provides the candidate an exercise that would be the most realistic to their actual work. It would include “real” requirements, and they work on their own time, with their own setup.
  • It’s not done within the stressful situation of an interview, and no one is watching you work
  • The candidate has the luxury of time to think about the solution, and ask questions


  • Most of the time the scope of the exercise is too large. I’ve personally built exercises that took me days because I was building end-to-end solutions and custom UI with high test coverage, and more when the instructions said it’d only take 6 hours. I’ve also been given requirements to build a whole product and the company said it’d take weeks to build.
  • It’s a large time-sink for candidates, and they must use their personal time to do it
  • Most of the time it’s unpaid
  • If the candidate has multiple interview processes happening, it could be too much to balance
  • It’s more work for the interview panel as well to communicate with each candidate, and then carefully review each submission

Lengthy Technical Interview

Another option is to simply have a lengthy technical call with someone. This is where you’d ask DSA questions, probe their experience in debugging something complicated, ask about classes and APIs, and more. The difficulty is that each person is unique, so you’ll get varied answers. And there’s way to much to possibly cover in a realistic interview timeframe, which is usually an hour. And it’s difficult to avoid it simply being a Q&A session and not really an interview where you have a proper conversation with someone.


  • Less demanding of everyone’s time
  • Easier to prepare for the hiring panel. You can simply have a sheet with questions and follow-ups and go down the list


  • You’re more likely to get bad candidates this way as it’s too difficult to properly evaluate someone with the breadth and depth required
  • Without careful planning, you end up with people recommending to hire or pass based on gut feelings and reactions instead of objectiveness
  • Easier for the candidate to study for. They can usually simply study common questions and answers, which there many lists out there, and likely cover most of what the panel will ask
  • In general has the highest risk for bad hires

What Should You Do When Screening Engineers?

Most engineers consider whiteboarding sessions and a 1-2 week trial period, where the candidate works on-site, as the worst choices. Engineers do not typically utilize a whiteboard in their regular job tasks as they would in an interview setting. Trial periods pose difficulties for all parties involved. If the person cannot quit their current job for the trial, the company needs to arrange accommodations for their existing employment. Additionally, the company must address considerations such as hardware provision, task assignments, collaboration arrangements, and legal requirements. Determining the appropriate compensation and establishing clear metrics for success or failure are essential. Overall, there are too many barriers for this option to be feasible.

As you can see, there’s no perfect answer. That’s why we’re in the state that we’re in. However, my personal recommendation is simple: Ask the candidate what they prefer out of your preferred options.

This will enable you to work together with each candidate and still strive to get what you need. Whatever you and your team chooses to do, at least acknowledge what you’re doing and why you’re doing it. And communicate it clearly to your internal hiring teams and the candidates.


Traits of a Good Engineering Team Lead

A good engineering team lead is incredibly valuable. They’re important and crucial for the company as well as the people managed. However, it’s not easy being a leader, and it’s not clear how to be a good leader. What makes a good lead is a balance of many things, and balancing what’s good for the self, the company, and your people.

Traits of a good lead

  1. Continuously grow as a person. As a leader, you have to keep evolving. What works for you today, likely won’t serve you the same years from now. You have to keep up with the times, work on your flaws, and strengthen what you’re good at.
  2. Be empathetic. Use empathy in everything that you do. This is a huge differentiator between being a good leader and a leader that people leave. After-all, many people leave bad managers as the number one reason for leaving a company. When you apply empathy, you allow yourself to go beyond your own vision on how things are done, planned, orchestrated, and more. It will allow others to feel that you have their best interest at heart.
  3. Grant people autonomy. Many people in general thrive off of being able to solve problems on their own, and enjoy the creativity and freedom to do their job how they think it’s best. It’s a delicate balance to enable people to have those freedoms, but still maintain order, reporting, and transparency. You need to strive no matter what though to enable people to run on their own. That will give them a greater sense of ownership, accomplishment, and they’ll grow at a much faster rate. And you’ll be setting them up for future success as they grow in their career.
  4. Evolve your processes. All engineering teams and organizations need processes. It helps keeps things moving, enables transparency, accountability, planning, and more. Many people, especially engineers, find processes to be restrictive, but as a leader, it’s necessary so you can do your job. However, a team process is meant to enable your team, and you, to do the highest quality job. So you must continually improve your process to ensure that it fits the needs of today. Ask for feedback. Experiment with things. And allow your team some influence. Enable your process to be the team’s process, not yours.
  5. Practice good one-on-ones. One-on-ones are your lifeblood to keeping people happy. Make sure that you keep them regular, and effective. They’re not just about giving your people feedback, it’s about you getting feedback too. Plan ahead, and keep people engaged. Learn about each person individually, help them with their career goals, make sure they’re not burnt out and more.
  6. Treat people like adults. Treating your team like adults will net you more positive results than you realize. They’ll appreciate and respect you. They’ll value your team, and the company more. They’ll take ownership of their work and give you their best. It will mean that sometimes they’ll have to run an errand in the middle of the day, miss a meeting, and situations like that will arise. But they’re adults, and so are you. Treat them as such.
  7. Communication is crucial. Your communication skills have to be constantly evolving. You need to know how to speak, when to speak, how to adjust how you communicate to different people. It also means understanding what to talk about and to who, and when you need to keep things private. You have to master how to bring people together across teams and departments. You’re the bridge that your team needs to rely on. Practice good communication skills, and help your team grow their own skills too.
  8. Bubble up successes of your team. You’re the gatekeeper between your team and leadership, so use your position wisely. It’s rare that someone above you will know a win that one of your engineers had. So make sure that you elevate your team, and bubble up successes to the people above you. That will make it easier for them to see how well the team is doing, how we’ll you’re doing, and how well your individuals are performing. If you aren’t doing this, no one else will. So, fight for your team to be successful all the way up the ladder. It will pay dividends for you too.

There’s a lot more to being a great team leader for an engineering team, but these are some key highlights to focus on. It’s not easy to be in this position, but the more you grow, the more success you’ll find.

Tech Debt is not always bad

A common complaint from engineering teams and departments is around tech debt. I see and hear a lot of people complain about having tech debt, never getting to address it, and overall a sentiment that it shouldn’t exist. While that’s understandable, that’s also not understanding what tech debt is. It’s also ignoring the impacts of having tech debt, or working in a way that never introduces it. Essentially, there is no perfect answer. And there’s no single solution. But there are better and more insightful ways of looking at tech debt to understand the impacts not just on engineers, teams, but as a business as a whole.

What is tech debt?

Many people often misunderstand the true nature of tech debt. They simply see it as a tool with multiple uses, much like any other tool. Tech debt allows for faster completion of tasks and can also facilitate improvements upon existing solutions. Its versatility allows for both beneficial and detrimental outcomes depending on how it is utilized.

When approached with the intended metaphor of debt, its potential applications become clearer. For instance, when faced with the need to develop a feature, one could opt for a debt-free approach, ensuring the most optimal outcome but requiring a longer development period, perhaps three months. Conversely, by embracing some tech debt, the feature could be completed in half the time, around a month and a half.

Tech Debt as a Metaphor

As an engineer, you want to avoid adding tech debt in principle and just do a solid job now. However, as a business, you have to weigh the costs, and there are many. There’s engineering time, opportunity costs, possible loss or delay in new business, or possible churn, etc. That also means that your teams could lose out on working on something else in those 6 weeks.

It’s no different than any other debt. Does your roof need fixing? It may cost you $12,000 to replace your roof. Most people don’t have that much money laying around. So, you could save up for 3 months, get a second job, and pay it off all at once. Or you could pay down some of it upfront, then take on the debt, and get your roof fixed in 2 weeks.

Either way works, but like any major decision, you have to weight costs. Could you afford that additional money due to interest? Would you have more damages if it rained? Are the roofers you want to employ busy now or later, so would scheduling be a problem?

Looking at it that way, debt isn’t inherently good or bad.

What are the different types?

There are multiple types of tech debt, which is good to acknowledge. You can frame it appropriately knowing the type, because decisions can happen intentionally or not. And people can make decisions being prudent or reckless. Understand what caused it, if it is to be introduced. This is a good paper on the subject.

Different situations include:

  • We don’t have time to design this
  • We must ship now, we’ll deal with the consequences
  • What’s event-based architecture?
  • Hindsight is 20-20, now we know what not to do

Look at the differences in those statements. Those statements range from individuals needing to accomplish tasks poorly to simple ignorance. You now have more tools to understand what tech debt is and why it’s not allthe same.

How to approach it

As a team lead, this is your responsibility. Ultimately, the ownership and accountability lies on you. You now have the tools to look at the situation and decide what you are comfortable with. Now you have to decide what is acceptable for you, and your team. But now you know that tech debt is neither good, nor bad. It’s not black or white, just like most things in life. You must use discernment to judge what to accept and when. And that can change depending on the situation as well.

Writing an Ideal Resume

You should put a lot of effort into writing your resume. There are a lot of components to a good resume, and many people in the software industry fail at writing an ideal resume. And unfortunately that means that your likelihood of getting through the initial interviewing stages is reduced. Your resume is your elevator pitch! If you were to try to sell yourself in-person, would you not bother optimizing your pitch? Your resume is your pitch, so do your best to make it the most impactful that you can. Otherwise you’re only hurting your own chances for success.

Empathy is Key to an Ideal Resume

What many people fail to consider is applying empathy to writing your resume. This document isn’t for you. Your resume is for your reader, and you absolutely want them to find it engaging and interesting. They person analyzing your resume is the gatekeeper to you moving onto to talking to someone.

And also remember, that you’re applying for a job at a business. The primary objective of most businesses is to make money. And you’re a part of that process. So you have to think about what a business would look for in hiring an engineer. Always remember, your salary has to be paid somehow. So your most important asset is the value you create.

So you need to stop and consider for a moment.

  • What would make them want to stop and read my resume more thoroughly?
  • What information are they looking for?
  • How can I get their attention quickly?
  • How can I showcase my talent, and successes?
  • How can I make myself standout from the other candidates?

If you apply empathy to writing your resume, then you’ll approach your resume different. And it’s more likely that you’ll have more success with it.

Components to Focus On

There are key components to writing a good resume once you start thinking with empathy in mind. Once you realize what the person is looking for, it will shape how you write your resume.

First, your intro should say something unique about you. If you were in a room with one hundred other engineers and you all had to introduce yourself, how would you be memorable? Write your introduction with that in mind. Everyone is driven, passionate, etc. What makes you truly unique?

Next should come your experience. This is most applicable if you already have working experience. Your work experience needs to highlight not only what you did, but it needs to show you understand the value and impact of what you’ve done too.

Follow the STAR method. For each line item in your resume, communicate the situation you were in to convey context. Showing you understand the context of your work is a valuable skill, as it shows you look beyond your individual contributions. Follow that with the task itself of which you were assigned to do. Then detail the actions you took to accomplish them. Finally, and importantly, wrap up with highlighting the results, and the impact, of your work. That shows you understand your value and what you bring to the table.

Go through all of that for all of your work experience, while also balancing not writing a novel because no one will read a three or longer page resume.

Your next component should be an easily legible list of your skills. And don’t add modifiers to your list like “expert”. It may sound good to you, but statistics show it does more harm than good. Just list your skills out in a succinct manner. Let your interviewing skills, and your work experience, show how good you are.

Finally wrap up your resume with your education, certifications, and more. And if you have any links to websites, like your portfolio, Github, etc. make sure you put the URL or your handle. Don’t assume someone will have a digital copy of your resume.

Tailor you Resume to the Job

The last and arguably one of the most important aspects to writing an ideal and effective resume is to tailor your resume to the job that you’re applying to. If you just write one resume, and you blast that to every job opportunity you see, and you’re applying to jobs with different languages used, and different industries, then your chances of getting into next phase is going to be reduced even more.

As a person who’s reviewed and analyzed hundreds of resumes, it’s really easy to tell who didn’t bother doing this. And most of the time they’re simply tossed to the reject pile. You don’t need to customize your resume for every application, but at least have a handful for specific industries, job requirements, etc.

Following these principles will help you find success in getting through the initial screening stage in the process of finding a new job.

Advice For Software Engineers

As someone who has been in the industry a long time, twenty years and counting, I’ve seen a lot of things, both good and bad. I’ve been involved in the business-side of the industry, been a hiring manager for over ten years. I’ve mentored a lot of people, and have been mentored by some amazing people. worked on hundreds of projects. These projects range from really small projects to really large-scale projects. I’ve been involved in highly successful projects bringing in hundreds of thousands of dollars, to failed projects too.

I’ve given a lot of advice to engineers over the years. I enjoy giving advice! So I figured I would have a constantly updated place to hold the advice I give people. These pieces of advice are applicable to people still in college, to people with many years experience. I hope you find some gems in here.

  • Ask lots of questions. Don’t feel like they’re dumb questions if it means you learn something.

  • Use your boss/leader as much as you can, that’s what they’re there for. Ask for feedback, give feedback. Ask how you can grow, where to grow. Ask for support.

  • Don’t take things personally, especially when it comes to the work you produce. Remember, it’s not about you.

  • Understand that you won’t ever truly know everything, even when you have 20 years experience. Embrace it. This applies to so many things.

  • Don’t compare yourself to others. Compare yourself to who you were 6-12 months ago. And always strive to be better than your past self.

  • Have goals, but make them reasonable and actionable.

  • Learn the hiring process to understand how to set yourself up for success.
  • Bubble up everything that you do, even if it’s just to your boss/lead. It’ll make them aware of your successes, growth.

  • You will make a mistake, including big ones. The best thing you can do is to own it, and learn from it, and show that you’ve learned from it. Making mistakes if perfectly fine, we all do it. It’s not okay to avoid ownership, or fail to learn from them.

  • Understand what building things truly means, and it’s usually not what people early in their career really thinks. Things like maintainable and legible code is far superior to clever code. And revenue generating code is crucial, even if it’s old and you don’t get a chance to refactor it. All things have a cost. Would it be great to rewrite this old PHP service into something modern? Of course! But at what cost, and what’s the value?

  • Your salary has to be paid somehow. This affects everything that you do. And that also means that everything you do influences everyone around you, including people outside of engineering.

  • Favor smaller PRs over bigger ones. Bigger ones are a huge time sink, and you’ll get less quality feedback.

  • Seek feedback and validation on your ideas early. Don’t wait until your PR is up to get feedback on your ideas. Worst case is your idea doesn’t work with the team and you have to rework a ton of stuff. Save yourself and your team time by validating your vision as soon as you can.

  • Find a good balance of work and life. No one will do this for you. And many companies will try to do what they can to take advantage of you. Only you can stand up for yourself. Learn to do this.

  • Learn how to give and receive feedback in a healthy way. Both situations can be stressful, and emotional. But there are ways to help mitigate that so you can make the best out of feedback. And feedback given and received in a healthy way is really valuable.

  • Network, always, and nurture your network. This is the most valuable way to find new jobs. I’ve gotten 2 jobs where I skipped almost the entire hiring process and just talked to the CEO for 30 minutes then got an offer.

  • Document and journal what you do, ideally at least once a week. This will help you bubble up your successes, help you keep you resume updated. It will also help you fight for a promotion, or a pay raise. It will also help you reflect over time on all that you’ve accomplished in your career. All of that can help you fight against imposter syndrome too.

How to Run an Effective One-on-One

As a team lead, one of your many responsibilities will be to establish and nurture your relationship with your team members. You’ll accomplish this over time. There is no shortcut to this. And just like any relationship, you can build it up, or wear it down. So consider that every interaction you have with your team, and every time you make a decision, etc. that your rapport will change. Something that you should be doing is having regular check-ins with each person on your team, and the most effective way is to have one-on-ones with them. But these one-on-ones can be beneficial, or a waste of time. To run effective one-on-ones, you have to be diligent, empathetic, communicative, and more.

Diligence with your one-on-ones

A major factor to ensure that your one-on-ones are effective is to ensure that you’re diligent and consistent about them. That means you must keep a regular schedule and stick to it. Even if you need to move one of them around to a different day sometimes, that’s fine. Just don’t cancel them unless you really need to. Again, just like any relationship, having meaningful and personal conversations is crucial to building trust, understanding one another, enabling meaningful and candid conversations.

It also means you need to take notes for each one. This will act as your guide over long courses of time. Your memory is not perfect. You won’t remember what you talked about six months ago, or something small but important that came up recently that you wanted to chat about in your next one-on-one. Diligence in note taking will enable your one-on-ones to have more value and meaning.

That also means you have to prepare in advance. Don’t just show up to the one-on-one without any forethought or outline. For every one-on-one, and for each person, spend some time before the meeting to read your notes, and then reflect on anything you saw or heard during the week. Then also write down anything you want to talk to them about. Having an outline gives structure to your one-on-ones and also shows that you’re taking it, and them, seriously.

Having diligence in your preparation and having consistency will enable you to grow as a lead, but also grow your relationship. You’ll find that your own skills will grow, like empathy, communication, planning, and more. And growing yourself is equally important as growing your team.

What to talk about during one-on-ones

There are a lot of things that you can talk about at every one-on one to make them meaningful. But what you talk about will be unique to every meeting you have, and to each person. You may hold all of your one-on-ones for your whole team in the same day, or week. But you’ll likely find the outline you prepare will be different for each person. There may be some overlaps, but overall this should make sense. Each person will have different needs at all times. So specifically what you talk about will take your diligent planning.

Also remember, that this is supposed to a conversation. One-on-ones aren’t an interview. So you shouldn’t just be asking many questions and writing down notes about their answers. To form a solid relationship with someone, you have to give as well. So make sure that you open up to your team, talk about how you’re doing, what you’re dealing with, and basically any of your questions should reflect back to you. This will make you feel more approachable, human, and enable them to be empathetic with you.

One-on-one aren’t for casual conversations like you would chat over a cup of coffee. So stick to important concepts like:

  • Working through their career growth
  • How they’re feeling about their job
  • How they’re dealing and balancing work and life
  • Are they facing burnout
  • Giving feedback to them
  • Receiving feedback from them
  • Giving them insight into what’s going on above them in the organization

Here are some resources to help guide you in more depth for your one-on-ones:

Benefits to making them meaningful

There are many benefits to having meaningful one-on-ones. You’ll be a more effective manager for your team as whole because you’ll be able to identify issues in your team, team dynamics, workflow, processes, and more. You’ll be a better manager and lead for your team on an individual level too. You can mitigate burnout, prevent someone from becoming too unhappy with their job early to try to prevent them from leaving, help them grow in their career, build on their strengths, improve their weaknesses, guide them into and through promotions, and so much more. With a happy and efficient team, your team will work better, more efficiently, and you’ll find you’ll be able to meet deadlines more consistently. The work itself will be higher quality. You’ll also find yourself growing with better communication skills, more empathy, and so much more. There are countless benefits to having good one-on-ones, but it all starts with you.


Is it a Good Idea to Pursue Software Engineering in Today’s Climate?

This question has come up a lot in the last several months now that 2024 has started. There has been a lot of news around layoffs in the latter part of 2023, and more layoffs in early 2024. That’s left a lot of people really early in their software engineering career concerned about job prospects. That’s also left people in college, bootcamps, etc. and people considering them, to reconsider their career choices. Given all of that, is it a good idea to pursue software engineering in today’s climate? In short, yes, absolutely. But there’s a lot of information to consider.

Forecast of the next several years of software engineering

When you really think about it, so much of our modern society is built upon software. So there’s an ever-growing need for more software, and thus more software engineers. And AI is not damaging that outlook either. But if you look at research, it shows that the industry will continue to grow by a large margin in the next 5 years and beyond. So if there are lots of projections of growth for the industry, then it’s a healthy industry to pursue.

Why are layoffs happening in 2023 and 2024?

There are important things to remember when looking at the news of layoffs in the IT industry.  If you don’t, then it’s too easy to think that the industry is collapsing, when in reality it’s not. What you’re seeing is expected, and normal for the industry and the economic signs if you’re paying attention.

Layoffs happen, and what you’re seeing is news from major companies announcing layoffs. And layoffs happen the most around the end of the year, and in January. The reasons are because companies want to show healthy reports for their fiscal by the end of the year. Similarly when starting a new fiscal, they’ll try to consolidate, restructure, and trim headcount when starting a new year based on their forecast for the new year. So, all of the news you’re seeing is a common pattern.

You also have to remember the pandemic. The federal rates were almost zero during the pandemic to alleviate unemployment, which drove many companies to borrow money with great ease, and use that money to go on hiring sprees to experience a lot of growth. That’s why in the last couple of years hiring was insane, and we also saw salary inflation in some roles because of it. Now that the federal rates are higher to combat inflation, which means access to money is harder right now. That’s why many companies aren’t hiring, or have slowed their hiring.

Put those two together, and you’ll see a couple of the reasons why there’s layoffs happening. It’s not due to the failure of the industry, it’s just how things have played out due to normal business practices, and the economy.

Should you pursue software engineering in 2024 and beyond?

Simple answer, yes. Looking at the two topics above, it’s clear that the industry is still a good industry. Software engineering isn’t going anywhere. It’s still a good industry to get into, especially if you like the industry itself. This industry isn’t for everyone. And getting a new job right now early in 2024 may not be super easy. But you can still succeed! Some of it is outside of your control, but a lot is still up to you in getting a job, and how well you may succeed at this career.

Understanding the Hiring Process

As an engineering team lead, you will be responsible for hiring engineers. It’s critical that all engineering team leads have a solid understanding of the interview process, and what to do in each step of the process. You must also understand that hiring is extremely expensive, and not just the salary part that goes to the person you hire. There’s a vast amount of time and hard costs involved with hiring a single person, usually in the tens of thousands of dollars. And if you make a bad hire? It’s even more costly to remove a bad hire, and then restart the entire hiring process again. So making the best hiring decision you can is really important.

Stay Factual, and Unbiased

Throughout the entire process, it’s key that you, and your hiring team, stay focused on the facts, and not feelings and gut reactions. And it’s also important to stay unbiased. It’s best that you have an established hiring process and protocol for evaluating people throughout the process, and make it factual and evidence-based during. You shouldn’t dismiss a good candidate because someone “got a bad vibe”. Any negative aspect about a candidate needs to be backed by evidence. How someone feels about a candidate is a valid feeling, but it shouldn’t be enough to remove someone from the pipeline. So focus on staying unbiased and factual throughout each stage of the process.

Your Unique Hiring Process

Always remember that the hiring process of hiring a software engineer will be unique to your organization. There are general guidelines of course: filtering through hundreds of resumes, the initial screening call, the technical screening, the final interviews, then the salary negotiation and offer stage. Then there’s the onboarding stage, but that’s a topic in itself.

So when you’re learning about the interviewing process, it’s best to understand what’s expected on the industry level, but always learn in-depth how your organization does it.

Filtering Candidate Resumes

This is a topic in itself that I will cover in its own blog post. But this is arguably the worst part as a hiring panel. For most job openings when you’re looking to hire a software engineer, you’ll likely have hundreds or even over a thousand resumes submitted for a single open engineering position. There’s really no automated way to filter out these resumes. Resumes are written uniquely per person, with their own flairs, personality, and content. So you won’t really have access to a systematic way to filter out the good from the bad. So that’s where you need to learn how to find the gems out of the pile of candidates. And you will find out quickly that the vast majority of resumes you’ll receive aren’t worth your time. There are hiring funnel statistics for a reason.

You may also realize that you may have a hiring team, or at least a hiring person, to help you throughout the process, but notably this stage. That’ll be a huge benefit so you personally don’t have to scan hundreds of resumes looking for what you need. But you also may not.

Either way, even if you have support from a hiring team or not, you’ll still end up having to verify some resumes. Key things to look out for are fundamentals like grammar, relevance to the job, relevant experience and background, work history that would be suitable for the role you’re hiring for and in general keywords that either line up with your requirements, or if not, relevant keywords that would give you a compelling reason to think they can learn quickly. Once you have some resumes that are screened for the next step, then comes the initial screening call.

The Initial Screening Call

An initial screening call is usually a really short interview with someone besides yourself. It’s usually with someone from the hiring team, HR, or someone else. The fundamentals here are to establish an understanding that the candidate about basics like availability, salary expectations, interest in the role, and knowledge of your company. The screening call isn’t about finding the perfect candidate. The screening call in the hiring process is about filtering out people that looked good on paper, but clearly won’t make it through the next interviews. Afterall, the next interviews and steps in the hiring process become more and more expensive for the company.

Technical Screening

The technical screening of the hiring process for hiring an engineering is a highly debated topic. It’s likely your company already has a process already set in place, so stick to that. But the root of this stage is for everyone in the hiring panel to come to the agreement that the person is well suited to technically fill the role. That may come from a take-home exercise, leet code during an interview, multi-stage interviews about things like architecture, debugging, etc. or a mixture of all of those. Some companies have a single stage for this, some have multiple. Just know that the more rigorous your technical screening is, and the more time requirements you expect from a candidate, the more candidates will remove themselves from the hiring process. So strive to strike a balance of everyone’s time.

This step is really crucial though, so don’t shortcut it either. You’d be surprised how many people in the interviewing process can talk really well during an interview, are well studied. But when they’re faced with actually coding something that they fail at the most fundamental things. I’ve experienced bad hires where someone had a masters degree in CS, and got through the hiring process, but couldn’t code a basic form, or know how to save something small to a database. That’s why you need a diligent technical screening. It’s no different than other industries like lawyers, chefs, etc. Many high paying jobs have solid screenings to ensure that the person who is hired can actually do the job, and not just speak well about doing the job. Again, hiring is expensive, and a bad hire is dramatically more expensive.

During this process, you should really outline for each role exactly the things you expect the candidate to answer, and a scale of how to measure how well, or poorly, they did. Make a list of critical skills and knowledge, then a list of important ones, then a list of nice-to-haves. Use that list to structure your interviews and screening, and what questions you ask. This should be your baseline to work against, and be your gameplan for the whole technical screening. Don’t just wing it.

Final Interviews and Evaluation

Usually after the technical screening, you’re almost done as a team lead. There’s usually a step where you need to meet as a hiring panel to determine if you want to move forward or pass on a candidate. This can happen right after the technical screening or after the final interviews. This is where your factual-based interviewing process and framework will come into play. Learn over time how to properly gauge and score and rank candidates without bias or relying too much on your gut feeling. And learn how to document, and succinctly convey your recommendation, and be able to back it up either way you recommend it. Engineers are expensive, so if you pass or push to hire someone, you need to be ready to say why clearly.

There are usually some final interviews as well after the technical screening. This can range from a variety of people that a candidate may speak to. Sometimes it’s the CEO, sometimes it’s the CTO, or VP of Engineering, or someone else. This final interview is usually to give the candidate a chance to talk to their boss’ boss, and also give someone with a lot of experience with people a chance to give their final say. There will be times someone will fail this step, so don’t be too surprised if it does happen, even with someone you’re eager to hire. Just know that this step is really important, and remember that they’re talking to someone with a lot more experience than you when it comes to people, big picture, and hiring in general.

Salary and Offer Stage

If a candidate has made it this far, then congrats to everyone involved! But it’s not over yet. And this is usually where your involvement ceases, if it didn’t in the earlier stage. But in general, they’ll be working with someone from HR, hiring, or a VP or higher to negotiate things like salary, benefits, timing and availability for their start date and more. This is the hopeful stage, but remember that even at this stage, a lot of candidates are talking to multiple companies at once. So it’s not uncommon for a candidate to get an offer, but decline it. But if they do, then congrats!

Learning and getting used to the whole interview process takes a lot of work, context, understanding, empathy, and practice. Our work in general is more about people than it is about writing code. So the better you are at understanding people, and the hiring process, the better you and your team will become.

How to Balance Work and Life as an Engineer or Lead

The art of balancing work and life is something each person has to face and find on their own. But there are overall tips and guidance that can help everyone. Keep in mind that everyone has their own beliefs, perspectives, desires, needs, ambitions, situations, and more and all of those play a part in exactly how someone may balance their work life and personal life. So while one person may approach it one way, another person may approach it a different way. The following are general guidelines for any direction you may want to go. And later there will be advice on if you want to lean closer to maintaining a healthy work / life balance leaning to only working during business hours.

Setting Boundaries

One of the most important things in life, and that includes work / life balance, is knowing your boundaries and setting those boundaries. This applies in any relationship, and your situation with your employer is a relationship, it’s just a business one. You absolutely need to talk to your manager and set specific boundaries that you want to keep with your work / life balance. Ensure that it’s clearly communicated, and even written if you need to. That will ensure there’s no ambiguity or possibility that something could be forgotten or lost in translation.

By setting those boundaries, either when you first get hired, or later down the line, you are establishing your needs and communicating your needs and what they are. So when circumstances come up where your boundaries are getting close or may be crossed, you can remind others of those boundaries.


Now that you have boundaries established for what you want and need, you need to stick with them. Another key element to any relationship is consistency. If you want to have a healthy relationship, including a business one, you have to be consistent in how you interact with the other party in it. So if you want something specific, you have to stand up for it. If any time you’re challenged and you let it fall, you’re communicating that your boundary isn’t truly important to you, or you aren’t able to stand up for yourself. A good manager will support you, but you’re ultimately responsible for yourself.

Through consistency, you’ll eventually find that nothing really comes up anymore, and your manager will, over time, fully understand what to expect from you. And that’s a good thing! Like many things in life, consistency is key.

Finding the Right Culture

Ultimately, you have to find yourself in the right culture. If you want a healthy work / life balance, but you work at a young start-up where they value passion, dedication to the job, and the whole company is working 60-80 hours a week, and you only want to work 40, then you’re simply at odds with the culture that you’re in. Even if you establish boundaries, and are consistent for sticking up for them, you may be at odds with everyone else around you, and that may be okay, but it may not be. Not everyone has to fit the mold of the culture, but fundamentally you should align with it.

Sometimes you simply have to level set and come to terms that you’re either in a team and company culture that can support you, or they won’t. And if they won’t, then you’ll have a difficult conversation and road ahead of you. But if you’re in a culture where you expectations fit in well, then you’ll likely have less issues.

Maintaining a Healthier Life Balance

I personally favor a stronger, and healthier, work / life balance where when the business hours end, then I close my laptop and I am done for the day. I don’t have Slack on my phone, or my personal computer, and I allow myself to dedicate my time and attention to my family, hobbies, and interests outside of work. I feel like my family life is a lot stronger, healthier, and happier. I feel like I’m able to enjoy my passions and hobbies with more zest, and more attention. And I feel like I’m a better teammate and team lead as a result. I come back to work invigorated, energized, and happier because I’m allowing myself to balance everything.

It has taken a lot of effort though! I’ve made it clear to my company, and my team, from day one, and even during the interview process, where I stand and what my boundaries are for this. And sure, at times, I need to work an extra thirty minutes, or an hour. Or I get a PagerDuty alert in the evening and I need to address it. But 99% of the time, I work hard during the day, and at close-of-business, I log out, and everyone respects me for it. And that also goes for my team too! Just about everyone on my team also values a healthy work / life balance, and they get it! It helps that I’m in a place of authority, and the company culture values that too, so I can protect my team, and push back where necessary, and everyone is happier as a result.