What are the benefits of using a product approach in software development and how is this different from typical IT projects?
More and more modern IT companies are leaving behind old ways of managing their software business and turning themselves into product oriented organisations. Some of them are restructuring and replacing all project management related positions with Product Managers or Product Owners.
So what is the Product Mindset and what are the reasons behind its growing popularity?
Product vs. project approach
Let’s begin with explaining how those two differ:
According to the definition, A Project is atemporaryendeavour undertaken to create a unique product, service or result. A Product, on the other hand, is anything that can be offered to a market to satisfy the desire or need of a customer.
As you can see, those definitions are more complementary than contradictory. So, what is the point of pitting them against each other?
Customer Journey ©buildit@wipro digital
The difference between the two approaches is subtle, yet fundamental. The product approach emphasises the commitment to focus on the customers and their business objectives. Another important aspect is the temporariness that is built in to projects which often drives short-sighted, tactical decisions. In some cases, this will still be successful, however building a product is more like a marathon, than a sprint and prioritising quick wins will likely backfire on you sooner or later. It may lead to building technical debt resulting in quality issues, difficulties with scaling, bad user experience, etc.
In the product approach, the typical project management success criteria are often neglected. We tend to care less about delivering fully on the scope that we initially defined. The delivery schedule also isn’t carved in stone as our primary goal is to satisfy customer’s needs.
Let’s look at how the above affects specific stages of software development.
As Peter Drucker once said:
There is nothing quite so useless, as doing with great efficiency, something that should not be done at all.
This thought is also reflected in one of the Agile Principles:
Simplicity — the art of maximising the amount of work not done — is essential.
Sounds obvious, however experience shows that it is difficult to answer the question:Which features will encourage a user to choose our product over others available on the market?Or even more importantly:Which features will make a user so happy with the product that she will recommend it to a friend?
With a product mindset, you should spend much more time figuring out: “Who is the customer?”and “What is the purpose of our product?”,before diving straight in to designing features or creating the system’s architecture. Two artefacts that will help you get closer to answering those questions are:product visionandpersona. A well described vision is a glimpse into the future to describe the positive impact the product should make. It will also help to define what is the expected user experience when interacting with the product. A Persona is an imaginary user of our system that will help us to better target the features of the product to a specific audience.
Personas representing target users of our product
Another powerful tool worth mentioning is thecustomer journey. It combines the product vision, personas and user interactions with the system and visualises it all on a single timeline. This helps to identify and plan features which can create positive emotions and experiences at each stage of interaction with the product. The Customer Journey map can also help you with setting priorities when creating the features roadmap. It can also help to align the whole product development team when it comes to contextualising customer needs and business priorities.
When you have your product vision statement defined and the strategy to conquer the market is in place, then the time has come to verify your assumptions regarding the product.
Interactive product mock-up ©buildit@wipro digital
Modern prototyping tools (like UXPin, InVision) allow fully functional, interactive user interfaces to be created in no time. This enables you to verify your hypothesis regarding user needs with test groups. With a few iterations, you can quickly see if the features and/or look & feel of the product meets your customers expectations. The product can be tweaked until the test group is satisfied and you can then move on to the construction phase. This prevents wasting time on building features that no one needs or likes.
Prototyping also eases communication between engineering and the business. You are able to engage customer representatives early in the development stage and invite them to co-create the product with you. It is much easier to work with a tangible prototype than written requirements. Getting feedback is quicker and the suggestions tend to be of higher quality.
Prototyping also significantly enhances creativity as this way of working is more inclusive and we can engage wider groups of people with different backgrounds and skills. They can provide their opinions after interacting with the product without having technical or domain knowledge or requirement management experience. Listening to these suggestions and pain points can save us enormous amount of time compared with having to do a redesign in a later phase. In addition, you may get completely new ideas for functions and features that you might not have thought of otherwise.
In the product focused organisations , Feature Driven Delivery (FDD), is often used — building and releasing functionality incrementally. The product is decomposed into items that are relevant from the customer perspective, prioritising them based on business value. It is important that the product backlog is populated with items that provide a description of the system behaviour, rather than purely technical tasks — which will ensure we focus on business value first. Any Prototypes created in earlier phases can help describe the desired functionality better than words alone.
In the product focused organisations , Feature Driven Delivery (FDD), is often used — building and releasing functionality incrementally. The product is decomposed into items that are relevant from the customer perspective, prioritising them based on business value. It is important that the product backlog is populated with items that provide a description of the system behavior, rather than purely technical tasks — which will ensure we focus on business value first. Any Prototypes created in earlier phases can help describe the desired functionality better than words alone.
Product oriented organisation
To make Feature Driven Delivery work, it is necessary to ensure that your organisation is prepared to work in this model — you need to ensure high quality (automated testing) and efficiency of software development process (CI/CD). Transforming an organisation into a product-oriented one, often requires changes to its structure. You need to build long-lasting, cross-functional teams capable of delivering product features that will often need to slice through all the layers of your software stack and touch multiple business domains. Doing this is very difficult to achieve with just a project approach due to its temporal trait.
When you decide to go the FDD way, first and foremost, the benefit will be the ability to get to market faster. The price you may pay for speed won’t be quality but it may be the feature scope of the product. However, this will be balanced out by reducing waste related to building unnecessary features in the early stages of product discovery. Gathering feedback early and pushing for high development process efficiency enables you to understand and respond to user needs faster than your competition.
The Product approach definitely won’t replace project management entirely in software development. In scenarios where budget and schedule are fundamentally fixed, project managers need not worry about their future!
On the other hand, if your goal is creating products that will delight your customers and win market share, then you should consider focusing your organisation on the product and deepen your tools for discovering where the customer value is.
Note that the product approach isn’t only for newly designed, innovative products — you can get great results with these techniques when refreshing existing applications or adding new features on existing systems. It can help you to select the most important features and update them one-by-one, in priority order, with less resources and without the need to wait for the whole scope to be completed.
Optimistic and enthusiastic (about code)
This is a powerful mindset and needed to survive the many failures which occur in software development. Ideas are tried and better ones found until you get one that works. Good developers find a solution to a problem, bad developers get blocked and beaten problems.
The Product Mindset
Focus on the outcome teams deliver instead of the output. Give teams the freedom and responsibility to think of a strategy they believe will result in the best product for our clients. Facilitate teams in setting up a process that supports them in building these products.
A project has a deadline and is more focused on cost savings. But a product mindset is more aligned with adding business value. It stretches your view beyond a fixed timeline and aids in a long-term vision.
If we compare the product vs. project mindset, projects progress with the silo approach. On the other hand, product mindset witnesses quicker business outcomes, improved customer experiences, reduced friction within the organization, and more flexibility.
It's important for software developers to have a growth mindset because it will help them learn from their mistakes, develop new skills, and make better decisions in the future.
- Most product teams understand the benefits KPIs produce, but identifying the right ones is a challenge that most struggle with. ...
- Key Considerations for identifying KPIs. ...
- Having a holistic view. ...
- Measure at all levels. ...
- Measure all areas.
This core difference between projects and products requires two different approaches. Project mindsets focus on time, budgets, and deliverables. Team compositions shift based on resourcing needs, and Gantt charts rule the day as it's all about execution and outputs. A product mindset instead focuses on outcomes.
Firms adopting product-centric delivery achieve business value faster and can course correct when necessary, further amplifying innovation. Depending on the business strategy, the approach might focus on client experience, customer journeys, or value streams.
And a project is unique in that it is not a routine operation, but a specific set of operations designed to accomplish a singular goal.” On the other hand, a product is a good, service, platform, application, system, etc., that is created, generally for sale, to meet customer and business needs.
Product-first companies have confidence in what they've built and, as a result, in offering a low barrier to entry. Often running a freemium model, they trust that the right people using and experiencing the product will purchase.
The Product Mindset establishes the link between the principles of products and the characteristics of companies. It provides a shared experience that connects people at every level of an organization and allows them to communicate and make data-driven decisions.
|Q.||Following are the characteristics of Project Mindset.|
|C.||Time, Responsiveness, Information sharing, capability, structured planning|
|D.||Time, Responsiveness, Information sharing, Processes, project planning|
|Answer» a. Time, Responsiveness, Information sharing, Processes, structured planning|
Fixed Mindset: I'm either good at something or I'm not. Growth Mindset: I can improve my skills with effort and practice. Tip: Ask children if they have ever struggled to master a skill, and then improved over time. Examples may include reading, writing neatly, riding a bike, or playing an instrument.
After studying the behavior of students and children, the term “growth mindset” came about. Simply put, this mindset means that you believe in your ability to become better through hard work, and help from others.
The research shows that a growth mindset can help build resilience, determination, and work ethic within students, athletes, and people of all ages. Carol Dweck's extensive research shows that building a growth mindset can encourage more learning actions, which helps people learn, grow, and get better.
You've probably heard the expression "think like a programmer." This means having the ability to see a challenge from one angle, then being able to take a step back and look at the same challenge from an alternative perspective. Do this over and over again until you find a solution.
Scientists have studied the effects of computer programming on the human brain. Coding does affect how you think and here is how. It's true: programmers think differently than everyone else. Not to say that programmers are necessarily smarter, more logical, or more rational than everyone else, as is commonly said.
Teach and Write as Much as Possible
Being a better developer is largely up to you. It's your job to improve your weaknesses and hone your craft. Being a better developer is an ongoing process that never stops, and writing helps you learn more. By writing, you force the boundaries of your comfort zone.
The popular SDLC models that follow sequential processes are waterfall model, V model etc. Waterfall model is also known as the traditional model, classic model, predictive model. It follows the top-down approach to develop the software, hence the name waterfall model.
- Identity and understand the right problem. ...
- Research the systems and practices behind the problem. ...
- Visualise the problem. ...
- Brainstorm creative solutions. ...
- Identify the best answer.
- Why coding is exciting. In my opinion, IT in general is exciting. ...
- How to make it more fun. ...
- Practice. ...
- Don't just read code, run it. ...
- Add a dose of fun to your projects or apprenticeships. ...
- Always challenge yourself. ...
- Create a personal project from scratch. ...
- Define a goal.
- Identify the problem.
- Gather information.
- Iterate potential solutions.
- Test your solution.
And though the act of logical reasoning has no brain hemisphere preference, coding strongly favored the left hemisphere, the area that correlates with language.
Developers learn to stop making assumptions because the result is incorrect software caused by their assumption. Every time you make an assumption, the risk its wrong. Any software you built on that assumption could be wrong and anything that uses that code could be wrong and will need to change.
Stubborn bugs, coding for extended time without adequate rest and non-correlating learning resources are the primary cause of coding stress amongst developers. By being aware of common stress triggers, you can apply the much-needed management solution to have a stress-free journey.
- Use existing tools. While poor craftspeople blame their tools, there's no doubt that good tools used well can make you much more productive at your craft. ...
- Choose high-quality tools. ...
- Use Code Snippets. ...
- Automate. ...
- Reuse past work. ...
- Write tests.
Good developers often have excellent technical skills and write clean, neat code. Their code is frequently well commented and can be easily understood by other team members, allowing it to be easily debugged. Good developers also show an awareness of their limitations and the technologies they haven't yet mastered.
- Learn a programming language. ...
- Figure out your end goals. ...
- Pursue a degree or take courses. ...
- Start practicing in your developer niche. ...
- Make a portfolio of your software development work. ...
- Develop your technical skills. ...
- Build your non-technical skills. ...
- Certify your skills.
The answer to the question “which SDLC model is the best?” is Agile. The Agile model is a combination of an incremental and iterative approach and is focussed on fitting in well with flexible requirements.
But these days in market the 'Agile Methodology' is the most used model. 'Waterfall Model' is the very old model. In 'Waterfall Model' testing starts only after the development is completed.