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.
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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