A Guide for Software Architects: Common Mistakes and Best Practices

0
34

Software architects play an invaluable role in the digital transformation of an organisation. To make a mark, they must imbibe certain qualities and avoid common errors.

Every organisation aims to perform better than its competitors, provide smart services to its customers, and be agile in adopting new business strategies. In this context, software architecture is a differentiator as well as a disruptor. New digital business models and unrelenting focus on client engagement are unlocking new, exciting initiatives and creating an unprecedented demand for software architects who can comfortably bridge any gap between business and technology.

Organisations today realise the importance of software architects and their new role in digital transformation. Gone are the days of extensive documentations, long timelines and rigid technology models. Enterprise architecture delivers great value and cuts costs and complexity by aligning technology tools with strategic business goals.

Modern software architecture has five components: strategy (business transformation), application modernisation (automation, cloud, microservices, APIs), connected intelligence (Big Data, AI/ML, IoT, 5G and edge technologies), trust (blockchain, cybersecurity, data privacy, governance and transparency) and realisation (Agile, DevSecOps and CI/CD). The software architect in this digital age must be well versed in all of these.

It is evident that next generation technologies like AI/ML, generative AI, cloud, Big Data analytics, cybersecurity, and platform as a service are going to change our world in ways we cannot imagine today. Adoption of these technologies will result in intelligent products, smarter services and transformed business operations.

Qualities of a software architect

Software architects (SAs) lay the foundation for all architecture-related activities within the organisation. They work with the business and IT teams in an organisation to promote business agility, digital acceleration, reliable IT functions and better ROI across the organisation. They build solutions according to software principles and standards, and jointly develop reference artifacts for use across the organisation.

Successful SAs of the future must acquire a few important qualities to guide an organisation to success (Figure 1).

Figure 1: Role of a software architect

Strategist: As strategists, SAs work closely with the business and strategic governance teams in understanding the IT strategies, directions and initiatives. They provide recommendations to the strategic governance team on technology directions and analyse the impact of new initiatives on the enterprise architecture. They define a long-term technology roadmap by mastering new technology trends, and interacting with industry standards bodies and consortia to help shape standards and processes.

Innovator: As innovators, architects with high-level design skills move beyond imperative thinking to being disruptive innovators. They have the capability to be involved in product selection and integration in the broader landscape and guide projects across the organisation. By thoroughly researching the technology, and the resulting ideation, SAs provide internal teams and IT leaders with more than just a list of ‘cool’ technology ideas.

Emerging technologist: As emerging technologists, SAs have deep technology expertise and are aware of the latest developments and innovations. They solve business problems by investigating new and emerging technologies as well as innovations in pilot and proof-of-concept projects. They are tech savvy, aware, and can advise the chief digital officer (CDO) on the usage of APIs, microservices, cloud, DevOps, smart database technologies and other emerging trends. They also understand the importance of staying abreast of DevSecOps and emerging applications that could save the organisation time and money, and open up unlimited possibilities.

Engineer: As engineers, SAs bring efficiency, agility and automation to systems. Systems with efficiency and agility goals need the best engineering supported by the right architecture. Some of the key engineering skills that they need to master are:

  • DevSecOps adoption, which helps drive agility and automation required for the business.
  • Learn multiple programming languages and stacks to appreciate and take the best architecture decisions.
  • Data engineering to understand data management and analytics for developing smart applications.
  • Failure analysis to build resilient systems by understanding the request paths and failure modes.

Good communicator: Software architects communicate their strategy well and rally various groups across the organisation. They understand their audience and keep the solutions interesting and simple. Their communication addresses questions like why, who, what, when, where and how.

Agile architect: SAs promote the agile approach across the enterprise. As a product owner, the agile architect identifies the architecture required by an organisation. The focus is on architecture as a collaboration and building the simplest architecture that can possibly work. SAs must not under architect or over design, and isolate rapidly changing components from more stable ones. They build, test, implement architectural flow, and guide the team towards achieving quality deliverables on time. They stay invested with the team throughout, getting involved right from the point of functional specifications to make sure that what’s expected is what’s written. They also continuously check with the team to make sure they are not deviating from the stated design. Many a times, an architect may also have to address unwanted bureaucracy.

Guardian: As guardians, SAs ensure that standards are published, updated, and made readily available. They define architecture and technology standards for all applications, infrastructure and data. They extract the maximum out of IT investments by advocating component reuse, and object-based development and maintenance.

Reviewer: As reviewers, SAs review project architectures for compliance to standards. They focus on:

  • Executing and participating in project review and approval processes at designated and ad-hoc review points via the EA Review Board (EARB). This includes participation in hardware/software evaluation and selection processes.
  • Validating architecture designs and giving recommendations.

Enforcer: SAs enforce compliance to architecture standards. They focus on defining and governing project review and approval processes, which include explicit architecture review and sign-off tollgates, and active participation in hardware and software purchases. They decide on issues involving non-compliant projects and review overall costs as well as the risks associated with exceptions.

Subject matter expert: SAs need to have deep knowledge in one or more domains, and provide advice on architecture development related to their area of expertise.

Solution architect: SAs play an active role in architecting solutions for projects. They help to architect solutions that embody compliance and component reuse, and look at technology innovation to address project requirements. They consider available standards where applicable but are not constrained by them.

Figure 2: Shaping the next generation software architect

Common mistakes software architects make

Here is a list of some of the worst architecture practices we have come across in our experience so far:

  • No strategic planning and budgeting
  • Following software architecture frameworks strictly
  • Excessive standardisation
  • Analysis paralysis
  • Lack of business focus and a common direction
  • Focusing on the language rather than the outcome
  • Ivory tower approach; working in silos
  • Non-adoption of next-generation technologies
  • Lack of integration, compatibility and interoperability between applications
  • Complex, fragile and costly interfaces between incongruent applications
  • Lack of open communication
  • Lack of a feedback loop
  • Weak technical talent and skillset
  • Weak architecture governance; no metrics
  • No central repository of architecture repository
  • Architecture driven by tools
  • Focusing primarily on the current state

Here’s a list of the most common mistakes SAs make and what they should do to avoid them.

Over engineering: SAs must avoid unnecessary complexity, keeping solutions as simple as possible.

Ignore the bigger picture: They must avoid focusing too narrowly on current tasks and keep the overall architecture in mind.

Neglect technical debt: Accumulation of technical debt must not be ignored and addressed promptly to maintain code quality and system performance. Attention must be paid to non-functional requirements like security, performance, availability, scalability, and maintainability.

Isolate themselves: SAs should not work in isolation. Collaboration and communication are key.

Overlook documentation updates: They mustn’t forget to regularly update documentation as the architecture evolves.

Underestimate the importance of communication: Clear and constant communication with the team and stakeholders is necessary and critical.

Ignore feedback: SAs must listen to feedback from developers and stakeholders to improve the architecture.

Over-reliance on one technology: They should not be overly dependent on a single technology or vendor and consider diversifying their tech stack.

Avoid automation: They must not neglect the power of automation in testing, deployment, and monitoring applications, and ensure thorough testing is part of the development lifecycle.

Continue with old technologies: Relying solely on legacy and outdated technologies is a strict no-no. New, better options must be constantly explored.

Underestimate risks: SAs must always consider potential risks and have mitigation strategies in place.

Not planning for failures: The need for robust disaster recovery and backup plans must never be overlooked. CI/CD practices that ensure quick and reliable deployments must be adopted.

A software architect is not a one-man show. Also, software architecture is not the exclusive job of a CIO, CFO or CXO. It’s everyone’s job within an enterprise. The leaders in an organisaton need to be actively involved when the architecture strategy is being defined. At the architecture implementation stage all the stakeholders have a role to play and must contribute in some way.

Next-gen SAs must strive to be innovative, tech savvy, and agile minded. They must listen and communicate, understand the needs of the team, and constantly learn and collaborate with the best to make a measurable impact on the business of an organisation.


Disclaimer: The views expressed in this article are that of the authors. Tricon Solutions and Albertsons do not subscribe to the substance, veracity or truthfulness of this opinion.

Previous articleAI Text Generators: Helping You Write Better
Next articleBackup Your Data with Bacula
The author is an Enterprise Architect in BTIS, Enterprise Architecture Division of HCL Technologies Ltd.  Has 28 Years of experience in architecture and design, which includes Digital Transformation and Enterprise Architecture with key focus on IT Strategy, Application Portfolio Rationalization, Application Modernization, Cloud Migration, M&A, Business Process Management, Cloud Native Architectures, Architecture Assurance, Connected Intelligence, Trust, and Realization. Brings a global perspective through his experience of working in large, cross-cultural organizations, and geographies such as US, Europe, UK, and APAC.
The author is principal enterprise architect at Albertsons Companies. He has more than 25 years of experience in the IT domain.

LEAVE A REPLY

Please enter your comment!
Please enter your name here