How does salesforce evaluate remote programming assignment?

How does salesforce evaluate remote programming assignment?


I have done several of these during my time at Salesforce, so let me take a stab at it

Design: the assignment is general enough for a programmer to be able to think through the design considerations and trade-offs. The assignment is not based on your expertise (distributed systems vs app server development vs mobile vs data science vs ...). Your ability to understand requirements, come up with a design that demonstrates your ability to think about the right abstractions and interfaces, how you compose the various components of your system and the communication between them will be assessed. Think through a few similar problems before the interview if you haven't done a lot of this (how would you design a system to stock the break room, design an elevator, design whatever comes to your mind!). It makes a difference once you try and place your thoughts on paper.

Implementation : 


  • you should write code as if it were to be deployed in production once you submit. This means write neat code
  • document your interfaces (additionally mark them public, private, etc if it makes sense)
  • document your classes and methods (only when needed, you wouldn't want to spell out what a getLastName() does)
  • code re-use

choice of data structures : 
  • did you need to sort, could you have used a heap instead to store top-n elements?
  •  Do you need a Map of lists here for an inverted index?
  • Those are a few high-level things the interviewer would evaluate. Hopefully, you are coming from a place where you had to code a lot. If not, make sure you have practiced enough to be fluent for the assignment.




Tests: this is great if you can get to it. A working solution is the best thing you could do on this particular assignment. Being able to add tests and show you have thought through the cases in which the system might not behave the way it should is a bonus.