Work at Wrk

  | 

Hey 👋 I’m a Computer Science graduate student looking for a full-time role as a Backend Engineer. I previously worked as a Software Engineer in Walmart’s PhonePe and YC ClearTax. For a better representation of my skills and experiences, my resume: pyblog.xyz/about.

1. Reasons to hire me

  • I have the skill and experience to work in a fast-growth high-scale work environment. For instance, at PhonePe, handling a scale to serve over 370+ million B2C and B2B users in the fintech space primarily meant automating the legacy processes, managing 1000s of servers, and working with over a dozen micro-services among the 300+
  • I am open to working anywhere in Canada or remotely.
  • While improving technical skills goes unsaid, I constantly work towards my soft skills (Certified in “Business Communications for Researchers” and recently completed the “Exploring Entrepreneurship - Mentorship Program”).
  • I’m a budding open source contributor and strictly abide by writing clean code. One of the most recent open source projects is “Building a World Cartogram” for “Our World in Data.” The prototype: population cartogram.

2. The Proposal

After understanding Wrk as an outsider, I came up with a proposal to simplify integration with Wrk; Sections 2.1 and 2.2

2.1. Software Development Kit (SDK)

To have better control over the different components and processes in a product, one of the must-have and go-to approaches is “as-code” (example: infrastructure as code), which translates to version control, review process, and ownership.

Let’s take an example of Claims & Request Processing in Java (Builder Pattern) with an additional change to demonstrate parallel workflow:

ApiWrkAction verifyEligibility = new VerifyEligibilityWrkAction(<function-parameters>);
ApiWrkAction verifyAmount = new VerifyAmountWrkAction(<function-parameters>);
ApiWrkAction classifyExpense = new ClassifyExpenseWrkAction(<function-parameters>);
EmailWrkAction emailToFinance = new EmailWrkAction(<function-parameters>);
EmailWrkAction emailToEmployee = new EmailWrkAction(<function-parameters>);

WrkFlow wrkflow = SequentialWrkFlow()
        .name("Claims & Request Processing")
        .execute(verifyEligibility)
        .then(verifyAmount)
        .then(ConditionalWrkFlow()
                .execute(classifyExpense)
                .when(Predicate.APPROVED)
                .then(ParallelWrkFlow()
                        .execute(emailToFinance, emailToEmployee)
                        .build())
                .otherwise(EmailToEmployee)
                .build())
        .build();

Where VerifyEligibilityWrkAction, VerifyAmountWrkAction, EmailWrkAction and ClassifyExpenseWrkAction are activities/actions, the building block of a wrkflow and extends the pre-configured wrk-actions such as ApiWrkAction and EmailWrkAction, in this context an activity/action by itself can be a Wrkflow. The WrkAction internally makes API calls to the Wrk server with the required parameters (The typical SDK way of making API calls).

2.1.1. Advantages:

  • Offers easy maintenance of Wrkflows (for clients).
  • Integration with existing systems is easier (as simple as adding a dependency and defining workflows).
  • Clients can have a layer of abstraction on Wrkflows, thereby giving better flexibility to choose a different provider later on if necessary (although this sounds counter-intuitive, it always works in favor).

2.1.2. Disadvantages:

  • Requires constant development, support, and maintenance.
  • Not limited to a language, typically 5-6 languages (Go, Java, Node.js, Python, Ruby, and .NET).

2.2. Integration with the existing workflows management tools.

After exploring a broad range of wrk-actions and given that the cloud infrastructure provider AWS, Azure, and Google Cloud has a market share of 33%, 22%, and 9%, respectively, let’s take an example:

Alex runs a tax filing business and uses AWS as the cloud provider; AWS Step Functions as the workflow orchestrator.

An existing workflow - collects the data and performs reconciliation between sales and purchase records. After the reconciliation, the top-3 action items are:

  • Reaching out to the supplier(s) for clarification/correction.
  • Consulting the Chartered Accountant to link/de-link invoices based on the match results.
  • Fixing the ITC (Input Tax Credits) claims.

Alex is well aware of several other similar use-cases and wants to offer better flexibility to the finance team to decide on the action items and is looking for products that can be easily integrated with the existing system. Not to mention, Alex’s topmost priority is high confidentiality and security.

Jan is a Relationship Manager at Wrk who has been in talks with Alex and finally struck a deal! How did they do it?

  • The client integrated with Wrk’s SQS (Amazon Simple Queue Service) queue(s) within the AWS network using the VPC endpoint (AWS Private Link), thereby reducing network bandwidth and offering higher security as the communication is within the private network.
  • Wrk’s consumer pool reads the messages in the queue and initiates the intended wrkflow(s).
  • For Alex, any further integration with Wrk is as simple as a Drag and Drop in the Step functions console or, in a more general construct, use the Wrk’s SQS as the trigger to start a pre-configured workflow.

Below is an illustration of the ease of integration in the AWS Console:

Note:

  • The “Wrk SQS” card is for illustration only, and in the real console, it would be an AWS SQS card.
  • The assumption is that Wrk uses AWS for this scenario, but not necessarily a constraint.

Alex is more than happy to know that the finance team is in complete control to do what’s best for the customers, while the engineering team dedicates their bandwidth to what makes them stand out, their proprietary reconciliation tool.

The above proposal is not limited to a cloud provider or a specific workflow management tool but rather an example of how integrating existing workflows with Wrk can be easy, secure, and fast.

2.2.1. Advantages:

  • Lower network bandwidth for clients using the same cloud provider.
  • Ease of integration with the existing architecture.

2.2.2. Disadvantages:

  • Not limited to a workflow orchestration tool or a cloud provider. However, a better way to decide is based on contracts with the potential premium client(s).
  • Higher cost and maintenance of additional resources.

3. Conclusion

Both 2.1 and 2.2 have their pros and cons. But, more importantly, it depends on who the current target customers are and who are the potential new audience for these features.

The main reason why I want to work at Wrk is that it addresses the right problem: With more and more companies coming into the digital space and existing companies giving at most importance to customer experience, “automation” is the way to scale and solve. Every company out there has a workflow. The no-code/less-code approach to defining these workflow(s) so companies can work towards the betterment of the kernel of their product is the way forward for many.

Lastly, with the quest to explore Wrk, I’m now more interested than before to know about the architecture and the user journey to create workflows (Maybe a dashboard for freemium users with a limit on the number of wrk-actions?).

Fun fact: I have now added “Wrk” to my auto-correct dictionary.

About Adesh Nalpet Adimurthy

Photo of Adesh Nalpet Adimurthy

Hey 👋 I'm a computer science graduate student, a budding illustrator, GSoC contributor, and previously a backend engineer at Walmart's PhonePe and YC ClearTax, here to share my experiences, tutorials, and projects.

If you find my posts interesting, don't forget to subscribe