Stop multiplying by 4 PHP Tour 2014

PHP Developer um Freelancer
28. Jun 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
Stop multiplying by 4 PHP Tour 2014
1 von 26

Más contenido relacionado

Was ist angesagt?

2017 DerbyCon-Architecture at Scale2017 DerbyCon-Architecture at Scale
2017 DerbyCon-Architecture at ScaleRyan Elkins
Iterate. Calculate. Communicate.Iterate. Calculate. Communicate.
Iterate. Calculate. Communicate.Laure Parsons
Analysis of Behavior & Cognition (ABC) Model with Matt Hansen at StatStuffAnalysis of Behavior & Cognition (ABC) Model with Matt Hansen at StatStuff
Analysis of Behavior & Cognition (ABC) Model with Matt Hansen at StatStuffMatt Hansen
Building a Problem Statement with Matt Hansen at StatStuffBuilding a Problem Statement with Matt Hansen at StatStuff
Building a Problem Statement with Matt Hansen at StatStuffMatt Hansen
Risk Analysis with Matt Hansen at StatStuffRisk Analysis with Matt Hansen at StatStuff
Risk Analysis with Matt Hansen at StatStuffMatt Hansen
Overview of Statistical Terms and Concepts with Matt Hansen at StatStuffOverview of Statistical Terms and Concepts with Matt Hansen at StatStuff
Overview of Statistical Terms and Concepts with Matt Hansen at StatStuffMatt Hansen

Was ist angesagt?(20)

Destacado

pythonpython
pythonAlexey Petrov
PhpTour Lyon 2014 - Transparent caching & context aware http cachePhpTour Lyon 2014 - Transparent caching & context aware http cache
PhpTour Lyon 2014 - Transparent caching & context aware http cacheAndré Rømcke
Click and deploy - Continuous delivery avec Zend Server et JenkninsClick and deploy - Continuous delivery avec Zend Server et Jenknins
Click and deploy - Continuous delivery avec Zend Server et JenkninsSophie Beaupuis
Faster develoment with CakePHP 3Faster develoment with CakePHP 3
Faster develoment with CakePHP 3José Lorenzo Rodríguez Urdaneta
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Nicolas Silberman
Dockerize your Symfony application - Symfony Live NYC 2014Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014André Rømcke

Similar a Stop multiplying by 4 PHP Tour 2014

optimizing_site_performanceoptimizing_site_performance
optimizing_site_performanceBryan Farrow
Testing – Why We Do It Badly2Testing – Why We Do It Badly2
Testing – Why We Do It Badly2adevney
Adaptive Case Management Workshop 2014 - KeynoteAdaptive Case Management Workshop 2014 - Keynote
Adaptive Case Management Workshop 2014 - KeynoteKeith Swenson
Software Development in the Brave New worldSoftware Development in the Brave New world
Software Development in the Brave New worldDavid Leip
36858073685807
3685807nazeer pasha
Sales Email Hacks for Gmail and SalesforceSales Email Hacks for Gmail and Salesforce
Sales Email Hacks for Gmail and SalesforceRingLead

Último

Unleashing the Power of Modern Carpooling Apps, Inspired by BlaBlaCarUnleashing the Power of Modern Carpooling Apps, Inspired by BlaBlaCar
Unleashing the Power of Modern Carpooling Apps, Inspired by BlaBlaCarArchie Cadell
Accelerating Data Science through Feature Platform, Transformers, and GenAIAccelerating Data Science through Feature Platform, Transformers, and GenAI
Accelerating Data Science through Feature Platform, Transformers, and GenAIFeatureByte
TEKART CON 2023TEKART CON 2023
TEKART CON 2023AdedoyinSamuel1
Orchestration, Automation and Virtualisation Maturity ModelOrchestration, Automation and Virtualisation Maturity Model
Orchestration, Automation and Virtualisation Maturity ModelCSUC - Consorci de Serveis Universitaris de Catalunya
How to use the Cataloguing Code Ethics at your day job : a hands-on workshop ...How to use the Cataloguing Code Ethics at your day job : a hands-on workshop ...
How to use the Cataloguing Code Ethics at your day job : a hands-on workshop ...CILIP MDG
Experts Live Europe 2023 - Ensure your compliance in Microsoft Teams with Mic...Experts Live Europe 2023 - Ensure your compliance in Microsoft Teams with Mic...
Experts Live Europe 2023 - Ensure your compliance in Microsoft Teams with Mic...Jasper Oosterveld

Último(20)

Stop multiplying by 4 PHP Tour 2014

Hinweis der Redaktion

  1. With Companies like Google and Spotify, not caring about deadlines, why should we care about estimating software? Why should we estimate? Estimation is not just about meeting deadlines. Managers need to know if the cost of building is worth the effort. Banks, budgets and backers need to gage how their investment is going to be used. Why should developers Estimate? Developers own the code Magne Jørgensen + Stein Grimstad proved If you have any inkling of budget or time line, Your estimate will be biased. Project Managers and Owners know this information and might try to “fit” the cost into what they are willing to spend
  2. What Developers do Wrong? Developers are capable of taking problems and break it down into smaller parts. When it comes to Estimating, we follow arbitrary means that can cause projects to go over budget or worse, fail completely. A story about estimation that went “well” I needed a developer that was working on another project. He was working with someone who has been programming 30 years. Both were not sure on how long it would take to complete the huge laundry list of items. I sat down with both of them, went over the whole project and broke it up into smaller parts. We then came up with estimates for each items, then sat down with the Project Manager to come up with a time line the client was happy with. The project goes along, for a month, then panic. One of the libs we were using was not working with some version of Safari. Everyone panicked to get a fix in. There was fear that we would miss the deadline. Which would set back my project. We got a fix in, deployed all the changes, and when the smoke cleared, we found that we launched a day early.
  3. How did we do it? When dealing with estimates, you are fighting a battle of uncertainty. Remember this: Its easy to estimate what you know Its hard to estimate what you don’t know Its very hard to estimate what you don’t know you don’t know **Use driving to work example**
  4. Requirements – Wordy Expressions Managers try to “sell” requirements to you. Which means that some times they will add “fluff” to requirements. Wordy expressions add useless information to a statement
  5. Requirements – Misplaced Modifiers Misplaced modifier happens when a word, phrase or clause is improperly separated from the word it describes. In this case, we have valid next to first and last name. Valid modifies First and Last name. Does that mean that we can enter an invalid email address or phone number? Groucho Marx has a famous one: I shot an elephant in my pajamas the other day. How it got into my pajamas Ill never know
  6. Requirements – Clarity Now that we have cleaned up the format and grammar of the requirement, we now look for smells in the requirement. For example, what is considered a “valid” phone number?
  7. Requirement – Smells If estimation is a battle for uncertainty, requirement gathering is a battle against ambiguity. Words used in requirements that cause ambiguity, I like to call Requirement smells. Like Code Smells, these words or phrases raise some red flags about the requirements. Take the time to clarify the requirements before making an estimate.
  8. Requirements – Finial Once you have defined the requirements as best you can, you can now start estimating. We now see that our one requirement for a contact form has grown into a much bigger project then we thought. We need to break down our requirements into smaller parts. Break the requirement into smaller more manageable units. We can then take a look and see which parts have the most uncertainty.
  9. Tools for Estimating Before getting into some techniques, we are going to need some more information. Using the following tools we can then break down our requirement Historical data Take current data about development and proxy it to new requirements. Start tracking metrics like LOC, Number of Functions, Avg LOC / Function. Apply time to each of those metrics to get a rough idea on how long it takes to create each metric: LOC / Hour / Day. I wrote a script that would run git commit every hour to help with this Dry run / Unit test You don’t need to use a full stack testing framework, but you can test out some critical functions. If you have not previous experience with a service, you therefore have no historical data to base your estimate on. Spending an hour or two on testing out the logic, can provide you with better insight on the complexity for the requirement. Even if you have worked on something similar in the past, do a dry run for the more complex tasks. I was asked to connect to the OH tax service using a SOAP service. In the past I made many SOAP calls, so my estimate reflected that experience. After spending about 15 hours of my 12 hour estimate, I was unable to make the connection for technical reasons and the requirement was dropped (I was told by the developer that I need to use .NET or Java and not PHP in order to use the service). Confidence Interval (CI) This is a statistical model that represents uncertainty. It is calculated by using means and variances. We see them in the real world with hurricane paths. They are great because we do not need to “pad” our estimate. The interval uses a High and Low range that represents our 90% confidence that the “True” value is between them.
  10. Calibration Exercise We are going to do a practice calibration test. Three questions have a number value, for these try use the confidence interval. Three questions will be true or false, do not answer those with null ;).
  11. Repetition Take a lunch break come back in an hour and try your estimate again. Clear your mind and try the estimate again. Don’t read your 1st estimate before trying again to avoid anchoring to your original estimate. Pros and Cons Make a list of things that will happen if your estimate is right and if your estimate is wrong. This helps bring clarity to the problem and remove some bias. After the list, try again Absurdity Test Narrow down your range by using absurd values for your CI and making them smaller. For example, for the wingspan of a 747, starting with a range of 1 to 1000 ft. is absurd. Is 80 to 250 ft sound better? What about 180 to 220 ft? Equivalent Bet This works on a gut feeling. Imagine a spinner that pays out 90% of the time. You choose between your estimate and betting against the spinner. If you choose the spinner, you most likely not confident your value. If you choose your estimate, you might be overconfident and your range is too wide.
  12. Fuzzy logic A simple estimation tool to get an idea on effort. Classify features into Very Small, Small, Medium Large, Very Large. You then have an idea on how much work is needed based on Historical data or Industry average. Keep track of your estimate with hours.
  13. Wideband Delphi AKA Group Based on the statistical Law of Large Numbers. Where by the more information you have, the closer your average is to the true value. This requires a team of at lease 4 people and works best with about 10 total. First choose a coordinator. The coordinator presents the feature requested and takes estimates from each member, and averages the numbers. The coordinator then presents the data to the team. A vote is then cast and if it fails, the team estimates again. It is critical that estimates are kept secret to avoid bias. Traditional Wideband Delphi fails to represent uncertainty since the average is voted on, I recommend that you take ranges and then average the high and low numbers.
  14. Bayes Theorem As stated in the beginning of this presentation, we are going to avoid math as much as possible. However you cannot talk about probabilities with out talking about Bayes Theorem. It was developed by Howard Bayes in the 17th century and is widely used in many applications today from predictive text to suggested ads. The simplicity of the equation makes for highly complex “Bayesian trees”. The take away from Bayes Theorem is this: when you have more information about a probability, you must change your original estimate. The estimate at the start of a project might not always reflect the estimate half way through. By that point you have more clarity and now can better predict the outcome.
  15. Priorities Once all the features have estimates attached, how do you set the priorities on when items are going to get done? Most of the time we use order them in High, Medium, or Low. How effective is that? Based on surveys from project managers, you will find that ~85% of your tasks become High, ~10% Medium and ~5% Low. Three level scale is an easy way to avoid this trap. We create a matrix of Importance vs Urgency. By comparing the values, you get a grasp of the priority scale.
  16. Priorities Prioritization Spreadsheet This is the ultimate way to reduce bias. Have the customer rate relative benefit for each feature on a scale of 1-9. 9 is extremely valuable. Have the owners Estimate the penalty on a scale of 1 – 9, 9 means a serious impact on business Developers Rate the relative on a scale of 1 – 9, 1 is quick an easy. Then rate the technical risk. 1 means you can do in your sleep Then sort the list descending on priority. The priority is based on the Value % /
  17. Politics Dealing with the rest of the company can be a challenge. Keep in mind that there will be politics everywhere you go but you can curve some of resistance you will get. When dealing with managers or product owners remember this: You are responsible for the code. Imagine a scenario where a patient needs to be operated on by a Dr. The patient is on the table and sees the Dr. washing his hands. If the patient yells out to the Dr. to stop washing his hands and get in the OR to start, is the Dr. going to listen? The patient is the boss because he is paying the Dr. but the Dr. is going to act in a manner that benefits the Patient. Remove people from the problem Everyone will want everything done yesterday. You also have your own needs for the project that must be met. If you focus on what is best for the project (or better yet the dollar amount), it helps change the perspective. In the example early with connecting to the FooBar Rest service, if development will cost $2,000 plus another $500 per month to maintain, but saves $2.00 per lead. If you only get 2 leads a day, the savings per lead per month is only about $120. If a sales rep is demanding that this feature be implemented, prove that there is a loss per month with this service, make the priority lower. Focus on Interests not Positions If the estimate takes the project longer than the ship date, work out with the project owners what you can deliver in the time. Try to get features implemented with known bugs and workarounds that you can fix the ship. If this is needed for a trade show, work out a “white page” demoing the features that you wont be able to deliver
  18. Prefer Hours Hours scale more in a day then days do in a week. More Developers It takes 9 months to make a baby, 9 women cannot make a baby in one month. Developers need to be trained, and oriented to a project. Iterate Iterate your estimates in the same way that you iterate code. When you notice a job stopper, inform the party early on in the cycle rather than the end. This will help keep budgets in line and expectations high.
  19. Karl Wiegers ISBN-13: 978-0735618794
  20. Steve McConnell ISBN-13: 978-0735605350
  21. Douglas W. Hubbard ISBN-13: 978-0735605350
  22. Questions?
  23. Thank You