02/27/24

Software engineering and best backend technologies explained by Obidniak Oleksandr

Obidniak Oleksandr, MWDN

  • Obidniak Oleksandr, Senior Software Engineer in MWDN
  • 46 y.o.
  • Has two kids
  • Residence: Lviv, used to live in Dnipro
  • Interests: Badminton, travels, cooking

Explain your role in more detail. Particularly, what’s the difference between you and a programmer/coder?

A programmer is someone who writes a program. They were told to do a task, they coded what was expected, closed a ticket, and that was it. 

An engineer is a person who solves a problem. In most cases, from the very beginning to the very implementation of it in life. After that, engineers would also quite often work on maintenance and after-deployment support. 

That is the difference. When we talk about programmers, they were asked to write/code something, they did it, and after that, they stand back and say “Now, do with this code whatever you want. Decide for yourself or let a specially trained person take it from this point.”

On the contrary, an engineer is someone who can decide on the choice of language and technology, they will write code, implement it, and even, sometimes, put it on stream. That is, optimize all the processes for the following scaling. 

When we have one task that should be done, we call for a programmer. However, when you need to develop a system, and there will be many such tasks, and sometimes they are of the same type, sometimes they are different, you call for an engineer who will understand what every of their action leads to.

engineer and coder, what's the difference

Describe a day of software engineer life.

You communicate with the product manager about an idea, a feature, a product idea, or a new feature in the product. The two of you decide on how it will work. The PM tells you, “I see it like this,” and you say, “It is an interesting idea. However, from a technical point of view, it is impossible or very difficult.” Sometimes, you say, “My experience suggests it will be better that way.”

You reach some agreement, and then the engineer chooses the technology and the language, which is usually dictated by the technology. Then you implement the idea and, together with the PM, receive feedback from the market, users, and the system itself.

After that comes the next task. For example, something went wrong, and you need to fix it. Or everything went as you supposed it to go, and now you have significantly more users, so now you need to scale your solution. 

And here again we come to the difference between an engineer and a coder. An engineer differs from a programmer in terms of responsibility and freedom of decision-making. You can say that an engineer combines several titles: a bit of an architect and a bit of a business analyst, and it’s all in one person. The senior engineer combines all these roles. And if you have less experienced teammates, you also become a mentor or team leader for them.

Let me put it in yet another way. Imagine a team. There is a tester, a programmer, a manager, an automation tester, and a DevOps, and they need two more managers to control them and give them tasks. And there’s an engineer who comes and solves the problem themselves. When two engineers join your team, they can solve a very big problem together while going through all the stages of development, from the beginning to the end. These are software engineers.

Do you prefer some technologies to others? Why?

best beckend technologies

First of all, Python

Python is a very simple technology. Although it is simple, it doesn’t mean that it is stupid and nothing complex can be done with it, on the contrary. Also, you don’t need much of a brain to figure out how to work with it. I think this language is very cool for students, but not for those studying computer science and technology. I mean school kids who are getting to know programming as a concept and trying to understand whether they like it or not. 

Previously, this role of a simple language for academic purposes was played by Pascal (I believe nothing serious was ever written on Pascal). However, for academic purposes, it was quite good.

Then, SQL

This is, let’s say, a secondary technology, a secondary programming language. For example, in the front end, they can write in JavaScript, TypeScript, and sometimes in PHP. The secondary technologies for them are HTML and CSS. For back end developers, SQL is a secondary language.

Despite the fact that there are a lot of NoSQL solutions and databases, SQL is still a classic. You can learn anything afterward, but in the beginning, you must know and understand SQL. 

I can’t say it’s my favorite technology, but it is certainly my working tool. In my current position, I use SQL all the time because there are a lot of reports and data. I use SQL for data analysis and all kinds of reports for project management.

Moreover, I am very good at it due to my previous experience as an Oracle and SQL developer during my first years in the sphere. SQL is just operations on sets. You twist, turn, filter, and flip them in different ways… it’s like solving a puzzle. Cutting it short, I really like SQL.

Despite all this, I do not have a “favorite” language. However, there are languages that I really like. I have more than 20 years of experience in Java programming, I am a Java guide. But I understand that there are better languages. For example, Kotlin and Scala. They are both compiled in Java byte code, that is, they have Java under the hood. But the languages themselves are more fun.

Kotlin is simpler. 

It is almost the same as Java, but it is more compact, concise, and not as verbose as Java.

I have no experience with Kotlin, but knowing its peculiarities, I understand it is more fun than Java.

I also have experience working with Scala.

But it has a completely different paradigm. Java is an object-oriented language, and Scala is a functional language. It supports the object-oriented paradigm but is more focused on functional programming and requires a very “big head.” 

I have practical experience with it, but I understand that while I generally consider myself a very good engineer, I’m not a senior at all in Scala (I’ve only been working with it for a few months). More experienced guys reviewed my code, commented, and suggested tricks, which sometimes would blow my mind. I really like Scala. But I also understand that it has its flaws. It is slower than Java. 

On the projects where I had to code myself, Python was very good. 

Modern technologies mean you don’t write big systems anymore. You write a big system that consists of small services and small components. And as those components are so small, using a simple language for them is very natural. For these tasks, Python is just perfect.

Rust

On the project I’m working on now, they ported many components from Python to Rust. I haven’t seen Rust before. And since I am now a member of this product, in a new team, I have to understand this technology, so I read about this language, and I liked it. It is something between Scala and Python. So now I want to know it better, but my role means I’m more of a connecting link between management and the team, so I haven’t seen anything on the project besides SQL yet. That is, I do code reviews, but I haven’t yet touched Rust with my own hands. However, even watching it, I understand that I like her.

It is very difficult for me to say which language is my favorite because I have experience in Java, I met Rust a month ago, and I really like it, and five years ago, I got to know Scala – I read documents and did some exercises and often was amazed by it. They are all fun in one way or another.

About different roles in a team

I really like to code. There were projects where I was a team leader or a programming manager, where I could carve out about 70% of my time to sit and code. But I understand that there are project needs and work apart from coding needs to be done.

You don’t necessarily need to write programs if you are a programmer. Sometimes you have to sit down and put something in Excel. It’s all about balance. If you need to do something once, it is clear that you will do it faster in Excel. If you see that it is turning into a routine and you are constantly copying and pasting, it is clear that you need to work out some tool to automate this process. And here, you have to decide, and sometimes it is more effective to do some “manual labor.”

Sometimes, you can write something in the command line and quickly send it to the client. But if this is something that you need to do every day and you understand that you spend 15 minutes a day on it, then you write a button that will do it for you in a second. It’s even better without a button, so your tool works according to the calendar and automatically sends everything to everyone needed.

What if you weren’t an engineer?

possible futures

I thought that when I grew up, well, when I retire, I would teach kids at school. 

And also, after the 9th grade, I had the idea to enter a school for artistic woodworking. One of my hobbies was making furniture – I made a bunk bed, a desk, lockers, a compartment wardrobe, and a lot of everything. This is one of my hobbies that stayed a hobby and didn’t become a profession.

So, if it weren’t for programming, I would do something with my hands with wood. If there were such a world where there were no computers, I would pick something where I would work with my hands, I would make something with wood.

And again, I like to cook. But I hardly see myself as a cook. More likely, I would keep a small hotel somewhere in the Carpathians, on the bank of a river. Some kind of an eco-hotel in which food could be offered. This is how I see myself. But I understand that now I have much more, so this is just a thought out loud, an idea that may have been embodied in some parallel world.

Parallel worlds? Do you like sci-fi and fantasy?

I love fiction about technology and space travel. Something like Asimov and Heinlein. I’m not a fan, not like the guys from The Big Bang Theory, who were wild about the whole subject. I’m not like that, but I know some sci-fi stuff. I really like Star Gates. I often wonder how everything might have been if

However, reading to me is hard work. It has to be a very interesting book to make me want to read it. But I really enjoyed some things by some authors, and they were worth my pain. Anyway, my love for sci-fi and the technologies described by the authors was not the reason I work with technology today.

What was the reason then? How did it all begin? 

After the 9th grade, I planned to leave school and study at a professional college. I had a certificate of incomplete education with honors in my hands, and I thought I could draw (like, I had good marks in drawing at school, not that I graduated from an art school). Apart from that, I took some private drawing lessons. 

But it was the 90s and, I understand, it was difficult for my parents to let me go, and there were only four such colleges in Ukraine and all of them were in the western part, like 800 kilometers from where I lived in Dnipropetrovsk region. 

My parents couldn’t send a 15-year-old child somewhere that far away. Especially if we consider that it was 1992 and the Soviet Union had just collapsed, nothing was clear, and there was no money… So, today I understand my parents. They manipulated and lied a bit (there were no direct forbidding me to leave); anyhow, I remained in the 10th grade. 

I stayed, and this was when computer science began. My school had computers, and there was even a programming teacher who was passionate about programming. At that time, the BASIC programming language was still used in those primitive Soviet computers.

computer class in 90s

And I remember the “click” in my head when my teacher explained to me the principles of both the branching command and the looping command. As soon as I realized this, I started doing all sorts of things; I even outgrew that teacher, who was amazed at my programs. And I really liked it. I had spatial thinking, and I could directly think with those programs.

Maybe I like SQL so much for that reason because I can take one set, or another, wrap them in my head, and just make an SQL command.

Having this experience with your parents, do you have some tips on relationships with kids? 

It has never happened that I took some list of virtues and qualities, sorted them, filtered them, and decided to push them into my kids. I just live my life, being honest, because it is clear that they learn not from what you tell them but from how you live. 

I understand that your behavior, lifestyle, virtues, and drawbacks greatly affect your kids and can be taken as an example or an anti-example. The fact that you live well and behave well with others can be taken as an example, and some of your less attractive traits can be taken as an anti-example. 

That is, even if I act not good, it might as well teach them a good thing, and they won’t do that. Words don’t work, as dad and mom always say something stupid. But, our way of life, the way we treat them and each other, they can see it, and it finds reflection in their souls. 

I tried to invest in their education. Although, it is clear that in Ukraine, it is more about investing your time and not money. In the USA, education is half a million dollars, so that IS an investment. With us, it is cheaper and more about taking children to sections, schools, groups, etc. 

I tried to give them opportunities for development. We offer choices; we don’t say what they have to do. I put them in a music school, and I’m sure it greatly developed them. I am more than certain that they discovered some qualities there. For example, they understand what dilettantism and professionalism are, and they understood this at the music school. And it was not me who instilled it, it was not me who sat and told that “if you do something, do it well.” But I created such conditions that this principle grew on its own. Now I see that this idea was developed in them. But through my actions, not my words.

Let’s talk about the future. What do you think of quantum computers?

I don’t have a deep understanding of quantum computers. It’s not that I don’t see myself in the sphere, it’s just that I don’t have that feeling that if you don’t run there right now, you’ll get old and be left behind. But I know for sure that there are tasks that a quantum computer works on very well. It is good at sorting out options. To solve such problems, we will need quantum computers in the future. But there are tasks that it is very mediocre at solving, if not worse than ordinary computers. So, there will be both. Moreover, a quantum computer is driven by an ordinary one. It is evolving. Maybe when artificial intelligence is combined with a quantum computer, if possible, that will be cool. More precisely, that would be a disaster, or it would be very cool.

Musk reported that the first neurochip was recently implanted in a human brain and that the person is doing well so far. Any thoughts on that?

are neurochips safe?

I heard that a bunch of pigs died as a result of experiments with neurochips. And the pigs were also alive and well at first. So, let’s wait. 

But what I’m sure of is that cyborgs are the future. I think that after this war, we will see a lot of cyborgs. We will see computerized human bodies. Prostheses attached to the brain — all this will happen.

I think that artificial intelligence will develop to such an extent that humankind will have to catch up with it, and the only way to catch up will be by becoming cyborgs ourselves. We have a very powerful tool, the human brain. Although it is very powerful, it doesn’t do well with some tasks. It will have to be boosted in some spheres, we will have to help it bring it to a level where it can compete with artificial intelligence.

This quote is so cool that I want to put it as a header so that people come to read the article!

No, wait. Come on, there better be something about engineers and responsibility. Because I fantasize about cyborgs, while engineering is my everyday life. 

Let’s imagine clickbait will work, and people will be lured into the article about robots, and here I tell them about responsibility and that you have to do things you don’t like very much.

robots and cyborgs

What should we expect of AI?

I was once asked to be a technical consultant for a project that was developing a product based on artificial intelligence. So I told them: “Boys, the first thing to do is make a breaker. To immediately isolate or completely shut it down if something goes wrong.” It was a joke, of course.

But I would say the probability of AI becoming something Terminator-like is 50/50. AI can become a very cool tool and can also turn out to be a global disaster.

Want to work with us?
Book a call