This is a list of things that I look out for when joining companies that I don’t know much about. You may not agree with everything listed here. I welcome your feedback and counter arguments.
What to avoid
1. Avoid companies that are obsessed with a specific technology stack (unless you are as well)
Let’s face it, technology stacks are a means to an end. Focusing on the technology instead of the solution is a recipe for disaster. Specific technology stacks are not guarantees for success and therefore should not be obsessed over.
2. Avoid companies with excessive technical debt
This must be balanced with what is mentioned above. If the company allows their employees total freedom in adding to the technical stack, you should steer clear. A company’s Bus Factor is very important. No one wants to spend a weekend learning some arcane system, because the person that maintained it has left the company and a new critical bug was just discovered.
3. Avoid companies where the people who are conducting the interview look overworked
If the employees look overworked, if you join you will be overworked as well.
4. Avoid companies that will not be able to tell you what your initial workload will look like
When you join a company, the company should have a somewhat accurate estimate of what your initial workload should look like (at least for the first 3-6 months). Avoid places that don’t.
5. Avoid companies that seriously affect your quality of life
Your quality of life is important, and you should be assertive in ensuring that your new job won’t have a detrimental effect on it. I can guarantee that a company doesn’t care how many all nighters you pull to get the job done. All they care about is how to effectively make use of their human capital and will squeeze you for all your worth. Your job requires your full mental capacity, which requires that you maintain a certain quality of life.
6. If you are offered a higher salary in exchange for less equity, take the higher salary.
Equity rarely amounts to anything significant. Many times it is used to pacify overworked employees. Take the extra cash today. This only applies if you cannot sell the equity on an exchange.
7. Avoid companies that do not have an official ramp-up process
Every employee, no matter how senior, must learn how things work at every company they join. Your initial days will require a lot of “hand holding” and help. This is normal. Avoid places that throw you into the lion’s den with a dull knife.
8. Avoid companies that have even one brogrammer
Remember, even one bad employee can ruin the environment for everyone.
9. Avoid companies with immature and childish employees
You want to work in a place where people are respectful and mature. Otherwise, office drama will play a serious part of your work day.
10. Avoid companies with conceited people
No one wants to be around conceited people, let alone work with them.
11. Avoid companies that shun diversity
You want to work at places that embrace diversity. Remember, everyone will feel welcome in a place that embraces diversity.
12. Avoid places that don’t respect you or your property
This can be interpreted in many ways and I will leave this up to the reader’s intuition. However, I will provide one example. If your company expects you to use your cellphone as a part of your job, they should at least pay some if not your entire cellphone bill (in addition to your current salary) or provide you with a company cellphone.
13. Avoid companies that lack a systematic processes
Processes and policies allow companies to scale. A lack of some form of standardization will lead to all sorts of technical and logistical debt.
14. Avoid companies with no office culture
Every company, big and small should have some form of office culture. You want to work in a friendly environment and be on good terms with your co-workers. Many of these relationships can be fostered at company events. A company that lacks culture, lacks harmony.
15. Avoid companies that have unwelcome surprises during the interview
If you experience an unwelcome surprise during the interview, imagine how many “surprises” you will experience during your employment.
16. Avoid companies that ask useless interview questions
If you are asked questions that are not relevant to the job you are interviewing for, decline to answer them. Here is an example of a useless interview question.
- How many traffic lights are there in New York City?
17. Avoid companies that ask you to contribute to their code base during the interview process
You are being interviewed and have not been hired. You should not be working on the company’s code base during your interview.
18. Avoid companies that ask you to take a large amount of time off of work to interview without compensating you
A company should respect the time that the interview candidates takes to come in to interview. If they ask you to take a day or two off to interview, it should compensate you monetarily.
19. Avoid companies that do not have a code of ethics
A code of ethics is very important and every company should possess one. Avoid places that don’t.
20. Avoid companies with an unlimited paid vacation policy
This is a nice way of saying “The company vacation policy is subject to our discretion on a case by case basis”. Knowing how much paid vacation you are entitled to allows you to plan your vacation and not have to worry if you’re asking for too much.
21. Avoid companies with questionable business practices
If the company you are interviewing by may be breaking the law or doing something you deem unethical, walk away.
22. Avoid companies with individual ownership requirements
All new and current systems should be owned by the engineering team. You don’t want to be the only one on call for everything you build. It leads to a culture where people are afraid to innovate in fear of losing their nights and weekends.
23. Avoid companies that force you to use your personal social media accounts for company advertisements
It is fine for a company to ask you to post company announcements or job listings on your social media accounts. It is not OK for them to force you.
24. Avoid companies with a high turn over rate
If a company cannot retain employees, there is a good reason for it.
25. Avoid companies that are not a meritocracy
If a company doesn’t show appreciation for the hard work their employees put in, it doesn’t deserve the employees working for them and you shouldn’t join. And no, mugs and tee-shirts aren’t considered merit based monetary raises and bonuses!
Questions to ask during your interview
26. Obtain very specific information about the company’s employee benefits package
Many companies offer benefit packages. Make sure you get a very clear picture of what is included, in particular: health, dental and vision benefits. A better benefits package can sometimes trump a higher salary. Here is an incomplete list of questions you should ask about a company’s benefit package:
- Which insurance company provides the medical, dental, vision plans?
- What are the plan names?
- Can you please send me a copy of the medical, dental, and vision plans?
- Can you please send me a complete list of all of the benefits provided?
- How long after joining the company do the medical, dental, and vision begin?
- Are there any limits or caveats that I should know about?
27. Obtain very specific information about the companies tech stack
Reverse interview the employees about the work they do and the technology they use. Feel free to ask them about every detail, no matter how insignificant it may seem. This will show you at least 3 things:
- How well the current employees understand the stack that they are using.
- The technical debt that you will be dealing with (should you decide to join).
- If they make sane technical decisions.
28. Ask the employees to tell you something they don’t like about their current job
This is very important. Familiarity breeds contempt, and how employees answer this question will tell you a lot about the company.
29. Look at GlassDoor.com before you go in for an interview
GlassDoor.com can give you some insight into company internals; make use of it.
30. Reach out to former employees and ask them about their experience
Be polite and don’t be pushy. Let them know you are considering joining company XYZ and you would like to hear about their experiences at XYZ company. Their insight can provide invaluable information on whether or not you should join XYZ company.
31. Identify a list of reasons you would like to join the company and validate those reasons
Say you want to join XYZ Inc because they use Python. During the interview ask how and when they use Python. Ensure that the company’s use of Python is what you are looking for. Knowing what you are getting into is very important.
32. If the company has public code on GitHub, look it over
Every company has their own engineering process. When a company publishes code, they are usually proud of it. This is one of the best ways to gauge the engineering process within a company.
33. Find something technical to criticize and politely mention it during the interview
Dealing with criticism is an important part of every job, especially technical jobs. Being mature when accepting both valid and invalid criticism is very important.
Additionally, you should gauge the response. If you don’t like the response or the way that they deal with the critique, walk away.
34. If you interview with the CEO of the company, question as if you were looking to invest in the company
When you work for a company, you’re throwing your lot with the company’s lot. Make sure the company is making sound business decisions. Here is an incomplete list of questions you should ask the company’s CEO.
- What do you feel are the biggest challenges the business will face within the next 6 months?
- What is your plan to overcome those challenges?
- What were the biggest challenges that the business overcame in the past 6 months?
- How do you measure success?
- How does the company measure success?
- What systems/mechanisms are in place to help ensure that (a) everyone in the company knows how the company is doing, and (b) someone with questions or concerns can raise them and receive a reasoned and thorough response?
35. Speak with the employees of the company at meetups
You may learn things that are not mentioned during the interview and/or you may meet an employee whom you did not interview with. This can also help you gain insight into other parts of the company.
36. Try to understand the company’s recent history
If the company just underwent some big changes, find out what was changed, why it was changed, how it was changed, and what the desired effect was on the company or team’s process/performance.
37. Obtain a Clear List of Expectations for the Job for which you are Interviewing
Gauge whether you feel that expectations are excessive. It will also help you negotiate a higher salary should they be excessive.