5 Questions to Ask – Does Your Software Dev Partner (Really) Know LPD?

5 Questions to Ask – Does Your Software Dev Partner (Really) Know LPD?

Lean Product Development (or Design), LPD, is gradually becoming a standard methodology in software development in much the same way that agile, scrum and lean have become industry standards. But, as is the case with other «standards» – many people say they have strong implementations, but if your product development team practices LPD principles, you might have trouble trying to integrate their approach. That problem can be troubling if you’ve invested in a rigorous, repeatable process for developing and releasing new software products and then find it difficult to find outsourcing services who understand your goals, your process and can work alongside your team seamlessly.

If you have software applications as a part of your services portfolio or directly to clients and use LPD methodologies, it is important to fully integrate your development team. But, if you are using an outsourcing service, what should you expect? How important is it to integrate your outsourced team?

A Little Level-Setting

In strict thinking, although the term «LPD» is used interchangeably for design and development, there are some differences in focus between the two in implementation. Both are based on Lean, the principles that started with Toyota Manufacturing and have evolved to embrace a process of finding solutions to customer problems that emphasizes iteration, reducing waste, and lowering risk. Broadly, both are informed by the Lean Startup Methodology, but because LPD has been adopted by many large organizations for the development of service and product lines, lessons from Lean Startup are brought down to the product level, rather than at a business model level as they are for startups. And, because we are specifically interested in services, software and software development, rather than manufacturing and the development of physical products, we can include the fact that all LPD implementations favor the use of agile, scrum and kanban as development methodologies.

As you might guess from the use of the word design, Lean Product Design implementations are focused on the design of the product, the user interface (UI) in software development terms and how the user interacts with the application. A process flow for a design implementation includes a growing system of sketches of screens (or modules), wireframes and design standards that evolve and become more specific as software development progresses through iterations.

Lean Product Development implementations tend to focus on the features required to satisfy user needs and product goals. So, while both implementations will use agile user story techniques, design-based implementations will be placed more in the context of the UI and user experience. Development implementations will focus more on groups of features and user goals. In practice, the differences between the two are relatively small and depend more on the full project team and their process than anything. A development team with clients that tend to be more visual, literal and unsure of needs may find it easier to be design-focused. A team with clients working on a business process and users with strong, informed opinions may find it easier to be more development-focused. And certainly, there are many blends of the two ways of thinking.

So, What Does This Mean?

There are many software applications that embody process and principles from a software product management point of view. How will they work for you if you decide to use an outsourced software development partner to help bring your application to market? Is one or the other better for software applications or integrating with software development teams? Are there methodologies or points to emphasize with potential partners as you discuss how their product development approach and experience?

From a high level, if your potential vendor has good product development experience and understands the product development cycle fully, the software you use for product management and the implementation of agile they use within their software development process shouldn’t matter a great deal – because they should be able to be flexible and do what is necessary to integrate the teams. If they are using something out of a book or a seminar that they have actually practiced a few times with a client – and that client wasn’t themselves fully committed to formal product management – it will be a distracting challenge for both teams to work through a methodology implementation while developing your application.

5 Questions for Your Potential Partner

Let’s start with a few questions to discuss. And a word about interviews: Don’t ask yes or no questions when you are investigating how a vendor operates and works with clients. Instead, ask open-ended questions that should be answered with more than a few words (if they actually have experience and formal services around the area they are discussing). If you don’t get what you feel is a strong answer, again, ask some open-ended questions that go down a level in detail.

1. Tell me about how you use agile in projects with clients practicing Lean Product Development?

The question here is not «do you use agile?» You need to know how agile informs their work with companies practicing LPD and what value they believe their implementation brings their customers. They should also include their practices within agile, such as scrum, extreme programming (XP), or kanban. If they don’t go into this level, ask another open-ended question for more detail.

KanbanSandwich

One of the many implementations that large organizations have used.

In most cases, scrum will be the task management and basic development guideline, but it may be extended by XP practices. Some teams will be familiar with kanban and some will mention that they might start with scrum and transition to kanban if the project uses a DevOps implementation aimed at continuous development. At a high-level, the choice between scrum and kanban comes down to a philosophy about work and how to manage tasks. Scrum is generally considered to be more structured, using time-boxed iterations (sprints) and depending on the team to properly estimate tasks for each sprint and with specific planning and retrospective sessions for managing task backlog and priorities. Kanban tends to limit the number of tasks a team can have in work at the same time and new tasks are pulled down into development as soon as a slot opens up in the queue. Kanban is generally more flexible for the insertion of new features and less structured, requiring more feature management to avoid creep before the base application is completed.

It is only a guideline, but most teams find scrum to be a good system in application development and might use kanban or a variation after full release when the application is in maintenance or continuous development. Again, team familiarity and experience in adjusting their «standard» implementation to your team is more important than the particular flavor of the methodology they are using. Process mockups and walkthroughs of feature and feedback flow between the teams is an excellent way to evaluate how things might work and adjust to situations.

2. How do you understand the MVP process in lean product development?

Iterative development of a minimum viable product (MVP) is critical in LPD and probably one of the least understood parts of the cycle by non-practitioners. It is also very hard to estimate effort and time for the development team because it involves an open-ended process with key stakeholders and users. The key issue is to understand what they expect and how they will help you towards viable iterations for validation.

If their understanding is more like the top example in this illustration than the second, it is going to require some real thought to ensure you arrive at validation releases that are fully-formed (loveable) but not feature-rich or too simplistic. This is an element of your work as a whole team where you can really assess the ability of your outsourced team to work fully as a partner in product development. Can they come up with creative ways to give a good representation of the core product to users with less effort and time? Can they see the evolution of ideas and pick out key elements in customer feedback? If you expect or have to micro-manage every iteration yourself, you’re not getting a fully-prepared software development team.

3. How will we capture and manage user feedback during validation and following initial release?

Now, of course – a developer could just say, «This is your problem, not mine.» To a degree, they would be right, but you are looking for partner-level answers that indicate a willingness to do whatever is needed to make the product development process work properly and to be in position for the long run if your product is likely to benefit from a continuous development/improvement, DevOps-type release. Possible answers can be all over the board from add-on services that support help desk and application feedback to in-app custom modules. At a minimum, developers should be «in the loop» during validation and early release to assure that application bugs are not being reported as feature requests or issues and a system should be available to allow users to see proposed changes and «vote up or down» features they would value.

Including the development team in the feedback loop has a cost, but it avoids a lot of thrash when a feature is not working as expected, allows the developers to be proactive with corrective actions and to understand needs directly from a user’s words, rather than summaries. Again, what you are looking for is not a specific answer but that your partner is willing and able to understand what you need from a product perspective and provide creative solutions.

4. What are our options for capturing user metrics?

This requirement is, of course, very similar to capturing user feedback, so solutions can range from custom reporting within the application to third-party services and application libraries. In this case, the richness of options is key so you can evaluate different aspects of customer acquisition, feature usage, time to complete a process, etc. These features don’t exist in «average» applications, but they can be added relatively easily during development, especially if you compare the effort required to add them at some later point. You will have to get into detail about the kinds of metrics you feel might be most useful for your application and situation, but a strong developer team should be able to give you a range of options for implementation and some sort of dashboard for generating reports.

5. What do you do to assure that quality issues don’t get in the way?

It may seem a bit off point to discuss quality in an LPD focused question set, but the quality is far and away one of the biggest issues when it comes to unexpected project delays. You can’t expect stakeholders and users to be fully engaged in the product development process if planned releases are delayed or major features don’t appear fully formed as promised. A really good application that is unstable or has a poorly designed user interface is a big distraction from the goals of LPD project.

Location & QA? - Successful Outsourcing - ScioDevThe best answers to this question include test-driven development, test automation, continuous integration and the tools that could eventually come into play if you choose to go into continuous development. The best case is to make this decision upfront, but things don’t always work out that way. Your primary aim should be to ensure you are in a position to move to that level when you need to without backtracking or having less than full test coverage and to leverage quality assurance tools and processes proactively from the beginning. Your team should be able to focus on feature execution and user experience as they do their acceptance and not buggy code or user interface inconsistencies.

The answers to this question should cover many of the issues of how teams will work and communicate. If they don’t, push follow-up questions in that direction specifically. If you have read anything about outsourcing, you already know that successful agile teams require strong open dialog and collaboration. Don’t let easy answers push you off this point. Understand fully how your project will deal with quality, communication, and ownership of the project goals.

There are a lot more questions you could ask, but these should get you started. The point is to have a conversation with your prospective vendor and come to an understanding of the methodologies they have utilized, the capabilities they bring to the table, and the customer experience you can expect. A conversation can clear up a lot more issues than a written response to an RFI or a proposal for work and give you a better idea if this is a group you can see your team working with. If you are actually looking for a long term partner and not just a team for a short engagement, it would be wise to have that conversation in person – in your offices or theirs. If it requires some travel, it is just part of the expense of finding a good match. It is much better to have your first face-to-face meetings in a positive, forward-looking atmosphere than when a project is underway and you’ve realized that a lot needs to be done to iron out issues.

Scio is a vendor of outsourced, nearshore software development services to our clients in North America. We provide teams with a background in Lean Product Development as a part of our service portfolio. We use agile methodologies and adapt them to the situation and needs of our clients. If you are interested in how we could partner with your organization to build a great set of new products – Contact Us. We would be glad to take the time to discuss your needs.

Lean Software Product Development in 4 Phases

Lean Software Product Development in 4 Phases

When you develop software products in a repeatable, production fashion, you have to step back occasionally and take the long view so you can properly discuss the process with clients. We’ve been involved in that exercise recently and I thought it might be useful to share the what and why of our approach to software product development for online products.

First, there is one basic idea that informs all of this:

We define the “Big Bang” Market Release model as:

  • A black-box project where significant work is done up front to bring together requirements documents which detail the features and functionality in great depth for a software development project that typically lasts from 12 months to two years.
  • The time expended on requirements development is expected to provide prospective developers with a very specific vision of the product that can be put out for bid, will put a box around scope, cost and time, and will last throughout the project.
  • On release, the exhaustive feature list is expected to drive market adoption and leapfrog existing competitors.

This is different from the closed box, rapid development method that is sometimes also called «Big Bang.» In that in that case, no time is expended on specifications or plans with users or clients. In Big Bang Development, the development team comes up with all the features and implementation based on a rudimentary concept, goes away, and hopefully comes back with something useful. To say we are not believers in this software development methodology is something of an understatement. It is high risk and low reward because the client does not fully understand what they want or what they will get.

In contrast, the concept of the Big Bang Market Release comes from the simple idea that a product can create a market simply by existing in a complete vision that will bring out buyers for a concept that may have never existed before. Specifying software product development in this situation is tricky. Apple has been the leading success story that is cited when this concept is brought forward. Companies that want to create markets, but cannot do the entire product development in house, strongly understand their need to reduce the risk of failure to realize their vision when the application is ready for release. And often, because of the technology and innovation involved, they know they cannot provide the in-depth technical oversight needed during the project. So rather than allow interpretation or adaptation during development, extreme care is exercised to write very specific requirements and lock them down.

Regardless of those worthy aims, these projects continue to fail because:

  • Controlling scope over the life of a project becomes increasingly difficult as the project complexity and time span increase. Prediction accuracy degrades geometrically over time – eventually yielding a project plan that can only be relied on at a high level.
  • Technology continues to respond to Moore’s Law. The longer the requirement development takes, the longer the project goes on, the less likely it is to meet the expectations of the market on delivery. User expectations have moved on, informed by alternatives they have tried in the interim. In addition, the technology assumptions at the beginning of a long, complex project don’t always work out when development actually takes on the complexity of feature integration. So the choice of a tool, framework, or library may seem like it solves a lot of problems at first, but in practice may turn out to be a black hole into which resource time disappears.
  • No matter how detailed requirements are – they are limited by two things: point of view (the classic story of the blind men and the elephant is the common point of reference) and actual feedback from end users of the resulting application. No matter how carefully feedback from end users is brought together for requirements, it is only as good as their vision of the final product. As we and others have said many times – if you asked people at the start of the 1900′s what they wanted for personal transportation – the requirements would only lead to better horses. It is rare for requirements to both anticipate user needs correctly and the complexity of delivering them in a particular way. The risk in requirements actually increases the more detailed they become – especially in cases where they are so specific they cannot respond to end-user feedback early in the development process.

So – what is the alternative?

Consider “Lean Product Development» as a base. We have developed an adaption of the lean concept to software product development that we have leveraged over several projects and across several industries :

Lean Product Development  Software

Lean Software Product Development

The phases and their aims break down this way:

  • Sprint 0 – During this phase, requirements are verified, technology choices are made in detail (architecture, stack), user stories are built (we use agile development techniques – user stories are roughly equivalent to use cases), and the user experience (more than just interface, how a user will use the product) approach is developed to set interaction standards. The outcome of this phase is a set of technical specifications, personalities (roles to a degree), and prioritized user stories with effort estimates for each story.
  • Alpha Version – During this phase, the underlying framework is built and core functionality is developed for key end-users. The point of this phase is to verify the product vision with the key audience of the application – the end users who perform the most critical tasks and use the application most. This means the alpha version needs to be actually be tried by the core end-users. This usually requires client partners – which in the case of a new vendor requires getting out into the market and bringing in some early adopters. The outcome is to lower risk. The cost at this point is low, compared to the whole project, so changes can still be absorbed without loss of large portions of developed code and sunk costs. Also, at this point, the approach of the development team in carrying out the vision of their client can be verified early – so that adjustments can be made and trust between the client and the development team can grow. This approach follows the sage advice articulated by Steve Blank – the point of early user validation is to get «out of the building» and get in front your audience early so they can inform development before costly mistakes are made.
  • Beta Version – This phase produces the first cut of the market version of a product. It is important to understand that the scope of this version is intentionally limited to just what is necessary to deliver value to end users. In other words – deliver just what they will use and PAY FOR. This is a critical assessment that is informed by both the vision of the subject experts and the feedback from the Alpha Version. The problem is, however, no matter how good the vision and feedback are, there will be additional feedback when the product hits the many different contexts of actual target end-users in the market. The release of the beta version also provides the “kick-off” of internal operations for the provider – and in the case of most products – support, sales, and marketing. The lessons learned from beta release then inform the next phase so that beta adopters are rewarded (and retained) and operations deliver the message and services needed to drive new customers and user adoption. Because of the incremental nature of agile-based release cycles, the actual point when sales are made during this phase varies a lot between products – but development doesn’t stop. What changes is that development is now more directly informed as new customers come on and participate in the beta. Some companies test pricing and marketing more aggressively at this point than others – but the general recommendation is to establish pricing early and test it against the perceived value from users. The outcome isn’t expected to be an adjustment to pricing directly but rather an adjustment of features or packaging to better align with perceived value.
  • Market Release – This phase marks the release of the full market product and the beginning of “normal” product enhancements to continue to grow functionality in alignment with user feedback. We sometimes add a phase for development up to market release itself that is separate from beta – but for general purposes – development has now slipped into an enhancement mode, rather than full out development unless there is a significant difference from what is planned for release to beta customers and the general market. The outcome of this phase is a product informed by target user feedback, tested business operations and a change of focus from getting the product “out the door” to getting customers and continuing to enhance features and functionality. It is not an end point – it is just the start of the natural evolution and “pull” of a “consumerized” online product.

The outcomes of this process are:

  • Early release and feedback from the people who count – the actual paying users in the field.
  • Early validation that both the vision and the requirements are resulting in a product that delivers value and will meet market expectations.
  • Lower up front risk and lower time to profit. Waiting over a year to put a product in the market with real users is a recipe for disaster. Getting into the market, proving operational assumptions and kick-starting cash flow as soon as practical is key to success. The sooner you get into the market, the more time you have to adjust to reality before your startup cash pile is burned up.
  • Simple – a higher chance of success measured by what counts – adoption, cash flow from customers and retention of users.

However, some of our customers face a little more difficult situation – they have an existing product in the field that started life as a traditional premise-based product and is now being pulled to adopt a more dynamic, online model. That brings an additional set of issues:

  • If the development cycle is long, existing clients may jump ship before the full online version is available.
    Support and maintenance of the existing product can overwhelm the key members of the product team that need to be available to shape the new product. Finding a point when transition can begin in an orderly fashion, without cannibalizing existing sales is critical.
  • The new direction provides an opportunity to develop new markets, adopt new pricing levels and transition to a pull-driven feature model (rather than the push of traditional product releases) but timing is key. For a complex product meeting the needs of the top of a vertical market this becomes a huge exercise and is frankly very difficult to break down into manageable pieces.

To deal with that we have a general model that takes the new product template above and turns it into a phased development of a suite of products. In the diagram below – you can think of each of the blue boxes as a modified run of the our typical product develop cycle:

lean product development software

Progressive development for a suite of online software products

The major steps in this are:

  • Sprint 0 – A holistic project-level requirements, technical specifications and feature breakdown that sets the stage for the entire project – but doesn’t lock assumptions down. The point of this entire project is as before, get products out early, get feedback and cash flow as soon as practical. This also includes a more detailed look at the first product in the suite.
  • Web Enhancements – This part of the first product release is optional, but worth considering as a way to ensure existing customers stay onboard for the long run and can see the long vision early – so they will become key in feedback as the product progresses through the lifecycle. What form this product takes varies, but the idea is to enhance the existing product with features that suit the Internet environment particularly well and extend it in ways not possible before because of technology or restrictions inherent in the on-premise version.
  • Broad Market Version – To allow early feedback and to get into the market as soon as possible, the first product needs to be a focused subset of the expertise expressed in the legacy product that addressed the top of the market previously. Generally, this means providing a set of features that will provide value for the 2nd and perhaps 3rd tier of the market. Again, all the points of a typical product release as we first described need to happen in this release so the product is informed by actual end-users in the target market – which coincidentally is a new market for the vendor.
  • Professional Version – Building on the same code base as the Broad Market Version, the professional version targets the features which will satisfy 70-80% of their installed base. This sets the stage for migration and broadens potential adoption by a group of customers who will pay significantly more for the value the product delivers. This also marks the point where legacy support and maintenance can begin to turn the corner and clearly move toward the new product.
  • Enterprise Version – Again, on the same code base, enterprise functionality is added and now the entire “product suite” has reached levels of functionality never achieved in the legacy version. Users pick levels by feature packages within the suite – so if properly architected – there is a lot of variation in pricing and packaging possible to meet needs in different markets.

It should be said that the timeframes proposed here are generalizations and will vary, but – they are based on the assumption that development should focus on delivering features with value to end users. Everywhere else, the simple rule “less is more” should be followed with the leverage of services and frameworks wherever practical. The architecture needs to allow those services to be used as long as necessary, but to be replaced as growth provides the option to drive down the cost of service. It should also be said that features and customization in this approach come from choices of what is made available to roles in market packages and configuration – not separate versions.

Now, I’ll admit this is a big vision and a lot to absorb in any context – either as a startup or a software company with legacy products in the market. And – it is a big shift in how we have looked at software product development. It comes from our own experience of the issues we find repeatedly in the market. I can’t say it is an approach that every development group can provide successfully. It depends on making clear choices that will provide these outcomes and not waffling with half measures.

What do you think? Can you see your company going down this road? Can you see the benefits? Let me know…

Do you want to develop a lean software product? Contact us right now!