Get a DemoStart Free TrialSign In

Interview , Resources

6 min read

In this latest entry of our captivating interview series that focuses on major players in the global tech arena, we welcome Software Engineer Shaman Bhat. We will explore his career development, provide tips for aspiring software engineers, and discuss the key lessons he has learned in his software engineering journey.

Contents

Tell us about the business you represent, what is their vision & goals?

I work in the telecommunications and wireless networking industry. The company I work for is a major leader of cloud managed networking solutions for enterprises and small businesses. Our core vision is to revolutionize IT infrastructure maintenance by providing cloud-managed networking solutions that simplify operations and enable scalability. Our goal is to leverage the power of the cloud to deliver high quality automation and data driven intelligence to help businesses modernize and transform faster than ever before.

Can you share a little bit about yourself and how you got into software engineering?

I am a software engineer with over a decade of experience in the telecommunications domain. My journey into telecommunication engineering goes back to my childhood fascination with the ability to communicate with someone across the globe using nothing more than a handheld device. This early curiosity and passion for technology led me to pursue a Bachelor’s degree in Telecommunications Engineering and subsequently a Master's degree in Electrical and Computer Engineering from the University of California, Santa Barbara. I honed my skills in software engineering concepts as part of my university coursework and projects. I explored different programming languages such as Java and Swift while developing mobile applications. Additionally, I gained hands-on experience while implementing networking protocols with Python and Ruby and exploring machine learning libraries like TensorFlow for analyzing large datasets for signal processing. These learnings not only broadened my programming skills set but also solidified my commitment to software engineering as a career path.

What does your day-to-day responsibilities look like at your organisation?

I oversee the end-to-end process of designing, developing, and testing various cellular features across multiple hardware platforms. This involves collaborating with cross-functional teams to put together and execute plans for cellular feature development and testing. I lead new product development initiatives, working closely with product managers to outline product design, coordinate software bring-up, conduct thorough testing, and oversee the product's release to the customers. I actively address issues seen by customers and provide timely solutions to mitigate them. As part of maintaining the quality of our software framework, I conduct regular code reviews to assess and enhance the overall codebase. I also mentor and guide junior engineers to accelerate their learning and contribution.

What notable software engineering challenges have you overcome? What did you learn from these experiences?

One of the earliest challenges I faced that built a strong fundamental understanding of software engineering was the issue of scalability and framework design. In my previous role, I was tasked with the integration and development of a framework that allowed multiple user roles to access and install different versions of 5G firmware on our base station hardware. I had to build this on top of an existing LTE code base to be backwards compatible.

However, I noticed that a lot of the code was not scalable to the new requirements and was poorly structured with lots of redundant function calls and heavily relied on usage of external automation scripts. I used this opportunity to revamp the design of the entire framework by proposing a refactor of the entire source code, integrating all external scripts or using them in the form of APIs.

This experience taught me the importance of continuously evaluating and improving existing codebases. It taught me decision making by assessing the trade-offs between maintaining the status quo and investing resources in restructuring the codebase for long-term benefits.

Implementing the refactor allowed me to understand the value of practical application of principles such as modularity, abstraction, and encapsulation. It showed me how following these principles can lead to more maintainable, scalable and robust software.

What inspires and energises you within your work?

Knowing that the solutions I provide enable connectivity for millions of people from all walks of life is the biggest source of inspiration for me. The fast-paced nature of the telecom industry keeps me on my toes. There is constant evolution in cellular and networking technology with emergence of new standards. The need to address complex challenges in areas like network performance and optimization provide an intellectually stimulating environment where there's always something new for me to learn.

In my work, I am constantly wearing different hats from designing cutting edge solutions to solving legacy product issues for existing customer. This helps me keep up to date with all aspects of a software or a product cycle. My team mates also inspire me as I work with some of the best minds in the industry and I get to constantly learn from them.

What advice would you give to someone wishing to start their computer science career?

Alongside gaining a strong understanding of computer science fundamentals and hands-on coding experience, I believe that finding your area of interest is equally important. Computer science is a vast field with numerous specializations and exploring various areas within computer science allows you to discover what truly excites and motivates you.

Young engineers should take the time to explore all the different domains and applications. Identifying your interests early on can guide your career path, helping you make better decisions about the courses you take, the projects you pursue, and the internships or job opportunities you seek.

What are some of your favourite programming languages and emerging technologies that you are enjoying working with currently?

Currently I work with a couple of languages based on the application, for instance I like Python/Ruby for their versatility and Python is my go-to for use in scripting and automation tasks, C/C++ for low-level systems programming and modem software and Java for android applications. In terms of emerging technologies, I'm excited about the advancements in 5G including network function virtualization (NFV), software-defined networking (SDN), and network slicing.

I am actively working on the transition to using 5G which is going to be the next phase in our progression towards unlocking higher performance with the latest cellular networks. This advancement is crucial for us to stay ahead of our competitors and provide the best 5G solution in the market.

Is there anything specific to your industry that affects your role as a senior software engineer?

As I mentioned earlier, with cellular network technologies like 5G, I need to keep myself up to date with the latest standards and practices and constantly update my understanding and implementations of the software solutions we provide to our customers.

Also, when it comes to telecommunications engineering, I cannot work as an individual contributor and I need to work with a lot of different teams such as hardware engineers, system engineers and network support teams to build a product. There is a good amount of cross collaboration needed to design, develop and implement the product technology. The solutions we provide are used by millions of people around the world for connectivity and as a software engineer I must ensure to integrate and test robust security measures for customer data privacy and protection.

How do you use log and metrics data to improve your workflow? Do you use a log management system or do you find manually parsing and filtering events to be enough to fit your business needs?

As providers of networking solutions for other businesses and enterprises, logging system data and subsequent analysis is essential. For instance, to monitor system health, we continuously log the metrics to identify the network connectivity stats for our devices. If we find any issues, we immediately collect and process the relevant logs to identify issues with our software.

In terms of log management system we use, it is quite dependent on the scenario that the logs are being generated in. We use a log management system that collects almost every measurable metric from the device and visualizes the different metrics in a more digestible manner. Using this data, we then make decisions on what specific parameters need to be looked at deeper. We also write and use automation scripts to process logs and derive meaningful information from it. For example, if we are trying to test the max throughput on a device and the device is logging a lot of warning/error messages, we run our scripts to identify the potential issues on the platform. To sum it up, we use both a central log management system and individual automation scripts to process logs.

What book are you currently reading?

For telecommunication, I recommend "Telecommunications Essentials" by Lillian Goleniewski and Kitty Wilson Jarrett. This is one of the best books for anyone starting in the telecom domain and trying to grasp the fundamentals of networking technologies.

I also like to read books based on economy or geopolitics. The book I am currently reading is “The Rise and Fall of the Great Empires” by Paul Kennedy. It explores how politics, economics, military and cultural factors affect the rise and fall of civilizations and surprisingly I find it is relevant even in our modern world today.

If you've enjoyed this interview why not read The Best Logz.io Alternatives or The Leading Observability Tools next?

Get the latest elastic Stack & logging resources when you subscribe

© 2024 Logit.io Ltd, All rights reserved.