Learn from the best.
I held a fruitful discussion a couple of weeks ago with a coding school graduate looking for their first software programming job. They were able to get a few offers from startups (this is San Francisco, after all), and were trying to determine which opportunity allowed for the most amount of learning and personal growth. They wanted to be sure that a senior engineering team was in place to learn from.
To that end, the single most important factor would be the engineering culture. Learning usually requires more than just a willingness to jump onto any given project; the senior team should also look to mentor and coach the newcomers.
The other factor to consider is the company itself, specifically, how its software enables the business strategy. Expertise, after all, is not homogeneous – there are domains that the company has invested its people in1, and those are the areas where mentorship should come easiest. One thought exercise is to mull through which parts of the company benefit from engineering and product excellence, and map that back to the people and systems that must themselves be excellent.
An additional side benefit is that well-known companies can help define careers by association. Fair or otherwise, a company’s strengths are percolated down to its employees, and aligning a role to that perceived excellence amplifies an already strong resume.
That is not to say that companies should be stereotyped into just one area of expertise, or that they don’t also have talent in other, lesser-known domains.↩