Finding the "perfect" company is difficult. Actually, it is impossible since there is none. But there are definitely companies that match more with your values than others. Finding such companies is not easy. There are almost infinite software companies out there that are different in many ways. They might differ in the technology stack, domain, size, and culture in general. To be honest, there is no right, or wrong, good or bad company, it's more what you are looking for and if its matches your values. In this blog post, I will explain how to find companies that are closer to what you are looking for. You can do that by searching for metadata for a company. One of the things I want to get out of the way is that most companies will lie to you (like candidates do), so it is your job to identify those lies.
📃 Job Specification
This can be a blog post on its own but I will try to give you an overview regarding job specs. When you looking for your next step the job description is the first thing you probably see in a company. A job description is a great resource that you can extract a lot of metadata for this company. There is no specific format for a job description and that is really useful for us since it reveals a lot of information from the first step. One important thing to note before I explain in more detail is that companies that require a university degree in Computer Science for a software engineer role should be a big no and you should continue your job search. In 2022 a huge proportion of the software engineer population are self-taught and educate themselves through online courses. It's the nature of this profession that all the information is on the internet, so having a university degree as a requirement should raise big concerns.
Description and the
Tasks sections say nothing. There are no details about anything, anywhere. You have no idea what you’d be doing. They provide almost zero information about what the job is about other than
building information systems and
designing, building and delivering software which is essentially every software engineer position.
Let's move to the
Requirments section. First of all the job requires a university degree. I already explained this so let's move on. Then they measure experience in years which is a big red flag. Experience is affected by years but this is not the only factor. I know engineers with 15 years of work experience that have much less knowledge than those with 5 years. They also ask for Java EE, which should raise concerns since it's an old technology rarely used unless there is a good reason for it. I am not saying companies that use Java EE are "bad" but they should have a good reason for picking such a framework. Finally, they ask for experience in JIRA which is a project management tool and Confluence which is a document platform. Now either this job spec is written by a non-technical person, which by the way should raise a lot of alerts, or they have no idea how to attract good software engineers. Either way, those requirements, are not even in the
Nice to have section. So if you are fulfilling the rest of the requirements and you used Trello as a project management tool before then you are not for this job, which is ridiculous.
Another thing to pay attention to is the
nice to have section. Typically, those skills are there just to look cool and they don't care. That's not always the case of course but be very sceptical about why those skills might not be in the requirements section. I could go on giving examples of bad job specs but like I said this is a blog post on its own.
Regardless of the example above, there are more things to search for. Job specs that require an enormous amount of skills especially if they are mixed across different roles are also a red flag which indicates their structure is a mess (unless it's a startup).
In conclusion, job specifications contain a lot of information about the company and you should look for those details that can help you filter for better companies that will match what you are looking for.
🔗 Their website
After looking at the job description, the next common step to do is to check their website to gain more information about what they are doing and who they are. Typically you already know in general what their product or service is so I personally jump straight to the
about us or
careers page. These pages contain more data about their culture, their processes, their values and who they are. If a company doesn't explain their values or their culture on their site then it's probably a red flag because probably they are not that proud to reveal it.
Most companies will also have a page where they show their people. Unfortunately most of the time they just show the CEO, CTO, CFO, etc which is not helping us. What you are looking for since you are probably applying for a software engineer role, is the rest of the developers, people you will probably work with. I understand that big organizations might not be able to expose all their people as they might have a huge number of employees but a company that shows their people is always a good sign. These companies are proud of their people and are not afraid to expose them to potential clients. That is extremely helpful for you because you can do your research and have an idea with whom you are we gonna work if you join this company.
🚦 Recruitment process
The interview process is probably the best opportunity you have to get the most insights about the company. There are many recruitment processes that companies follow and there is no silver bullet. However, there are processes that we know work and others that don't.
🤔 Unless the company is hiring for building a skyrocket to launch on Mars (or I guess is a FANK), asking for extremely hard algorithmic problems is complete nonsense. Asking to solve such hard algorithmic problems is always a red flag and probably most of their employees cannot even solve them themselves, so be cautious about that.
🤝 Personally, I believe that pair programming is one of the best ways to interview candidates. Pair programming allows the company to see if you can work with them collaboratively. It also allows you to identify if you want to work with these people. Collaborating with their engineers is extremely valuable to both ends. Pair programming allows you to learn how they communicate, receive and give feedback. It can definitely be a little bit more stressful but trust me, it is worth it.
🗣 There are also verbal technical interviews where you are mostly interviewed by the hiring manager, a senior engineer or the tech lead. This is another opportunity to search for metadata. If for example, you get questions about
How is java heap implemented? then probably is a red flag, unless they are working on a low-level system where you have to know deeply those concepts. Questions like
How is map implemented in Java?,
What are the implementations of Set in Java? are probably a red flag since you can just read the documentation. This shows that the company hasn't invested in understanding what their needs are as a company and what to look for in a candidate so they pick random silly questions from the internet.
📄Home assignments are tricky because they require a lot of your personal time for a project. They regularly say that it will only take 2-3 hours but if you want to ace the interview you will probably need to spend more than that. The thing to search for in these interviews is the feedback they will provide you. If they reject you with some generic or no feedback at all you probably wouldn't want to work with them anyway since they are not respecting your time and effort. If you pass that interview but you never discuss the project then I think this is another red flag. The least a company should give you is a code review of the project, less than that I find it disrespectful.
📢 The feedback cycle is also important. Good companies that communicate well, value transparency and feedback always give you feedback at every stage keeping you in the loop. By doing that, it shows that they are well organized, and they respect and care about their people. Companies that just inform you "pass or no pass" is not a good sign.
🙋 Review company platforms
There are a lot of platforms that contain anonymous reviews from former or current employees about a company. The most common one is Glassdoor. Glassdoor is a great place to get information about the interview process, salaries, benefits and reviews in general. It is a reliable platform but you have to use your judgment regarding the reviews. Sometimes people are the problem and not the company, but if the overall score of the company is low and the majority of the people complain then this is something you want to keep in mind. Checking such platforms have low cost with a lot of value so I would recommend taking a look to get more insights.
💡 Keep in mind
There is no perfect company. But some companies are far from what you are looking for. Don't wait to find a company with zero red flags throughout the process. As you get more experienced in your career you will be better at evaluating companies. Experience is a really important asset for finding companies that match your values since you've been to different teams, domains, and tech stacks and worked with a lot of people. Don't be afraid to take risks!