Showing posts with label product. Show all posts
Showing posts with label product. Show all posts

Monday, April 13, 2020

Thoughts on Estimates

Estimates and a very huge concern for pretty much company doing business now a day. Especially during COVID-19 times I dont belive the questions like when something will be done will be out of the table soon.  However, is very hard to get estimates right but is possible to take action to reduce the blast radius of estimates and try to get something reasonable.  Today I want to share a short video I recorded some thoughts on estimates. If you are following up muy blog you will see these ideas were published in previous posts if you did not read my latest posts on similar matters you can read it here: 1,2,3,4,5,6,7 and 8. In this video, you will see why estimates often go south and what we can do to improve and deal with estimates in a reasonable way.



VIDEO


Estimates from Diego Pacheco on Vimeo.

Reference Books

The Mythical Man-Month
https://www.amazon.com/Mythical-Man-Month-Anniversary-Software-Engineering-ebook/dp/B00B8USS14/ref=sr_1_1?dchild=1&keywords=mythical+man+month&qid=1586822083&s=books&sr=1-1

Software Estimation: Demystifying the Black Art
https://www.amazon.com/Software-Estimation-Demystifying-Developer-Practices-ebook/dp/B00JDMPOVQ/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=&sr=

NoEstimates
https://www.amazon.com/NoEstimates-Measure-Project-Progress-Estimating-ebook/dp/B01FWMSBBK

Cheers,
Diego Pacheco

Saturday, April 4, 2020

Observability & Domain Observability: From Understanding to Value

Observability is a must-have a property any mature distributed system solution and/or digital product.  There is no way to "buy" observability, you need to earn it. Observability is like car insurance. No one likes to pay insurance, however, if there is a care crash you do really really want it. However, you cannot acquire the insurance at the very moment of the crash it does not work that one. The car insurance metaphor would work partially If you have a monolith system. As you have microservices, therefore distributed systems, you have many more failure points and in order to detect that the "car crashed" could be much more hard and complicated. There are many challenges in order to have observability on the system. The main idea is that Observability is something LIVE which means it is not a one time job. So you want to have a better understanding of your system via instrumentation which will lead to better observability and this loop keep going. Some time about I was blogging about Telemetry and microservice, so you might want to check this out here 1, 2 and 3.

 Observability Pillars

Observability is about Metrics, Logs, Traces, Dashboards, Alerts, and Testing. Logs are important for troubleshooting or debugging, however, you do not want to start with logs.  You won't start with alerts and dashboards; In order to have good alerts you need to know a couple things:

* What to monitor?
* What is an anomaly?
* How to fix it?

If you create alerts without these 3 simple questions is very likely you will have noise alerts, false positives and therefore alerts will not help you out. Dashboards are nice because you can spot patterns and during troubleshooting, you can correlate things. As I said before Observability should not be done in a waterfall approach, so you can start with something and improve as you go.

Traces are a great tool, traces are much easier to collect in comparison with custom metrics, which will require application/service instrumentalization.  Traces are good to see where things are getting slow considering you have several microservices downstream calls.

Domain Observability

Domain Observability is quite new. The idea is to instrument the application with domain/business metrics not only system or technology metrics. However, domain observability is a new tern the idea of sending business metrics to centralized telemetry solution is quite old.

Why domain observability is important? Because how do we know the business is being effective? How do we know that the customers are using the product? Opening some UIs more than others? So Domain observability has lots of relation with A/B Testing, Split Traffic, and other pipeline patterns.

Observability is about understanding the system and whats is going on, Domain observability is about understanding the business. Any serious product discovery person doing real customer science need to have domain observability.

SRE and Proactive Work

SRE is about keeping the water flowing into pipes. As plumbing is sometimes a few people care or see it if your site is down everybody will see and complain. Not only you will disrupt your customer's experience, loose money and even sometimes harass your brand. Digital products need to care about SRE and reliability.

Due to the Digital Transformation initiatives and waterfall approaches, deploys in production are often delayed and therefore Observability is delayed.  At some point it makes sense, why would you pay for something in production since you are not deploying anything there right? Right, however, observability is not only about "incidents" or "reliability".

Have you ever feel your development is getting slow, having issues to see where the errors are? Well, you might be lacking some Stability Mindset and practicesYou might have tests and still take a lot of time to figure out where the issues are this will slow down your team productivity.  Having said so, Observability is not a DevOps, Architecture, Product Discovery only but also an engineering practice in order to increase reliability of the system.

From Understanding to Value

Observability is about understanding, understand what is going on, understand how your system behaves, accelerate your troubleshooting when you are coding new features, understand how your customers are interesting with your features not only to prioritize features but also to learn more about your customers to deliver better solutions.

In that sense Observability shifts from a very technical thing to a business concern, central do deliver VALUE in Digital products. In order to deliver value to your customers, you need to understand, deliver as fast as possible, improve the solutions as you go. Observability and Domain Observability need to prioritize and taken seriously.  Have you ever start accounting how much money you lose with incidents? How much money you lose by hunting bugs? How much money you lose by searching where the issue is in your code?

Instrument the system, Observe, Understand and Repeat! That's the way to go.

Cheers,
Diego Pacheco

Sunday, March 22, 2020

Engineering requires more Science

Peter Drucker once said, "Culture eats strategy for breackfast". Technology is a very awkward field. In theory, we came from Math, science thinking should be our default mindset but we are far from it. We need science more than ever, as a society we are living a pandemic crisis, for sure will lead to some sorta ice age economical period who not only is never saw at this scale but also nobody can tell for sure what will happen. So yes, we need science because of the need for a COVID-19 vaccine and cure but we also need that in Software Engineering and Digital products. For some reason we are losing the basics, we are losing how to build software properly. Mostly because people don't understand how technology should work. Deming, one of the founding fathers of Lean once said Second-grade teacher creates second-grade students.  Crises times are often tough and difficult but for sure there are opportunities not only to improve things but also to re-think what we are doing.

Technology Flat Earthers

Flat Earth arrived in technology a long time ago with TDD and Clean Code. There is no scientific evidence proofing that 10-15 lines code means that the code is bad. TDDs claims to improve design but making features with tests. This is like losing weight by eating. What is funny is that in Flat Earthers there is no scientific proof and they believe just because they believe. TDDs/CleanCoders often fight like there is no tomorrow, and most of them never ever read the clean codebook. For sure we need a Detox.

I was thinking and actually is much worst them TDD / Clean code, our entire field losing senses. It's funny because we are leaving a technology moment where Data Science and Machine Learning are growing like crazy and are realities. So the question is why are we not applying Science to Engineering like we are going in Data Science?

We live in a are where everybody has an opinion and you need to hear people's opinions no matter is they are completely based on bullshit and people don't bother to even read 1 book or do any basic research. So I believe we are living a kind of middle age are of technology where there are lots of things we dont understand and we do not want to understand because we just choose to have feeling over-engineering, feelings over science, feelings over reality, feelings over sense.

Wrong values

Do not get me wrong. Collaboration matters, listen do your work-maters matter, however we need to be able to apply the right values. Otherwise, we will have very poor and mediocre results. For instance, it's important to everyone has a voice, for sure. But if you are saying 1 + 1 = 42. There is nothing to argue, there is no reason to listen and fulfill bullshit and fantasy. That's the big issue I see going one now, everybody wants to add value to the table, which is great but very feel and studying and doing the homework properly to do it so in the way that makes sense.

So going back to the values, what really matters? Have the FAKE sense of Adding value and being right and have an opinion or LEARN and do the right thing? Agile and Lean are about Effective Learning. In order to learn we need to be humble and say "I don't know".

Science-based movements

Deming was a statistician and Lean end up rasing from the manufacturing floor. Lean was always in favor of Data. Data Science is. In Data We Trust! Amazon, Google, and several SV companies are Data-Driven. DevOps is about data and is about proper learning.

Lean Startup is about experiments and assuming you dont know and you need to validate your assumptions with experiments. Product discovery goes on the same track, we need to validate our ideas with several experiments like User Surveys, Landing Pages, A/B/N Testing, Wizard of OZ and so on and on.  Functional Programing is based on Math. All new languages have functional programming concepts that are going more and more into the rabbit hole.

How to Improve? 

If you are an engineer get back to the basics: Algorithms and Data Structures, they matter, stop trying to fix everything with a relational Database and some old OOP language. Software Design matters and if you did not read it yet I recommend read the Philosophy of Software Design. If you are a Software Architecture you need to make sure you have clear and real use cases and do proper Trade-Offcs, Pocs and benchmarks to make sure you are on the right track. 

If you are a discovery professional like Ux or Lean BA you need to make sure you apply science in your experiments and follow the scientific method. If you are a manager do not manage by common sense in numbers, understand why something happens, work with RCAs, 5 whys and system thinking tools. Increase your talent density and hire engineers with a science mindset.  More process and control you have, more slow your system will be and worst results you gonna get. Sharing is caring, make sure information flows and there are regular training, Lighnigh talks, Dojos, Hackathons, Code Rethreads, Host meetups, and incentive open source commitment.

Cheers,
Diego Pacheco

Wednesday, March 18, 2020

Agile value delivery with Outcomes

Agile is +20 years old. Most of the companies did not get it. I'm glad to see the several new UX movements are getting it and are producing some amazing books, not limited to UX but in the helm of digital products and discovery like: Sense & Respond, Outcomes Over Output, The Hard Things about Hard Things and Traction. I read all these books and really recommend you read it too. So the big fight that agile started and Digital Products / Discovery carry on is, stop focusing in Features make sure you understand your customer and deliver real value. Deliver value is not easy and still something everybody talks but feel know how to do it. The difference between a successful startup and a failed one is the ability to execute well knowing their customer and making products they love. I made some previous posts in regards to other forms of value I recommend you check it out here and here. In order to deliver the value, we need to focus on outcomes and stop focusing on output(features). There is a good relationship between OKRs and Outcomes. Output has a strong relation with project culture and Management 1.0 which does not make sense in the digital world any longer.

What Matters?

Tasks dont matter. Users don't care about tasks. However, management still plans and thinks just in sense of outputs(tasks).  At the end of the day, there are few things that matter but we could consider for the business that what matter most is: 

1. Increase in Revenue
2. Decrease Cost
3. Increase new Businesses 
4. Increase Market Share
5. Increase Revenue from the existing customer base

Easily you could see like 2 things. Increase revenue and reduce costs. Focus only on reducing costs could easily create the wrong culture and deliver poor results. So ideally we should focus on increasing revenue with means Impact. Outcomes lead to impact. So the business impact is what matters most.  

Outcome and why they matter? 

Outcomes matter because it unlocks ways to RE-INVENT the business and deliver better and more innovative results. Even if you team is agile, most organizations are not agile and are super hierarchical. So it's super important that things start the right way.

So what are Outcomes? Outcome is a change in human behavior(final user or employee) that drives business results. Outcomes are things that people do that are observable and measurable. Why focus on outcomes now? Like I said before agile is saying a similar message for +20 years, building features does not work anymore. Look Lean Startup movement. Let's see a sample:

Impact: Reduce Costs

Outcome: Reduce the number of support calls

Output: Improve user usability on complicated features.

Using this Outcome formula we can do much better discovery planning sessions and roadmaps. Using outcomes make us focus and think on ideas and experiments to improve user experience. So Outcomes have a perfect marriage with Lean UX and Product Discovery discipline.

Relationship with OKRs

When working with OKR you want your objective to be Inspirational. However, a great practice is to use Outcomes as Key Results in OKRs. You can achieve better key results by asking the question: "What user behavior has this initiative created that drives business results?". This question is so so important because it moves us away from features(output) and makes us close to value delivery questions and experimentation.

One of the biggest OKR issues is that you can cheat! Easily you could shape your OLD KPI goals and tasks in an OKR language and format. OKR is not only about comunication dont be fooled by OKR nice communication what matters is drive business initiatives that create impact.

OKR's main goal is to make you THINK about your goals and have goals in an agile fashion. If you are not thinking hard about your goals and think in a set of experiments to improve things be careful OKRs might not drive the results you want.

Outcomes enhance OKRs and help OKRs happens in the right way. How that happens? Consider OKRs Key results and Outcomes, in other words, what user behavior change or employee behavior change that needs to happens to drive business results.

Outcome-based Roadmaps

Finally, when doing discovery we need to get away from features and tasks. We need to avoid the Management 1.0 trap.  One way to do it so is focusing on Outcome-based roadmaps instead of feature-based roadmaps. Feature-based roadmaps result in fixed price/scope projects, waste, low tech solutions, and poor user experience. In other words, Fiction, guess, Lies and other incidents.

It's important to plan a roadmap based on user journey using methods like *impact-mapping* or *outcomes-mapping*. Planning based on outputs limits team agility. In order to-do, outcome-based roadmaps you need to have a list of questions, possible will become discovery experiments, themes, and outcomes instead of a feature list. Outcome-based thinking is one of the keys to true digital transformation. You need to think that everything is an experiment and your colleagues and customers are outcomes as well.

Cheers,
Diego Pacheco



Wednesday, February 5, 2020

#NoEstimates: Forget Buildings and make Digital Products

This is a complicated matter. Every single company on the planet deal with estimates somehow and use some kind of estimates. There are people who are pro-estimate and belive giving an estimate is a professional thing and we need to do it and there are people who believe we need to reduce the number of estimates we do(I'm the second kind of people). Estimates often are wrong and incorrect. However, there are people who are really good on the estimate and get it right with very few error margins however when you look into details you might realize that being good on estimates might be killing your business. You might think is enabling you to sell more and get better but easily it could be the other way around, no worries I will answer why. This is a very hot and passionate topic so brace your self and let's go. Estimates are old, most of the time they are lies and they are not reliable however we continue to work with estimates expecting they will work when they dont work.


The Issue with Estimates

There are several issues with estimates, let's get started with some:

* Estimates are done when there is too much uncertain(Uncertain cone)
* Estimates are often done by the manager who does not deliver the work
* Estimates are often done when "requirements" are not clear
* Estimates does not take variation into account
* Estimates tend to be "underestimated" meaning always assuming is easier when is not
* Estimates tend to not count, judge or be cased on any concrete thing
* Estimates does not take continuous improvement into account

There are many issues with estimates. Several managers estimate things in hours or even minutes with makes things even more complicated and hard to make it real. Estimates are used for the wrong reasons like:

* Feeling SAFE
* Selling Software
* Measure of progress
* Return of Investment

Several issues related to Estimates are related to traditional projects. Projects are often problematic too because they make us go for (Escope, Time and Cost) instead of Value or Organic Growth of our product. Estimates make Investors and non-tech people feel "SAFE" because they know when will be over.  However great digital products are never over, so does anyone think when Facebook or Lyft will die? Does anyone estimate when your company will be over? I dont think so, A business is a "live" thing we assume it will never be over and we try to invent and re-invent the business so it never dies. If the business never dies, there is no over, if there is no over, there is no DONE if there is no DONE why do we need to know when the software is over? (Because it makes us feel better).

Most people and companies still do not understand software, people think they understand software but in reality, people see and threaten software as a building or a bridge. A building or a Bridge can only be used when they are over but the software does not have the same properties. What are the properties that software has:

* It's easy to change (compared with bridge and building)
* It can be used before the "whole" software is done
* Is cheaper when it is LESS(1-4 weeks), Expensivier when is MORE(bigger project - 1,3,5 years).

Software under the wrong architecture and full of Debt can be very expensive and slow to change. However, a good architect and managed debt software is super fast to change and allow fast cycles of innovation for the company.

Why we can only think about the "whole" software? Could your business start thinking in smaller batches(Lean principle)? Smaller means less investment up-to front, less risk, and fast LED time.

Commitment vs Involvement  


Estimates should be a "Forecast" which means it might not happen. The big issue is companies take Estimate as "Commitment" which means you need to deliver on that date - often called DEADLINES. In my experience what I see is companies producing because of results, because they want, follow they estimate like:

* Produce Poor Tested and Poor Coverage software
* Create more bugs
* Sacrifices user experience
* Build a mediocre product because only prioritize easy user stories which are easy to estimate
* Bad Culture: pushing talent away and getting old mediocre engineers

Estimates can be really demanding for your business. Pursuing bad target date will make you compromise things that might cost your business in a long wrong. Especially if you just prioritize Features and dont do refactorings, so in this case you are really creating a time bomb.

The #NoEstimates way

#NoEstimates like anything in Tech has a bad meaning. It sounds like we are killing estimates completely. Actually, #NoEstimates means reducing craziness. Reduce the usage of estimates and work in a different way, however, you will have a "forecast" and will be able to have some kind of "prediction" still gonna have issues and might not happen but is the best thing we have so far.

* Use User Stories
* Estimate every user story maximum 1 day == 8 hours effort
* Use Statistics or yesterday wheater technique
* Use Moscow and have: MUST, SHOULD, COULD Targets
* Use BurnUp release charts
* Have small releases 1 week to 1-month maximum
* Stop asking people to "estimate" things
* Consider the role of Variation

Software projects still focus too much on OUTPUTs and we should be focused on OUTCOMES/IMPACT for the end-user which matters most. Remember users do not care about features, they care about you fixing their problems.

The Role of Variation 

The hardest part of estimates is variation. We often do not control variation, variation is never taking into account when we do estimates. Variation is not necessarily bad. You actually need variation, this is the tricky part. What is the variation? Let's talk about some variations sources:

* New Technology
* Cloud Computing
* NoSQL
* Big Data / Streaming
* Machine Learning
* New Team Members
* New Markets
* New Personas
* Team composition (Add / Drop People)
* Domain Knowledge
* Dependencies
* Competitors
* Waiting For Availability
* Blocks
* Workload Factor
* User Story Size

There are many more sources of variation. Variation make our estimates to grow unpredictably. As you work more in the same: Team + Domain + Tech you tend to get better however do not think variation is the root of all evil because having no variation might mean super BAD NEWS for your business.

Why Getting Estimates right might kill your business

If I get my estimates right it means I controlled variation. Which is good if you want to create the same CARs all the time. Let's say you are producing TELSA model X cars, great! However, at some point, you will need to introduce a new model and innovate In that case you will need to introduce variation them your predictability will get low and there is nothing you can do.

Innovation means adding more variation and blowing up estimates. Diego, I', not blowing up my estimates, I always get them right, awesome. Are you using new and better technology? Are you improving your Ux? probably the answer is NO. Which is bad right, you are killing your business because you are not exploring new markets and maybe not growing. The selling feature has a very limit window of opportunity as you hit that you will be forced to innovate. This means, add variation and have estimate issues which are good because it means your company is alive.

The good news is this is the same constraint for all Tech and digital product companies so are fare for everybody. At the end of the day, dont worry much about competitors, worry about doing the right things and deliver great user experience via A/B Testing and Discovery Experiments, sound and safe engineering and be able to adapt and deliver fast - this better property then getting estimates right.

Cheers,
Diego Pacheco

Thursday, January 9, 2020

Breaking the Debt cycle

Organizations need Lean more than ever. IT became a huge waste factory. Software scale works backward, the more money you throw in, the bigger the project the bigger your risk and bigger the waste you have. The technology work backward because If you think about Milk, the bigger the scale the cheap is the price. I was wondering how did we get into the position we are. Tech debt does not describe debt anymore, we are dealing with a totally bigger order of magnitude scale of debt. Tech debt can be big but I'm talking something beyond big. Maybe at the scale that some governments have debts with the IMF. Why did we go south without noticing? I have some theories. Technology is like a time bomb, companies might start breaking because of it at some point. The debt become so high that multiple 3-5 years of investments might not be able to pay then off and business might start failing because of the bad technology practices. You might think I'm crazy. Because of business operates with products and customers. However, we need to keep in mind today most of the products mean == Technology. Therefore even if you have an amazing user base and the working product you might get stuck in a very dangerous cycle.

Success Definition

PMI says that a project definition of success means to deliver on time, on budget and with the expected scope. The PMI definition of success is hardcoded in the brains of most business organizations.

This success definition requires Estimates. Estimates are guessed, they never work but we still use then as they were something reliable(which they are not, therefore we cannot trust then). Estimates are often done by managers who do not understand how modern software developers, product discovery works and often that happens 1 year before the project start targeting 3-5 years duration. Why? Because finantial / sourcing departments believe that buying more software is cheaper - they are wrong, it's not, It's the opposite. As a software engineer, you will be PUSHED to deliver somebody else guess. This practice is being around for decades(2-3) and companies are being around for decades, companies buy companies that operate with the same principles so debt piles up like crazy.  It's would be much better to have another definition of success, being more agile and product-oriented rather than being project-oriented.

This is my proposal for a better success definition. First of all, we don't care about OUTPUT, only about OUTCOMES. So it does not matter if we get or guesses right(nobody does). What matters most is deliver value(Agile says that for +20 years and companies still did not get it.) Value can be perceived as different things like user impact such as improving user organic growth or reducing churn.  Predictability is value as well, however, in order to have it, you need several things in place. I will talk about predictability latter on.

Acquire New Skills and Culture are value as well. Several times companies fail to perceive the impact New Skills and Better Culture can have on results in the long term. These factors often are not taken into account to judge initiatives. This really does not make sense because people do software, so if your product will be defined by your people, if you do not worry about what skills they have and culture you really are neglecting results and creating debt.

Reduce Debt side by side with Reduce Waste are more important than ever. Technology becomes about waste, inefficiency, slowness, lack of delivery. Money comes in debt comes out. Debt needs to be managed and tackle with much more serious discipline. Successful product companies know that. In theory, everybody knows that in practice companies prefer to prioritize best which kills their speed to product value in a long rung.

Better user experience, it might sound funny but the industry still does not prioritize UX. UX is not only about to look and feel but about the whole experience from the tone, the interactions, how it works, how to fix the user pains and problems to how reliable, fast and great the product(system) is. More features do not means more. Users care about fixing their problems, not about number of features.

Predictability Iceberg

Every single company out there wants predictability. That's the only thing they see. However thats only the tip of the iceberg. I would not have enough time and space to draw and the universe that exists under the predictability iceberg. For most of the industry, this iceberg is very shallow and could mean simple and linear things like estimates, writing specs, having and architecture. Unfortunately, thing are more complex.


Predictability depends on a stable system, Dr. Deming said that ages about, companies still did not get it. I share very interesting Deming experiments on one of my previous posts. The stable system requires talented people working on the right roles with the right practices. Today is almost impossible to be productive without a proper cloud platform in order todo Deploys, Observability, Tests, A/B Testing and much more.

SOA plays a very important whole in this picture. having contracts and proper ISOLATION allows you not only to contain blast radius in case of failures but also to contain debt. Hiding databases are one of the most powerful architecture techniques we have. The main issue is 20 years ago have a central monolith database was the way to go and since the industry never much attention on this "debt thing" you what happed.

Proper Discovery might be one of the most important things you need todo. Discovery disciple allow you to answer the most important questions for your business continuity:
* Are we building the right product?
* Are we fixing the right problems?
* Are we targeting the right users? Do we know our users?
* Are we doing the right strategy? It's our MVP too big?
* What should I modernize what should I re-create?
* What are the right priorities?

Proper Kamban is the bread and butter of continuous improvements. If you are not doing continuous improvements you are creating debt. Continuous improvement is a nice and beautiful world to say but in practice, few know who to do it. Why? Because in order to tune the system you need to understand it very well. Improvements are done in several fronts by?
* Running RCAs(Root Cause Analysis) and preventing bugs to happen again
* Using WIP limits and control utilization and see bottlenecks and act on them(Test/Code, Acceptance).
* Having flow / regular cadence by having more queues and always improving explicit queue policies like the minimum number of tests, documentation, and review your own code before submitting to the Code Review Queue.
* Training your team and teaching then how to be more effective and productivity
* Having retrospectives in challenge your tools, process, and practices.
* Having regular DEMOS to collect customer feedback and improve the product
* Re-thinking your architecture in order to reduce complexity and boilerplate
* Creating generic solutions which reduce developer workload
* Having platform services to allow engineerings to be focused on the business.
* The list goes on and on...

Automation, Observability, Automated Tests, Templates, Guides. I will stop because this list is much bigger than the one I add on the iceberg picture.

Too Much Debt: Vicious Cycle

In the beginning, teams tend to be super fast. As time pass, people leave the company and the business change the code became more and more complex as a consequence the ability to quickly iterate and release software becomes slower and slower due to the debts.
The picture above show how LED time deteriorates overtime and entropy takes over at some point. Adding more people actually makes it worse because we are only adding more VENON into the system so it might speed up this death spiral. IF I dont have a stable system with 2 people adding 20 won't make my life easier, actually will make worst as debt will be produced faster and the need to coordination will be a higher price. In order to add more people properly without suffering you need:
* Great SOA Architecture in place with proper ISOLATION
* Great Talent Density
* Stable System

Without these requirements we are only making the bad vicious cycle spin.

As you produce Features DEBT is created(Did you know?) DEBT increases complexity, complexity slow down you productivity and you produce fewer features. This cycle tends to repeat ever and ever and companies dont understand why they cannot meet the deadline. One interesting factor is that as you have more teams you have more dependencies and if this dependencies are binary(share same tables, code bad, open tickets) you slow you progress and debt even more. Your dependencies show be services which are deployed and reduce the debt, therefore, speed your progress.

So what do you want to do is reduce the investment and maximize the impact and also produce little debt.


Higher benefits, lower debt, and lower investment should be your top priorities. But what happens if my initiative takes 5 years or more. Well, work with 3-month budgets which will help you to reduce the waste and maximize the benefit.

Unfortunately what happens is the other way around, where companies invest a lot and the benefit is not that big and the debt is actually bigger than the $$$ investment. Companies often not prioritize refactorings, re-architectures, and prefer to "integrate" on what they already have, this only pushes the problem to be bigger.  The issue is that the product might not see the benefit in playing the debt system not "perceived" feature/capability will be added to the final user however this need to be taken into account otherwise the long-tern ability to add benefit might be compromised forever.



Breaking Free

First and foremost education is key. Do you know how much DEBT do you have? Could you DEBT be paid by your investments? If you dont know your debt and/or is not measuring it effectively, you will be in trouble or maybe you already are.

Making hard calls like refactoring / re-architecture / re-design instead of integration and migration as-is or lift-and-shift are very necessary, even if they dont have ZERO new features. The feature is not the only thing that matters, seeing just features create huge hazard to the business.

MVPs are great tools. The main issues people don't know how to run proper MVPs. in order to run a proper MVP, you need to focus on a "small" movement possible, doing discovery we do MVPs without code and this are the best MVPs. MVPs mean validating assumptions which can be done by talking with your REAL USERS or running UX Research or A/B testing in production. You can do a software MVP but you need to reduce features and inside features, you also can do less.

Fixed Scope projects should be avoided at all costs. Cheap and "obey-only" vendors also need to be avoided at all costs because they create debt bigger than the benefit. Total Tercerization also does not work because a software company might have part of the puzzle and the business org might have the other part so PARTNERSHIP is the only way.

Small Budget allocations like (3 in 3 months) help to ease the financial pressure and also produce less debt and waste, movements like OKRs, NoEstimates, Byond Budget, Continuous Digital enforce this culture

Ultimately breaking free is not easy because require to convince a lot of people but I deeply believe we need to evangelize for change otherwise software might kill itself and take the business with it.

Cheers,
Diego Pacheco

Tuesday, September 24, 2019

The Modern BA Mindset

The "analyst" is a very old role. I really think the tradicional role does not make sense anymore, we should see analyst as a discipline/skillset and not as a role. If the last 20 years of software engineer teach us something is that engineers are in the best position to work on proper solutions, however, someone needs to worry and focus on the business problem. IF you are in an Engineering Organization, engineers are great as POS / BAS but if you are dealing with delivery discipline and working with non-it people, engineers might not have the best set of skills to do the business analyst part. However, there are many things BAs and even Designers(UX) can learn from engineers. For this blog post, I will like to focus on the skills and the transformation BAs need to face today to keep up with current market needs, innovation and competition in order to be ahead of the game.

The Issue with the Traditional BA

There are 2 kinds of traditional BAs. Both anti-patterns IMHO. First of all, that BA who focus on the solution and writes word documents in software factory formats following CMMI and RUP, these word documents contain IFs in structured Portuguese are completely wrong. Yes, there are still companies who still do that. The second anti-pattern is less complicated them the first one but still not ideal at all is the BA who writes what the business want.

You might be thinking, I thought the BA Role was about writing down what the business want. That's where the trouble started. IF The BA is just writing down what the people or the business is asking him he/she is not a BA, it's a secretary. No Har feelings about secretaries, Google will kill your job in 5 years but besides that, The BA cannot be just "talking" with engineer via word specs.

This is an issue because the assumptions behind the traditional BA role are completely wrong in our modern, product-driven wold. Why? Let's examine the assumptions first.

  • 1. We just need to "define" what engineers need to do and they will figure it out how to do it
  • 2. We don't need to worry about how it works, only about WHAT we want
  • 3. We already know the user, there is nothing to worry about 
  • 4. As soon as we define everything we can push engineers and demand delivery dates
  • 5. Once we define it we should not change it.
  • 6. Our process It's working, we are being successful, we should not change. 

Basically, these assumptions are very anti-agile. What this means? It means we are using our lucky and eventually we could run out of luck. Let's dive deep into these assumptions, let's start with "define". Well, there is no such thing. There is no defined. We can't define. Because modern digital products are more complicated than that, There are a million of variables like It's this aligned with product strategy? Is this the right feature? Are we targeting the right users? Is this well crafted? Would this scale? Would this be clear and easy for the users to use? How this will behave in iPhone 5? What about Chrome 71? Is the tone correct? Is this natural to the user? How much does this impact the user? Do we need UI? Should we really do this? We can go on and on... So basically we need a bunch of other disciplines and skillsets to "define" a solution, so really "define" is a hideous word. IMHO I prefer the word "discover" because it's more natural and realistic.

Secondly, the devil lie in the details. We need to pay attention to how we do things, execution is as much important as strategy. A good strategy with poor execution will produce poor results for the business. So yes, we need to worry about how it works. Not only because of the UX perspective but also because we might realize that we want is not possible, or it will work differently because maybe the are tech limitations that the business does not know. Maybe we don't know our users well and we need to understand them better to drive better solutions. So the best software product is the one who is user-centric with regular and short/frequent releases, we need drive A/B tests with users in order to figure it out what works best.

Know the user is something relative and it changes over time. Consumers change over time, there are forces that change people mindsets and what people value. There are new generations around(like gen Z, millennials), diversity is here. The past does not guarantee the future, so really the only way is to continuously innovate, continue to learn until the company exists.

Going over dates is the wrong outcome. Should we worry about releasing software often? Hell yeah! So whats the issue about Dates? Well, the issue is that becomes the ONLY 1 concern. This is the wrong BA focus, we should be focusing on: Are we delivering value? Are we delivering great impact to users? Are we ahead of our competitors? Are we unique? Are we understanding our users? Are we shipping something stable? Are we ready to the massive scale of users? All these important questions get bypassed when we just think about dates. If you are in the wrong direction going fast is like getting position fast, it only will kill you faster.

Dates, Features, Requirements and other fantasy things. Why fantasy? Because they dont exist. They are "virtual" and we created. As Plato said one, the man is the wolf of the man. So basically this could be most of the times just psychological waste. Why? Because software is not hardware. The software can and should be changed. If we change our mind, we just change the software thats it. Thats should be the new normal. A/B testing is about changing the software every day for thousands of users with different versions of the software. Bing(the Microsoft search engine has +30K versions). Every single great digital product does that. Facebook does lots of experiments every day, why are you so afraid of change software? Because you dont want to admit you dont have all the answers? Get Real, baby! Engineers don need to be pushed, they are adults ot they should be at least. People need to break silos and work together. Why do we have silos? Because we inherit an industrial hierarchy and we keep following. Why? Because we don't challenge the status quo.

In summary, the Traditional BA is worried about the wrong things, doing the wrong things, but all that can and should change. This change is not only in the BA Mindset and skillset but also in management because management imposes process.

It's not about Process... It's all about process!

Management 1.0 tend to worry only about(Dates, Price, Scope) and forget that, or does not know, modern digital products don't work that way. Management tend to FIX everything with the process. It's not about process. It's not about RULES and ANSWERS for all the questions, there is no such thing. The process tends to be fixed with... new process. Agile, Lean, DevOps, UX is not about process. Looking for process is lazy, it's an easy way out, there is no easy way out, there is no silver bullet, there is no one size fits all.

The process makes sure we keep making the same mistakes over and over again. Agile is about continuous learning and improvement, traditional process often does not have REAL change, only minor adjustments. So this means the answer is not Scrum, The answer is not SAFE, the answer is not BA Certification or anything like that. It's not about process.

However, is all about the process. It might sound strange what I just wrote but it's really all about the process but not about the prescriptive process with roles, rules, and tasks but its all about the learning process. Organizations need to learn how to learn. The first step into the learning is to learn whats value and whats waste, lean can help you on that.

The Rise of Lean BA

Lean BA is a great step forward into the right path. Lean is a great way of thinking/set of principles to follow. Lean teaches you how to SEE and avoid WASTE. Also lean focus on empowering people and effective organizational learning. We leave in a VUCA world we the only way to deal with this new world is with new mindsets and principles. These principles are not that new, they were around since ever since agile and 20 years old and lean even more. The main issue is that organization still pay zero or so little attention on learning, education and they are really busy making mistakes to stop and improve. How many companies you know do more than 4 hours long retrospectives?

I need to admit, the world Lean gives me psychological safety because I'm really worried every time I need to use the "agile" world. Why? Because agile is dead, there are so many "pilantras" bad practitioners that 99% of people doing Agile(Scrum) are completely full of bullshit. When you have so many bad samples and so many wrong people doing things is very hard to get the real value from "agile" nowadays.

Lean is less spread around the world, therefore, there is less "pilantras" and less bad sample and bad leaders. In principle, I agree 100% with agile. However, when I took the "implementations" people do I really lose the faith in mankind. Lean BA means, you are a leader and you "drive" change and you are working with the execution team to LEARN and deliver great products/software. BAs can benefit a lot from lean principles but also from engineers.

Mixing BA with Engineering

Engineers are born around Chaos and Uncertainty. BAs can benefit a lot learning these skills. The world is changing and will keep changing engineers need to learn new languages every year, new frameworks every week, new javascript frameworks every second :D

Engineers are used to learning and forget everything they know every 5 years. BAs are not used to "unlear", BAs are not used to learn things all the time. This is one of the most important changes BAs need to go thought. Since 2010 I work with POs defining SOA Services / APIs. Yes tahts correct, the business define services. Why? For several reasons:

  • The SOA Services(API) or microservices / Serverless like they are called nowadays is important.
  • In order to re-use features and data, we need to have APIs.
  • APIs are key for partners integration, user customization, and growth of the business.
  • Uber EATS is built on the top of Uber, how they did it? APIs. 
  • SO yes, BAs need to define APIs, but they dont do that alone, they work close to architects.

Right, so BAs need to learn how to code on the Backend? Not really. But they need to LEARN how to THINK beyond the User Interface(WEB UI). BAs need to master other interfaces like:

  • Data
  • AR | VR | XR
  • Audio Interfaces: Alexa, Google Home
  • ChatBots and contextual apps
  • Mobile Experience
  • NO UI Experience: IoT, Beacons, and Sensors
Are you ready to master all these software interfaces? IF you just know how to deal with Web UI you need to learn and change quickly. Engineering has other create things like:
  • A/B Testing: Surprisingly many product companies still dont doe it. How we test ideas in prod?
  • Observability / Domain Observability: How many features are being used now? 
  • Split Traffic: How we deploy or rollback versions impacting just a handful of users? 
  • GitOPS: How we release the software so stable and faster that users see this as new normal?
  • DevOps: How we break silos and merge 2 areas into 1 new skillset and mindset? 

As you see there are plenty of things BAs can learn for engineers. When we think about Architecture, there are other skills that bas can learn from architects:

  • Critical Thinking: How we know whats matters? How we make decisions?
  • System Thinking: How we see the whole? How we fix dependencies? 
  • Chaos Engineering: How we deal with chaos? How we test assumptions?
  • Trade-offs: How we drive critical analysis? How we asses risk? 
  • Continuous Learning: How can we do POCs? How we we learn more and faster? 

As you see BAs can benefit a lot working and blending in with architects and engineers in general. So what about the UX Designer(User Experience). There are plenty of cool things to learn too.

Mixing BA with UX

Amazon has user obsession. That's it. I could finish this section and move to the next one. Did not get it? You need to be completely obsessed with your users, here are some samples:

  • Who are your users?
  • Where they live?
  • What they do with your system?
  • What are the pains?
  • Why keep using your system?
  • Why the left(churn) your product?
  • How much cost to acquire a user?
  • How features are most used, and why?
  • How many clicks they do on the ui, where they click? do you have heatmaps? 
  • What persons do we have? What tone do we use?
  • What are the principles behind our Design System? Do we have a design system? 
  • What are the user's journeys? 
  • What we are not doing? Why?
  • What user observations and experiments are we doing it? without software? 
  • And much, much more...

UX is great researchers, they learn a lot from a market and fast. UX Designers also do a great job with cross-pollination, they look into other business ideas and them to blend in. UX is full of science, it's not random at all. So what skills BAs can learn from UX Designers?

  • Research: What others are doing? Could I use a BAR idea into a Bank? 
  • User Obsession: All the previous questiosn and much more...
  • See The Whole: Ux worries about the whole experience, not a single UI.
  • Listen: UXs are great listeners.
  • Ask Questions: A great UX know how to inquire the user and learn from it. 
  • Rationale: Everything UX does there is a reason, they can and will explain to you.

So with Lean BA + Engineering / Architecture and UX, we are close to defining our brand new modern BA. Let's understand a bit more what is a modern BA, where they live and what they eat.

The Rise of Modern BA

The modern BA is a BA who thinks first of all. Modern BA focus on Business Value and Impact before worrying about dates and list of features. Modern BA cares a lot about UX and understand the users and understand the PROBLEM that the product is fixing. Modern BA understands a lot about software and works closely with Architects and Engineers to drive best SPECIALIZED solutions.

Modern BA are hard to find, the best path is not learning. In order to lean the BAs will need to learn how to deal with anxiety, chaos, and complexity. Modern BA uses modern tools beyond the intuition and writing user storys that the business ask.

Critical Thinking & System Thinking

Modern BA focuses on effective learning, not in a pointless process and it's a critical thinker who uses system thinking tools like 5 whys, root cause analysis, Ishikawa, force field analysis. System thinking tools are used by agile coachs for decades. Modern BAs can benefit from these tools in order to do a better ANALYTICAL job on the business side.

Critical Thinking is the key to judgment and making good decisions. Good decisions come from bad decisions, this requires lots of self-awareness, reflection, and retrospectives. Large Business Organizations need modern BAs in order to deal with complexity and large workloads IT needs to deliver.

System Thinking is important to see the whole and make sure the product does not fall after some user stories. Large companies are complex, digital products are complex, there are tools to deal with complexity.

Visual Thinking Tools

Visual tools dont reduce the complexity of things but they help us to understand things. Modern Ba needs to know several visual tools like Canvas, Mind Maps, Raci Matrix, Swagger, UX Tools, and many other tools.

Visual thinking tools are great for BAs structure they thinking but also great for them to teach and educate developers on the business on the problem we are trying to solve.  Modern BA does not use only visual tools but text tools as well like 5W2H, Star Methodology, User Story Formats and much, much more. Modern BAs know how to explain and drive conversations with developers, modern BAs have in mind a clean and concise vision of the problem, like:

  • What problem are we trying to fix?
  • What context do we have?
  • What is the UX space? Personas? Pains? Gains?
  • What are Tech opportunities? New Interfaces? Re-use for other products?
  • What are the solutions we are doing? and most importantly why? 
  • Why Are we doing this? 
  • Why are we not doing that? 
  • What people need to be involved? 
  • Does the BA do all the articulations? Did the BA talk to all people needed? 

AS you can see the modern BA need to be proficient in many things but this is the way. Life is hard, digital products are hard, let's face reality and face the more complex things. Like learning.

Learning how to Learn 

People need to learn how to Learn. People don't know how to learn. Companies don't know how to learn. Companies don't consider learning as part of any estimation. It's like people have all the answers and they just need to do it. In Order to lean you need a master and conquer your EGO, have full patience and keep learning every day. There is no learning without FAILURE. There is no progress without Chaos.

Modern BAs need to be like Bane from the last Christopher Nolan Bat movie, shaped and defined by the Chaos. Why do we need to embrace chaos so hard? Because all these changes are hard and take time, people want to make it right so badly that makes them make more mistakes them never. Relax, chill out, you will make lots of mistakes. As long as you are learning and always learning from failures we are more than good. This might sound simple but is very hard in practice. Because often we are teaching properly how to deal with chaos and complexity.

Learning how to Deal with Complexity & Chaos

Complexity is present in modern society. However, we are still not teaching in the schools the ways of system thinking, critical thinking and thinking outside of the box. Our education down here in brazil is completely wrong. Why? Several reasons. But we consider failure bad, we are not allowed to fail, this makes impossible to innovate. So we are created to be blinded and to not think.

Therefore we are raised to deal with the simple system only, where A leads to B and C leads to C. This Linear thinking is the root of all evil. We a teacher that since kids. We are raised with the culture that study is wrong and we just need to finish school/university and them we dont need study never ever again.

However, the world keeps changing and improving, the only way for us to deal with this VUCA world is to keep learning. So education is the key.

Education is key

This might sound basic. Really it is. Simple but 99% of the companies don't acknowledge that. 99% of the managers dont acknowledge that. We just need to follow a plan right? guys plan dont work anymore the world eats plans for breakfast. As a consultant, I always worked my ass very hard to educate my customers, why? because thats the only way.

This might sound strange. But most of the consultancy companies do not educate the customer. Companies just do whatever the customer asks. It's like going to the doctor and asking the doc to cut your leg, the doc will say no, but in IT we will do it.

So education needs to be placed in the system via Internal Events, Training, External events, Lighting talks, Retrospectives, Demo, open conversations, honesty, and adult mindset. WTF is an adult mindset? Well people often dont behave like adults, people often behave like kids, because they run away from problems, they avoid difficult conversations. Adults do tought things. Thats life.

The Discovery Process

Finally, the modern BA is forged by an agile/lean principles and culture of continuous discovery. Discovery is an INFINITY process that will never end. There is not an END or DONE of discovery. If you stop doing discovery is like stop breathing eventually you will die.

The initial results of the discovery process do not matter. What matters is fast iteration and continuous learning. Having said that I finish this post of my view of the modern BA.

Cheers,
Diego Pacheco

Sunday, September 15, 2019

Modern Discovery: Breaking new silos

First of all, I want to explain why I added a puzzle as an image for this post. This is a metaphor I'm using with several people I work. People sometimes get lost and cannot keep with modern software initiatives. Well, agile is saying that for ages and people still don't get it. There is a huge difference between Simple and Complex systems. More and more making a digital product is from far to be a simple task. However, we still want answers that we cannot get. Sometimes this creates anxiety and we need to learn how to deal with failures, chaos, bad feedback and even that our solution my suck. Ouch thats very dark, right? No, not really, this is the reality, the REAL WORLD is a cruel place and ADULTS need to call tough decisions every day. So what's the deal with simple linear systems? well they imply that quickly you can understand what you are doing and make predictions about the outcomes. Well, digital products are not like that, we cant make predictions on simple linear thinking like A -> B -> C. It does not work like that.

The right Vision for Digital Products

Digital products are not like your uncle old software projects. Why not? well because the world has changed and startup competitors can beat you and from day to night you might lose it all. What's wrong with the project thinking or project midset?

  • Focus on the wrong things: Dates, Scope, and Cost.
  • Does not take the customer obsession into account.
  • Does not use discovery and th way to learn tought experiments. 
  • Does not pay technical debts and use technology as a bag of magic tricks.
  • It's full of waste: Feature no boddy use, people don't even know it(lack observability).
  • It's full of waste: Takes so long to release that people don't care or need to work differently. 
  • IF for some reason you got all right, you end up killing your team and need to go to over again.

Why we keep doing this? simple because we don't educate our selves and keep repeating old management dogmas because is that the only thing we know how to do. There are better and honest ways to approach the problem but before we talk about Dates, could we talk about benefit? how we make sure we are adding value to the customer?

As soon as you realize there are at least a million things preventing you to get the date right, such as Technology has changed and you don't know how to do it. The user's changes and you know now them very well, the ways of developing software have changed and you don't master these new ways. User interfaces have changed from desktop to web to text, to voice to XR. Operations have changed to DevOps|SRE. Management has changed and now it does not make sense anymore, no one needs command and control anymore, we need coachs and mentors. The business has changed and we don't need People throwing requirements via word specs into developers. Sales have changed, software distribution has changed, the world has changed. Engineering has changed, are you still talking about relational DBS and governance?

OK if you acknowledge that which is huge, I have some very bad news to give you. Here are 2 super bad news. First could you chance? Are you used to continuous change? If not this will hurt. Even if you make it through here comes the second bad news. All of this things I mentioned before(which are super important) are pointless if we can't generate value. In order to generate value we need to understand the users, have the right technology/architecture and make sure we get the business right these tasks are not easy. In order to get this right, you need discovery it. So it's like a puzzle it will only make sense ater sometime, you cant understand up to the front(and don't need to) and it's not linear you can predict with sticks and carrots.

The Discovery Process

I'm not a Scrum guy. Actually, I believe a good part of the damage was created by scrum. Let's start talking about the role of Product Owner(also known as PO): Let me give some bad news for you. There is not the PO. Yes, the PO does not exist. It cannot exist. Why we cant have the PO role? PO implies you have a simple individual how knows the business, UX and Architecture this might be throught if you are Jeff Bezos or Steve Jobs, not I'm not 100% sure if they got this 3 skills.

The discovery process, needs to happen with triads of people. An architect, a BA and a UX person. Only with these 3 disciplines, we can make good calls about how the product should behave.

The architecture alone is non-sense, I think I don't need to explain that to anyone. However the other 2 alone people think is ok but actually is not ok at all.

BA alone more of times means some bad practices like not doing proper UX and also just getting orders from the business and sending down to the developers, a modern BA is not an Order taker but a leader. The modern BA has no issues with failure, it embraces the failure, a modern BA embrace experiments and is in constant learning about the business, the technology, and everything. A modern BA does not think about UI only, it thinks about other interfaces specially APIs.

Most companies think have the UX alone is a good idea. Thats a terrible idea. UX alone means you will have waterfall projects, so the UX will define all uis and you just need to execute it, ideally in a fixed price, fixed scope project, this is what most companies are doing and is comple waste. So Ux is bullshit? No, not at ALL. I love UX, Ux is super important but it needs to be binding with architecture and BA(who should know about the business).

The discovery process does not write Specs or user stories on the stone. They discovery things and the discovery process sometimes results in a user story other times results in just not asking the engineering thing to code. Yes, and thats one of the greatest results you can have from the discovery team, killing a user story is a good thing, you are saving tones of money doing that.

Why the hell do we need to kill user stories and throw them into the garage? Isn't this waste? Are we throwing money away? Well if you engineer some feature and the users don't like or don't use it well then you are for sure throwing money away because the engineer is the most expensive thing you can have after cloud costs. So you know be sure before throwing anything there.

But I'm 100% sure? Awesome so this means you are not doing innovation. Because there is no sure with innovation, is all about risk, its all about failure and learning from it. Thats why you need experiments and you don't know what will happen.

Breaking Silos

Breaking silos is something beautiful to say however companies are not ready to do it. Why not? because leaders are not ready to do it. Because often means less power and doing the right things are not for the week, only a strong leader can do such changes.

Let's consider 3 classical silos on IT | Product departments. Architecture / Technology is one silo. Ux is nother silo and BA(Business Analyst) is another silo.

Why these 3 silos are bad? Because they introduce delays and create the false illusion that they can work isolated and they simply cannot work in isolation, not in an efficient way. Why not? because no silo has the complete picture, so this silos just make things more difficult. Silos also create the wrong ownership feeling, An architecture my say is not my job to know about UX or Ba might say I don't need to worry about Technology, all wrong;

So we need to tear down silos and have flexible borders where the architect will still be the responsible about technology however will understand the business and know the user so all solutions this team creates are rounded and they don't have loose ends.

BAs often just know about the business needs or strategy, this does not mean is feasible to execute(architecture) or if is nice for the user(UX). Lean Startup and LeanUX do UX is a very agile way, most companies do UX in a super waterfall way. The discovery process make sure developers don't get surprises like? what we should code? are we ready to code this? or is the user really need this and does this UI make sense? The discovery process can and should also kill user stories as the experiments fail and they learn what works and what does not work.

Why you can't get Dates right with Estimates

Every sale, financial and market team need dates. However, get dates right via estimates is almost impossible and become more impossible every year. However we still rely on something that is not reliable at all(estimates). The need for estimates is real. So if we can get them right, could we replace them with something else? I believe thats the right approach. Instead of just saying there is no date we can replicate dates with:

  • Business Visibility: Via Kanban boards, Demos and Retrospectives.
  • Small 8h user stories: Small stories are easy to manage and predict outcomes. 
  • Constant business progress: via talks, experiments, user story mapping, and releases.
  • Using OKRs and focusing in quarters rather than anual process helps a lot. 

Even doing all that, people will still want some kind of commitment and dates at the end of the day, which I think are fine and fare if we:

  • Have the right architecture and infrastructure in place that allows us to release software fast.
  • Have business availability and discuss scopes(MVPs) in order to have smaller releases.
  • Run discover the process and produce ~8h user stories(fight variation).

Doing so we can focus on cadence instead of trying to guess several requirements, super up-to-front without UX and Architecture involved. The chance to get this estimates right is lower than getting the first prize in the lotto.

So instead of guessing 400 items in a poor structure, poor defined, poor discovered backlog, lets run the discovery process and use the kanban cadence formula.

Let's say cadence us K. We just need to know how many user stories we need to deliver(discovery process) will be able to get that for us. We also need to make sure storys are no longer than 8h.

Them we get how many weeks we have to the desired date. We just divide the number of stories per the number of weeks and we have the throughput we need per week. This throughput could be called cadence(K).

When we have the cadence we can know how many devs we need just dividing the cadence per 5. Why 5? A single developer works 5 days and delivers 5 (8h stories) per week.

You can also observe our engineering team and tweak things to make sure you can deliver a story per day, You might need some time to tweet your discovery team to produce 8h stories as well but this is much better because you can predict better when you will finish. At the end of the day if a developer doesn't finish a story we are delayed so this is easy to manage.

From Estimates to Cadence 

When you have cadence, you dont need estimates anymore. Actually, you dont want use estimates you want to cadence because if your backlog is breaked properly and you deliver it it will be much better to manage it and have dates in short tern for the business. Dates in long-tern dont work and its impossible to have it. Dates in short tern following this method are perfectly feasible.

There are 3 key elements here: A) discovery process that produces 8h stories, B) Engineering team being able to deliver software with constant cadence. C) Management/business changing a bit how the demand software and break into more continuous deliveries rather than yearly waterfall releases.

TTA (Three Track Agile)

TTA is inspired by Dual Track agile, I just added a third track called foundation. Why do I have a foundation there? Foundation is hilly inspired in Engineering Organizations from Silicon Valley. You can think as a Poor Man solution(in the case you dont have an engineering Organization like in SV). So the foundation focus on Architecture and Technology to speed up the Delivery team like What Observability tools are we using it? Corporate architecture principles like SOA/APIs, Cloud-native, REST, Proper Software Design and much more. This is important to make sure discovery has fewer surprises and can focus on the business. This does not make all technical changed are removed from delivery. But if something could take 4 months to get it, it's not a good idea to discover it in the delivery where you expect to release software every day.  So the TTA it's my personal adaptation between DTA and EO from SVs.  In DTA there is retro-fit for all tracks in TTA is the same deal we just have one more track-focused in the foundation. This foundation could mean different things depending on the size of the product or company, could as simple as a list of technologies and templates and could get as complex and self-service platform solutions like stress testing platforms.  The cool thing is that you can put all these tracks together in a single kanban and have great visibility and the main benefits are:

  • Reduce Risk
  • Reduce surprises at Development
  • Deal with bottlenecks before(increasing the change to get dates right).
  • Enabling the delivery team to focus on business value  via constant software delivery
  • Reduce waste
  • Reduce re-work
  • Increase visibility 

I hope you guys liked, I will make more post on this themes soon.

cheers,
Diego Pacheco

Modern Product Culture


Product culture and mindset is one of the most important shifts enterprise companies need to go through. Project mindset has several flaws and yet we still follow it and thats need to change.  Project culture makes us focus on the wrong outcome like Dates, Escope, Feature, Cost instead of value and User Obsession. Since 2014 I follow Allan kelly work and read his books and saw several of his videos. I also exchange some emails with him back on the days. I was amazed how makes sense to back into 2014. Even almost 5 years passed and companies still don't get it. There are other movements that push to the same direction as NoEstimates, Beyond BudgetOKRs, Modern AgileLeanStartUp. All these movements / Books have great synergy and they basically make you thing software development in a completely different way.


Discovery The Missing Discipline

Build a product requires discovery, we need to feature wat the user want if we can make that a business. Discovery is super hard and PMF(product-market-fit) is something 80% of the founders fail todo. If you might think, this is impossible, well for sure it's not easy. However, we don't have many options besides inherit a monopoly, finding oil in our backyard, winning on the loto. Projects create an extreme simplification of the problem. Just build software and users will come, you will be successful. We know thats not true however we still blindly build a feature like there is no tomorrow without evidence of real value on the business investment. Skipping discovery is not the solution.

Why discovery is so hard? Well because build products that don't suck its super hard. Involves business knowledge, Ux, Technology great execution. It's like winning a football world cup, where you invest the game and convince people to go to the stadium that doesn't exist, not an easy task at all. The right mindset is assuming that we don't have the answers and we need to discover it.

Customer Obsession & Experiments

Customer Obsession(the amazon way) it's the only way. It's impossible to build great products without understanding the problem(the problem that your product solves) with perfect match to the user. Sometimes companies know the users very well but they don't know how to turn that into a business. Saying the word "business" does not make you capable of creating the business, that is another super hard thing which requires specific domain knowledge and extremely hard work. Since customer obsession is not enought we need to introduce new practices called Experiments. Experiments are not new at all, they are in the heart of Agile, Lean and Lean Startup.

An experiment is an MVP. The reason why I don't like to use the word MVP it's because MVP got attached to the wrong ideas. Experiment means, let's test some assumptions and see what happens, we might need several other experiments, sounds like science right? Well, it should be because of thats the only way.

Hold on, If my awesome BA or UX tell me they have the answer? Or even better if we adopt SAFE or any other extreme complicated scaled agile solution? Well looks like, in that case, you will have lots of waste and little benefit, also you will be focusing on the wrong thing like PROCESS and therefore you should be focusing on understanding the user and the market.  That sounds very scary, but this is the REALITY, there is no easy answer.

Dual Track Agile

Dual-track agile it's not a silver bullet. However, it promotes some good practices like making sure discovery happens. I worked with engineers so long with so many companies that I can tell you 100% for sure when you have discovery and delivery on the same *Sprint* you end up not doing proper discovery because delivery eats discovery for breakfast.

Doing discovery does not mean you will succeed. However, putting a stop in other bad practices like being 100% spec driven, just worried about dates, not paying technical debts and HOPE everything is gonna be ok. Like Google said in SRE books several times: "Hope is not a Strategy". Discovery does not make you an expert in your user from the day to the might, discovery doesn't allow you to understand modern architecture from day to night, discovery doesn't make you obsessed with the user from day to night, however if done properly the discovery track enforce some good mindsets on you and as outcome you tend to have less waste and more benefit.

In a nutshell, discovery is a learning process where you discard bad things before you throw to developers and where you double down on great outcomes and focus on faster delivery for your users.

The New Mindsets

In order to work with companies, we need to learn new skills and totally new mindsets. The underrated mindsets that you must learn are:

  • Anti-Fragility: Famous DevOps Concept - mistakes are fine: In an agile word(Fail Fast). 
  • Learn Effectively: In lean world(avoid waste and maximize ownership).
  • Learn how to deal with Complexity: Stop thinking about simple linear systems.
  • Leadership, not Requirements: Modern PO|BA|BO|PM need to lead not throw specs. 


The Deck

Here is a deck with more on this subject.



cheers,
Diego Pacheco

Chuyên mục văn hoá giải trí của VnExpress

.

© 2017 www.blogthuthuatwin10.com

Tầng 5, Tòa nhà FPT Cầu Giấy, phố Duy Tân, Phường Dịch Vọng Hậu, Quận Cầu Giấy, Hà Nội
Email: nguyenanhtuan2401@gmail.com
Điện thoại: 0908 562 750 ext 4548; Liên hệ quảng cáo: 4567.