Identifying a Senior Engineer

Today I participated in the interview process for a candidate senior developer position at OnShift. We are a Python shop, but finding highly experienced developers with Python experience is not necessarily easy in the Cleveland, Ohio area.

It's my opinion that years of experience and education are not the sole indicators. They are merely data points in a much larger picture. I have met many highly educated engineers that can't come up with practical solutions to simple problems. On the other hand, I have met individuals with many years of experience, but only know one way to do everything.

So, what do I look for?

First and foremost, I want to see that this career choice is more than a job to the individual. You can't teach passion. If you don't have it, I don't want you. Without it, how do I know that the individual is going to strive to continually better him/herself. I am not looking at who you are right now, but who I think you can be. Tell me what you do to hone your craft outside of work.

It is my belief that an engineer should fully understand and be able to explain the SOLID acronym, articulate design concepts, understand the impact of technology stack choices, testing, deployment, and security. Here is a summary of the questions I asked, and my thoughts/expectations about the answers.

1. What is SOLID?

  • Single responsibility

    • A class should have only a single responsibility (i.e., only one potential change in the software's specification should be able to affect the specification of the class).
  • Open-closed

    • “Software entities … should be open for extension, but closed for modification.”
  • Liskov substitution

    • “Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.”
  • Interface segregation

    • “Many client-specific interfaces are better than one general-purpose interface.”
  • Dependency inversion

    • One should “Depend upon abstractions. Do not depend upon concretions.”

2. Walk me through the steps you would take to design a small commerce site for a client.

The idea of this question was to determine how the candidate would approach feature development. Does he/she rely entirely on intuition or leverage the experience of others? How is work divided and delegated? Would the developer only deploy a full-featured site or a minimum viable product (MVP)?

3. What technology stack choices would you choose?

This question is intended to identify a candidate's strengths. A candidate will tend to talk about what he/she has the most experience with. Such as, specifics on database, infrastructure, language choice, application architecture, security and access, etc.

4. How would you integrate, build, and deploy this application? How would you ensure the quality of your application?

This is a continuous integration and/or development question. This is a hot industry topic. I am curious to see if the candidate would suggest rolling his/her own solution, leveraging Jenkins (or some other equivalent build server), or leveraging a third-party service, such as CodeShip.

5. Your client asks you to create a customer login portal for the site. How do you store and validate passwords? How do you store sensitive customer data?

I asked this question to make sure the candidate understands the difference between hashing and encrypting. Ideally, the candidate should suggest using a unique per user salt and an adaptive hash algorithm (bcrypt/pbkdf2). For sensitive data, identifying what is considered sensitive for the domain is necessary, and when necessary, using a symmetric encryption algorithm such as AES.

6. How would you propose a new technology choice?

Being a senior engineer primarily involves assuming the role of a thought leader. I want to know a technology the candidate is passionate about and how they would pitch it to me. What is the cost/benefit analysis? How can we sell this as necessary to the product?


Get In Touch

We'd love to hear from you! Whether you have a question about our services, need a consultation, or just want to connect, our team is here to help. Reach out to us through the form, or contact us directly via social media.


Previous
Previous

RESTful JSON Web Service - Jersey (v1.19)

Next
Next

Emails - Feature Toggles