Over my career, I've worked in a large variety of places.
I have been the lone developer at my own company, worked in tiny companies of just a few employees, and on a small team inside a 60 person design agency. I have also experienced companies of hundreds, thousands, and hundreds of thousands.
Each experience was pretty unique, but I'm a bit ashamed to say that I have never been terribly choosy when looking for a job. Unfortunately, this mentality hasn't always led me to the best situations
I've learned over the years, that it's a good idea to come up with a list of what you want in a company and, more importantly, a list of what you won't tolerate — your personal red flags. Avoiding these can save you from an incredibly painful and destructive experience.
Here are a few of my personal red flags. These are based on the jobs I've had over the years that have served as learning experiences.
Since you can't know everything beforehand, I'm going to break the list into pre-hire and post-hire.
Pre-hire (signs that you shouldn't join a new place):
- Nobody has gray hair
- Bad vibe
- Over-reliance on technical quizzing
- No one is a parent
- Too serious
- When they warn you in the interview!
- Pay too high or too low
- Too many full-stack devs/asking too much of 1 person
- Too many offshore devs
Let's dive into each one, and I'll explain why I consider these my red flags.
Pre-hire:
1. Nobody has gray hair
Generally, people in their mid and later career have had a few jobs already. They've likely had good and bad experiences and have learned what matter to them. One place I worked had exclusively new grads as developers. While there's nothing wrong with new grads, but when there is no mix on the team, the culture is out of balance. People with more experience tend to be wiser, more thoughtful and deliberate, and provide some grounding in tough situations.
My new-grad heavy experience was a nightmare. There were no best practices in writing code. No one had a long term vision for maintainability. Planning and testing were afterthoughts if they happened at all. My point is that you understand the value of these after experiencing how things go awry without them. And things going awry is what gives you the grey hair.
2. Bad vibes
I once had a round of interviews for a company and one of the five was a terrible experience. It was a pair-programming tech screen for the frontend developer position I was applying for. For some bewildering reason, the tech screen was in Java. I explained to them that I hadn't done any Java in a very long time. Needless to say, things didn't go well. I'm not sure what one gains from testing the skill of someone in something they don't know anything about. I felt like I was being hazed. The interviewer had zero sympathy for me and kept repeating the same sentences about how to approach the debugging.
I'm not sure what the purpose of this was supposed to be. Rarely are you given code and expected to understand it without help from anyone. It was a terrible experience and should have clued me in to the fact that this was part of how they operate.
3. Over-reliance on technical quizzing
I have interviewed and hired many developers in the past. I don't give technical assessments, projects, or quizzes. I understand how larger organizations might want to use a service to evaluate the technical proficiency of applicants, but it's not for me.
I believe that you can get a genuine understanding of someone's technical experience just by having a good conversation with them.
4. No one is a parent
Ideally, work isn't the number one thing is everyone's life who works there. It's perfectly fine to love your career, but I want to work with people who view their job as just a part of their life, not their "baby." An actual baby is their baby.
5. Too serious
I've always thought the point of life is to be happy. I don't want to have a miserable experience day-to-day, grinding away. And when the culture is too serious, no one is having any fun at any point in their day. Ideally we should be a little light-hearted and take everything with a grain of salt.
6. When they warn you in the interview!
This is a pretty obvious one - but also one I have learned the hard way. I think of an interview like a first date: everyone is giving their best first impression. If the interviewer mentions a tough client or difficult working environment, that's probably a major factor in the day-to-day work. I foolishly thought that I have more patience than others since I really wanted to work at this place, I thought I would be able to handle the "tough client." Well, as it turned out, they weren't kidding about this guy being tough. As a matter of fact, he was such a jerk to us that I ended up leaving after he yelled at me in front end the whole team during a meeting. Shortly after he kicked out the consulting company.
7. Pay too high or too low
As you can probably gather from this list so far, I prefer to work at a company that is straightforward and with people that are reasonable. When they offer to pay you too much, I can't help but wonder what the expectation is for your performance. It the deal is too good to be true, there must be a reason why. I know not everyone has a bad experience at FAANG companies, but it's common to get burned out or put on a PIP.
On the other side, pay that's why too low is another red flag. The company might not value what your role entails and they don't have a culture that values developers. They could treat them as a commodity. I'm not suggesting that we should always be paid a fortune, but software development is a demanding job that requires skill.
8. Too many full-stack devs/asking too much of 1 person
I've always been somewhat skeptical of rely solely on full-stack developers. I know that there's a lot of skills that transfer from different programming languages. Many concepts are rehashed or renamed.
However, just because it's possible doesn't mean it's optimal. Would you have a general contractor build your entire house?
I've always thought it's better to specialize; to be "an inch wide and a mile deep."
The allure of full-stack developers is that they can work "anywhere," but it frequently results in less familiarity with the code their working on. And as a results, less ownership over the code.
9. Too many offshore "resources"
I've expressed my feelings on this in a previous post. I definitely understand the need to manage cost as a large team of developers isn't cheap. And I am certainly not opposed to remote work at all. Modern offices are a place of distraction more than collaboration.
I vividly remember one day my tech lead came up to me and asked if I wanted to hide in a conference room upstairs and write code all day. I didn't truly get it until I became a tech lead. There was no time for anything - certainly no time for focus or deep work in that office environment.
My issue with "offshore resources" is the commoditization mentality and how people who aren't in the United States are sometimes viewed. You can't always just throw more developers at a problem or a project. Sometime you actually need project management and organization.
That's it for my pre-hire red flags. Next up are things to look out for when you got the job.
What's on your red flag list?
Top comments (0)