without a second thought_

About me_ Blog_
altushka

Arapov Mark

Back End Developer

In Short_

From zero to production. I have experience in developing web applications such as XPAY (system for managing tutor's payments), Mementor (connection between students and mentors), and some other projects. Right now work on wb tech as mentor and feature's leader.

Also work with React/React Native 🖨️ cv.pdf_

Backend_
  • golang
  • grpc
  • kafka
  • PostgreSQL
  • SQLite
  • MongoDB
  • redis/sentinel
  • testing
  • authentication
Frontend_
  • js/ts
  • React
  • React Native
  • module.css
  • htmx
Common_
  • clean architecture
  • TDD
  • DDD
  • Docker
  • CI/CD
  • linux
  • insomnia
  • open-api
  • youtrack

Experience 3 years, 5 months, 24 days_

Wildberries (remote_)

Back End developer (foreign_integrations_)

2023.10 - now

Problems and Solutions:


Tried myself in a new role as a mentor. I had the team of trainee developers and was responsible for the quality of their code and knowledge. It took some time to get the authority and respect from them, but I managed to do it. The results speak for themselves - many of these interns are now successful professionals in the company.

Also, I tried myself as a feature leader. I was responsible for the development of the new features. I had to communicate with the product owner, business analyst, and other teams to understand the requirements and constraints. My role involved create a plan, estimate the time, and distribute the tasks between the team members.

Last but not least, I was the man who solved undefined problems. When business or project managers encountered issues without clear solutions, they turned to me. I took responsibility for sorting out these problems, developing effective solutions, and implementing them accurately.

Used languages, technologies, and tools: Golang, gin, platform, NATS, JSON, traefik, Postgres, Docker, Tarantool etc.


Startup developing (remote_)

Back End Engineer

2022.2 - 2023.10

Problems and Solutions:


During development, I was tasked with creating an authentication system. Several solutions were considered, but ultimately, I chose to use JWT tokens. Wanting to have full control over the situation, I decided to write it myself in order to have control over things such as prefixes. This took several hours, but I was able to understand and write my own middleware. In the future, I plan to add refresh token implementation.

During project planning, we chose Mongo DB since we knew we would not be working with a large amount of data and had only one main entity to deal with, "mentors". However, during development, I encountered a problem with the lack of clear consistency, which led us to embed a structure where it should not have been. This was temporarily replaced with several structures in place of embedding, but later on, I discovered the `bson:, inline` instruction for the structure and implemented it cleanly.

At one point, we needed to add images, but our budget didn't allow for having servers dedicated to hosting them. We began searching for a third-party service and eventually chose Cloudinary due to their well-documented API and the fact that they offered a free plan with up to 20,000 monthly uploads and editing capabilities, which was ideal for us at the start. We decided to transmit the images through base64 since it allowed for easy embedding into JSON.

Used languages, technologies, and tools: Golang, gin, echo, Cloudinary, JSON, MongoDB, Postgres, Docker, JWT etc.


PrimeGate (remote_)

Front End Engineer

2021.8 - 2023.5

Problems and Solutions:


When I first joined, I was assigned to a new project to create a mobile application for a CRM system. The design was quite complex due to the fact that we were creating the app for multiple platforms, including iPad. One of the challenges we faced was the large amount of data that needed to be passed between screens. After reviewing the available options, I decided to prioritize Redux over Mobx, as it allowed data to be manipulated more strictly, helping to avoid accidental changes in the future.

The layout consisted of 23 screens, among which it was difficult to reuse components due to the employer's design. However, I found a solution and used compound components. I created skeletons that I later reused and modified using `children`, although unfortunately many components had a lot of props.

Another problem was with fields that had a ready-made selection. Some of them, employer requested to use as dropdowns, while others preferred a selection system similar to theirs. There were several issues with the selection system, as they varied, with some based on dates and others based on values, but all were supposed to look the same. I had to create two components that looked the same but functioned differently under the hood. While it was relatively simple for the value-based selection, I had to put in extra effort for the date-based selection due to a lack of well-functioning libraries and documentation. In the end, I managed to solve the problem by using different libraries for different platforms, and the task was completed successfully.

Used languages, technologies, and tools: React, React Native, Figma, Redux, react-router-dom, etc.

Self development_

I read books, watch recorded lectures, learning new technologies and improving my skills every day.

In the plan:

Books:

- Domain Driven Design

- Kafka: The Definitive Guide, 2nd Edition read right now

Languages:

- java/scala

- rust

- Open for any new languages in your company