Let’s Fly Inside #7: the Lifecycle of Backend Development at Fively with Aryna Tanana
Dive into the heart of Fively's innovation with an exclusive interview exploring the landscape of modern backend development, from initial coding to final production.
In this special interview edition, we're taking a deep dive into the heart of Fively's innovation engine: we are exploring the intricate world of backend development together with our brilliant full-stack software engineer Aryna Tanana, a mastermind behind our robust backend systems. Today, she will guide us through the journey of bringing groundbreaking custom software solutions to life.
From the initial spark of an idea to the deployment of sophisticated systems, Aryna will navigate us through her path to backend development, first challenges, sweet triumphs, and the relentless pursuit of excellence that defines her approach to backend development.
Are you thrilled? Join us as Aryna pulls back the curtain on the backend development enigma, sharing insights from her vast experience, and let’ start!
Thank you for your initiative to share a piece of your professional life with us!
You are welcome!
First, can you share a bit about your journey into back-end development and what attracted you to this field? It’s really not easy, and I’m excited about how smart you are!
I touched upon backend development for the first time when I was a university student. Right at that stage, when we were performing laboratory works and educational projects, I realized that I was attracted to tasks related to data processing, as well as to the search for an optimal solution to a problem.
Even though I also have deep knowledge and experience in front-end development, I am still more attracted to the back-end. What I like most about backend development is the variety of technical challenges, the ability to interact with the app architecture, and also that I can take care of data security.
Just imagine: every simple user interaction with the interface generates a complex process on the server, hidden from the user’s eyes. Exciting, isn't it?
What I like most about backend development is the variety of technical challenges, the ability to interact with the app architecture, and also that I can take care of data security.
In general, what does a backend developer do? If we compare front-end vs backend, how do they differ?
In general, the difference between frontend and backend is simple: with what part of the app the developer interacts most of the time?
That is, a front-end developer is responsible for the UI and its interaction with the user, while a back-end developer is responsible for the server side of the application.
To my mind, the main responsibilities of a backend developer include: processing requests from the client, complying with business logic, designing a database, ensuring data security, integrating with third-party services, as well as optimizing and guaranteeing the stability of the application.
Top Backend Tech Stacks and Trends
Now, let’s move on to the modern tech. What languages and frameworks do you consider a top choice for modern backend development?
Of course, the choice of programming language and framework depends on the specific requirements of the project: what ideally fits one project may have many disadvantages for another. I’d also like to note that the choice of language for the backend is influenced by the cost and speed of development. This is probably why Javascript has remained one of the most popular development languages for a long time.
But here, I would like to highlight a few more languages that can be included in my top 3 for server-side development:
- Python. A very multifunctional and universal language that is suitable for various types of applications. With the development of machine learning and data science, interest in this language is only growing;
- PHP. Being a PHP-keen developer, I can't help but mention it. Despite the fact that many consider PHP to be an irrelevant language, in fact, this language is actively developing, new features are being added, frameworks are being developed (for example Laravel or Symphony), and the community is expanding. It is ideal for lightweight web applications and is quite easy to learn. That is, this is a good solution to quickly bring a business idea to life;
- Kotlin. It’s a fairly young language, but it has already taken its place in modern development. What’s particular about Kotlin, is that it can be used anywhere there is a JVM, which means this language is great for server development.
What does your ideal tech stack look like for a scalable back-end project and why?
An ideal stack is one that provides the application with reliability, fault tolerance, and scalability. I can give you an example from my experience on a project with a monolithic architecture: unfortunately, when introducing new functionality or changing the existing ones, there was a high risk of disrupting the operation of the entire system. And this is probably the biggest disadvantage of a monolithic architecture: the failure of just 1 component can lead to critical errors in the entire app.
To correct this situation, we began to move certain parts of the application to microservices, and thus the entire system became more reliable. For the existing and future potential partners of the project, this has become a kind of guarantee of the reliability of the entire system.
An ideal stack is one that provides the application with reliability, fault tolerance, and scalability.
What project and app factors should a backend developer consider while deciding on a certain architecture?
First of all, you should start by assessing the project requirements, and depending on this, select the most suitable technology in order to follow the principles of scalability and supportability. You also need to understand how much data is expected, its type, and how many users will be in the system.
For example, if the application is quite simple and does not require storing a large amount of data, then you should choose a database that is lightweight and easy to use. It is important to take into account the budget, as limited resources significantly narrow the available choice of technologies.
In other words, it is necessary to take into account absolutely all factors enumerated above and make a decision based on this.
Are there any new technologies or tools you've recently adopted into your tech stack?
For some, this may seem obvious, but quite recently I discovered a new architecture pattern - CQRS (Command Query Responsibility Segregation). Unlike the usual CRUD, this pattern separates read and write operations.
In other words, read operations do not change the state of the data, write operations do change the state. And one of the advantages of this pattern is that the read and write components can be changed and scaled independently of each other, which of course increases the flexibility of the entire system.
Moreover, this pattern is often used in conjunction with another pattern - Event Sourcing. The distinctive feature here is that absolutely all changes in the system are saved as a sequence of events, which means you can trace the history of events and, most usefully, restore the chain of events from the very beginning in case of force majeure.
This approach has its downsides, but for me, this is a great opportunity to take a fresh look at the usual architectural approach and learn something new.
Preferred Backend Architecture Methods
With the ongoing debate between microservices and monolithic architectures, what's your stance?
As I’ve already said, any project has its own peculiarities and requirements, so the choice of architecture is individual for each business idea.
Of course, microservices architecture has many advantages because any new technology or idea solves a specific problem. So microservice architecture did not appear out of nowhere, but based on a specific problem.
Probably one of the most important advantages of microservice architecture is its scalability and flexibility. That is, each microservice can be built for specific tasks and even have a different architecture from other app services. In addition, business requirements often change and thanks to the flexibility offered by microservices, each of the app’s parts can be easily adapted to new requirements.
Microservice architecture did not appear out of nowhere, but to solve a specific problem.
However, there are many projects where a microservice architecture wouldn’t be a good choice. For example, if resources are limited: microservices are more expensive to maintain than a monolith. Or if the project involves very limited and simple functionality that does not require many integrations and interactions - in this case, a monolithic architecture has more advantages.
That is, as I already said, everything depends on the requirements of the project and the task of engineers is to make an intelligent choice.
Everything depends on the project requirements and the task of engineers is to make an intelligent choice.
How do you adapt your back-end strategies as projects evolve from initial conception to production, if the requirements change over time?
It all starts with an app idea, based on which the requirements are put forward. Then, using the requirements, the application architecture is developed and the technologies used are determined.
As I’ve already said, the task of engineers is to make a competent architectural design for the app, taking into account its flexibility and scalability. Poor technology choices can make it difficult to make changes and can potentially kill your entire business idea.
Thus, it is much better to start with developing the basic functionality. Then, that you already have a basic working version of the application (MVP), it is much more convenient to supplement the application with new functionality and easily adapt to new requirements. It’s perfect if you test your MVP idea first and, if the solution fails, quickly change the functionality according to new requirements. Plus, covering the app with auto-tests increases the chance of not breaking the existing functionality when changes are made.
I would say that absolutely every tiny factor influences the success of a project and its stable life cycle: starting from proper business requirements to good teamwork.
In general, how do you approach troubleshooting and solving complex back-end issues?
First of all, you should start by understanding the very essence of the problem. But not only from the point of view of the engineer but also from the end user - since it is the user's needs that determine the requirements for the fix.
To do this, you can break the problem into smaller parts and solve everything gradually. At the same time, by working on individual stages of solving a problem, you can build a more stable solution. I mean that after each new implemented or changed functionality, it makes sense to test the app thoroughly.
Of course, such a process takes time and, accordingly, the cost of the solution, but in the end, you can be confident in the result. And then all that remains is to monitor the entire system as a whole and evaluate the result of the work done.
As a backend developer, how do you approach web security to build robust and trustworthy applications?
Building a reliable application is a challenging yet critical part of design and development. Even the smallest vulnerability can lead to data leakage or even financial loss. Thus, there are many ways to ensure application reliability, such as:
- Authentication and authorization,
- Use of the HTTPS protocol,
- Validation of entered data,
- Protection against SQL injections,
- XSS protection,
- Use of HTTP security headers,
- Validation of downloaded file extensions and their MIME types,
- Use of CSRF tokens (validates the request source and doesn’t allow accepting requests from attackers).
All these methods will definitely help ensure a high level of reliability and security for the app. It would also be a good idea to regularly conduct security audits to identify potential and existing problems as the application grows. Plus, you can regularly monitor the application and identify suspicious activity in order to fix the problem timely.
How do you stay updated with the latest back-end trends and methodologies?
Fortunately, in the modern world, information is easily accessible and thus, it is much easier to stay up to date. I am subscribed to various professional communities, regularly read technical articles, and take relevant courses.
For example, in the PHP-dedicated community, people publish their ideas, and unusual architectural solutions, or share some best practices. Also, I regularly watch training videos on the Udemy platform. Plus, one of my favorite online learning platforms is Laracasts: here you can find not only training videos, but also participate in forums where developers share their problems, solutions, and tips.
I find it very convenient, that you can use the experience of other people to find something new for yourself and apply these concepts in your personal development style or within a project. At the same time, new concepts or ideas can first be tested on local development, and only then applied in production.
But please, remember that development does not exist separately by itself. The entire development process is built around business ideas, and for business, the most important factors are the speed of development, its cost, stability, and reliability.
In other words, it is important for a business to deploy an idea as quickly as possible and with the most optimal budget. Therefore, all existing development trends, such as a new pattern or new technology, are aimed at solving a specific problem, be it improving deployment speed or improving security.
Please, remember that development does not exist separately by itself. The entire development process is built around business ideas, and for business, the most important factors are the speed of development, its cost, stability, and reliability.
Aryna’s Inner World and Hobbies
We know that you’re a very diverse and talented person. Outside of work, what hobbies or activities are you passionate about?
In my free time, I try to spend a lot of time with my family. Work takes up a considerable amount of a person’s life, so I find it’s very important to devote enough time to loved ones.
“Work takes up a considerable amount of a person’s life, so I find it’s very important to devote enough time to loved ones.”
As for hobbies, probably most of all I like to read books, put together puzzles and make full-fledged pictures out of them, and dive into psychology. Although I have read many books, I have two favorite books over the years: J.D. Salinger’s “The Catcher in the Rye” and F. Scott Fitzgerald’s “This Side of Paradise.”
Both of these books made a strong impression on me, especially the first one. J.D. Salinger there touches on many psychological aspects, starting from teenage rebellion to problems of self-discovery, social adaptation, and feelings of alienation and disappointment in the adult world. I want to re-read it in the near future and maybe I’ll find new things to think about.
I also love to embroider various images and patterns on clothes or simple fabric. While embroidering, I concentrate on the stitches being completed and can easily disconnect from work tasks.
I also really love spending time outdoors, where I can enjoy nature and recharge with positive energy. Good rest allows you not to overload your brain and always be able to solve technical problems.
I try to maintain a work-life balance, as this is a very important aspect of my professional and personal life. Mental and emotional overload leads to stress, which affects a person’s health and productivity. To avoid overload and burnout, you need to be able to manage time effectively and plan well.
For example, I try to get up not too late, because my brain is most active in the first half of the working day, which means I complete all the highest priority tasks at this time.
Regarding priorities, this is also one of the most important aspects of good productivity, as prioritization helps determine the most important tasks. Of course, each person lives and works in his own rhythm, but for me, this is the most workable option. To summarize, good emotional and physical rest is the key to professional success and productivity.
To avoid overload and burnout, you need to be able to manage time effectively, plan well, and prioritize.
You’ve been actively participating in Fively’s green initiative “Eco-week”. Are there any software projects you've worked on that reflect your commitment to environmental sustainability?
The ecology issue really worries me a lot. I would like to convey to people more info about the importance of the environmental problem, inspire them to responsibly select any products’ materials and then sort them for recycling properly, and also teach them to save natural resources. After all, we are all inhabitants of one planet Earth, and there is no other planet like it.
Obviously, the development of technology cannot but affect our planet. Yes, thanks to technological progress, we have many tools to improve our environment: for example, eco-transport, pollution, and emissions monitoring systems, various forecasting systems, wastewater treatment plants, eco-materials, and much more.
But we cannot ignore the negative impact though. For example, due to the rapid development of AI, data centers need even more resources, and the volume of information processed is becoming larger, which means the heating of the equipment is also increasing. Water is used for cooling, i.e. the higher the superheat, the higher the water consumption.
Nevertheless, thanks to AI, many projects, technologies, and systems help monitor the situation and do everything possible to improve it. I would love to participate in this kind of environmental project, for example, systematization and identification of materials for recycling, systems for recognizing and predicting natural disasters, and systems for monitoring energy and water consumption.
I am sure that even a small contribution can become the basis for a significant positive impact on our environment. As I’ve already said, we are all residents of the same planet and this is our common home.
I am sure that even a small contribution can become the basis for a significant positive impact on our environment.
Looking ahead, what are some areas of back-end development you're interested in exploring or deepening your expertise in?
Professional growth is very important to maintain a high level of expertise in the field, thus, it always makes sense to master new technologies, gain experience in different domain areas, and set more ambitious goals.
As I’ve already noted, learning is a continuous process, so there are still many areas for more detailed study. I’d probably like to deepen my knowledge of AWS and get acquainted with the field of Machine Learning. I am sure that these areas have even more interesting technical challenges and complex tasks waiting to be solved by me, and then I will expand my technical horizons even further.
Throughout my portfolio, I have vast experience in different domains, but I would like to dive deeper into the Healthcare industry. This area is quite interesting for me, and I am sure that this is where I can find new technical challenges, get a new perspective on the essence of things, and expand my horizons.
What advice would you give to aspiring back-end developers who are just starting their careers?
For those who are just starting their journey as a backend developer, I would advise mastering a specific programming language as the first step. To do this, you can access information on the Internet, take training courses and, of course, perform various practical tasks.
I believe that confidence in a programming language is an excellent foundation for understanding more complex technologies. It's better to concentrate on one thing rather than trying to study everything. Do not forget that learning is an endless journey, where each stage passed reveals even more opportunities for growth and development.
Secondly, for a backend developer, it is extremely important to have perseverance and patience. Solving complex problems requires care, time, and creativity. Therefore, it is important to be able to plan your time, be able to approach problems, and be able to work in a team.
I would also advise developing communication skills, as the work of a backend developer involves communicating not only with fellow developers, but also with managers, analysts, and stakeholders. And often you need to be able to explain the problem in a language that “non-technical” specialists can understand.
“In conclusion, I would like to say that the path of a backend developer is a continuous creative journey with lots of technical challenges, massive amounts of information, interesting fields to dive in, and a plethora of exciting tools and technologies.”
***
This is the very end of our comprehensive interview with our bright full-stack engineer keen on back-end development Aryna Tanana. How did you find it? What insights you’ve found the most useful? What Aryna’s quotes impressed you the most? Feel free to share your thoughts on our social networks!
And if you need professional backend development services, our highly experienced engineers are always here to help your apps’ ideas go live! Don’t hesitate to contact us and get a free consultation for your project!
Need Help With A Project?
Drop us a line, let’s arrange a discussion