• Root Cause Analysis with 5 Whys and Fishbone Diagram for Software Architects

    One of the critical responsibilities of a software architect is to solve the correct business problems and do it most effectively. Peer developers and other architects propose solutions to technical problems, which you, as the seasoned software architect, should evaluate, communicate, and negotiate before even thinking of their implementation. The project sponsor, customer, or product owner states the problems and even defines solutions so that all that’s left for the development team is to implement them as stated. Sometimes the proposed solution works, and the implemented option satisfies the development team, product people, and users. But sometimes, the implemented option doesn’t solve the right problem or solves the problem incorrectly. As a result, it causes the rework towards a better solution, which increases the frustration of users, product people, and development teams. These negative scenarios can be mitigated by questioning the problem and the proposed solution before the implementation. Root cause analysis is a technique that could help a software architect to apply their expertise to investigate and analyze the problem and its potential solution in a structured way.

  • Impact Analysis for Software Architects

    Software changes are inevitable. Business stakeholders and product owners don’t question this assertion, and software developers and architects accept this fact. New features, regulatory changes, security issues, and bug fixes generate an endless flow of new functional and non-functional requirements. Typically, agile methodologies provide frameworks that embrace changes in software requirements and support turning them into opportunities for business. However, the actual implementation of changes into tested software is still a risky and costly process. It requires various skills from an architect to identify, assess and communicate an impact of a change to business stakeholders and the development team. An approach that can help a software architect to conduct the change management process in a structured way is impact analysis.

  • Terraform 'zipmap' with 'count' to Improve on Code Maintainability

    Often, Terraform modules, you develop, provide their outputs as lists. It could be OK for most cases, but sometimes it may create dependencies in your code that a developer could break accidentally by messing up with item positions in the output lists. Terraform offers some approaches to protect from such cases and improve code maintainability. A zipmap function is one of them.

  • Development Environment for Python Projects

    Starting a new team project takes a lot of efforts. Part of them is the development and implementation of a strategy for configuring the local development environment that every teammate uses for their everyday coding activities. The ultimate goal here is to build the environment that assists the developers to keep high the quality of the code they develop as a part of one team. Traditionally, this goal is achieved by following a team coding guidelines and development standards.

  • Data Transfer Objects (DTO) in Python

    How often did you find yourself implementing loads of objects or classes which only purpose were to keep data for a moment on the route from one software component to another? Usually, it happens all the time especially if you are separating the concerns in software, probably, according to Clean Architecture, Layered Architecture, or similar principles of code organization.

  • Remove Tables, Constraints, Functions from a Database Schema

    SQL snippets for clearing a Microsoft SQL Server database by removing all tables, constraints and functions.