Welcome!
LearningBuilder is a large and complex piece of software. It is built and maintained by a diverse set of people working in a diverse set of roles, and we believe that our success hinges on matching those people to the ideal role for their personality, experience, and goals.
In short, finding the best “fit” between candidates and job duties not only makes the company more successful, it makes our employees happier too. Win-win!
One of the “fit” questions we have to answer is whether a given developer (e.g. you) would do better as a “Product Development Engineer” or a “Product Success Engineer”. This page will explain the options to you.
How do the roles compare?
Product Development Engineer | Product Success Engineer |
---|
Helps us build the core product, adding new features and supporting existing ones. Works closely with Product team. Contributes to our future success. Predictable, consistent day-to-day experience. | Helps us deliver successful outcomes to our clients, often filling in “gaps” in existing features. Works closely with the Implementation and Support teams. Contributes to our success right now. Dynamic and variable day-to-day experience. |
Who is my “customer”? |
Primary “customer” is our internal R&D process. Some R&D work is brought to us by the Implementation Team. | Primary “customers” are the people using the software: Implementors who experience technical complexity. Success Engineers often work directly with customers to troubleshoot and achieve technical solutions. |
Primary Job Duties |
Adds new features to LearningBuilder Writes unit and integration tests for core product features Manages database/schema changes that apply to all clients Resolves defects Writes / updates documentation that applies to the core product and to all clients
| Solves real-world customer needs through advanced configuration and mastery of technical concepts Creates client-specific database objects (procedures / views) to support advanced configuration Identifies / triages / resolves defects Writes documentation that applies to specific clients Supports and develops the LearningBuilder integration layer (e.g. exam provider integrations, SSO integrations, etc) Ad-hoc data manipulation or migration Investigates and resolves performance issues relating to client-specific data conditions
|
Tools / Technologies / Required Experience |
C# / ASPNET MVC USED CONSTANTLY JavaScript USED CONSTANTLY SQL Server USED CONSTANTLY Unit / integration testing USED CONSTANTLY AWS Lambdas INFREQUENT Message Queues (RabbitMQ, SQS) INFREQUENT Software Design Patterns USED CONSTANTLY
| C# / ASPNET MVC VARIES JavaScript VARIES SQL Server USED CONSTANTLY Unit / integration testing INFREQUENT AWS Lambdas FREQUENT Message Queues (RabbitMQ, SQS) FREQUENT Software Design Patterns INFREQUENT Powershell INFREQUENT Reporting tools FREQUENT CloudWatch FREQUENT
|
Day-to-Day Experience |
Very consistent: Daily standup Predictable work stream / weekly story planning meeting Lots of time to “dive deep” on a single task Delayed feedback from customer; it can take awhile for features to get rolled out and adopted into client configurations
| Variable and dynamic: Daily standup Unpredictable work stream; always a fresh challenge! Mixture of small “tasks” and larger “projects” Fast feedback cycles; you often instantly see the impact you’re having
|
Example Tasks and Assignments |
Implement a feature so that Administrators can impersonate other users Add/modify columns in database Implement UI (in collaboration w/ designer) Modify existing logging code to track both identities (logged in user + active user context)
| Assist an analyst configuring a new application process for a licensure program. Implement a custom SQL procedure that moves data around to support unique, one-off client need Create a complex Razor template to reflect that data in UI Write ad-hoc data script to auto-start the application for existing licensees matching specific criteria Implement a new 3rd party integration as an AWS Lambda
|
Resolve defect in which user is unable to <do a thing> when <some condition is met> Triage and identify the root cause Write a failing test to cover that scenario Fix the issue Work with QA to validate the fix
| Investigate performance issue reported by a specific client Triage and identify root cause, potentially using code debugger Determine if issue should be fixed in the database (e.g. indexes, etc) or in the application (e.g. how it builds the query) Work with Product team to design a solution Potentially hot-fix the solution to the affected client for immediate relief
|
Traits of Ideal Candidate |
Enjoys thinking about abstract concepts Enjoys using technology to build stuff Can see the whole forest Most productive when things are “calm and quiet” Excels at communicating deeply technical concepts with other developers and engineers
| Enjoys working with concrete ideas and details Enjoys using technology to solve problems Gets up close and personal with individual trees Can easily context switch or juggle lots of things at once Excels at communicating and collaborating with non-technical colleagues
|
Career path within Heuristic Solutions |
There’s not really a difference; Success Engineers could move to the Product team and vice versa. Both roles have room for Junior → Senior level transitions. |