Today we’re speaking with Roman Shmyhelskyi, an experienced Software Engineering Manager at Hitachi Vantara, where Roman has been driving major enhancements in web-based applications, including leading projects around metadata discovery and performance optimization. Working with JavaScript, TypeScript, React, Angular, and Node, he made effective architectural decisions and provided process optimizations which resulted in the shrinking of time-to-resolution by 25% due to increased productivity by 45%.
Roman has developed a style of leadership and strategic planning that instill a sense of accountability and ownership in his team members, with high-impact results. Prior to his current role, Roman held key positions at Io-Tahoe, and StruxHub, consistently innovating and creating excellence in software development.
You have been with Hitachi Vantara for over three years, growing from Senior Full-Stack Developer to Software Engineering Manager. Can you walk us through your career progression and highlight some key milestones that come to mind?
I joined this start-up company as a Senior Full-Stack Developer over three years ago. After the acquisition by Hitachi Vantara, I continued with the development of web applications. After one year at Hitachi, I was promoted to Software Engineering Manager. In this role, my focus shifted toward providing architectural solutions, growing our team, and making strategic decisions to drive our projects forward.
One of your major responsibilities was to oversee the integration of various data catalog products. What are some of the challenges that you faced in this integration process, and how did you overcome them?
One important problem during the integration of various data catalog products was to assure compatibility among different systems. This situation proved even more difficult down the road since it was hard to cooperate when different parties often had their own ideas regarding integration.
The problems were solved through regular cross-functional meetings and clear communication. The former helped align expectations of all stakeholders and the latter created a safe space where technical difficulties could be resolved together by choosing the best option.
You are working as a manager of a globally distributed team of software engineers. What strategies would you use to ensure effective communication and high performance from underperforming regions?
Probably one of the biggest challenges in managing a global team is making it feel like one big team. I make sure we have regular team meetings at common hours and that I organise activities that unite the team, such as brainstorming sessions and code reviews.
To avoid misunderstandings, we have clearly defined channels of communication; that is, everyone knows where to look for information in case something important is posted, rather than having it scattered across different chats. These strategies develop a sense of team unity across the regions and also ensure effective communication.
Currently in your job, you have recorded significant improvements in productivity and resolution times. Can you share some of the technical strategies or innovations that contributed toward these improvements?
There is no single silver bullet for increasing productivity, but rather several factors contributing to our improvement. Process optimization and standardization allowed us to reduce the time spent on different tasks. Code and architecture changes let us write new features faster, reusing existing components and microservices.
On top of that, better preparation before the actual implementation helped us to clarify all the requirements and create detailed plans that avoided redundant work. All these measures together have significantly boosted our productivity and reduced resolution times.
You have extensive experience in improving the quality of software development. In your opinion, what would be the key metrics to track, and how do you usually approach enhancing performance and quality?
We track key metrics such as defect density, automated test execution, and bug count. Also, we measure the performance of key features regularly before each release to make sure there are no regressions. These could be combined by following best practices in coding and code reviews, having automated tests, and embedding a culture of continuous learning and knowledge sharing. This helps us maintain high standards and continually improve our development processes.
You work on a critical data catalog reshaping project. What is the motivation, and how will this change be for your company in respect of managing data?
Ongoing product requirements drive us to continuous improvement of our technology. We are working on further speeding up, making it more reliable, and securing our software. In achieving this, we reassess our architectural decisions on a regular basis to correctly judge if we are in the right direction. By these enhancement processes, we enhance the management of data, quality of data, and processes. Thus, facilitating better decision-making and future innovations.
Having worked on different projects with cloud-native architecture and data security throughout your career, how do you think these fields have changed, and what might be some exciting further developments?
First of all, cloud-native architecture went from basic scalability and flexibility to advanced tools, such as container management with Kubernetes, serverless computing. Data security went from basic defenses to comprehensive strategies involving zero-trust models, state-of-the-art encryption. Looking ahead, there’s a few exciting developments I’m seeing: edge computing will become more common, bringing data processing closer to its source and accelerating it in the cloud-native architecture; AI and machine learning will improve threat detection and automated responses in data security.
The balancing act between innovating, making something secure, and keeping it compliant is important in software development. How do you balance these in your projects?
Innovation and balance are key in software development to make something secure and compliant. We achieve it through routine audits and compliance reviews that enable us to keep pace with industrial standards. Solution analysis software flags any potential loopholes for priority fixing.
Sounds like continuous improvement is a pretty common theme of your work. How do you drive continuous improvements for both software development and management of teams?
Continuous improvement does indeed lie at the core of my work, but change for the sake of change is counterproductive. To make sure changes constitute actual improvements, I set up metrics and feedback loops to identify problems and confirm that changes actually solve these issues. The key to all these will be open communication and collaborative culture across and within teams to bring out the problems, investigate the right solution, and implement it. In fact, the approach aids not only in finding and implementing the right solution but also enhances the team learning through the research and implementation process.
How do the different industries you’ve worked in have varying data and development needs? What best practices have you transferred from one sector to another?
Data and development needs vary across industries, which can create challenges with security, consistency, data location, etc. However, some best practices apply everywhere. It’s important to keep data secure with encryption and regular audits. Fast data processing and clear reports help us understand insights quickly. Additionally, customizing solutions to fit each industry’s needs ensures they are effective and relevant, helping us maintain high standards while addressing specific challenges.
