Engineering 6 min

Inside Remote Software Engineering jobs: Senior Backend Engineer Ajay Vignesh

Sep 25, 2023
Preston Wickersham

Share

share to linkedInshare to Twittershare to Facebook
Link copied
to clipboard

Welcome to our series Inside Remote Software Engineering jobs! This series includes a collection of interviews with members of our engineering team, who will each share their background, professional journey, and story of what it’s like to work as an engineer at Remote. The interviews showcase the diversity and expertise of our engineering team members and explore how Remote engineers shape the future of work at our company.

About me

My name is Ajay Vignesh K, and I'm based out of Chennai, in the southern part of India. My city has the second-longest beach (Marina Beach) in the world. I’m a Senior Backend Engineer at Remote at the Fraud, Risk, and Collections team. We help keep our platform safe from fraud and reduce our credit risk by developing and supporting features on the engineering side.

How did you end up working at Remote?

During my job search, I actually applied to Remote on a whim. I had been following Remote for a while and was a fan of their work, so I thought why not? I had worked on a handful of languages earlier, some functional too, but not on Elixir. The timing was luckily right in the sense that Remote was opening up to non-Elixir background folks just then. What I didn't know was that the interview exercise would be on Elixir.

To be honest, I wasn't too enthusiastic about having to learn a new language for the interview. But, with that exercise, I developed a deep appreciation for Elixir and really wanted to pass the interview to work on Elixir. So here I am, a year and a half later, still happy to be hacking on Elixir.

What does your day-to-day work at Remote look like?

My (teams’) work majorly revolves around:

  • Detecting (and alerting) the team about suspicious behavior, getting additional data pertaining to customers that helps admins make informed decisions

  • Providing features to admins to be able to restrict privileges for suspicious customers. I also build automation around this as well so that the restrictions need not be applied manually.

  • Making it easier for admins to check customers

So, in a crude sense, my work could potentially add friction to the customers, but when done right, is not noticeable, while ensuring that Remote is safe

What are you working on right now?

Currently, I'm working on an integration with a 3rd party case management platform to be able to speed up the checks that are typically done manually by our admins

Please share something that you have learned recently?

Recently, I used the iolist data structure of Elixir for the first time for a valid use case. I had to build a large String in succession. This was like 250 elements of roughly 4 kB each. Given that data structures in Elixir are immutable, with the typical String concatenation (or interpolation), this would have built up roughly 120 mB of wasteful memory (due to intermediate results). Considering concurrency (or) multiple requests as well, this might have put some pressure on the system (or wasteful CPU cycles due to frequent GC-ing). Luckily, Elixir has iolist that works on the references instead and thereby there's no wasteful memory buildup. The result is just a little above 2mB with iolist usage. Also, I've been exploring the temporal table extension of Postgres, checking and discussing if we could use it (or) borrow ideas to incorporate for our internal auditing use cases.

What is something that you have worked on at Remote that you are proud of?

One of the early features that I worked on was building controls that restrict the privileges of customers. This cuts across our entire platform and is quite powerful. It started getting used beyond its originally intended use cases, and there is also some automation that triggers it as well!

Besides product dev, I’ve also made contributions to reducing the compile times of our code base, fixing flaky tests and test timeouts, optimizing our DB queries, fixing/improving our observability, etc. that I’m very happy to have worked on Also, our team has a credo check that fails if aliases are not sorted. So I created a vim autocmd that automatically sorts the Elixir aliases (non-multiline) on file save. Hacky, but I’m quite proud of this one!

What do you like about working at Remote?

  • Async work culture

  • Not having to commute to work (especially in Indian traffic!)

  • Working on Elixir (in Neovim)

  • Smart but not egoistic colleagues

How is working at Remote different from other companies?

With async work culture:

  • I’m not expected to respond to pings immediately (or) be available online always, as the norm.

  • There's no micromanaging/insulting levels of tracking.

  • No useless meetings.

  Other things I find unique about async work: 

  • Defaulting to public channels for communication is quite different

  • Actively multiplexing different tasks to not be stuck on one is also unique

What has async work done for your life?

I now have the flexibility to work from anywhere. I’m not stuck in a hub / metropolitan concrete jungle just because of work. This has enabled me to move to a tier-2 city with a slower pace of life, better weather, and more greenery! It has enabled me to spend more time on personal stuff! I play and read more regularly. I can do even more chores to help around the household as well (not really my favorite, though)

Which tech do you like the most and why?

In the programming languages space, I really like Elixir and Rust. On the dev-tooling side, I love Neovim and its whole ecosystem of plugins. I also use emacs for the Org-mode

Which tech are you curious about?

I would like to explore liveview features of Phoenix. One of these days I would like to move my setup to Nix. I like the ML family of languages, so I’m curious about OCaml, especially with its recent multicore support.

What is the best advice someone has given you in your career?

  • Read more code

  • Debugging is an underrated skill

  • The feeling of “I can do a better job than this” is the strongest motivation for a dev

What advice do you have for engineers who would like to have a remote job?

Ideally, choose a remote-first company that defaults to async communication. In my opinion, the hybrid style of working is not really the best of both worlds. Be more transparent intentionally and display high integrity. On a related note, choose companies that assume positive intent first and don’t default to installing tracking software.

Work on your written skills (something as simple as reading what you’ve written from the intended reader’s perspective helps a lot!). Tough, but useful. This can also help you stand in your applications.

What brings you joy?

Learn more about how our global engineering team works. Or head to Remote’s Openings page to browse engineering jobs and apply today! 

Subscribe to receive the latest
Remote blog posts and updates in your inbox.