When searching for a new job, you first need to identify the company or group of companies that you would like to work for. Then you need to develop a strategy for convincing one of these organizations that you are the best available candidate. This requires that you understand the common characteristics of great engineers. Figure out which of these traits you possess and then be prepared to sell yourself on these traits during your interviews.
In the sections below, we will discuss a number of characteristics common to the top engineers within the industry. The more of these traits you possess, the more you will have to speak about during your interviews.
You not only solve the problems that you are tasked with solving; you solve every problem you encounter. You look for problems to solve because you love the challenge. Problems aren't something to be tolerated, but something to be embraced, cherished, and enjoyed. No problem is too small or too large. You don't think of problems as theoretical exercises, you will solve the problem within the real world constraints of budget, time, and resources.
You don't need anything to keep you motivated. You develop and build software because you love what you do. Finding solutions to tough problems is reward enough for you. Innovation, creativity, and resourcefulness are common to you as you navigate environmental constraints to accomplish your objectives.
You can design and architect a complex system or you can code up individual components. You enjoy doing either. You build performance, scalability, reliability, and security into your design and implementation because you realize that non-functional requirements are as important to the customer as features and functionality.
You take pride in what you produce. You are not satisfied with 'It works!'' For you, each line of code is part of your personal brand, and you make sure you represent yourself well. However, you are still humble enough to accept input and suggestions when others evaluate your work.
A big part of what makes you great is your ability to know what you don't know. You know what your weaknesses are, and you try hard to improve them. You encourage and expect constructive criticism from your managers and peers. You learn how to delegate in areas that will never be your strengths. You know your strengths and you leverage them in every way possible.
There isn't a technology existing that you haven't heard of. You are constantly checking out new technologies, and trying to learn how they may be leveraged in your current environment. You code up proof-of-concepts, you read blogs and technology newsletters, and you attend conferences. You have an insatiable appetite and hunger for technologies and tools that can make your job easier or more efficient.
You love to code. You think in code. You write games, you build apps, you contribute to open-source. A day without coding is a day wasted.
Your motto - "I've never found a problem a little code won't solve."
Gone are the days when an engineer could hole up in their cube and only come out for food. Collaboration is essential to be a modern engineer. Your ability to collaborate and get your team working well together is part of what makes you great. You are often sought out by your peers for advice and solutions. You cultivate relationships that will help your team be productive and effective.
Not only can you talk theory with your colleagues, you have a track record and history of accomplishing great things. You don't need to represent yourself in terms of skills (even though you've got a lot of them), you talk about accomplishments. Big accomplishments, game changers, things that have gotten you recognition within your organization. While you are known as a knowledgeable resource, you are recognized even more for your ability to get things done.
Analyze the list of great engineer traits above. Add other items to the list as you think of them. Evaluate yourself against each of these traits. Prepare talking points about each of the traits you possess. Practice talking through them so that you are comfortable articulating during your interviews.
It is not enough to tell your interviewer that you possess these traits. Be prepared to provide specific examples of how you exhibit them. Use these examples as a way of demonstrating how you can provide value to an organization.
Do you feel like your skills as a software developer are not being properly recognized? Understand the importance of marketing and exposure and how it may help you get your next promotion. Explore this topic further in this article
Thanks for reading (this sentance)! This is the section where I ask you to do things that will have no apparent benefit to you (like sharing this article). However, if you thought it was a good article (I was going to say 'great article', but figured that I would probably be setting the bar too high), sharing it will make you look smart amoung your friends. If you thought it was terrible, you could still share it (and ask your friends if they think it's as terrible as you do). In either case, you will continue to impress your friends with your ability to discern a good article from a bad one. And as a side benefit to me, it might increase (if only for the briefest moment), the incredibly meager visitor traffic and rather terrible SEO ranking that is currently possessed by this site.
However, if asking you to share a bad article (or even just an 'OK' one) would cause too much damage to your stellar reputation, you can still help more anonymously. If you found the slightest thread of value in this post, you could read one more article from this site. This would help my bounce rate, which is hovering just under 100% (if you're not familiar with the metric, that's a pretty poor number). Of course, if you found this article totally worthless, I would suggest not coming back. While the quality of the articles may improve as I get more practice, I really doubt if they'll improve enough to change your mind.