Podcast — 27 min
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.
My name is Arda Can Tugay, and I’m based in Singapore. Did you know that despite its urbanization, Singapore has over 50 native species of mammals?
I work as a Senior Backend Engineer in the Integrations Platform Team. We maintain customer-facing integrations (BambooHR, Hibob, etc.) and are the team behind the Remote API. The Remote API allows customers and partners to build integrations to enhance their experience with Remote.
How did you end up working at Remote?
I was introduced to Elixir back in 2018. An Elixir engineer at my startup had built a system using Elixir and the Phoenix framework, and I was asked to maintain it as he was departing the company. During that period, I started to really appreciate the programming language features, its friendly community, and its well-documented open-source libraries.
After that, I was only able to use Elixir in small hobby projects, as I was working for companies that used Ruby on Rails. In 2022, I started searching for new opportunities because of changing circumstances at my previous job. I decided to apply to Remote because a former coworker was working at Remote at the time, and he was praising the truly async nature of the work culture at Remote — plus, they were fully on board with Elixir! I figured this was my opportunity to switch over to Elixir as my primary development language, so I took the leap. One year onwards and I love working with Elixir and Remote!
What does your day-to-day work at Remote look like? Here are some examples of tasks I handle on a typical day:
Work on adding new features and maintaining the Remote API.
Collaborate with other teams to expose their domain to customers and partners via the Remote API, based on the needs of our customers and partners.
Support CX and user happiness with their questions related to our integrations (BambooHR, Hibob, etc.) and provide engineering support when troubleshooting guides aren’t enough.
Please share something that you have learned recently.
I recently had to work with Elixir maps generated from JSON files loaded into memory, that contained more than 32 keys. For optimization reasons, Elixir essentially uses a list when there are less than or equal to 32 keys, which means keys appear to be sorted. However, when there are more than 32 keys, the order of keys is not guaranteed (i.e. nondeterministic). This is one of those “quirks” of the language you read about, but rarely encounter in practice. This was a problem, as I had to write back those maps to JSON files after manipulating them in memory, but also needed to preserve the original order of the keys. I was able to use an Elixir Access-compatible struct named Jason.OrderedObject to preserve the key order of maps, which worked perfectly.
What is something that you have worked on at Remote that you are proud of?
There are a few small but high-impact tasks that I’ve worked on that I’m proud of, simply because they’ve saved us countless hours of menial work. Here’s one of them: Automating link generation to create permalinks to our API documentation pages.
Previously we’d have to update all the links to our API documentation pages if we added a new Remote API endpoint because the default, auto-generated links are based on auto-incremented numbers. One of the larger items of work that I’m proud of is the migration of a 3rd-party API we used for our integrations. As a result, the onboarding process for the integration has become smoother. We were also able to save significantly on subscription costs due to our usage of this 3rd-party API.
What do you like about working at Remote?
The truly async work culture. My coworkers are in faraway time zones, ranging from seven hours to 12 hours away. We’ve been working like this for six months now and rarely encounter any blockers that prevent us from moving forward. Sync meetings are actively discouraged. This allows me to spend more time at “coffee chat” sessions with other Remoters and more opportunities for focus time.
Everyone at Remote wants to help and will not judge you for the questions you ask. This encourages most questions to be asked publicly which also allows for varying points of view to be collected as well. I save countless hours by not having to commute to an office. Unlimited PTO is actually unlimited. We’re encouraged to take off at least 20 days per year, and many people take off more than that. When I’m on PTO, I’m not expected to check anything work-related, so I can truly disconnect. I’ve always worked for companies that offered “unlimited PTO”, but after a certain number of days off, you could definitely sense the discontent.
I also enjoy working with Elixir at Remote, I rarely encounter problems where it feels like the language or tooling gets in the way. In every other programming language I’ve used, either the language itself has weird quirks and error messages that make it difficult to debug issues, or the tooling is clunky and slow.
How is working at Remote different from other companies?
The async work culture is completely unique. I’ve worked for several other “remote” companies, and all of them had mandatory meetings or times you had to be online that were aligned with a specific timezone, which somewhat defeats the purpose of working remotely. Remote truly embraces the “fully-remote” concept.
What has async work done for your life?
My schedule is incredibly flexible. If I need to attend to certain matters during the day, I can shift my work hours accordingly. It also allows me to run errands such as grocery shopping during off-peak hours, eliminating the problem of having to stand waiting in long queues. This is especially helpful since my spouse does not have the same flexibility in her schedule as I do.
I’m able to visit family and friends overseas for longer periods of time, without having to take PTO for the entire duration, as I can work in practically any time zone I want. I can, for example, take a week off, come back to work for a week, and then take another week off while visiting family and friends. This also affords me the ability to catch up with coworkers who are working in different timezones.
Which tech do you like the most and why?
Programming languages: definitely Elixir. I feel highly productive when working with Elixir. I even use it for my hobby projects. When I need to write a small script to automate a task: Python, because of the sheer number of libraries available for parsing various file formats and inputs, as well as generating them.
Which tech are you curious about?
Large language models, such as ChatGPT. I think they have the potential to really augment our work experience by helping us save time on menial tasks, but we need to understand how to utilize them first. They may also help us improve the API experiences for developers if used correctly. Exploring more of distributed Elixir and OTP features.
Basic understanding and the ability to use machine learning libraries. For Elixir, that would be Nx and Explorer libraries. While it’s quite difficult to understand, quantum computing is a new, but very intriguing area of computing. It wouldn’t necessarily have any benefits to the type of work we do at Remote, but it has the potential to solve very difficult problems, such as protein folding simulations.
What is the best advice someone has given you in your career?
Interviewing (particularly for software positions) is an entirely different skill than software engineering. The best way to learn how a certain part of the codebase works is to read the code, and if necessary, debug it at each layer and watch the inputs and outputs. Documentation can go out of date.
What advice do you have for engineers who would like to have a remote job?
When working at a remote job, make sure to document your work as much as possible. This could be articles you write, recording screencasts, drawing diagrams, or leaving summaries in public channels, such as Slack. This will likely slow your work down a bit, but remember that it enables countless others (even beyond your team) to unblock themselves simply by searching and finding your documentation.
When interviewing with companies that claim to be “remote”, ask the following questions:
Do you have specific working hours, or am I allowed to set my own schedule?
If you’re required to have specific working hours, it’s not a truly remote company, and you’ll likely encounter roadblocks when you want to find info about something you don’t know. An async work culture encourages documentation of discussions, features, and quirks of a system, allowing those who have different schedules to find the information they need and when they need it.
How many meetings do you have in a typical week?
Anything more than 1 (which should be a team sync) may indicate unnecessary time spent on meetings that could otherwise be spent on actual development work. However, take this with a grain of salt because the number of meetings you’ll have may depend on your role (e.g. a team lead will likely have a 1:1 with all engineers in the team once a week).
What brings you joy?
Seeing that I'm able to help others with their problems, regardless of whether it was a technical problem or a problem in their personal life.
Subscribe to receive the latest
Remote blog posts and updates in your inbox.