Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beyond Frameworks

Beyond Frameworks

Stuart's talk from #phpuk11 about the problems facing you if you use a framework today, and how you cam solve those problems by moving to a component-based architecture.

Stuart Herbert

September 26, 2011
Tweet

More Decks by Stuart Herbert

Other Decks in Programming

Transcript

  1. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks About Stuart • Head

    of Engineering, Gradwell.com • Co-author, Zend Certification Study Guide for PHP 4 • Open-source Contributor Since 1994
  2. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks About Stuart • Head

    of Engineering, Gradwell.com • Co-author, Zend Certification Study Guide for PHP 4 • Open-source Contributor Since 1994
  3. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks About Stuart • Head

    of Engineering, Gradwell.com • Co-author, Zend Certification Study Guide for PHP 4 • Open-source Contributor Since 1994
  4. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/4sK29V Beyond Frameworks Second generation app

    built on top of own framework Developers enjoyed building it But they hated completing it or maintaining it
  5. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/4sK29V Beyond Frameworks Second generation app

    built on top of own framework Developers enjoyed building it But they hated completing it or maintaining it
  6. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/4sK29V Beyond Frameworks Second generation app

    built on top of own framework Developers enjoyed building it But they hated completing it or maintaining it
  7. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/5Z6Arf Beyond Frameworks How long would

    it take to upgrade your app to the next major version of the framework? Would you do the upgrade, or stick with the current framework version?
  8. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/5Z6Arf Beyond Frameworks How long would

    it take to upgrade your app to the next major version of the framework? Would you do the upgrade, or stick with the current framework version?
  9. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/4Z8oZE Beyond Frameworks What would it

    take to switch your app to a different framework? Could you port your code, or would you be forced to rewrite all or most of it?
  10. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/4Z8oZE Beyond Frameworks What would it

    take to switch your app to a different framework? Could you port your code, or would you be forced to rewrite all or most of it?
  11. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/85jzRA Beyond Frameworks How would you

    re-use some of your app’s code in a different app? Especially if the other app doesn’t use the same framework?
  12. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/85jzRA Beyond Frameworks How would you

    re-use some of your app’s code in a different app? Especially if the other app doesn’t use the same framework?
  13. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/6GMfQc Beyond Frameworks How would you

    outsource some of your app development to teams around the world? How would you accept the work delivered back to you?
  14. Stuart Herbert - http://blog.stuartherbert.com/php/ http://flic.kr/p/6GMfQc Beyond Frameworks How would you

    outsource some of your app development to teams around the world? How would you accept the work delivered back to you?
  15. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Application By Extracting Out ...
  16. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Application Components ... Into Independent Libraries Of Code
  17. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Autoloader Application Components Use An Autoloader To Pull In These New Components
  18. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Autoloader Application Components This Gives You A Larger Set Of Reusable Code
  19. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Layered Architecture Frameworks Business

    Logic Data Model Utilities App Code Plugins Autoloader Application Components
  20. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Completely independent of the framework • Built & tested in isolation of your app code • Can be built by different teams • Don’t have to change when the framework changes
  21. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Completely independent of the framework • Built & tested in isolation of your app code • Can be built by different teams • Don’t have to change when the framework changes
  22. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Completely independent of the framework • Built & tested in isolation of your app code • Can be built by different teams • Don’t have to change when the framework changes
  23. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Completely independent of the framework • Built & tested in isolation of your app code • Can be built by different teams • Don’t have to change when the framework changes
  24. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Reduces the Big Ball of String Syndrome • Mindset change to light apps on top of rich service layer • Improves development in parallel of apps & services • Injects additional discipline into development teams
  25. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Reduces the Big Ball of String Syndrome • Mindset change to light apps on top of rich service layer • Improves development in parallel of apps & services • Injects additional discipline into development teams
  26. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Reduces the Big Ball of String Syndrome • Mindset change to light apps on top of rich service layer • Improves development in parallel of apps & services • Injects additional discipline into development teams
  27. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why Components? Business Logic

    Data Model Utilities • Reduces the Big Ball of String Syndrome • Mindset change to light apps on top of rich service layer • Improves development in parallel of apps & services • Injects additional discipline into development teams
  28. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  29. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  30. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  31. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  32. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  33. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Application Components Keep Components Outside Of Your App
  34. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Autoloader Application Components Use An Autoloader To Pull In Components
  35. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Autoloader Application Components Why Use An Autoloader?
  36. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Frameworks Business Logic Data

    Model Utilities App Code Plugins Autoloader Application Components Autoloading Makes Life Easy!
  37. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Who has heard

    of PSR0? • http://groups.google.com/group/php- standards/web/psr-0-final-proposal • Backed by leading names in the community • Perfect for a component approach One True Autoloader
  38. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Who has heard

    of PSR0? • http://groups.google.com/group/php- standards/web/psr-0-final-proposal • Backed by leading names in the community • Perfect for a component approach One True Autoloader
  39. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Who has heard

    of PSR0? • http://groups.google.com/group/php- standards/web/psr-0-final-proposal • Backed by leading names in the community • Perfect for a component approach One True Autoloader
  40. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Who has heard

    of PSR0? • http://groups.google.com/group/php- standards/web/psr-0-final-proposal • Backed by leading names in the community • Perfect for a component approach One True Autoloader
  41. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Namespace separators ‘\’

    become DIRECTORY_SEPARATOR • Underscore in class names ‘_’ become DIRECTORY_SEPARATOR • Top namespace is your organisation • Achieves 1:1 mapping from classname to filename on disk PSR0 Autoloader
  42. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Namespace separators ‘\’

    become DIRECTORY_SEPARATOR • Underscore in class names ‘_’ become DIRECTORY_SEPARATOR • Top namespace is your organisation • Achieves 1:1 mapping from classname to filename on disk PSR0 Autoloader
  43. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Namespace separators ‘\’

    become DIRECTORY_SEPARATOR • Underscore in class names ‘_’ become DIRECTORY_SEPARATOR • Top namespace is your organisation • Achieves 1:1 mapping from classname to filename on disk PSR0 Autoloader
  44. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Namespace separators ‘\’

    become DIRECTORY_SEPARATOR • Underscore in class names ‘_’ become DIRECTORY_SEPARATOR • Top namespace is your organisation • Achieves 1:1 mapping from classname to filename on disk PSR0 Autoloader
  45. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Autoloader Examples • Phin_Project\ExtenderLib\FileLoader

    -> Phin_Project/ExtenderLib/FileLoader.php • Phin_Project\Console\Std_Out -> Phin_Project/Console/Std/Out.php
  46. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Autoloader Examples • Phin_Project\ExtenderLib\FileLoader

    -> Phin_Project/ExtenderLib/FileLoader.php • Phin_Project\Console\Std_Out -> Phin_Project/Console/Std/Out.php
  47. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Autoloader Component • pear

    channel-discover pear.gradwell.com • pear install Gradwell/Autoloader
  48. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Autoloader Component • pear

    channel-discover pear.gradwell.com • pear install Gradwell/Autoloader
  49. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PHPUnit • De-facto standard

    for unit-testing PHP code • Supported by leading IDEs • Supported by CI environments • Perfect for use with components
  50. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PHPUnit • De-facto standard

    for unit-testing PHP code • Supported by leading IDEs • Supported by CI environments • Perfect for use with components
  51. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PHPUnit • De-facto standard

    for unit-testing PHP code • Supported by leading IDEs • Supported by CI environments • Perfect for use with components
  52. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PHPUnit • De-facto standard

    for unit-testing PHP code • Supported by leading IDEs • Supported by CI environments • Perfect for use with components
  53. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Tests ... •

    Document supported behaviour • Have separate tests for reported bugs • Cover 100% of the component’s code • Ship with the component
  54. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Tests ... •

    Document supported behaviour • Have separate tests for reported bugs • Cover 100% of the component’s code • Ship with the component
  55. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Tests ... •

    Document supported behaviour • Have separate tests for reported bugs • Cover 100% of the component’s code • Ship with the component
  56. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Tests ... •

    Document supported behaviour • Have separate tests for reported bugs • Cover 100% of the component’s code • Ship with the component
  57. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Explain how to

    load the component • Describe how you intend it to be used • Give several (non-trivial!) examples • Capture notes / FAQs Good Documentation
  58. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Explain how to

    load the component • Describe how you intend it to be used • Give several (non-trivial!) examples • Capture notes / FAQs Good Documentation
  59. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Explain how to

    load the component • Describe how you intend it to be used • Give several (non-trivial!) examples • Capture notes / FAQs Good Documentation
  60. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Explain how to

    load the component • Describe how you intend it to be used • Give several (non-trivial!) examples • Capture notes / FAQs Good Documentation
  61. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Write It Down ...

    • ... so you don’t have to remember • ... so you don’t have to keep explaining it to others • ... so you don’t have to read the source • ... so that others are more likely to reuse your efforts
  62. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Write It Down ...

    • ... so you don’t have to remember • ... so you don’t have to keep explaining it to others • ... so you don’t have to read the source • ... so that others are more likely to reuse your efforts
  63. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Write It Down ...

    • ... so you don’t have to remember • ... so you don’t have to keep explaining it to others • ... so you don’t have to read the source • ... so that others are more likely to reuse your efforts
  64. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Write It Down ...

    • ... so you don’t have to remember • ... so you don’t have to keep explaining it to others • ... so you don’t have to read the source • ... so that others are more likely to reuse your efforts
  65. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks What About phpDoc? •

    Useful for IDE code auto-completion • Useful as a summary of a method’s purpose • Reference documentation, not a manual
  66. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks What About phpDoc? •

    Useful for IDE code auto-completion • Useful as a summary of a method’s purpose • Reference documentation, not a manual
  67. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks What About phpDoc? •

    Useful for IDE code auto-completion • Useful as a summary of a method’s purpose • Reference documentation, not a manual
  68. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PEAR Installer • Love

    it or hate it, PEAR package format is a community-created solution • PEAR installer found on most computers • Supports installing both system-wide and into a sandbox • Simple to publish your own package repo
  69. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PEAR Installer • Love

    it or hate it, PEAR package format is a community-created solution • PEAR installer found on most computers • Supports installing both system-wide and into a sandbox • Simple to publish your own package repo
  70. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PEAR Installer • Love

    it or hate it, PEAR package format is a community-created solution • PEAR installer found on most computers • Supports installing both system-wide and into a sandbox • Simple to publish your own package repo
  71. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks PEAR Installer • Love

    it or hate it, PEAR package format is a community-created solution • PEAR installer found on most computers • Supports installing both system-wide and into a sandbox • Simple to publish your own package repo
  72. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why It Matters •

    Isolating code into components reduces amount of code that is affected by change • Backwards-compatibility breaks immediately negate that advantage • The more apps use a component, the worse the b/c breakage cost scales
  73. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why It Matters •

    Isolating code into components reduces amount of code that is affected by change • Backwards-compatibility breaks immediately negate that advantage • The more apps use a component, the worse the b/c breakage cost scales
  74. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Why It Matters •

    Isolating code into components reduces amount of code that is affected by change • Backwards-compatibility breaks immediately negate that advantage • The more apps use a component, the worse the b/c breakage cost scales
  75. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Transparent Versions • X.Y.Z

    scheme • X == Major version / API / ABI version • Y == Minor new features • Z == Bug fixes
  76. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Transparent Versions • X.Y.Z

    scheme • X == Major version / API / ABI version • Y == Minor new features • Z == Bug fixes
  77. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Transparent Versions • X.Y.Z

    scheme • X == Major version / API / ABI version • Y == Minor new features • Z == Bug fixes
  78. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Transparent Versions • X.Y.Z

    scheme • X == Major version / API / ABI version • Y == Minor new features • Z == Bug fixes
  79. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks You Can Break B/C

    • Just don’t do it by surprise! • Don’t be afraid to increment X in X.Y.Z • Google Chrome is already on 10.y.z ... • ... and it hasn’t done it any harm
  80. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks You Can Break B/C

    • Just don’t do it by surprise! • Don’t be afraid to increment X in X.Y.Z • Google Chrome is already on 10.y.z ... • ... and it hasn’t done it any harm
  81. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks You Can Break B/C

    • Just don’t do it by surprise! • Don’t be afraid to increment X in X.Y.Z • Google Chrome is already on 10.y.z ... • ... and it hasn’t done it any harm
  82. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks You Can Break B/C

    • Just don’t do it by surprise! • Don’t be afraid to increment X in X.Y.Z • Google Chrome is already on 10.y.z ... • ... and it hasn’t done it any harm
  83. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  84. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  85. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  86. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  87. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Good Components ... •

    Autoload • Are well tested • Are well documented • Are easy to install • Don’t break backwards compatibility by surprise
  88. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks ... If They ...

    • PSR0 - compliant autoloading • PHPUnit tests • Docbook manual • Packages installed via PEAR installer • Transparent version numbers
  89. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks ... If They ...

    • PSR0 - compliant autoloading • PHPUnit tests • Docbook manual • Packages installed via PEAR installer • Transparent version numbers
  90. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks ... If They ...

    • PSR0 - compliant autoloading • PHPUnit tests • Docbook manual • Packages installed via PEAR installer • Transparent version numbers
  91. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks ... If They ...

    • PSR0 - compliant autoloading • PHPUnit tests • Docbook manual • Packages installed via PEAR installer • Transparent version numbers
  92. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks ... If They ...

    • PSR0 - compliant autoloading • PHPUnit tests • Docbook manual • Packages installed via PEAR installer • Transparent version numbers
  93. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker We Sell Broadband Via Our Sales Website ...
  94. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker And Our Customer Control Panel
  95. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker iFrame The Control Panel Holds The Code Hostage The Sales Site Relies On An iFrame
  96. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker Provisioning Third Party Faults Availability Checker ... And The Control Panel Talks To The Third Party Who Provides Our Broadband SOAP iFrame
  97. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker Provisioning Third Party Faults Availability Checker We Wanted To Sell Exciting New Broadband Products From An Alternative Third Party As Well SOAP iFrame
  98. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker Provisioning Third Party Faults Availability Checker Changing The Control Panel Was Going To Be Expensive ... SOAP iFrame
  99. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker Provisioning Third Party Faults Availability Checker ... But Was The Only Way To Change The Sales Website SOAP iFrame
  100. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker Provisioning Third Party Faults Availability Checker Problem Is ... We Are Due To Retire This Control Panel
  101. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Availability Checker Provisioning Third Party Faults Availability Checker We Separated Out The Business Logic Of The Availability Checker SOAP
  102. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker Provisioning Third Party Faults Availability Checker Sales Can Now Improve Their Website Without Having To Rely On Control Panel’s Roadmap SOAP
  103. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel Invoicing Availability Checker Provisioning Third Party Faults Availability Checker Allowing Engineering To Retire This Version Of The Control Panel
  104. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks Sales Pitch Sales Website

    Product Specs Availability Checker Customer Account Control Panel 2 Invoicing Availability Checker Provisioning Third Party Faults Availability Checker And The New Control Panel Will Simply Re-use The Component Before Launch
  105. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Our customer profile

    has changed • We have outgrown our old applications • We are refactoring all of the needed logic from our old applications • Allows Sales and Engineering roadmaps to move without major log jams • Allows more features (especially internal ones) to be shared across more of our apps Moving To Components
  106. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Our customer profile

    has changed • We have outgrown our old applications • We are refactoring all of the needed logic from our old applications • Allows Sales and Engineering roadmaps to move without major log jams • Allows more features (especially internal ones) to be shared across more of our apps Moving To Components
  107. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Our customer profile

    has changed • We have outgrown our old applications • We are refactoring all of the needed logic from our old applications • Allows Sales and Engineering roadmaps to move without major log jams • Allows more features (especially internal ones) to be shared across more of our apps Moving To Components
  108. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Our customer profile

    has changed • We have outgrown our old applications • We are refactoring all of the needed logic from our old applications • Allows Sales and Engineering roadmaps to move without major log jams • Allows more features (especially internal ones) to be shared across more of our apps Moving To Components
  109. Stuart Herbert - http://blog.stuartherbert.com/php/ Beyond Frameworks • Our customer profile

    has changed • We have outgrown our old applications • We are refactoring all of the needed logic from our old applications • Allows Sales and Engineering roadmaps to move without major log jams • Allows more features (especially internal ones) to be shared across more of our apps Moving To Components