React, especially with addition of Server Components and Server Actions, is quickly evolving into a full-stack framework. According to many software engineers (e.g. Robin Wieruch from Germany), once the most popular frontend framework, it has now successfully bridged the gap between frontend and backend to reign over both sides of the chasm. We will talk with our expert about the latest trends in software development and tools that are currently most popular and effective.
Serhii Onishchenko is a Senior Software Engineer with over 8 YoE in the software development industry. Specializing in JavaScript, React.js, Cypress, TypeScript, React Native, also Node.js, Express.js, and Java. Skilled in architecture design, team management, and Agile methodologies. Working for Caterpillar, he developed and maintained responsive and interactive user interfaces using React and TypeScript. He also optimized applications for maximum speed, scalability, and user experience.
While at ImproveIT Solutions LLC, Serhii developed and integrated features to manage financial transactions, reports, and analytics, improving the app’s financial management capabilities by 30%. Working as Senior Software Engineer for Eleks, he refactored the messenger screen using React, MaterialUI and Redux, resulting in a 63% performance increase. Serhii also developed the front end for an AI recognition device for QA and implemented new navigation features using MobX, leading to a 23% time economy.
Software developing tools are constantly being improved. Do you consider Java, React and TypeScript the most suitable for all modern tasks? What is the optimal skill set for a successful software developer?
As in real life, there is no universal tool for all tasks. You won’t drive nails with a screwdriver, will you? The same is true in software development. Everything depends on requirements and the team’s skill set will work on it. Today, there is a large selection of tools, so it will always be correct to first research what is new on the market and what best practices are currently being used. The choice in favor of new frameworks or languages should be very well-reasoned because a new product needs to be developed and maintained, ‘new’ always means not only new opportunities but also unknown risks.
If we talk about more trivial projects and the choice of what to use on the front end, I recommend TypeScript and React. I believe that this is the best combination that provides huge opportunities for scaling and development of the project. I often encounter the fact that some members of the team do not know TypeScript, but this is not a problem, since with knowledge of JavaScript, you can very quickly switch to TypeScript even in the process of work. React, if you don’t think about how it works under the hood, is not a complex framework in itself, and under the control of a good tech leader, it becomes a very powerful tool for the development of difficult solutions that easily develop into complex systems.
The choice of tools for backend development is no less important. Most often I recommend using NodeJS as it is the best and cheapest solution for developing microservices. The strongest full-stack developers are those who work with JavaScript and NodeJS. But there is also a big place for Java. All the enterprise solutions I dealt with were based on Java. Java has developed a lot in recent years and is becoming more understandable for beginning developers.
I would like to summarize and emphasize once again that there is no universal key, everything is very individual and depends on the needs of the business.
What achievements in your software developing career do you appreciate as the most significant?
During my career, I faced a lot of problems, and solving each of them was like a victory for me. At the end of the day, my job comes down to solving problems, and the more and the better per unit of time, the better. Perhaps my greatest achievement in my career is the ability to switch quickly from one challenging task to another, often under pressure. I went to this for a very long time to hone this skill. It helps me a lot in crisis management and helps not to carry work home. Thanks to this, I can help my colleagues qualitatively and solve various problems very quickly.
What is the most important in mentoring new developers?
The most important thing is the final result, and an individual approach helps the most in this. The first thing I try to do when I start a mentoring program is to understand what kind of technical background the mentee has and if it exists at all. Depending on that, the next steps will vary. I have the experience of mentoring people with those backgrounds and without it at all. For people who have previously worked with other programming languages, it is important at the initial stages to show similarities with the language we are learning. This is where the mentor’s experience plays a big role. Since I have worked with different languages, it is easier for me to give analogies. It is very important to explain to newcomers (without previous experience) that it is normal if something does not work out for them and that even me, having experience, sometimes struggle. I’ve seen many cases where beginners gave up because they couldn’t do anything. I can firmly say that instilling confidence in one’s abilities is one of the most important qualities of a mentor.
