inhire.ioBlogJob in TechFrom open-source project to product

From open-source project to product

Job in Tech
25/01/2022

What does it take to build products in a software house company? Piotr Ryba, Tech Lead at VirtusLab, will tell you how Operator Service started and what challenges they were facing along the way from an idea emerging from the actual problem, resulting in creating an open-source project, to a product venture.

How does VirtusLab, a software house, approach building their own products?

At first glance, you wouldn’t consider VirtusLab a product company, because most of its revenue comes from providing software engineering services. We currently employ over 300 people and are looking for more ways to grow. A part of that effort is investing in R&D where ideas may grow into full-blown product initiatives.

Any VirtusLab employee can present their product idea and start a discussion which might result in a decision to build a PoC. That is when a high-risk, high-reward game starts and you can be sure it’s not going to be an easy one as the statistics are quite brutal – you can look up “startup failure rate” to find the exact number. I am a member of such a product initiative, currently on our way to delivering unique value to our target market (developers’ efficiency): Operator Service (https://operator-service.com/).

How was the Operator Service started?

It all started with a problem: managing multiple Jenkins instances is painful for engineers handling DevOps operations and as a modern company producing software, you need a way to automate testing, integrations, and deployment of your programs. For that, you might use bare virtual machines or Docker. You might even move to Kubernetes, as it comes with many benefits (for example in terms of availability), but it also adds its own complexity.

One of our senior engineers in the Cloud Space (a “space” is an organizational unit in VirtusLab) was inspired by the concept of a software operator, running on Kubernetes, that watches over your Jenkins instance. This led to the birth of jenkins-operator, an open-source project that, by now, is a subproject of Jenkins itself (https://github.com/jenkinsci/kubernetes-operator).

As the open-source project achieved some traction, at the beginning of 2021, a new product team was built, where we took what we’ve learned from the OSS project and put it into a brand new product, written from scratch. We’ve reached our 2021 objectives and are currently looking into expanding our team.

How is building products different from working on a customer-owned project?

When working on a customer-owned project, teams mostly focus on the delivery aspect of software engineering work (which often means coding new features). If you look at Scrum, preparing the Product Backlog is the responsibility of the Product Owner, Developers take stories and deliver them. 

In a product team, all team members are also involved in a process called Product Discovery. In a way, we’re our own “product owners”. Our objectives are defined as a business outcome, not only an output. We need to find possible solutions to a stated problem, run experiments and decide what to deliver to reach our goals and bring tangible value to our customers. Our most important stakeholder is the end-user. That is why we need to talk to them directly, conduct interviews, and ask the right questions. We often question what we are doing to make sure we deliver the most important work. “Why?” is probably the most often asked question (sometimes multiple times on the same subject to get to the real reason). That requires a totally different mindset.

Product teams require an open environment. It’s important to welcome all ideas and discussions. That sometimes means delivering constructive feedback — you have to be ready to receive it. Team performance depends on solid relationships. That is why effective communication skills matter.

The truth is, not everybody can be a good product developer, as one’s character matters. The ideal candidate has strong soft skills, good software engineering basics, and is eager to learn. Certainly, that holds true for any software engineer nowadays, since working on a customer-owned project requires these capabilities as well. Product developers also need to be able to deal with uncertainty and possess the desire to help the users, to address their problems. And they need to be able to devise how best to help them. If you don’t like talking with people and like to have your work well defined, you’ll soon start looking for an alternative. In VirtusLab there are many ways to grow professionally: both in soft and technical skills.

What are some of the difficulties that you had to overcome in your product initiative?

According to Marty Cagan (Silicon Valley Product Group, author of the product books “Inspired” and “Empowered”), four big risks need to be taken into consideration when developing products: 

  • Value – will the user choose to buy it?
  • Usability – will the user know how to use it?
  • Feasibility – can we build it?
  • Business viability – does it work for our business?

We don’t have to worry too much about feasibility, given our company’s background, we’re surrounded by engineering experts. For our team, the other three risks are the main focus. This forced us to move outside of our comfort zone, as most of us are cloud and software engineers. Business development, marketing, product management, technical writing, and public speaking are some of the areas in which we developed.

At the early stage of product initiative, we had to share common space when it comes to marketing, sales and human resources. It wasn’t optimal because our needs in terms of hiring and team structure are a bit different than other teams. Apart from developers, we need Product Manager, Designers, Sales, and Marketing Specialists – to appropriately address all of the product risks.

What else are you doing in Cloud Space?

We are working on projects for customers from, among others, the retail, logistics, and automotive industries. In terms of cloud infrastructure, we are a Microsoft Gold Level Partner in Azure, but also expanding on AWS and GCP. In our daily work, we navigate the cloud native technology landscape, always trying to stay on top with the latest technologies.

Also, in VirtusLab, we believe in the value of giving back to the community. That’s why the members of our Space are so active in that regard, organizing tech talks and discussion panels – sharing and exchanging knowledge is a win-win game, after all. What is more, we are working with universities to deliver lectures for students. 

The Cloud Engineering space at VirtusLab is constantly growing and there is room for developing your career in many directions. Ranging from Cloud Engineer, Data Engineer to managerial path. We support a transition from different technology fields to the cloud.

If this sounds interesting to you, we are more than happy to talk!

Check our profile & offers at inhire