Hey all

In this article, I want to tell my thoughts about what is wrong in typical salesforce developer interview and how to make it better. Every single piece of text below is only showing my opinion on what is good and bad in interviews questions (common ones) and answers.

At first, I will start with my thoughts about developers community overall state. It might be specific only to Ukrainian/CIS community, but as far as I know, a situation is near the same as worldwide. Community state in one word? Poor. For instance, lots of senior salesforce developer cannot apply the middle/junior level of overall backend/fullstack development, lots of really senior salesforce developers not digging deeper into salesforce platform – and, as the result, senior salesforce developer interview is something about pretty Common is salesforce, and some Common Uncommon situations, which developer facing during the development process. That differs salesforce community from other development communities – e.g. java, c#, javascript…​ Just imagine largest java event with only 5% of developers attending along with only 5% of speeches is about development. Yes, I can understand, that this in a result of the Salesforce marketing campaign (1-800-NOSOFTWARE, etc), but it’s clear that in last 3 years company is trying to improve community (trailhead, trailheaDX, new development tools). Let’s hope that this won’t be just marketing for their development products like debugger, but also will positively affect our community.

That is why finding a good developer (not a salesforce certified advanced certification master or senior shitcode developer) is a big issue. I’ll summarize bad questions below - with some of the original replacement to them below. I hope that by improving the interviews we can somehow improve the quality of the Salesforce community and maybe cool down the market of Salesforce developers (which is, obviously, overheated)

Data Model

Data Model

Most of this questions are universal for developer of any level and admins/consultant, and most of them are good itself, but interviewer sometimes do not want to dig deeper into interviewee’s mind, while most of the interviewees are not curious enough to even think about some deep salesforce concepts and trying to figure how everything Is build deep down inside. I am going to call that kind of developers the as “I’m got paid enough to think about something”-syndrome developers.

Let’s start with questions:

Typical questions: What kind of relationships do you know in salesforce? What kind of relationship fields do you know? What is junction object? What the limitations of master-detail relationship? Can you mock master-detail cascade deletion on lookups? What do you know about roll-up summary fields?
Typical answers: Ctrl+C + Ctrl+V from memory/help.salesforce.com.
Why am I standing for another type of questions? All of them covered by certifications, and most of developers/admins got one or more Salesforce certifications. You kill time, e.g. it will be very strange if senior salesforce developer/consultant will not answer one of them, and even if he or she does not know, how many lookup fields you can have on one object or some other info – will it be critical?

My pick of questions to data model with reasons why:

  1. Q: I want to have roll-up summary field behavior in lookup relation. How can I implement this?
    By asking this you will understand, does your interviewee ever write some reusable code (triggers to implement this feature) by himself or maybe he/she used some packages (financial force have custom roll-up summaries as far as I remember). This is a key question to see if the developer is experienced with triggers/apex.

  2. Q: When you delete master object – will it hit child trigger/workflow?
    Most of the developers experienced with triggers and remembering the situations when you think it will work – but it does not work the way most of us expect.

  3. Q: Given the real organization (e.g. school) with defined entities customer what to store (e.g. for school: class, pupil, teacher, pupils mark, etc). Ask the interviewee to build a data model with (using both standard and custom objects).
    By the provided answer, you can tell if the person you interviewed is:
    a) Understanding when to use standard objects and when not
    b) Experienced to build flexible to enchantment but locked from changes data model structure

  4. Q: Tell the difference between Custom Metadata and List Custom Settings.
    Maybe this questions is not 100% in data model – but sometimes list custom settings are used to store some configuration details, and this question is asked only to check if the person you are interviewing is really into salesforce and new approaches

  5. Q: How Product relates to Opportunity Product? What is Pricebook and what problems you might have there? What examples of many-to-many relations can you name in standard object model?
    This type of questions (you can ask anything about data model, e.g. person accounts and how they stored, maybe something from service cloud) but I’m pretty sure that every developer with 1-1.5+ years of experience can tell that things, because some of the weird thing (e.g. Product object having Product2 API name) are easy to remember. Most of the developers can think, that all of this is easy to google and you don’t need to store this – and they’ll be right, but for me – that type of knowledge is a quality mark for the developer.

General Apex Coding

Apex

This type of questions are for developers only and even when developer interviewing another developer – sometimes some significant questions about development missed, but some typical questions asked instead.

TQ: What is the difference between controller and extension? What percentage of coverage should be in code to be able to deploy in (and what you’re trying to obtain)
TA: Well I’ve passed certifications and can simply repeat answers.

My pick

  1. Q. What’s the difference between synchronous and asynchronous apex in terms of limits, execution and use cases? What the types of asynchronous apex in Salesforce?
    Well, I can say that this type of question is pretty common and is also covered by certifications - but the purpose of this question is not about the standard things - where you can invoke future and where not - but about the use cases for future methods, batch jobs, scheduled jobs and queueable.

  2. Q. Dynamical things available for apex: Queries, Dynamical Method Invocation, etc.
    This question is very important and can be asked in case the interviewee claims he or she did some packages development. With the answer on this question, we can also determine, how complex and agile were the solutions that were built by this person - because I’ve met peoples with 3+ years of Salesforce development - and they didn’t know that you can invoke class methods by only knowing the name of this class.

  3. Q. Abstract keyword, Virtual keyword, Interface keyword. Define, use cases.
    Yet again - this type of question is asked to get the answer about use cases - it’s pretty common to met the Salesforce Developer (with Senior level and experience) who don’t use classes separation, and most of OOP staff available for Apex. I know, and I mostly agree, that Apex one of the most dreaded languages and it’s kinda limited with all the OOP stuff - but I didn’t agree to write shitcode without the ability to reuse it, and making the code too hard to understand and extend.

  4. Q. Collections in Apex. How they are actually working. What’s required for a class to implement to be able to use the class instance as a Key in Key-Value pair collection?
    I remember the day when I was a junior java developer - and I remember the questions asked to a junior java developer - and collections in java much more complicated than in Salesforce - but lots of developers are not thinking how it’s implemented in a background (e.g. Map and Set are using HashSet and some HashMap implementation instead of TreeSet and TreeMap). By asking this I’m trying to understand, is the person I did interviewing actually knows algorithms and data structures at some pretty basic level - or the person is a Point-and-Click developer.

  5. Q. SOQL: Ask the developer to write a very uncommon query with aggregations, grouping. Usually, Salesforce-Only developers struggle with this - and this is expected, as most of the developers not utilizing the full power of SOQL.

General Development & Development Process

Apex

Typical questions: Only thing, I’ve been asked during my interviews is about development process and tools in use. But that’s wrong (IMHO) as salesforce developer is developer at first, and he should know basics that most of the developers (almost 90% if we’re talking about backend developers).

My Pick

  1. Q. (That’s the question I’m asking during EVERY interview). What development principles you’re using in your everyday development experience?. I’m expecting the person to say at least something about OOP principles, general programming principles (exclude goto, self-repeat, modules, pipes, layers), Design Patterns, Enterprise patters - everything, which helps the conversation to get started

  2. Q. What is SOLID? DRY/YAGNI? Basic OOP Principles: Encapsulation, Polymorphism, Inheritance.
    So I personally think that those questions are the best for determining if the person you’re interviewing is actually a Developer. There are only a few interviews which I had where the following topics were fully covered - in general, it’s hard to guess by hearing the questions at the interview - for what position they are standing for.

  3. Q. Do you use VC and CI systems like Git and Jenkins? Why (Both for positive and negative answer)? Basic Git questions (in case person have some experience with it): Merge vs Rebase, Interactive Rebase, Cherry Pick, HEAD and moving through the branches.
    Those questions being asked to understand if the interviewee understands the concepts of modern development, because if he does not understand, or do not use VC or CI with some arguments (e.g. "I’m working on small projects only", "Why we need CI when we have a Changesets").

  4. Q. What Design Patterns to you know?
    And yes, it’s not enough to answer this question by simply naming the patterns - better to have the name, concept and use case.

  5. Q. Algorithms and Data Structures. Name the Data Structures (collection name and corresponding data structure) in Apex.
    I think you might wonder why I do include this in a developer interview for a Salesforce developer. Well, just because I think there should be no difference between regular backend/full stack developer and salesforce developer.

  6. Q. Coding assignment on some common programming task: Rotate Array, Merge Two Sorted Lists, Binary Tree Traversal…​

Frontend

Apex

Typical questions: Visualforce related: What is view state, how to use static resources, questions about tags and forms (actionSupport, actionRegion, etc).
Typical answers: Ctrl+C + Ctrl+V from standard documentation. Everybody expects the question about 135k view state on the interview and knows the answer - so, what’s the point of keeping those questions in the interview?

My Pick

  1. Q. Define HTML5 features, which you’re using in your code? Is there any standard for Visualforce markup? A difference between div/span, block versus inline?

  2. Q. Are you using any standard for you lightning code? What’s ES6, promises? How javascript uses inheritance?

  3. Q. Aura framework questions: How to extend component? Events vs aura:method? Initialization order of the component structure?

  4. Q. Define possible problems when migrating existing VF page to Lightning Components? When it’s better to utilize <apex:slds/> - and when - to rewrite from scratch? Any concerns about 3rd party JS frameworks/libraries?

  5. Q. Given a website (e.g. google.com). Define, what will be the component structure if the requirements will be to copy this page with every element wrapped with a custom lightning component. Communication between components? // Can be the same question for visualforce/visualforce components.

Final words

Apex

What will make your next interview better?

If you’re an interviewer - then find some time to prepare to the interview - read through your interviewee’s CV, find both weak and strong spots in there - try to personalize the interview experience as much as possible. Don’t use textbook questions - that’s not the way how you’ll define if the person if matching the position. Try to understand - at the moment of the interview - you’re representing the whole company, so try to be friendly, try to be public with your thought as much as possible. And, of course, try to use those questions I’ve mentioned in this article :)

If you’re an interviewee - one very simple rule: If you don’t know the answer - don’t waste your (and interviewer’s) time. Be a learner, not an "I know everything I just need some time to remember"-guy.