Every day I look at the resumes of engineers here in the Bay area. Some stand out from the others, and I wanted to share what I think sets people apart.
Keep in mind I am hiring for a venture backed, early stage start-up at all levels. We hire junior and senior engineers as well as engineering management. We are primarily hiring individuals who possess web application development experience using a Ruby on Rails technology stack, but the tips I mention below pertain to all technologies.
Are you flexible?
In the start-up world, things change quickly. You have to be someone who can roll with the ups and down of start-up life. One day you are working on a specific feature, and the next we need to stop development and start on something else. You may inherit other people’s code you don’t agree with. The list is endless. However, the more you can adapt and roll with change, the better off you’ll be in your career, and the more value you’ll add to the company.
Do you have stellar technical skills?
It’s a given that, to be successful as a software engineer, you have to be fully proficient in your chosen technologies. If you aren’t proficient when you start, you will be expected to become proficient. This is something you cannot fake. If you don’t have the skills, people will notice very quickly. My advice to people who need to improve their skills, and are asking a company to take a chance on them, is to be honest. Many people will give you a chance to see how quickly you can acquire those needed skills.
The best developers know their skills are always becoming outdated, but they’re ok with picking up new ones. It’s a fact of life in technology that whatever the latest, greatest, solution we are developing with today won’t be nearly as hot five years from now. Being able to pick up new skills is a key ingredient to being successful in the long term.
Just know that the company you are working for may not be able to change their technology as quickly as you’d like. Respect this fact. Your role in a company isn’t always to be working on the latest and greatest thing. It is to deliver working products that support the company’s business model.
Can you actually solve problems and get things done?
This seems basic, but how many developers do you know that can really do this? Many people have technical skills. Far fewer can use those skills to actually produce working solutions.
Are you someone that produces things that just work, or are there always excuses on why it will not, cannot, or should not work? Not everything can be solved at once, but if you are going to point out a problem then you should have some sort of proposed solution. Qualifying what you know and don’t know about the solution, and being able to communicate properly always helps.
Always have an impact on the product and company you’re working for.
Does your stuff work in production the first time?
Having a working system in production is the ultimate measure of your value as a developer. In the beginning, every developer breaks the system at some point during the development process. It’s expected if you are a junior engineer, but the tolerance for blowing up the system decreases the longer you’ve been in the industry. Always strive to have your code work in production the first time.
Are you increasing your circle of influence?
If you stay in the industry for 10, 15, or 20 years this is the final goal.
Everyone starts out as a junior engineer. In that role, you are trying to master your skills and have some sort of impact on the end product. Your circle of influence is small. As you grow as a technologist you should be increasing your circle of influence. For example, other people will seek you out for advice on a design, for help with a test, some code assistance, or best uses of a technology. Your circle then grows.
Eventually you end up being the “go to” person on your project. This has nothing to do with title and everything to do with being completely competent in what you’re doing as well as being respected by your co-workers. This is a good place to be, but with it comes responsibility. It also starts over when you switch projects or companies. Staying in one place gives you the maximum influence you can have over a single project.
At this point in their career some people start increasing their influence even more by becoming technical leaders or managers. Their goal is to be an influencer of not only a single project, but of a company, open source project, or industry. Getting there requires even more responsibility and being able to communicate very well with non-technical people. The rewards are seeing groups of people do things that individuals simply cannot accomplish on their own.