On Building NextGen Business Applications - Software Engineering

On Building NextGen Business Applications - Software Engineering

Applications are the foundation of digital transformation. Underneath any digital transformation strategy, you will always find three key workstreams 1/Migrate, 2/Modernize, and 3/Innovate (Reimagine).

If your organization wants to avoid the pot holes of unmanageable legacy applications, then may I submit the following high level steps to help you on your journey to value realization?

There is nothing wrong with legacy. Period. What makes legacy applications look old, is the advancement of new technologies, and the reducing cost of compute power.

Legacy is the foundation - but it is important to refresh the foundation with methods that brings the entire organization together to build "services" and not just "applications". Software engineering efforts do not meet deadlines or usually go beyond the budget because the initial exercise of foundation planning was executed in a rush. How often do we see bridges or tunnels or a maze of overpass highways, get restructured? They do go through regular updates and maintenance, but they don't need to be "re-factored" again and again. Build once, maintain regularly - is the required mindset.

  1. Shift the mindset from viewing source code as an "application" to "a service" that captures business logic, principles of enterprise governance, information security, finance (as it is going to cost you something), sales/marketing, legal, cloud infrastructure and application development teams together. You are building a foundation for a new service through the new application being refactored or written anew.
  2. It is appropriate to begin at the MVP stage, but the foundational planning has to incorporate a cross-functional team from various parts of the organization that provides meaningful inputs to the "business logic" that gets programmed. This helps to avoid costly updates later on. Put in the work ahead of time.
  3. A foundation is not built each day, you lay the foundation once, and then build there upon. Aesthetic design and modifications are ongoing, however, the foundation is built once and for all. That takes time, expertise, planning, designing, deliberating, and ensuring that efforts do not yield undesirable results.
  4. Financial investment planning is equally important along with security, governance, risk, and control. Have your eyes on data from the foundational stage. Think data and data security before the service goes to testing.
  5. Choose your technology stack carefully. Should you go 100% cloud native? Should you go with Hyperscaler managed services? Technology stack should be selected carefully - with a mindset that yields desired performance with lower compute cost. Is the stack scalable? Is it easy to learn? If you choose to write your code in machine language to give you fastest computing power, it is okay, but plan for the beginning who is going maintain and run it.
  6. Document your configuration items, business logic flow, user interface details, etc. in a knowledge base that is secure and shared with relevant personas. Assign key individuals whose primary responsibility it to manage the knowledge base and make it accessible. Ensure it is stored in a replicated environment with appropriate access control.
  7. Cross train your teams on the business logic, application code repositories, data flow diagrams, etc., should be known by your DevSecOps teams. Hopefully it is not just a few individuals, but group that provides your sustainable operations in the face of planned or unplanned attrition.
  8. Cost to manage the overall system should be supported by a detailed business case that has staggered investment schedule aligned to milestones that are delivered in time. While there are many different ways to handle the IT budget, the intent here is to quantify the needed investment of time and resources and qualify them based on project milestones or development stages.
  9. Finally, things will go wrong. Just accept it as a fact that exists in all IT operations, so plan incremental investments as per incremental work streams. Each step is a layered approach to overall development of the business service. Manage your application as a business service and treat the re-host, re-platform, re-factor motions as enhancement to your business service. Else many projects get derailed as there is not proper buy-in secured from appropriate stakeholders ahead of time.
  10. Build your application with logic to identify failures, build intelligence in your foundation where the software logic is able to identify patterns and anomalies that could result in a system-failure. Notification of configuration items can be built in a "configuration as a code" manner. Applications are your life line, without applications infrastructure has no meaning. Consider the following: Your software is processing millions of credit card transactions each day, would you consider building intelligence in the code that combines customer data to forecast monthly payment / collection forecast? How about building some native reports that are easy to produce without hiring a large team to collect and analyze the credit card processing data? Etc.
  11. With new AI/ML technologies, the development of business services is enhanced to deliver business value in shorter period of time. Shift Left - that is one mental model required to build modern applications that serve the business effectively. Such planning should be part of your overall Cloud Strategy and aligned to Organization wide IT strategy.
  12. Legacy should be combined with Posterity. There is nothing wrong with legacy, as long as it is a foundation for business services. Therefore, I do not recommend a big-bang approach, take incremental steps in development, but for your foundation design, think big, think wide, think scale and reach, think durability, think sustainability, think resilience - from the start, but work on it incrementally. It has been said, "Rome was not built in a day" and it is also true, in my humble opinion, "All roads do not lead to Rome" - narrow down the technology stack and use a stack that is easily to build upon, easy to integrate, easy to manage, and it should scale with your business needs.
  13. Focus your development efforts on the following: 1/Fit for purpose, 2/Fit for use, 3/Design for Production, 4/Design for Reliability, 5/Design for Scalability, 6/Design for Customer Experience, etc. Should you desire to discuss further, please feel free to connect with me. Thank you for reading my post.

Rojo Mathai

Technology Executive | AI & Data, Digital Transformation, Strategy, P&L | People Leadership???

8 个月

This is a fantastic compilation of steps and the process. Great work putting it all together!

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了