Tuesday 19 July 2016

Salesforce Platform Developer 2 Programming Assignment Tips

Prerequisites:  

ü  Good understanding on Salesforce Security Model, Object Model, Triggers, Pagination, SOQL, Aggregation, Unit Testing.
ü  Can build solution using Apex & Visualforce

If your answers to above questions are No, Take some time and get some experience on these.

Assignment Tips: 
If you have good exposure to Apex programming, you should be able to complete your basic coding in approximately 20 hours.  Once you are done with coding, you should reserve another 10-15 hours to test your application, review and refine your code and writing unit test coverage.

Design
ü  Check if your solution can incorporate features from recent releases.
ü  Triggers (if any) are modularized, i.e. write the actual logic in some utility class and call that from the trigger. Follow best practice to have just one trigger per object. 
ü  Your triggers (if any) must be able to process bulk data. 
ü  Ensure no recursions in trigger. If there are chances of recursion, you must handle it using static variables.
ü  Exceptions should well have caught and proper message should be displayed to the end user.
ü  If needed, make use of SOQL Aggregate functions, Group By clause etc.
ü  Do not re-invent the wheel, check if Salesforce already provides some api/methods for your logic/computation.
ü  Your code should respect the required security model and no data should be exposed to unauthorized profiles/users.

Coding
ü  You should not be the only person who can understand your code. 
ü  Write proper code comments for each class, trigger and method. Write one liner comment against instance variables stating its purpose. 
ü  Wherever complex logic involved, explain it with code comments so that evaluator can understand it the way you want.
ü  Wherever you have more than one significant design/logic options, mention those. Explain & justify your design approach i.e. which one you are going with and why. Note that you may have 1-2 such instances.
ü  Follow naming conventions. Give proper names to classes, methods and variables.
ü  Consider Indentation to look your code neat and clean.
ü  Remove any dead code, commented out logic etc.

 Testing
ü  Ensure all the functionalists are working as expected, none of the requirement is missed from implementation. 
ü  Consider bulk data testing (if required).
ü  Consider negative testing, create negative test scenarios and ensure no weird results are shown. Test that exceptions scenarios are proper handled and user friendly error message are displayed on the UI.
ü  Ensure you have covered all test scenarios, take some time and think of more test cases, trust me I found one more test scenario in my case which was no where documented in the requirements. But I caught that during testing and immediately added extra piece of code to handle that. Hint: For example if you have some logic on a record deletion, you must consider all the ways in which that record can be deleted and ensure your code handles each of those.
ü  Do not rely on testing done in development Sandbox. Retest everything in the production environment.

Test Class
ü  Many people fail in the programming assignment due to poor Unit Testing. The primary intention of Unit Testing should not be achieving the % of code coverage, rather you should write unit test method to cover all the test scenarios.
ü  Do not write the test cases just for 75% of code coverage, try to achieve 100%.
ü  Create the test data in the test class only. Your test cases should not be depending on org specific data.
ü  Write Test Methods to test bulk data processing.
ü  Write Test Methods to test your automation logic.
ü  Write Test Methods to test Negative scenarios.
ü  Write Test Methods to test all positive scenarios. 
ü  Write test methods to all DML operations your code is handling, for example Insert, Delete, Update etc.
ü  Do not write any test methods for operations not in the scope of assignment. for example, Merge.
ü  Write Test Methods to test data security.
ü  Write assertions for every expected output.
ü  In my assignment, I had 7 Unit test methods and around 70 assertions.

Essay Writing Exam
ü  It's your choice to do it before or after submitting your assignment.
ü  You will have 3-4 questions; each question would be discussing different aspects of your solution.
ü  Each question may further have 2-3 discussion topics and you should manage your time to answer all of these.
ü  If you have done your programming assignment your own, you should be able to answer all of these questions. 
Result
ü  Result would have sent over email 6-8 weeks after the assignment end date.
ü  Result highlights your strong areas and areas of improvements.


Happy Coding !!

1 comment:

  1. Hi,

    I have a doubt. In my assignment, they have given 2 conditions which can be implemented using validation rules. They explicitly mentioned - 'do not modify data model and do this programmatically'... so, should I achieve it using trigger or can I continue configuring validation rule? Also, note that they have pre-configured custom labels for the error messages.

    ReplyDelete