Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Identifying Senior Developers

DZone's Guide to

Identifying Senior Developers

Spending significant time developing doesn't necessarily consitute a senior developer. Check out what senior developers do here.

· Agile Zone ·
Free Resource

The Agile Zone is brought to you in partnership with Techtown Training. Learn how DevOps and SAFe® can be used either separately or in unison as a way to make your organization more efficient, more effective, and more successful in our SAFe® vs DevOps eBook.

Recently I came across the question of “How can we identify senior developers within our interview process?”

This was a very interesting question that required further thought and investigation.

Initial Thoughts

My initial thoughts were:

  •  Try the algorithms and data structures approach as described in Cracking the Coding Interview book. However, as the book itself states, it’s not for everyone or every company or every situation. I personally am not a fan of this approach as I prefer to commit ideas to memory rather than their implementations.
  • Try the take-home coding challenge. I think this is a fair approach because:
    • It delineates the demands of a developer (using their problem-solving skills to create business solutions).
    • It’s challenging translating ideas in your head into quality code.
    • Provides time for a candidate to express their skillset.

Personal Experience

I also reflected on my own experience some years back when I joined a team tasked with building a greenfield project. At that point, I had been a software developer for quite a few years and therefore considered myself to be a senior developer.

However, when I joined the team I discovered that there was a considerable gap between myself and most of the other developers. Effectively, I wasn’t a senior developer but a step below – an average developer.

This lead me to conclude that seniority is not an absolute truth based on time served but rather relative to your surroundings.

Am I suggesting that a senior developer who joins a team that has stronger competencies or experience suddenly drops to the level of an average developer?

No, not at all, because there are certain traits that senior developers exhibit regardless of whether they have the same experience or competencies of their fellow team members.

What constitutes an average developer

 One description would be a developer who solves a problem by getting it to work (regardless of whether they understand it or not) and then moves on to the next task.

What constitutes a senior developer

One description would be a developer who

  • Solves a problem by getting it to work and makes sure they understand how it works
  • Refactors the code until it is to a high standard
  • Adds a sufficient amount of quality assurance (this would be in the form of tests)
  • Adds a sufficient amount of documentation so that others in future will know why the system is the way it is.
  • Ensures that code reviews are carried out to:
    • Share their reasoning about what problem they are solving and how they solved it
    • Encourage constructive feedback to capture mistakes and/or improvements
  • Tries to continually improve so that their knowledge is up-to-date and relevant to the team’s needs.

The Technical Interview

This can take one of two forms:

  • Provide a take-home coding challenge which is then reviewed as part of the technical interview
  • In the absence of a take-home coding challenge, one can try to assess the candidate’s technical abilities by putting forward a business problem and asking them how they would solve it (they can, of course, use the whiteboard freely to visualize their answers). This approach is detailed below.

Business Problem

Build a web application that allows a customer to log in, view, and edit their details.

Questions

  • How would you go about architecting the application?
    • Hints / Further questions to facilitate the topic:
      • How would you prevent undesirable situations like circular dependencies?
      • How would you try to maintain the integrity of the architecture, so that others coming after you do not unintentionally violate it?
  • Which language and framework would you choose to build the application?
    • Hints / Further questions to facilitate the topic:
      • For the UI?
      • For the backend?
  • How would you document the application so that others coming after you can understand why the system is the way it is?
    • Hints / Further questions to facilitate the topic:
      • How much documentation is needed?
      • Where should the documentation reside?
  • How would you try to ensure that the code is written to a high standard?
    • Hints / Further questions to facilitate the topic:
      • Would any programming principles help?
      • Would you use any static analysis tools?
        • How would you execute it so that you would get regular feedback?
      • What about code reviews?
        • In what format would they produce the best results?
  • As this is a public facing application what security concerns would you have? And how would you address them?
    • Hints / Further questions to facilitate the topic:
      • OWASP top ten?
      • How would you address:
        • SQL Injection?
        • CSRF attacks?
        • XSS attacks?
        • Direct object references?
        • Any others?
      • What about DDOS?
        • Would rate limiting help? If so what are its advantages and disadvantages?
  • If session state is needed, how would you manage it if there are multiple instances of the application?
    • Hints / Further questions to facilitate the topic:
      • Would you store the session in a database, on the server or on the client?
        • What are some of the benefits and disadvantages of each approach?
  • How would you go about testing the application?
    • Hints / Further questions to facilitate the topic:
      • What benefits does testing provide?
      • What different types of tests would you write (e.g. unit tests, integration tests, acceptance tests, performance tests, penetration tests etc…)?
        • Are there any specific libraries that you would use?
        • What benefits do each of these types of tests provide?
  • How would you automate the build, test, and deployment of the application?
    • Hints / Further questions to facilitate the topic:
      • Would you use any CI/CD tools?
        • How would a build pipeline potentially look?
      • Any other automation tools that could help with reducing manual effort?
  • How would you monitor and visualize the application?
    • Hints / Further questions to facilitate the topic:
      • Would the Elastic stack (Elasticsearch/Logstash/Kibana) be of value?
      • Would you use Grafana?
        • What sort of metrics would be of value?
  • In what ways do you try to improve your skillset and technical competency?
    • Hints / Further questions to facilitate the topic:
      • What conferences do you attend?
        • How have they helped you improve?
      • What resources do you use (e.g. books, blogs, videos)?
        • Can you name a few and how they have helped you improve?

Adopting a DevOps practice starts with understanding where you are in the implementation journey. Download the DevOps Transformation Roadmap, brought to you in partnership with Techtown Training

Topics:
interview ,senior developer ,technical interview questions ,agile ,dev career

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}