SlideShare a Scribd company logo
1 of 48
REAL WORLD
SOFTWARE
LAUNCH
CSCI 196 / 4244
INSTRUCTOR: KUNAL JOHAR
WORKFLOW (PRE-SENIOR DESIGN)
 • Receive assignment

 • Write pseudocode

 • Write program

 • Test Program

 • Submit

 • Then what?
WORKFLOW (SENIOR DESIGN)
• Create assignment

• Write pseudocode / bootcamp

• Write program

• Test program (how)?

• Present program

• Then what?
TYPES OF SOFTWARE

• What are the different kinds of software that we
  see in the field?
TYPES OF SOFTWARE
•Web Apps

•Mobile Apps

•Desktop Apps

•Real-time Apps

•Mainframe Apps
LAUNCHING SOFTWARE

•What does it mean to launch software?
LAUNCHING SOFTWARE
• Software Launches by Type
   • Web Apps

   • Mobile Apps

   • Desktop Apps

   • Real-time Apps

   • Mainframe Apps
….BACK TO SENIOR DESIGN
Scenario: You did a great job at the 100% presentation.
Afterwards, Chairman Youssef asks for a personal
demo. He points out a few flaws that he wants fixed
since you have been selected for the Pelton award.

Your Project: Recognize gestures using a web cam and
a special green marker you hold on your finger. The
software was set to look at RGB values with some
tolerance to detect and track the green marker

The problem: In your dorm room gestures worked just
fine, but in the CS room gestures were not often
recognized.
…BACK TO SENIOR DESIGN
• How would you tackle this problem?

• How would you implement the fixes?

• How would you show the fixes are
  implemented?
…BACK TO SENIOR DESIGN

• Why did you implement the fix?

• For whom did you implement the fix?
…BACK TO SENIOR DESIGN
•This actually happened…(well almost)



•Solution
   • Adam discovered the use of
     Hue / Saturation Values in addition
     to RGB values
PERFECT SOFTWARE
•Perfect software has no bugs

•What are some examples of perfect
 software?
LIST OF PERFECT SOFTWARE




         (this slide was intentionally left blank)
SOFTWARE LAUNCH (NAÏVE METHOD)
 •Write Code

 •It Compiles, 

 •Start Shipping!

 •What could possibly go wrong?
POST LAUNCH PROBLEMS
•Scalability Issues

•Bugs / Crashes

•Failure to meet original requirements

•Anything else?
POST LAUNCH PROBLEMS
•It doesn‟t scale!

•ToVieFor, Inc – TechCrunch Finalist
 (Really miserable people to work with)
POST LAUNCH PROBLEMS
•Their website now…
POST LAUNCH PROBLEMS
•We‟ll get back to these…
   • Bugs / Crashes


   • Failure to meet original requirements


•How would we go about fixing problems
 when they are out in the field?
FIXING PROBLEMS POST LAUNCH
Scenario: You are a software developer
assigned to a particular application that
has some reported bugs.

Who do you think is responsible for fixing
the bugs?

How do you think they get fixed?
FIXING PROBLEMS POST LAUNCH
•What does it mean to be fixed?

   • Code fixed

   • Fix regressively tested (how?)

   • Fix deployed (how? and who?)
PROBLEMS…FIXING PROBLEMS
• Chain of Responsibility
   • Developer and “Deployer” are usually
     different people

   • Development machine can have different
     configuration than live environment

• Time is against you
   • What time do software fixes get deployed?
   • What happens from the time a bug is
     discovered to fix?
   • What if a bug isn‟t discovered for a long time?
SUPERMAN III
•Harmony Gateway
   • Scheduling and Billing Software

   • 400 students x 6 schools x lots of
     transactions!

   • Accrual based accounting system
     (lots of records just to sign up for a month
     of lessons)

•System deployed March 2007
SUPERMAN III
• WriteRevenueRecognizeJE()
     • X = Total Lessons Cost
     • C = Total Lesson Count

     • For each lesson date D
         • Recognize X/C revenue on D
         • If DISCOUNT
              • Output Discount JE

• WriteRevenueRefundJE()
     • X = Total Lessons Cost
     • C = Total Lesson Count

     • For each lesson date D
         • Recognize X/C revenue on D


• Bug Discovered August 2010…..
SUPERMAN III
•When lessons were refunded, discounts
 were never “undone”

•Result, about $500,000 in income placed
 in the wrong account

•I would have gotten fired but…
•Fortunately there was $500k EXTRA 
HOW TO FIX PROGRAMS
•Understanding we can‟t deploy our fixes
 directly how can we handle fixes for the
 following platforms:

   • Web
   • Desktop
   • Mobile App
   • Real-time (e.g. Car / Avionics?)
FIXING OUR PROGRAM
•Let‟s revisit and old friend
FIXING OUR PROGRAM
•Where am I being launched?
FIXING OUR PROGRAM
• Yes, launching also be a huge hassle…
   • Include app screenshots
   • Include icons in 4 different sizes
   • Generate a code signing certificate
   • Have a website
   • Ensure you are not violating the store
     submission (vague) guidelines
   • Submit
   • Wait 7-14 days to find out if you have a
     violation and need to wait another 7-14 days
   • Pray
VERSION 1 LAUNCHED!
•“Yes, we‟re ahead of schedule!”

•“Getting through the app store details
 was a hassle but, I‟m sure it all works”
VERSION 1 LAUNCHED! … :)
VERSION 1 LAUNCHED! … :(




            (5 voicemails left)
“Many reporters            contacted and
                 (aka friends and my sister)


want to run a story but they can’t with all
these bugs!”
BUG REPORTS
ACTUAL BUG REPORTS
TRYING TO UNDERSTAND BUGS
•Try to walk through scenario
   • Who sent the vote?
     When did they send it?
   • Then we try sending them (magically it
     works)


•Check externalities
   • Amazon for storage
   • Urban Airship for push notifications
AVOIDING EGO
• “It works on my machine”
      • Of course it does, you are the developer
      • We like to think we can „prove‟ a problem is outside of our
        purview
      • If it doesn‟t work for the client, no amount of evidence will
        be convincing

• The truth is, it is likely our fault
      • When Apple/Amazon/API providers mess up there are
        usually a lot of people who have problems
      • StackOverflow it, otherwise take responsibility

• Worst is the time to deploy
      • Client side bug fix to app store means another week
        minimum of the bug existing
      • We as developers have no control over this, but imagine the
        point of view of the customers / users
WE HAD BIG EGOS
• Few problems
   • Text labeling issues
   • Amazon S3 interaction failures
   • Privacy settings blocking push notifications

• But most of the problems were plain-ole
  annoying
   • “How come it send a text message when the
     recipient doesn‟t have the app?
   • To client bugs mean not meeting the “original
     requirement” that was never there
VERSION 1 ISSUES
•Bugs
   • Push notifications only work in free version
   • Free version‟s ad is covering up
     “Feedback”
   • App says “Shopping with Friends” but
     name is “Shopptique”
   • Internet keeps “going out”


•Fixed in a series of updates V1.1 –
 1.4, taking 4 full weeks
WE HAD BIG EGOS
• “I just want it to work, this needs to be like
  texting and no one, not my sister, mom,
  dad, anyone have gotten push notifications”
    • Disbelief: Push notifications worked for
      everyone in the office

    • Bad luck: There was an cloud outage during
      Christmas, nothing was working for anyone.
    • How do you explain „cloud outage‟?

• “Aghh, I‟m very disappointed.” Push
  notifications just don‟t work.
WE HAD BIG EGOS
•“Why don‟t you come to the office, we
 have all of the development tools here
 and can figure this out once and for all”
   • Translation: Come here so we can belittle
     you and show you never downloaded the
     latest version

   • Her Thoughts: Nice! Finally I get to call
     their bluff on their worthless skill.
ACCOUNTABILITY….
•We have our 5 test devices and emulator
 ready to go

•Heather comes to our office with 2
 friends

•It is the moment of truth, we all fire up
 the app
ACCOUNTABILITY
•“Just in case”
   • I order pizza
   • Heather brought wine




•Why did we each do this?
ACCOUNTABILITY
•Heather and Friend
   • Push notifications don‟t work!

•All of our devices including 2 brand new
 devices
   • Everything works great….

•Looks like none of us were lying

•Whose fault? What are the next steps?
SOLUTION
•We have a “femtocell” at the office

•Presumed “bad internet connection” was
 the reason, promised to research how
 other apps get around the problem

•We knew that couldn’t be it….but we
 were stumped and wanted her to leave
   • Good thing we got pizza!
SOLUTION
• Found a better method to degrade on a
  poor connection

• Discovered Push Notification Provider
  (Urban Airship) “deactivated” devices that
  had the original faulty push notification code

• Found a script to re-activate without
  requiring to push an update to the app store
THE END?
•Called Heather
   • Works for her!
   • Works for her sister
   • Works for her parents
   • Works for her friends
      • ….except this one friend

•Sigh….
   • We asked for the friend‟s username
   • Never got a response
WE KNOW BETTER THAN THIS…
•Web Programming Has Made Us Lazy
   • Problems can be fixed instantly for
     everyone
   • We should do more testing, but can get
     away with not


•What to do for all other software
   • User acceptance testing
   • Soft Launch
   • Actual launch
SENIOR DESIGN AND BEYOND
http://www.joelonsoftware.com/articles/fog0000000067.html

Academia creates an environment where it is okay to
get the problem solved and move on. In the real
world, there is no excuse that this “is for research.”


Why did Heather not test her own app before
launching?

Why did we let her launch without testing?


What did it cost Heather to skip this step?


What did it cost us?
SENIOR DESIGN AND BEYOND
 “Why do something when someone else will
take care of it?”


Will you lead by example for the sake of trying new
opportunities?


Will you wait for problems to arise and stagnate?


Worse, will you even realize you are stagnating?

More Related Content

What's hot

Keynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochKeynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochFuture Insights
 
Continuous Updating
Continuous UpdatingContinuous Updating
Continuous UpdatingRobert Reiz
 
PyCon UK 2013 "Python Adventures in Startup Land"
PyCon UK 2013 "Python Adventures in Startup Land"PyCon UK 2013 "Python Adventures in Startup Land"
PyCon UK 2013 "Python Adventures in Startup Land"rwillmer
 
Choosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentChoosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentEdward Apostol
 
Smarter Phones: Products After The App
Smarter Phones: Products After The AppSmarter Phones: Products After The App
Smarter Phones: Products After The AppSong Hia
 
What I Learned about Mobile UX... The Hard Way
What I Learned about Mobile UX... The Hard WayWhat I Learned about Mobile UX... The Hard Way
What I Learned about Mobile UX... The Hard WayJosh Jeffryes
 
I broke what?!??!? Taking over maintenance on well loved projects
I broke what?!??!? Taking over maintenance on well loved projectsI broke what?!??!? Taking over maintenance on well loved projects
I broke what?!??!? Taking over maintenance on well loved projectsBert JW Regeer
 
Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Brian LeRoux
 
Prdata-iphone update
Prdata-iphone updatePrdata-iphone update
Prdata-iphone updatenondit
 
Ipad accessory to studio practice
Ipad accessory to studio practiceIpad accessory to studio practice
Ipad accessory to studio practiceScott Brown's
 
Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.
Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.
Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.Coolblue
 
Lessons from Branch's launch
Lessons from Branch's launchLessons from Branch's launch
Lessons from Branch's launchaflock
 
Building a mobile game in Xamarin.Forms
Building a mobile game in Xamarin.FormsBuilding a mobile game in Xamarin.Forms
Building a mobile game in Xamarin.FormsShaunLawrence9
 
Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.
Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.
Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.Coolblue
 
Exploratory Mobile Testing Webinar_XBOSoft_jean_annharrison
Exploratory Mobile Testing Webinar_XBOSoft_jean_annharrisonExploratory Mobile Testing Webinar_XBOSoft_jean_annharrison
Exploratory Mobile Testing Webinar_XBOSoft_jean_annharrisonXBOSoft
 

What's hot (19)

Keynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochKeynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul Koch
 
Continuous Updating
Continuous UpdatingContinuous Updating
Continuous Updating
 
PyCon UK 2013 "Python Adventures in Startup Land"
PyCon UK 2013 "Python Adventures in Startup Land"PyCon UK 2013 "Python Adventures in Startup Land"
PyCon UK 2013 "Python Adventures in Startup Land"
 
Choosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for DevelopmentChoosing Javascript Libraries to Adopt for Development
Choosing Javascript Libraries to Adopt for Development
 
Smarter Phones: Products After The App
Smarter Phones: Products After The AppSmarter Phones: Products After The App
Smarter Phones: Products After The App
 
What I Learned about Mobile UX... The Hard Way
What I Learned about Mobile UX... The Hard WayWhat I Learned about Mobile UX... The Hard Way
What I Learned about Mobile UX... The Hard Way
 
I broke what?!??!? Taking over maintenance on well loved projects
I broke what?!??!? Taking over maintenance on well loved projectsI broke what?!??!? Taking over maintenance on well loved projects
I broke what?!??!? Taking over maintenance on well loved projects
 
Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011
 
From Idea to App Store
From Idea to App StoreFrom Idea to App Store
From Idea to App Store
 
Prdata-iphone update
Prdata-iphone updatePrdata-iphone update
Prdata-iphone update
 
Ipad accessory to studio practice
Ipad accessory to studio practiceIpad accessory to studio practice
Ipad accessory to studio practice
 
TxJS 2011
TxJS 2011TxJS 2011
TxJS 2011
 
Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.
Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.
Coolblue Behind the Scenes | Niels Abels - Continuous Delivery.
 
Lessons from Branch's launch
Lessons from Branch's launchLessons from Branch's launch
Lessons from Branch's launch
 
Building a mobile game in Xamarin.Forms
Building a mobile game in Xamarin.FormsBuilding a mobile game in Xamarin.Forms
Building a mobile game in Xamarin.Forms
 
Phonegap 2.x
Phonegap 2.xPhonegap 2.x
Phonegap 2.x
 
Collapsed
CollapsedCollapsed
Collapsed
 
Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.
Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.
Coolblue Behind the Scenes | Jeffrey Simons - The UX nerd and you.
 
Exploratory Mobile Testing Webinar_XBOSoft_jean_annharrison
Exploratory Mobile Testing Webinar_XBOSoft_jean_annharrisonExploratory Mobile Testing Webinar_XBOSoft_jean_annharrison
Exploratory Mobile Testing Webinar_XBOSoft_jean_annharrison
 

Similar to Real world software launch

Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionIndiginox
 
Cross-platform logging and analytics
Cross-platform logging and analyticsCross-platform logging and analytics
Cross-platform logging and analyticsDrew Crawford
 
I Want These * Bugs Off My * Internet
I Want These * Bugs Off My * InternetI Want These * Bugs Off My * Internet
I Want These * Bugs Off My * InternetDan Kaminsky
 
Generative Testing in Clojure
Generative Testing in ClojureGenerative Testing in Clojure
Generative Testing in ClojureAlistair Roche
 
Preparing for the WebGeek DevCup
Preparing for the WebGeek DevCupPreparing for the WebGeek DevCup
Preparing for the WebGeek DevCupbryanbibat
 
How to be an Independent Mobile Dev by TJ Grant
How to be an Independent Mobile Dev by TJ GrantHow to be an Independent Mobile Dev by TJ Grant
How to be an Independent Mobile Dev by TJ GrantTJ Grant
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitChad Udell
 
Mobil Weekend - Evolution of the Test Team
Mobil Weekend - Evolution of the Test TeamMobil Weekend - Evolution of the Test Team
Mobil Weekend - Evolution of the Test TeamCsaba Szabó
 
Scaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON TutorialScaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON Tutorialduleepa
 
Mobile Apps for Businesses
Mobile Apps for BusinessesMobile Apps for Businesses
Mobile Apps for BusinessesCarl Brown
 
6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservicesDynatrace
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++Michael Heron
 
Rapid Prototyping 2015: Its a Mad Mad World
Rapid Prototyping 2015: Its a Mad Mad WorldRapid Prototyping 2015: Its a Mad Mad World
Rapid Prototyping 2015: Its a Mad Mad WorldMarti Gold
 
Don't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobileDon't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobilePhilip Brechler
 
Debugging microservices in production
Debugging microservices in productionDebugging microservices in production
Debugging microservices in productionbcantrill
 
Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions		Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions Sauce Labs
 

Similar to Real world software launch (20)

Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 edition
 
Cross-platform logging and analytics
Cross-platform logging and analyticsCross-platform logging and analytics
Cross-platform logging and analytics
 
I Want These * Bugs Off My * Internet
I Want These * Bugs Off My * InternetI Want These * Bugs Off My * Internet
I Want These * Bugs Off My * Internet
 
Generative Testing in Clojure
Generative Testing in ClojureGenerative Testing in Clojure
Generative Testing in Clojure
 
Preparing for the WebGeek DevCup
Preparing for the WebGeek DevCupPreparing for the WebGeek DevCup
Preparing for the WebGeek DevCup
 
How to be an Independent Mobile Dev by TJ Grant
How to be an Independent Mobile Dev by TJ GrantHow to be an Independent Mobile Dev by TJ Grant
How to be an Independent Mobile Dev by TJ Grant
 
Back to School with 50 Tech Tips
Back to School with 50 Tech TipsBack to School with 50 Tech Tips
Back to School with 50 Tech Tips
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
 
Mobil Weekend - Evolution of the Test Team
Mobil Weekend - Evolution of the Test TeamMobil Weekend - Evolution of the Test Team
Mobil Weekend - Evolution of the Test Team
 
Great! another bug
Great! another bugGreat! another bug
Great! another bug
 
Scaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON TutorialScaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON Tutorial
 
Mobile Apps for Businesses
Mobile Apps for BusinessesMobile Apps for Businesses
Mobile Apps for Businesses
 
6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices
 
How to write bad code using C#
How to write bad code using C#How to write bad code using C#
How to write bad code using C#
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++
 
Rapid Prototyping 2015: Its a Mad Mad World
Rapid Prototyping 2015: Its a Mad Mad WorldRapid Prototyping 2015: Its a Mad Mad World
Rapid Prototyping 2015: Its a Mad Mad World
 
Don't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobileDon't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobile
 
Debugging microservices in production
Debugging microservices in productionDebugging microservices in production
Debugging microservices in production
 
Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions		Live Panel: Appium Core Committers Answer Your Questions
Live Panel: Appium Core Committers Answer Your Questions
 
Mocast Postmortem
Mocast PostmortemMocast Postmortem
Mocast Postmortem
 

More from Kunal Johar

Cloud fail scaling to infinity but not beyond
Cloud fail   scaling to infinity but not beyondCloud fail   scaling to infinity but not beyond
Cloud fail scaling to infinity but not beyondKunal Johar
 
Career - Senior Design (Computer Science)
Career - Senior Design (Computer Science)Career - Senior Design (Computer Science)
Career - Senior Design (Computer Science)Kunal Johar
 
Design part iii - Ready to Build
Design part iii - Ready to BuildDesign part iii - Ready to Build
Design part iii - Ready to BuildKunal Johar
 
Journey of an Idea to Invention Part 1 of 3
Journey of an Idea to Invention Part 1 of 3Journey of an Idea to Invention Part 1 of 3
Journey of an Idea to Invention Part 1 of 3Kunal Johar
 
Screencasting and Presenting for Engineers
Screencasting and Presenting for EngineersScreencasting and Presenting for Engineers
Screencasting and Presenting for EngineersKunal Johar
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Kunal Johar
 

More from Kunal Johar (6)

Cloud fail scaling to infinity but not beyond
Cloud fail   scaling to infinity but not beyondCloud fail   scaling to infinity but not beyond
Cloud fail scaling to infinity but not beyond
 
Career - Senior Design (Computer Science)
Career - Senior Design (Computer Science)Career - Senior Design (Computer Science)
Career - Senior Design (Computer Science)
 
Design part iii - Ready to Build
Design part iii - Ready to BuildDesign part iii - Ready to Build
Design part iii - Ready to Build
 
Journey of an Idea to Invention Part 1 of 3
Journey of an Idea to Invention Part 1 of 3Journey of an Idea to Invention Part 1 of 3
Journey of an Idea to Invention Part 1 of 3
 
Screencasting and Presenting for Engineers
Screencasting and Presenting for EngineersScreencasting and Presenting for Engineers
Screencasting and Presenting for Engineers
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 

Recently uploaded

Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
ROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint PresentationROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint PresentationAadityaSharma884161
 
Romantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxRomantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxsqpmdrvczh
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfFraming an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfUjwalaBharambe
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
Planning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptxPlanning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptxLigayaBacuel1
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxEyham Joco
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 

Recently uploaded (20)

Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
ROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint PresentationROOT CAUSE ANALYSIS PowerPoint Presentation
ROOT CAUSE ANALYSIS PowerPoint Presentation
 
Romantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptxRomantic Opera MUSIC FOR GRADE NINE pptx
Romantic Opera MUSIC FOR GRADE NINE pptx
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfFraming an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
Planning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptxPlanning a health career 4th Quarter.pptx
Planning a health career 4th Quarter.pptx
 
Types of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptxTypes of Journalistic Writing Grade 8.pptx
Types of Journalistic Writing Grade 8.pptx
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 

Real world software launch

  • 1. REAL WORLD SOFTWARE LAUNCH CSCI 196 / 4244 INSTRUCTOR: KUNAL JOHAR
  • 2. WORKFLOW (PRE-SENIOR DESIGN) • Receive assignment • Write pseudocode • Write program • Test Program • Submit • Then what?
  • 3. WORKFLOW (SENIOR DESIGN) • Create assignment • Write pseudocode / bootcamp • Write program • Test program (how)? • Present program • Then what?
  • 4. TYPES OF SOFTWARE • What are the different kinds of software that we see in the field?
  • 5. TYPES OF SOFTWARE •Web Apps •Mobile Apps •Desktop Apps •Real-time Apps •Mainframe Apps
  • 6. LAUNCHING SOFTWARE •What does it mean to launch software?
  • 7. LAUNCHING SOFTWARE • Software Launches by Type • Web Apps • Mobile Apps • Desktop Apps • Real-time Apps • Mainframe Apps
  • 8. ….BACK TO SENIOR DESIGN Scenario: You did a great job at the 100% presentation. Afterwards, Chairman Youssef asks for a personal demo. He points out a few flaws that he wants fixed since you have been selected for the Pelton award. Your Project: Recognize gestures using a web cam and a special green marker you hold on your finger. The software was set to look at RGB values with some tolerance to detect and track the green marker The problem: In your dorm room gestures worked just fine, but in the CS room gestures were not often recognized.
  • 9. …BACK TO SENIOR DESIGN • How would you tackle this problem? • How would you implement the fixes? • How would you show the fixes are implemented?
  • 10. …BACK TO SENIOR DESIGN • Why did you implement the fix? • For whom did you implement the fix?
  • 11. …BACK TO SENIOR DESIGN •This actually happened…(well almost) •Solution • Adam discovered the use of Hue / Saturation Values in addition to RGB values
  • 12. PERFECT SOFTWARE •Perfect software has no bugs •What are some examples of perfect software?
  • 13. LIST OF PERFECT SOFTWARE (this slide was intentionally left blank)
  • 14. SOFTWARE LAUNCH (NAÏVE METHOD) •Write Code •It Compiles,  •Start Shipping! •What could possibly go wrong?
  • 15. POST LAUNCH PROBLEMS •Scalability Issues •Bugs / Crashes •Failure to meet original requirements •Anything else?
  • 16. POST LAUNCH PROBLEMS •It doesn‟t scale! •ToVieFor, Inc – TechCrunch Finalist (Really miserable people to work with)
  • 18. POST LAUNCH PROBLEMS •We‟ll get back to these… • Bugs / Crashes • Failure to meet original requirements •How would we go about fixing problems when they are out in the field?
  • 19. FIXING PROBLEMS POST LAUNCH Scenario: You are a software developer assigned to a particular application that has some reported bugs. Who do you think is responsible for fixing the bugs? How do you think they get fixed?
  • 20. FIXING PROBLEMS POST LAUNCH •What does it mean to be fixed? • Code fixed • Fix regressively tested (how?) • Fix deployed (how? and who?)
  • 21. PROBLEMS…FIXING PROBLEMS • Chain of Responsibility • Developer and “Deployer” are usually different people • Development machine can have different configuration than live environment • Time is against you • What time do software fixes get deployed? • What happens from the time a bug is discovered to fix? • What if a bug isn‟t discovered for a long time?
  • 22. SUPERMAN III •Harmony Gateway • Scheduling and Billing Software • 400 students x 6 schools x lots of transactions! • Accrual based accounting system (lots of records just to sign up for a month of lessons) •System deployed March 2007
  • 23. SUPERMAN III • WriteRevenueRecognizeJE() • X = Total Lessons Cost • C = Total Lesson Count • For each lesson date D • Recognize X/C revenue on D • If DISCOUNT • Output Discount JE • WriteRevenueRefundJE() • X = Total Lessons Cost • C = Total Lesson Count • For each lesson date D • Recognize X/C revenue on D • Bug Discovered August 2010…..
  • 24. SUPERMAN III •When lessons were refunded, discounts were never “undone” •Result, about $500,000 in income placed in the wrong account •I would have gotten fired but… •Fortunately there was $500k EXTRA 
  • 25. HOW TO FIX PROGRAMS •Understanding we can‟t deploy our fixes directly how can we handle fixes for the following platforms: • Web • Desktop • Mobile App • Real-time (e.g. Car / Avionics?)
  • 26. FIXING OUR PROGRAM •Let‟s revisit and old friend
  • 27. FIXING OUR PROGRAM •Where am I being launched?
  • 28. FIXING OUR PROGRAM • Yes, launching also be a huge hassle… • Include app screenshots • Include icons in 4 different sizes • Generate a code signing certificate • Have a website • Ensure you are not violating the store submission (vague) guidelines • Submit • Wait 7-14 days to find out if you have a violation and need to wait another 7-14 days • Pray
  • 29. VERSION 1 LAUNCHED! •“Yes, we‟re ahead of schedule!” •“Getting through the app store details was a hassle but, I‟m sure it all works”
  • 31. VERSION 1 LAUNCHED! … :( (5 voicemails left) “Many reporters contacted and (aka friends and my sister) want to run a story but they can’t with all these bugs!”
  • 34. TRYING TO UNDERSTAND BUGS •Try to walk through scenario • Who sent the vote? When did they send it? • Then we try sending them (magically it works) •Check externalities • Amazon for storage • Urban Airship for push notifications
  • 35. AVOIDING EGO • “It works on my machine” • Of course it does, you are the developer • We like to think we can „prove‟ a problem is outside of our purview • If it doesn‟t work for the client, no amount of evidence will be convincing • The truth is, it is likely our fault • When Apple/Amazon/API providers mess up there are usually a lot of people who have problems • StackOverflow it, otherwise take responsibility • Worst is the time to deploy • Client side bug fix to app store means another week minimum of the bug existing • We as developers have no control over this, but imagine the point of view of the customers / users
  • 36. WE HAD BIG EGOS • Few problems • Text labeling issues • Amazon S3 interaction failures • Privacy settings blocking push notifications • But most of the problems were plain-ole annoying • “How come it send a text message when the recipient doesn‟t have the app? • To client bugs mean not meeting the “original requirement” that was never there
  • 37. VERSION 1 ISSUES •Bugs • Push notifications only work in free version • Free version‟s ad is covering up “Feedback” • App says “Shopping with Friends” but name is “Shopptique” • Internet keeps “going out” •Fixed in a series of updates V1.1 – 1.4, taking 4 full weeks
  • 38. WE HAD BIG EGOS • “I just want it to work, this needs to be like texting and no one, not my sister, mom, dad, anyone have gotten push notifications” • Disbelief: Push notifications worked for everyone in the office • Bad luck: There was an cloud outage during Christmas, nothing was working for anyone. • How do you explain „cloud outage‟? • “Aghh, I‟m very disappointed.” Push notifications just don‟t work.
  • 39. WE HAD BIG EGOS •“Why don‟t you come to the office, we have all of the development tools here and can figure this out once and for all” • Translation: Come here so we can belittle you and show you never downloaded the latest version • Her Thoughts: Nice! Finally I get to call their bluff on their worthless skill.
  • 40. ACCOUNTABILITY…. •We have our 5 test devices and emulator ready to go •Heather comes to our office with 2 friends •It is the moment of truth, we all fire up the app
  • 41. ACCOUNTABILITY •“Just in case” • I order pizza • Heather brought wine •Why did we each do this?
  • 42. ACCOUNTABILITY •Heather and Friend • Push notifications don‟t work! •All of our devices including 2 brand new devices • Everything works great…. •Looks like none of us were lying •Whose fault? What are the next steps?
  • 43. SOLUTION •We have a “femtocell” at the office •Presumed “bad internet connection” was the reason, promised to research how other apps get around the problem •We knew that couldn’t be it….but we were stumped and wanted her to leave • Good thing we got pizza!
  • 44. SOLUTION • Found a better method to degrade on a poor connection • Discovered Push Notification Provider (Urban Airship) “deactivated” devices that had the original faulty push notification code • Found a script to re-activate without requiring to push an update to the app store
  • 45. THE END? •Called Heather • Works for her! • Works for her sister • Works for her parents • Works for her friends • ….except this one friend •Sigh…. • We asked for the friend‟s username • Never got a response
  • 46. WE KNOW BETTER THAN THIS… •Web Programming Has Made Us Lazy • Problems can be fixed instantly for everyone • We should do more testing, but can get away with not •What to do for all other software • User acceptance testing • Soft Launch • Actual launch
  • 47. SENIOR DESIGN AND BEYOND http://www.joelonsoftware.com/articles/fog0000000067.html Academia creates an environment where it is okay to get the problem solved and move on. In the real world, there is no excuse that this “is for research.” Why did Heather not test her own app before launching? Why did we let her launch without testing? What did it cost Heather to skip this step? What did it cost us?
  • 48. SENIOR DESIGN AND BEYOND “Why do something when someone else will take care of it?” Will you lead by example for the sake of trying new opportunities? Will you wait for problems to arise and stagnate? Worse, will you even realize you are stagnating?