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

Developing Enterprise Ready Software

Avatar for Nate Brown Nate Brown
February 06, 2018

Developing Enterprise Ready Software

We’ll explore what it means to build enterprise-ready software in the real world, by dissecting 13 practical characteristics and concepts that should define an enterprise application.

This was a private event, exclusively for the students at Woz U.

Avatar for Nate Brown

Nate Brown

February 06, 2018
Tweet

More Decks by Nate Brown

Other Decks in Technology

Transcript

  1. ABOUT ME • Director of Software Engineering at AppointmentPlus •

    Team of 25+ in US and India • SaaS using LAMP, Laravel, Angular, React, Vue • Mobile apps in iOS and Android • MS Office apps in C# .Net • Previous roles • Software Development Manager at AppointmentPlus • Lead Software Developer at AppointmentPlus • Senior Application Systems Analyst at University of Arizona College of Medicine • Workstation Specialist at Saint Xavier University • Helpdesk Intern • Freelance/Self-Employed Multimedia Designer
  2. REAL WORLD ENTERPRISE SOFTWARE • Developing beyond boot camp •

    Enterprise software? • Providing mission critical function for an organization • Serving the business needs of “large” organizations • Serving the consumer needs of an organization’s customers • B2B2C • High level rubric/framework for guiding development practices
  3. REAL WORLD ENTERPRISE SOFTWARE • Focused heavily on loosely coupled

    relationships • between the application and its underlying infrastructure (code vs server) • between the layers of the application (data, logic, presentation) • between the components within each layer (i.e. notifications vs reporting) • between the application its required human interaction (releases, resilience)
  4. THE THREE CONTEXTS • Commitment to fulfilling provider responsibilities •

    Foundational standards • The baseline expectations • Consistent regardless of implementation • Commitment to meeting client expectations • Facilitating the function of the enterprise • Empowering the growth of the enterprise • Commitment to providing engaging user experiences • The “wow factor” • Pushing the enterprise towards innovation
  5. THE PILLARS Provider Responsibilities • Secure • Scalable • Portable

    • Transferable • Maintainable Client Expectations • Functional • Global • Extensible • Adaptable • Powerful User Experiences • Responsive • Accessible • Innovative
  6. SECURE Certain to remain or continue to be not subject

    to threat; protected against attack or other criminal activity. • Security is the foremost responsibility of the software provider • Security starts with the developer’s physical and virtual environments • Security is not a milestone, it’s a continuous theme and an ongoing activity
  7. SCALABLE Capable of being easily expanded or upgraded on demand;

    able to be used or produced in a range of capabilities • Scalability refers to both the technology and the real-world implementation • Design and develop to handle ebbs and flows in usage • Consider the client’s current state and future needs
  8. PORTABLE Easily moves between environments and technologies on demand, with

    little to no hard dependencies • Develop in independent and interchangeable layers • Strive to be loosely coupled to the environments and architectures in which the application is deployed • Allow discrete components/services to move without detriment to the application
  9. TRANSFERABLE Able to be transferred or made over to the

    possession of another • Transferability applies to development and post-development hand offs • Write code for the next developer • Plan to have more than one SME for each component or feature • Provide thorough documentation when handing off to a teammate, the client, a tester, a contractor, etc
  10. MAINTAINABLE Exists in continuance with low cost of ownership; able

    to be upgraded as needed • Capture, manage, and eliminate technical debt • Monitor updates to dependencies • Plan for frequent, smaller refactors and avoid lengthy, risky rewrites • Write code that is clean, concise, and well documented
  11. FUNCTIONAL Capable of serving the purpose for which it was

    designed • Be consultative and partner with the client to understand and achieve the purpose • Allow the user to seamlessly perform intended functions as expected • Do not tolerate defects of any level of criticality in the product’s core competency
  12. GLOBAL Thinking holistically in terms of the entire world •

    Evaluate every aspect of the application in terms of global availability • Almost all other aspects are all impacted by locale
  13. EXTENSIBLE Designed with the ability to expand or add on

    to its capabilities; implementation takes future growth into consideration • Design your application to play well with others • Build in hooks, listeners, messaging, callouts, etc to enable customization and integration • Avoid rigid implementations that stifle innovation
  14. ADAPTABLE Able to adjust readily to different conditions; able to

    be modified for a new use or purpose • Pertains to the scalability of the application’s real world functionality • Design to be flexible and configurable to fulfill core functions in a variety of use cases • As the client’s operating environment evolves, so does its use of the application
  15. POWERFUL Giving control and influence over people and events; having

    a strong effect • Give the user a sense of command and control over the problem it is designed to solve • Provide a complete solution, addressing all aspects of the core competency • The user should feel confident in the ability of the application
  16. RESPONSIVE Appropriately reacting to change quickly and in a desired

    or positive way • Responsiveness goes beyond adapting the presentation on varying types and sizes of devices • Your application will need to adapt to changes in consumers’ expectations in terms of advancing technology
  17. ACCESSIBLE Easy for anyone within the target audience to obtain

    and use • Understand the demographics of the user base and/or target audience • Consider cognitive and physical ability to provide ease of use • Consider global accessibility standards
  18. INNOVATIVE Introducing new ideas; original and creative in thinking •

    Strive to provide the end user with a powerful, forward-thinking experience • Leverage advances in technology to push the boundaries of functionality
  19. THE PILLARS Provider Responsibilities • Secure • Scalable • Portable

    • Transferable • Maintainable Client Expectations • Functional • Global • Extensible • Adaptable • Powerful User Experiences • Responsive • Accessible • Innovative