The work of a software engineer can be greatly different depending on the nature of the software you are working. It’s not the same working on projects, like consulting, or working on products, like big companies that have B2B or B2C products. In products, you work for an undetermined duration of time on the same thing, and you see how it evolves. The objective of a product is to keep existing and generating profit for its stakeholders. There is no finish line, no deadlines beside the ones we create for our own sake.
I’ve been working with SaaS product companies for 5+ years now. The same as many engineers in our generation. This seems to be the path in the future following the great success of Web 2.0 and also with newer technologies in Web 3.0. In the last 10 years we have seen an explosion of SaaS companies, and it seems it not slowing down. There are always new problems to solve, new markets to enter and conquer. Salaries are growing as well for those able to tap on to it. Great product engineers can be game changers for teams.
Teams who are working on user-facing features, collaborating with product managers are environments where product-minded engineers can have a huge impact. They often become key contributors, the goto people for product managers and frequently advance to being team leads. — Gergely Orosz
In this article, we’re going to explore what’s the nature of product software development and how to be a great product software engineer.
Outline:
- What is product development and how it’s different.
- Acquire business and product knowledge
- Communicate and build relationship outside engineering
- Ownership and delivery of value
- Be the bridge between product and engineer: providing insight and decision-making
What is product development?
What’s the difference between product development, from other kinds of developments? Good products endure, so you and your team will be working on this same codebase for a long time. Every decision needs to weight the needs of short-term and long-term.
Other dilemma product teams facing is decision of pleasing specific clients (specially in B2B business) and building generics features that can be scaled up to numerous clients. Sometimes big clients have bigger voices inside companies, and we endeavor to please them and keep the business growing.
In face of those facts about product development, let’s start to understand how to be great engineers in this environment.
But we all need to be good as product engineers? Can’t we just be engineers? Yes, the world don’t need all the engineers to be product engineers and companies will benefit from a variety of profiles. However, product engineers can have a massive impact on product companies, you should consider evolving in this direction.
Acquire business and product knowledge
Everything starts with your interest about the business and the product. This will be key in the future for increasing your participation on these matters.
Start asking questions and understanding why things are they way they are. Asking questions in meetings can be a great way of increasing all the team knowledge about the business and product. PMs will gladly give you this information and consider this productive to the team.
Good questions to start using:
- How this feature help us achieve our goals?
- What use case we are attempting to support with this feature?
- How this feature is going to impact our users?
It’s important to understand the base of how the business works. How does your company make money? How your company compares to competitors?
Here are some books that can help you start understanding the business:
- The Lean Startup
- Blue Ocean Strategy
If your company is serious about building products, it will probably have many metrics about usage and users. Keep an eye for that, so you have access to raw data, and not only the other people’s interpretation of the data.
Communicate and build relationship outside engineering
No one has a full view of the product or the business. The company is a network of contributors interacting. This is why it is indispensable to have relationships and learn from everyone.
To navigate the complexity of the company, you must be able to navigate different areas and talk with different people.
Product managers are the ones working actively in the product. So to contribute with them, you must create a good relationship with them. Get feedback about your contributions to find out if you have a correct understanding about the product.
It’s not only PMs that interact with the product. Managers, business analysts, data scientists, data engineers, customer success, sales, executives. Everyone has a piece of the puzzle. Focus on what it’s more important and filter out the noise.
Ownership and delivery of value
After learning about the product and creating relationships with product and business people, the next step is owning the delivery. You should understand how things are deliverable and own this process.
This means not only coding your features, but also monitoring and evaluating them. Are the features being used? How is the feedback from customers?
To be effective in product development, you need to assess that by looking into how the process is evolving and how features are being used. There is no point at optimizing at the coding level alone, you have to work with peers to optimize at the value to the client level. For this understanding costs of delivery and how to effective get features to client is a must.
Be the bridge between product and engineer: providing insight and decision-making
After your recent acquired knowledge of the product and the delivery, you should be able to contribute by discussing solutions. You can understand the impact of changes, how solutions will impact the delivery and how to weight against the business value your team will deliver.
You can give estimates and provide feasibility analysis to better inform product managers. Not only that, but you can figure out ways of monitoring feature usage. You can give insights about the cost of development and how it can change with alternative solutions.
This is a great way of starting in the path of becoming a tech lead, someone that is a lead of other in technical and delivery practices. Often companies have tech managers and tech leads in their teams. Team managers are responsible for people and process, while tech leads takes on the technical and product aspects of the team.