Justin Clarke, Salesforce Developer in Toronto, ON, Canada
Justin Clarke

Salesforce Developer in Toronto, ON, Canada

Member since February 15, 2021
Justin is a Salesforce developer, architect, and consultant with 14 years of experience translating business requirements into technical solutions and exception handling, logging, and reporting. His specialties include business process automation through Apex triggers and flows, async processing through Queueable, Batch Apex, and Future, Lightning web components, and API integrations. Justin designs with the end-user experience in mind and excels at creating and implementing best practices
Justin is now available for hire

Portfolio

  • The Strategic Coach
    Visual Studio Code, Salesforce, Salesforce Apex, Apex, Batch Apex...
  • Virtual Causeway
    Salesforce, Salesforce Apex, PHP 5, MySQL, HTML, CSS, JavaScript, Apex, SOQL...

Experience

Location

Toronto, ON, Canada

Availability

Part-time

Preferred Environment

Mac OS, Visual Studio Code, GitHub

The most amazing...

...thing I've developed is a queueing system for running dozens of different async processes, logging errors, and with automatic retry support.

Employment

  • Lead Salesforce Developer

    2015 - PRESENT
    The Strategic Coach
    • Managed a team of six developers, administrators, and analysts by providing coaching, training, best practice knowledge shares, code reviews, and project management.
    • Developed solutions for several challenging problems using Apex; Batch Apex, Queueable, and Future; and Lightning web components.
    • Created code snippets and best practices for the most common code patterns in Lightning web components to increase coding efficiency, minimize errors, and include proper error handling procedures.
    • Built a standardized trigger handler pattern and helper class to control the execution of business logic and a code pattern to execute the business logic when necessary to minimize governor limit usage.
    • Rearchitected the trigger code across dozens of objects to follow best practices, maximize performance, and log exceptions with 100% unit test coverage. Created best practices and snippets for the team to follow.
    • Upgraded heavily customized organization from Salesforce Classic to Lightning, built several custom Lightning web components, customized page layouts, created custom actions, and planned user training, rollout, and support.
    • Implemented a customized sales cadence for the sales team that indicates the next best action, predicts when to reach out next, and tracks whether they are behind schedule.
    Technologies: Visual Studio Code, Salesforce, Salesforce Apex, Apex, Batch Apex, Queueable Apex, Salesforce Lightning, Lightning Components, Aura, Flow, Process Builder, HTML, CSS, JavaScript, Lightning Design System, Salesforce SOQL/SOSL, Test-driven Development (TDD), SOQL, Agile, Agile Project Management, Apex Triggers, Salesforce API, CSS3, HTML5, Front-end, Front-end Design, Front-end Development
  • Manager, Global Research and Data Systems

    2003 - 2014
    Virtual Causeway
    • Led the market research and technology consulting departments, generating over $1 million in revenue per year.
    • Managed a team of three employees covering Salesforce.com admin, development, market research programming, and project management.
    • Automated dozens of business processes to significantly increase user productivity using Apex triggers, workflow rules, and process builder.
    • Implemented Salesforce.com and marketing automation solutions both internally and for external clients.
    • Architected and managed an internal data warehouse with over 2 million contacts.
    • Implemented and managed data integrations between Salesforce.com and InsideSales.com, Campaign Monitor, Constant Contact, Data.com, and other Salesforce.com instances.
    • Developed an internal intranet application for project management and time tracking using PHP and MySQL.
    Technologies: Salesforce, Salesforce Apex, PHP 5, MySQL, HTML, CSS, JavaScript, Apex, SOQL, Salesforce SOQL/SOSL, Apex Triggers, Test-driven Development (TDD), Salesforce API, CSS3, HTML5

Experience

  • Queueing System for Async Processes

    A custom object and custom metadata-driven queueing system for managing the execution of Apex-based asynchronous processes (Queueable, Batch Apex, Future).

    Features:
    • Every async process is logged in a custom object and any exceptions are captured
    • Exception messages are checked for certain keywords that indicate a *temporary* error has occurred (record locking, API timeout, and so on) and are automatically retried with an increasing delay between each retry
    • The system automatically chooses which async process is most appropriate based on the number of jobs to process: Batch Apex when there are many jobs, self-chaining Queueables for fewer jobs, Future for web callouts, and for jobs that are safe to run in parallel
    • Each user has their own "queue" and jobs are executed "in order," to maintain the proper order of operations
    • Custom metadata is used to control the settings that govern the behavior of the queuing system
    • Jobs can be "bulkified" where multiple jobs of the same type can be run together in a bulk-safe manner to speed up processing and minimize governor limits

  • Metadata-driven Custom Rollups for Any Field

    A metadata-driven custom solution for performing child-to-parent rollup summaries on any field using Master-Detail, Lookup, or custom relationships.

    Features:
    • The relationship between child and parent can be a Master-Detail, Lookup, or any custom field
    • The rollup rules are stored in custom metadata
    • Rollups are processed asynchronously using Queueable or Batch Apex
    • Exceptions/errors such as UNABLE_TO_LOCK_ROW are automatically retried
    • Rollups can be batched into smaller batch sizes to minimize governor limit exceptions
    • Rollups use aggregation queries when possible or query-driven calculations when not possible (such as when aggregating formula fields)
    • Rollups only recalculate when fields that are part of the calculation are changed to minimize recalculations

  • Lightning Interaction Log

    I created an "interaction log" for Lightning to customize and speed up activity logging.

    Features:
    • Type-ahead suggestions for the subject based on a list of suggestions that are profile-specific and controlled by custom metadata
    • A dropdown of type values that are profile-specific and controlled by custom metadata
    • Custom permission is assigned via a permission set that grants the ability to assign activities to other owners
    • After logging an activity, the user is presented with a list of "Next Actions" that might want to take, including 1) Log a future open activity, 2) Set a "Call Me Back" date, 3) Send an email, 4) Reassign lead to a queue/other users
    • Uses the "Unsaved Changes" component to prompt the user to finish logging their call if they attempt to close the tab without saving
    • Set appropriate default field values to speed up data entry

  • Zoom API Integration

    I created a Lightning web component that schedules Zoom meetings and logs activities when the meeting is completed successfully.

    Features:
    • LWC for creating a scheduled Zoom meeting with the running user's Zoom account
    • Associates the meeting with a lead/contact
    • Monitors completed Zoom meetings to log an activity associated with the lead/contact along with the duration of the meeting, for inclusion in daily "talk time" reports

  • Pardot API Integration

    I created a Pardot API integration library in Apex for performing API callouts to Pardot from Salesforce for business processes that were not supported by the Pardot Sync Connector.

    Features:
    • Performs opt-ins based on data input from a flow in Salesforce
    • Updates lead/contact records with list-based membership information
    • Nulls values in Pardot when nulled in Salesforce

    Special notes:
    • Authenticates to Pardot using OAuth/SSO
    • Refreshes access token when expired
    • Settings are stored in custom metadata

  • Custom Round-robin Lead/contact Assignment

    Custom logic that executes a round-robin lead/contact assignment when particular business rules are met.

    Special Requirements:
    • Users who are "full" (have the maximum number of leads allowed already) are excluded
    • Sales managers and administrators need to be able to manage the addition, pausing, and removal of users from round robins through clicks, not code

    Implementation:
    • Custom Apex trigger code was written to implement the complex business logic that triggers the assignment
    • Custom Apex code was written to identify which round-robin group applies (based on team and region), find the next user in the round-robin, validate they are not "full," assign the record to the new owner, and log an activity for auditing purposes
    • Custom objects were created to store the list of assignment groups and manage the users that belong to each group, as well as store the user's current and maximum number of leads/contacts
    • Custom Apex trigger code was written to recalculate a user's current number of leads/contacts whenever an ownership transfer occurs. This recalculation is done asynchronously so as to not slow down the ownership transfer transaction and to manage governor limits

  • Prefiltered Related Lists Using Enhanced Lightning Grid

    Lightning Records Pages were customized using Enhanced Lightning Grid to separate activity data into separated related lists with filters pre-applied to the data, and shown in separate labeled tabs.

    Tabs:
    • Activity Highlights: only the most important activities are visible (based on type)
    • Activity History: all activities
    • My Activities: the running user's activities
    • Open Activities: upcoming activities
    • Marketing Activities: email opens and clicks from Pardot marketing emails

    Special notes:
    • Improvements were made to the standard apex code that comes with Enhanced Lightning Grid to make it easier to deploy new ELGs
    • Reusable static methods were created to build the SOQL queries that support the user-provided sorting and filtering

Skills

  • Languages

    HTML, Apex, SOQL, HTML5, PHP 5, CSS, JavaScript, CSS3
  • Frameworks

    Lightning Components
  • Libraries/APIs

    Salesforce API
  • Tools

    Batch Apex, Flow, Process Builder, Salesforce Sales Cloud, Lightning Design System, GitHub, Pardot, Zoom
  • Paradigms

    Test-driven Development (TDD), Agile, Agile Project Management
  • Platforms

    Salesforce, Salesforce SOQL/SOSL, Mac OS, Visual Studio Code
  • Other

    Salesforce Apex, Queueable Apex, Salesforce Lightning, Salesforce Platform Developer I Certification, Salesforce Certified Platform App Builder, Salesforce Certified Platform Developer II, Certified Salesforce Administrator, Salesforce Certified Pardot Specialist, Apex Triggers, Front-end, Front-end Design, Computer Science, Sales, Aura, API Integration, Front-end Development
  • Industry Expertise

    Marketing
  • Storage

    MySQL

Education

  • Bachelor's Degree in Business Administration
    2001 - 2005
    Wilfrid Laurier University - Waterloo, ON, Canada

Certifications

  • Salesforce Certified Pardot Specialist
    FEBRUARY 2019 - PRESENT
    Salesforce.com
  • Salesforce Certified Platform App Builder
    MARCH 2018 - PRESENT
    Salesforce.com
  • Salesforce Certified Platform Developer II
    MAY 2017 - PRESENT
    Salesforce.com
  • Salesforce Certified Platform Developer
    MAY 2017 - PRESENT
    Salesforce.com
  • Salesforce Certified Sales Cloud Consultant
    SEPTEMBER 2012 - PRESENT
    Salesforce.com
  • Salesforce Certified Administrator
    NOVEMBER 2009 - PRESENT
    Salesforce.com

To view more profiles

Join Toptal
Share it with others