If I'm to hire an engineer, I want the person to......
Be passionate about the things he/she builds, or at least care about the projects he/she contributes to.
There is no stronger driving force than passion and self-inspiration. Alright, I do admit that not everyone can love their job; but at the minimum the person should care about the project that he/she is working on. A talented and competent person can only do good work if he/she is WILLING to put his/her mind to it. Naturally, most individuals want to know they make a living doing something that create value, even if it only makes a tiny difference. The sense of accomplishment and self satisfaction will make people be responsible to their work, be innovative and have the willingness to constantly improve.
Plays well with others, plays well with me, has sympathy.
Unless the person is about to work on a solo project, the only way he/she can bring value to the team is to actually BE PART OF THE TEAM. It’s important to work well with machines, but it’s more important to work well with human. He/she has to able to communicate openly and effectively with colleagues. Collaboration is an important theme among software developers; if an individual is talented and possess rich technical knowledge, but cannot create synergy with teammates and generates negative atmosphere in the work space, he/she most likely destroy more value than he/she brings. More importantly, why would I want to hire someone that I can’t even have a conversation with and never gets my joke?
Be honest and humble.
I don’t know about you, but I prefer to work with someone that’s honest, so I don’t have to waste my time trying to figure out whether the person is telling the truth.
Understand the fundamentals of computer science.
This is a wild card. What is considered to be the “fundamentals”? Well, in theory, programming languages are just different ways to manipulate machines and give them commands. So at the minimum, understand how does computer interpret these commands; what kind of logic do the machines use to understand and make sense of these commands and data? For example, he/she should know that regardless what data types and programming languages, everything eventually translate into combinations of “zeros” and “ones”, gets sent to the microprocessor for interpretation. Going up a level, understand what are the differences between the most basic data types? What are these data types? What are the basic operations we can perform on different data types? What are the different ways to enumerate data sets? How do computers communicate with each other? How do computers communicate with human? The list goes on. In summary, this person needs to understand how does computers “think”, understand the full cycle of “networking”, and able to apply these knowledge in different programming languages and technology framwork. Fundamentals are the foundation of technical know-how. If the foundations are built correctly, then there is a way to build upon it and the individual can learn new things.
Has curiousity, has the capability and willingness to learn, and learns FAST.
Alright, if the perosn is curious, cares about the project, wants to learn the trick, has good foundations, knows how to learn and plays well with others, we can probably couch him/her and have a little patience. Since he/she most likely will be a beginner and needs to play catch up, he/she must have the resilience and willingness to push for extra miles. With the right amount of curiosity, the person needs to be asking the right questions and pick up new skills quickly and apply to day-to-day work. I believe curiousity is the key to self-inspired learning; for curious people, having an open mind to learn new skills is a fun experience rather than burdensome responsibility.
Gets the job done no matter what.
At end of the day, what I care the most is that I have someone to help me getting the project built successfully. This requires the individual to care about the project, to have a sense of ownership to his/her part of work. If the job can be done in 3 hours, great! But if deadline is approaching and the thing is still broken, get ready to cancel vacations and stock up red bulls!
Knows how to tell a joke.
Okay, this one is probably just a bonus; but imagine the team working overnight and it’s 11pm, everyone can use a good laugh :)
Now of course, everything above are just my personal opinions.
Questions? Email me at stephensxub@gmail.com