Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
Introduction
In previous parts of the âConsulting for Software Developersâ series, we focused on earning the clientâs trust and figuring out how to give them the best technical advice.
Now, we will discuss how we, Software Developers, can have an even greater impact on the product weâre building.
Previously, the subject we were concerned with was giving advice on âhow should the feature be built?â. Now, we will switch our focus to a much broader, strategic questions like âshould the feature be built?â.
If this sounds daunting, itâs because software developersâ job is traditionally regarded as technical and down-to-earth, rather than visionary work.
Actually, quite the opposite can be true! We will see how you can (and should!) think about the product on a much higher, strategic level.
We will discuss how we can develop a new mindset to:
- help our team ship the right product to our users,
- have more impact on the project,
- enjoy our jobs more, and
- become irreplaceable team members.
Before we jump in and see how we would go about that, letâs pause for a minute and ask ourselvesâŠ
Why should you care about the product?
In the first part, weâve discussed why software developers might want to become more than code monkeys on their projects.
One of the ways to have more impact is to think more broadly about the product development process. There are multiple benefits of us engaging in this process on a higher level than writing code.
We, software developers, like intellectual challenges. We do encounter a lot of them in our day-to-day work: thinking about the code, designing the infrastructure, double-checking the security processes, etc.
It just so happens that some projects, or at least parts of them, are not that challenging.
The client may want us to build yet another CRUD app in Rails for them. Or maybe they need to have some documentation prepared. Weâve all been there, right?
Whatever it is, Iâm sure you agree that some aspects of product development can get a bit mundane. We know that they are crucial, but still, we canât quite enjoy them.
If you switch your mind to thinking about the product as a wholeâââa new world of challenges opens up. There are a lot of difficult problems to be solved there:
- âWhy donât our customers behave the way we thought they would?â,
- âWhat would our users find the most value in?â,
- âHow do we figure out the optimal subscription fee?â, etc.
If you feel uncomfortable just thinking about these questions, thatâs exactly how you should be feelingâââthese are inherently complex issues and big challenges.
Leaving all these challenges for the product owner/manager to solve can mean a lot of wasted brainpower of the team, and a lot of additional risk.
Remember the feeling of crafting a beautiful piece of code and being proud of it for the next couple of hours? Or how you had this great infrastructure optimization idea that saved your company hundreds of dollars a month? How about that one time when you got great feedback on a code review from one of your senior colleagues?
Felt great, right? It sure did for me.
Now imagine the same feeling, but 10x stronger, when the experiment that youâve devised and developed evolves to be the most-used feature in the product.
Looking at the product more broadly than just from the implementation point of view can get really satisfying. You will be way more proud when the product turns out successful, and users leave great feedback.
Being involved in product development gives us a chance to extend the creative process beyond code.
It is an investment in yourself
We, software engineers, need to master multiple skills to do our job better. Some of them are domain-specific, technology-specific, some are related to software engineering principles in general.
Developing specific (narrow) skills feels more productive, and has an immediate return on investment in your current role.
Say youâve encountered an obstacle in your day-to-day work and feel like youâre lacking some technical knowledge. It would be a great idea to go and educate yourself on that bit. It can instantly unlock you and make you more productive. You gain a more in-depth understanding of the intricacies of the technology you use. It will help you in the future.
Just not the future in which you use a different tech stack.
Working on the more generic/broad skill set is, on the other hand, more easily transferable to other projects.
One of the examples could be learning how to communicate with clients effectively. Itâs something that may not be immediately useful, but it will prove invaluable down the path in your career. It wonât matter that your next project is built using a completely new technologyâââyou will most likely still need to communicate with clients and/or stakeholders.
I think that Product Development skills are as generic as software development competencies go. All software is created to be used by someone, so all software products need to keep users in mind.
Focusing on the product, and not only on the technology, makes your skill set more universal.
It makes you a more valuable team member
If you were a CEO, or a Product Owner who works with technical people on a daily basis, what kind of engineers would you like to have on your team?
Of course, theyâd need to know the technology. They would have to be smart. Any technical challenge you throw at themâââthey should be able to solve as quickly as possible.
But wouldnât it be great if they were more than that?
What I would want to see is people who are passionate about the product. People who care about the outcome. If they had great ideas, I would love them to speak up and help shape the product. If my ideas donât make sense, Iâd much rather have them raise objections early, than have to learn it the hard way.
One more thing to keep in mind is that for any technology X, there are multiple Senior X Developers âon the marketâ.
Senior X Developers who can help you think about and shape your product, on the other handâââthey are not that easy to find.
Keep thinking about the product, the vision, and the strategy. If you do that and engage in the product development process, you become much more than a software developer. You become a real technology partner.
It can make the product more successful
This probably goes without saying. If youâre trying to have a successful product, having a team thatâs fully dedicated to making it so will mean the world.
Sure, itâs usually not up to software developers to decide on the vision of the product. There may be cases where the decision maker is a visionary and having multiple people think about and discuss plans will only mean more noise.
Most of the time, however, the more engaged the team is in the processâââthe bigger the energy and motivation.
Sometimes all it takes for the product team to become successful is a brilliant ideaâââit would be a shame if you (or someone else) had one and didnât speak up.
And if the product turns out successful, well, itâs great for your personal goals tooâââthink new experiences, a more impressive portfolio, etc.
But⊠there may be implications
As soon as you start focusing more on the product as a whole and engage in the product development process, you may begin to see some changes in your attitude. There may be implications.
In some cases, instead of listening to the requirements and trying to make your part (code) perfect, you may actually try to avoid or defer implementing the feature in the first place. You will probably want to discuss it more deeply, and understand how it influences the bigger picture.
It may not mean you will get more responsibility (but you might), but you will certainly feel more responsible for the end product.
Also, it means you wonât get to complain about the uselessness of the new feature the Product Owner came up with :-). You may feel the need to discuss it instead.
Ultimately, you might see that you spend less time doing the actual coding. You might need to fight your internal developerâs instinct to start the implementation right ahead.
Objectively, itâs always better to avoid work that was unnecessary in the first place. Nevertheless, you need to keep in mind that your usual workflow might be affected.
But why would others care about your opinion?
You may feel comfortable giving clients/stakeholders technical advice. You have the expertise, and youâre pretty confident when it comes to the âhow to build stuffâ kind of questions.
You may well think that you have great ideas on how to put the project on the right track. But you feel this is above your pay grade. There are other people whose job it is to think about this stuff (CEOs, Product Owners, etc.).
They have more experience and know betterâââthey wouldnât care about your opinion, right?
Well, they probably shouldâââand is most cases they will. Why?
By the time you spend months working on a product, you get to know the system pretty well. Chances are, you understand the business domain too.
If you think about it, you are one of the people who know the most about the product your team is building. You might not know how users use the product, how it ties into the company strategy etc., but thatâs fine. Other people on the team (UX/PO) have these insights and can use them to make decisions.
But you do have a unique point of view on the product. You know how itâs built. You know whatâs easy and whatâs difficult to add.
For example, the product owner might have an idea for a feature, but assume itâd be a huge effort to build itâââso they wonât even bring it up. But you could know a way to do it in just a few lines of codeâââan effort that may actually make it worthwhile.
Of course, itâs best when decision makers have good intuition on whatâs easy and whatâs hard. But even if they doâââthey will never have quite the perspective you have. Make use of it.
You are an expert in building, and using, the technology
Software developers are, for the most part, digital natives. It means we use multiple digital products and feel comfortable in the landscape riddled with apps and SaaS.
We often have specific needs and use casesâââso we spend a lot of time mastering the tools and applications we use on a daily basis. This is our area of expertise, so we might take the time to figure out how these services work under the hood.
Software developers know and use a lot of digital products, so they get to know a lot of best practices, even without realizing it. We interact with multiple UIs, so we notice things that are annoying.
It would be a shame if we didnât use this expertise when building products for our clients.
There is one caveat, though. Software developers should be considered âpower usersâ rather than your average users. We need to understand that this perspective might be biased.
It is tempting to assume it is decision makersâ job to ask us for our opinion and incorporate our feedback into the product development process.
It may very well be true, but we need to communicate that we think about the product and have ideas we want to share. The more aware the Product Owner is of that, the more likely they are to solicit our inputâââwidening their perspective in the process.
Also, have them read this if you can.
If decision makers do not want to hear what the wider product team has to say, itâs definitely a red flag for the success of the product.
There is one more thing to keep in mind. Disagreeing with the Product Owner and undermining their ideas might hurt their egos, so you need to be tread lightly and be empathetic.
Objectively speaking, though, they shouldnât get defensiveâââitâs all about making the product successful. We all need to make sure the best ideas win, regardless of who came up with them.
If they do get defensive, or donât care about your opinion at allâââthatâs another red flag.
When should you do this?
Of course, not always will there be space for us to engage in product development process. Some environments will only allow software developers to write code from specs, while others are more conducive to having them influence the whole product.
We need to make sure we can help and make meaningful contributions before we decide to invest in that.
While there are no hard-and-fast rules, and it all is a spectrum, there are some general features of environments that are more likely to let you engage in the process on a more strategic level.
You will have more chance to succeed in favorable circumstances, such as:
- Smaller projects rather than huge ones,
- Newly formed product teams, rather than those that are stable,
- Agile environments, rather than ones with strict schedules and roadmaps,
- Products where quality is more important than time to market,
- Projects in exploratory phases (as explained in Kent Beckâs 3XÂ model).
This is not to say you have to be working on a project that meets these requirements to think about engaging in product strategy. However, if you are interested in product development, and the environment in which you are displays these characteristics, itâs very likely your perspective will be helpful and welcome.
How do we start?
So far, weâve discussed why software engineers may want to engage in the process of creating tech products on a high, strategic level.
But how do we actually go about doing that? Thatâs what we will be focusing in the next parts.
First, we will learn what Lean Software Development is, and how we can apply its principles to think about the product, generate new insights, and develop a new perspective to look at the products we build.
Then, once we know how we can think about the product, we will see how we can share our ideas with clients and stakeholders, and work with them to develop better products.
See you soon!
Why Software Engineers Should Engage in Product Development was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.