When searching for a new job, it is good to know which companies should be avoided. It is even more important to have a set of criteria that will help you identify great companies. Some of the signs may vary based on your specific requirements, but the following are some generalizations that are helpful when trying to determine the level of engineering maturity within an organization.
You should expect challenges during the interview process. You should also expect to be asked to code up a solution to some problem. A company that hires engineers without evaluating their coding skills is automatically suspect. You should be looking for companies that ask you to solve difficult problems during the interview process.
Be aware of the difference between hard problems and hard knowledge. Being asked about an obscure nuance of a particular language is not a hard problem, it is hard trivia. It is more important to be able to solve hard problems than it is to know answers to programming trivia. Generally, the more complete the evaluation during the interview process, the better you should feel about potentially accepting an offer.
There is nothing quite as inefficient as repeatedly doing manual tasks that could easily be automated. When seeking job opportunities, you should seek organizations that have automated every possible aspect of development, because that means you will be spending less time doing boring and repetitive tasks that don't help you grow and learn. Instead, you will be solving challenging problems that will enhance your skills and expertise.
Having industry experts and thought leaders in an organization is a great way to attract elite talent. These people can usually work at whatever organization they choose. By virtue of accepting employment at a particular company, they are providing that company with a tacit endorsement as a great workplace. Why wouldn't you want to get hired at a place where you can learn from the best in the industry?
If a company does not have a clear testing strategy, it often indicates a lack of customer understanding or a lack of engineering maturity. A lack of customer understanding probably indicates lack of market share. A lack of market share probably indicates lack of funds. You don't want to work at company that doesn't understand its customer needs.
Additionally, companies without clear testing strategies are going to spend more time reactively fixing issues instead of proactively adding value with new customer features. You will find this type of environment mentally draining and demotivating over time.
As an engineer, you want to keep your skills up-to-date. That may mean attending a conference, using a new tool that helps you be productive, or taking an engineering course of some type. When you identify areas to improve your skills in a way that will benefit your company, you should expect your company to willingly invest in your growth and education.
Companies that don't realize the benefits of investing in employee development don't achieve that same level of success as companies that do. As such, you should restrict your job search efforts to organizations that are willing to invest time and money into your growth and development.
When you are trying to get work done, you want to use the best tools available. Working at an optimal efficiency sometimes means investing money in engineering tools. If you are continually wasting time by using inefficient tools, opportunity cost is incurred by both you and your organization. You will not learn as much because you will be spending unnecessary time completing manual tasks. To be fully productive, you should spend almost no time on tasks that could be automated in some way.
Life is always better with a growing customer base. There is a positive vibe, and employees feel a sense of security. Teams are energized and feel valued because they can see that their efforts are paying dividends. You will find that there is more money available for investment in employee growth or employee salaries. You will also find that there are more opportunities to take on additional responsibilities and enhance your skills as the company scales up to meet its growing customer demands.
Keep in mind the characteristics of great companies when looking for your next position. Use the ideas discussed above to help you create your own checklist of 'Great Company Characteristics'. Add additional categories that you feel are appropriate indicators. Rank each company on a scale of one to ten in each of the areas on your list. This checklist will help you make relative comparisons when analyzing multiple companies.
Are you a software manager who is wondering how to identify elite software engineers? Are you a software developer who is wondering what it takes to be one of the best developers possible? Explore this article for more information on this topic.