chore: sync content to repo (#10210)

Co-authored-by: nilbuild <4921183+nilbuild@users.noreply.github.com>
This commit is contained in:
github-actions[bot]andnilbuild authored and GitHub committed 2026-08-05 15:05:52 +02:00
1 parent ee89ce4997
commit 4739a1b6e9
78 files changed
+143 -329

No files matched your search

@@ -1,10 +1,6 @@
# ACID & CAP Theorem
ACID (Atomicity, Consistency, Isolation, Durability) and CAP (Consistency, Availability, Partition Tolerance) are essential concepts in distributed systems. They are often used to explain the trade-offs between consistency and availability.
CAP is an acronym for Consistency, Availability, and Partition Tolerance. According to the CAP theorem, any distributed system can only guarantee two of the three properties at any time. You can't guarantee all three properties at once.
ACID is an acronym that stands for Atomicity, Consistency, Isolation, Durability. ACID is a set of properties of database transactions intended to guarantee validity even in the event of errors, power failures, etc.
# ACID, CAP Theorem
ACID describes the guarantees a database transaction provides: atomicity, consistency, isolation, and durability, ensuring reliable operations even under failure. The CAP theorem states that a distributed system can only guarantee two of three properties at once: consistency, availability, and partition tolerance. Architects use both concepts to reason about the trade offs involved in choosing databases and designing distributed systems.
Visit the following resources to learn more:
@@ -1,8 +1,7 @@
# Apache spark
Apache Spark is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters.
Apache Spark is a distributed data processing engine that performs computations in memory, making it significantly faster than earlier tools like MapReduce for many workloads. It supports batch processing, streaming, machine learning, and graph processing through a single unified framework. Architects often choose Spark for large scale analytics pipelines that need both speed and flexibility.
Visit the following resources to learn more:
- [@official@Apache Spark](https://spark.apache.org/)
- [@feed@Explore top posts about Apache](https://app.daily.dev/tags/apache?ref=roadmapsh)
- [@official@Apache Spark](https://spark.apache.org/)
@@ -1,6 +1,6 @@
# APIs and Integrations
APIs (Application Programming Interfaces) are essential for enabling communication between different software applications, allowing them to share data and functionality seamlessly. They serve as the bridge that connects disparate systems, making it possible for applications to interact without needing to know the internal workings of one another. Integration, on the other hand, refers to the process of connecting these systems to work together effectively, often utilizing APIs to facilitate data exchange and process automation. By leveraging APIs in integrations, organizations can enhance operational efficiency, reduce data silos, and improve user experiences through seamless data flow between applications.
APIs and integrations define how different systems and services communicate with each other, whether within a company or across organizations. Choosing the right integration style, protocol, and data format affects performance, flexibility, and how easily new systems can be connected later. This is a core concern in almost every modern architecture, since few systems operate in isolation.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Application Level Architecture
The lowest level of architecture. Focus on one single application. Very detailed, low level design. Communication is usually within one development team.
# Application Architecture
Application architecture focuses on the internal structure of a single software application: its modules, layers, and the patterns used to organize code. It determines how the application handles concerns like data access, business logic, and user interface separation. Decisions made here affect how easy the application is to test, extend, and maintain over time.
Visit the following resources to learn more:
@@ -1,8 +1,6 @@
# Atlassian Tools
Atlassian tools offer a suite of solutions designed to streamline collaboration, project management, and incident handling for various teams. Jira serves as the core workflow engine, allowing organizations to track tasks through customizable workflows with granular permissions. Specialized tools like Jira Service Desk cater to help desk teams for managing incoming requests, while Jira Core enables business teams to organize and execute task-oriented projects across departments like marketing, HR, and operations. For enhanced collaboration, Confluence acts as a knowledge-sharing wiki, allowing teams to create, share, and audit content changes seamlessly. Bitbucket provides Git repository management for enterprise teams, fostering efficient collaboration on codebases.
Other tools cater to more specific needs. **Statuspage** focuses on communication during outages or maintenance, keeping users informed from investigation to resolution. **Opsgenie** ensures smooth incident management for always-on services, helping dev and ops teams stay in control of alerts. **Advanced Roadmaps** for Jira assists multiple teams in capacity planning and dependency tracking, while **Jira Align** supports enterprise-level agile planning to align strategy with execution and drive digital transformation. Together, these tools empower teams to improve efficiency, transparency, and adaptability across various workflows.
Atlassian tools, including Jira and Confluence, support project tracking and documentation for software teams at scale. Jira manages tasks, sprints, and issues in agile workflows, while Confluence stores documentation and design discussions. Many enterprise teams standardize on these tools for both day to day work tracking and long term knowledge management.
Visit the following resources to learn more:
@@ -13,5 +11,4 @@ Visit the following resources to learn more:
- [@official@Statuspage](https://www.atlassian.com/software/statuspage)
- [@official@Opsgenie](https://www.atlassian.com/software/opsgenie)
- [@official@Advanced Roadmaps for Jira](https://www.atlassian.com/software/jira/features/roadmaps)
- [@official@Jira Align](https://www.atlassian.com/software/jira/align)
- [@feed@Explore top posts about Atlassian](https://app.daily.dev/tags/atlassian?ref=roadmapsh)
- [@official@Jira Align](https://www.atlassian.com/software/jira/align)
@@ -1,18 +1,6 @@
# Authentication Strategies
Authentication strategies are essential for ensuring secure access to applications and systems. They define how users are verified before being granted access to resources. Here are some common authentication strategies:
Password-Based Authentication
Multi-Factor Authentication (MFA)
OAuth and OpenID Connect
Token-Based Authentication:
Biometric Authentication
Certificate-Based Authentication
# Auth Strategies
Authentication and authorization strategies determine how a system verifies who a user is and what they are allowed to do. Common approaches include session based authentication, token based methods like JWT, and protocols like OAuth for delegated access. Choosing the right strategy affects both security and how easily a system integrates with other services.
Visit the following resources to learn more:
@@ -5,4 +5,4 @@ The guide to the Business Analysis Body of Knowledge (BABOK Guide) is a book fro
Visit the following resources to learn more:
- [@official@Babok](https://www.iiba.org/career-resources/a-business-analysis-professionals-foundation-for-success/babok/)
- [@article@Wikipedia](https://en.wikipedia.org/wiki/A_Guide_to_the_Business_Analysis_Body_of_Knowledge)
- [@article@A Guide to the Business Analysis Body of Knowledge](https://en.wikipedia.org/wiki/A_Guide_to_the_Business_Analysis_Body_of_Knowledge)
@@ -1,6 +1,6 @@
# Balance
Achieving balance in architecture requires managing trade-offs between quality, cost, and development speed, avoiding over-engineering while aligning functional and non-functional requirements. Architects must navigate conflicting goals, like balancing short-term simplicity with long-term vision, ensuring solutions fit future needs while involving developers, businesses, and managers in understanding the financial and strategic impact. Additionally, architects often mediate between diverse groups, resolving conflicts and aligning strategies through effective communication, such as the “Four-Ears Model” by Schulze von Thun, which aids in fostering collaboration and achieving balanced, strategic outcomes.
Balance refers to weighing competing priorities such as speed versus quality, or innovation versus stability. An architect regularly makes trade offs between what is technically ideal and what is practical given time and budget constraints. Finding the right balance keeps a project moving without accumulating excessive technical debt.
Visit the following resources to learn more:
@@ -1,19 +1,6 @@
# BPM BPEL
BPM: Business Process Management
--------------------------------
Medium or large enterprises needs robust processes to streamline their business needs by reducing the cost incurred per process and diminishing the turn around time for each activity. To achieve the above, there are various BPM tools like PEGA, IBM BPM, Appian, etc. Basically these tools automate the processes through a robust process modelling and implementation.
BPMN: Business Process Management Notations
-------------------------------------------
Its is a standard for representing business processes graphically. While modelling the process, the notations used are complied with BPMN (there are other like EPC, etc.). So BPMN is a standard notation that BPM consultants follow to model the business process. BPMN has versions and now BPMN 2.0 is the standard one.
BPEL : Business Process Execution Language
------------------------------------------
Programmers use BPEL to define how a business process that involves web services will be executed. BPEL messages are typically used to invoke remote services, orchestrate process execution and manage events and exceptions. BPEL is often associated with Business Process Management Notation. In many organizations, analysts use BPMN to visualize business processes and developers transform the visualizations to BPEL for execution.
Business process management describes methodologies and tools for modeling, automating, and optimizing business processes across an organization. BPEL, the Business Process Execution Language, is an XML based language used to define and orchestrate these processes, often within service oriented architectures. Architects working on enterprise workflow automation need to understand how BPM tools coordinate multiple systems to complete a business process.
Visit the following resources to learn more:
@@ -4,5 +4,4 @@ Client-server architecture is a computing model that separates tasks or workload
Visit the following resources to learn more:
- [@article@What is Client-Server Architecture](https://www.simplilearn.com/what-is-client-server-architecture-article)
- [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh)
- [@article@What is Client-Server Architecture](https://www.simplilearn.com/what-is-client-server-architecture-article)
@@ -1,8 +1,6 @@
# Communication
From my observations this is one of the most underestimated skill. If you are brilliant in design but cannot communicate your ideas, your thoughts are likely to have less impact or even fail to succeed.
Communication is a critical yet often underestimated skill, especially for architects. It involves clearly conveying ideas, structuring discussions effectively, and driving meetings. Tools like “UZMO — Thinking With Your Pen” can enhance visual communication skills. Public speaking, whether to small or large groups, requires practice and stepping out of one’s comfort zone. Tailoring communication to the audience is essential—developers focus on details, while managers prioritize cost and outcomes. Regular, transparent communication ensures alignment across all levels, making the rationale behind decisions clear. Always being prepared with key slides and answers can boost confidence and efficiency during interactions.
Communication is central to the architect role, since decisions need to be explained to developers, managers, and other stakeholders with different levels of technical understanding. An architect translates business goals into technical direction and also feeds technical constraints back into business conversations. Without strong communication, even a well designed architecture can fail to be adopted correctly by the team.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Consult and Coach
Proactive consulting and coaching are essential to prevent architectural issues from escalating. Architects must anticipate future needs and prepare the organization by setting a clear vision of mid- and long-term goals, often using maturity models to provide structure and measure progress against SMART criteria. Building a **Community of Practice (CoP)** fosters collaboration, standardization, and knowledge sharing among professionals with shared interests, such as developers and architects, enhancing individual and organizational growth. Open-door sessions, held regularly without a strict agenda, encourage open communication, resolve minor issues promptly, and address complex topics through follow-ups, reducing misconceptions and ambiguity.
# Consult & Coach
Consulting and coaching means guiding developers and teams toward better technical practices without necessarily writing the code themselves. Architects often review designs, answer technical questions, and mentor less experienced engineers on patterns and standards. This skill turns an architect's individual knowledge into improvements across the whole team.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# CQRS eventual consistency
CQRS (Segregation of Responsibility for Command Queries) is an architecture pattern that comes with the idea of separating read and write operations into two distinct logical processes.
# CQRS, Eventual Consistency
CQRS, or Command Query Responsibility Segregation, separates the operations that change data from the operations that read data, often using different models for each. This separation pairs naturally with eventual consistency, where updates propagate across a system over time instead of instantly. These patterns are common in distributed systems where strict, immediate consistency would hurt performance or scalability.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Datawarehouses Principles
It is based on the assumption that every system should take care of a concern in a way that such concern should be encapsulated by the system itself.
Data warehouse principles cover how to design storage systems optimized for analytical queries rather than transactional workloads. This includes concepts like star and snowflake schemas, fact and dimension tables, and strategies for handling historical data changes. Understanding these principles helps an architect design systems that support reliable reporting and business intelligence.
Visit the following resources to learn more:
@@ -1,14 +1,6 @@
# Domain-Driven Design
Domain-driven design (DDD) is a software design approach focusing on modeling software to match a domain according to input from that domain's experts.
In terms of object-oriented programming, it means that the structure and language of software code (class names, class methods, class variables) should match the business domain. For example, if a software processes loan applications, it might have classes like LoanApplication and Customer, and methods such as AcceptOffer and Withdraw.
DDD connects the implementation to an evolving model and it is predicated on the following goals:
* Placing the project's primary focus on the core domain and domain logic;
* Basing complex designs on a model of the domain;
* Initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.
# DDD
Domain driven design structures software around the business domain it serves, using a shared language between developers and domain experts called the ubiquitous language. It introduces concepts like bounded contexts and aggregates to manage complexity in large systems. DDD is especially useful when building software for complex business domains where getting the model right matters more than technical novelty.
Visit the following resources to learn more:
@@ -1,8 +1,6 @@
# Decision Making
Effective decision-making is crucial for architects to guide projects and organizations in the right direction. Focus on what’s important by emphasizing **conceptual integrity** (sticking to consistent decisions for simplicity and maintainability) and **uniformity** (ensuring standards like naming conventions are applied consistently). Prioritize critical decisions early to avoid costly workarounds or project delays, using tools like the Weighted Shortest Job First (WSJF) model for prioritization. Stay within your scope of competence to maintain credibility, collaborate with peers, and clarify responsibilities within the architectural hierarchy.
When making decisions, evaluate multiple options to ensure thorough analysis and foster stakeholder confidence. Comparing options based on measurable criteria, such as cost or feasibility, leads to better, fact-driven decisions. This process not only supports sustainable outcomes but also prepares you with strong arguments during discussions, ensuring alignment across teams and stakeholders.
Decision making covers evaluating trade offs and choosing a direction when there is no single obviously correct answer. Architects constantly weigh factors like cost, performance, team skill, and time to market when picking a technology or pattern. Good decision making relies on gathering enough information without getting stuck waiting for a perfect answer that may never come.
Visit the following resources to learn more:
@@ -1,8 +1,6 @@
# Design and Architecture
Good design in software architecture blends theoretical knowledge with practical experience. Theoretically, architects should master fundamental design patterns, such as those detailed in _"Design Patterns: Elements of Reusable Object-Oriented Software"_, which remain foundational for modern architecture. Advanced knowledge of patterns and anti-patterns, like those in _"Enterprise Integration Patterns"_, extends this understanding. Architects must also focus on quality measures, ensuring designs meet non-functional requirements like scalability, security, and adaptability.
Practically, architects improve by experimenting with various technology stacks, gaining insights into their strengths and limitations. Exploring frameworks like Angular reveals real-world pattern applications, such as Observables, and fosters deeper understanding through hands-on coding. Attending user groups and engaging in communities, like those on Meetup, broadens perspectives and encourages curiosity, enabling architects to stay updated and continuously refine their craft.
# Design & Architecture
This skill covers applying design principles and architectural patterns to real systems, not just knowing them in theory. It means knowing when to use a microservices approach versus a monolith, or when a simple layered design is enough. Strong design and architecture skills come from experience applying patterns across different kinds of projects and learning from what worked and what did not.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Distributed Systems
Distributed systems are a type of computing architecture where components located on networked computers communicate and coordinate their actions by passing messages. These systems are designed to work together to achieve a common goal, often providing services or processing data in a collaborative manner.
Distributed systems consist of multiple independent components running on different machines that communicate over a network to work as a single system. They introduce challenges like network latency, partial failures, and data consistency that do not exist in single machine applications. Architects designing distributed systems need to plan for failure as a normal condition rather than an exception.
Visit the following resources to learn more:
@@ -1,10 +1,6 @@
# EMC and DMS
EMC (Enterprise Metadata Catalog) and DMS (Document Management System) are two distinct concepts in the realm of data management and information systems. Below is an overview of each:
An Enterprise Metadata Catalog (EMC) is a centralized repository that stores metadata about data assets within an organization. This metadata provides context, meaning, and structure to the data, enabling better data management and utilization.
A Document Management System (DMS) is a software solution that helps organizations capture, store, manage, and track electronic documents and images of paper-based information. DMS solutions are essential for organizing and securing documents in a digital format.
EMC's document management systems provide enterprise level tools for storing, organizing, and controlling access to documents and records at scale. These systems focus on compliance, versioning, and retention policies important for regulated industries. Architects integrating with EMC DMS need to understand how document workflows and metadata fit into a broader enterprise system.
Visit the following resources to learn more:
@@ -1,8 +1,6 @@
# Estimate and Evaluate
Estimation and evaluation are critical skills for architects and lead developers. Architects must understand basic project management principles to provide estimates for timelines, resources, and costs, considering all project phases like requirements, testing, and debugging. Using past data or models like COCOMO helps refine estimates. For agile projects, resources like _"Agile Estimating and Planning"_ by Mike Cohn can offer valuable guidance.
Evaluating "unknown" architectures involves assessing their suitability for current and future contexts through prepared questions. These should cover design practices (e.g., patterns and structure), development practices (e.g., code guidelines and deployment), quality assurance (e.g., test automation and peer reviews), and security measures (e.g., built-in security and penetration tests). This structured approach ensures informed decisions and promotes robust, maintainable solutions.
Estimating and evaluating involves judging the time, cost, and effort a technical solution will require, as well as assessing whether an existing system meets its goals. Architects use this skill when planning new projects and when reviewing whether current systems are still fit for purpose. Accurate estimates depend on experience and an honest understanding of a team's capabilities.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Architect Frameworks
Architect frameworks are tools that provide a structured approach to software architecture. They help architects organize their work, manage dependencies, and ensure consistency across projects. Some popular frameworks include:
This section covers frameworks and methodologies used specifically for enterprise architecture modeling and business analysis, distinct from software development frameworks. They provide structured approaches for documenting and communicating architecture at an organizational level. Familiarity with these frameworks matters most for architects working in large, formally structured enterprises.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Functional Programming
Functional programming is a programming paradigm designed to handle pure mathematical functions. This paradigm is totally focused on writing more compounded and pure functions.
Functional programming treats computation as the evaluation of pure functions, avoiding shared state and mutable data where possible. This style makes code easier to test and reason about, since functions with no side effects behave predictably given the same input. Concepts from functional programming, like immutability and pure functions, increasingly appear even in languages that are not purely functional.
Visit the following resources to learn more:
@@ -1,11 +1,11 @@
# Git
Git is a distributed version control system designed to handle projects of any size with speed and efficiency. Created by Linus Torvalds in 2005, Git tracks changes in source code during software development, allowing multiple developers to work together on non-linear development. It provides strong support for branching, merging, and distributed development workflows. Git maintains a complete history of all changes, enabling easy rollbacks and comparisons between versions. Its distributed nature means each developer has a full copy of the repository, allowing for offline work and backup. Git's speed, flexibility, and robust branching and merging capabilities have made it the most widely used version control system in software development, particularly for open-source projects.
Git is a distributed version control system that tracks changes to code over time and allows multiple developers to work on the same project without overwriting each other's work. It supports branching and merging workflows that let teams develop features in isolation before combining them. Almost every modern software project relies on Git as its foundation for source control.
Visit the following resources to learn more:
- [@roadmap@Visit Dedicated Git & GitHub Roadmap](https://roadmap.sh/git-github)
- [@course@Why use Git? (Interactive Lesson)](https://inter-git.com/lessons/introduction)
- [@article@Git by Example - Learn Version Control with Bite-sized Lessons](https://antonz.org/git-by-example/)
- [@article@Tutorial: Git for Absolutely Everyone](https://thenewstack.io/tutorial-git-for-absolutely-everyone/)
- [@video@Git & GitHub Crash Course For Beginners](https://www.youtube.com/watch?v=SWYqp7iY_Tc)
- [@course@Why use Git? (Interactive Lesson)](https://inter-git.com/lessons/introduction)
- [@video@Git & GitHub Crash Course For Beginners](https://www.youtube.com/watch?v=SWYqp7iY_Tc)
@@ -7,5 +7,4 @@ Visit the following resources to learn more:
- [@roadmap@Visit Dedicated Go Roadmap](https://roadmap.sh/golang)
- [@official@A Tour of Go – Go Basics](https://go.dev/tour/welcome/1)
- [@official@Go Reference Documentation](https://go.dev/doc/)
- [@article@Go by Example - annotated example programs](https://gobyexample.com/)
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)
- [@article@Go by Example - annotated example programs](https://gobyexample.com/)
@@ -4,9 +4,8 @@ GraphQL is a query language and runtime for APIs, developed by Facebook. GraphQL
Visit the following resources to learn more:
- [@roadmap@visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql)
- [@roadmap@Visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql)
- [@official@Introduction to GraphQL](https://graphql.org/learn/)
- [@article@Introduction to GraphQL](https://thenewstack.io/introduction-to-graphql/)
- [@article@How to Execute a Simple GraphQL Query](https://thenewstack.io/how-to-execute-a-simple-graphql-query/)
- [@video@GraphQL Course for Beginners](https://www.youtube.com/watch?v=ed8SzALpx1Q)
- [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh)
- [@video@GraphQL Course for Beginners](https://www.youtube.com/watch?v=ed8SzALpx1Q)
@@ -1,13 +1,10 @@
# gRPC
gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first.
It's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#. gRPC uses the protocol buffer language to define the structure of the data that is
gRPC is a high performance remote procedure call framework that uses HTTP/2 and Protocol Buffers to enable fast, efficient communication between services. It supports streaming and strongly typed contracts, making it a common choice for internal service to service communication in microservices architectures. Compared to REST, gRPC generally offers better performance but is less human readable and less suited to public facing APIs.
Visit the following resources to learn more:
- [@official@gRPC Website](https://grpc.io/)
- [@official@gRPC Introduction](https://grpc.io/docs/what-is-grpc/introduction/)
- [@official@gRPC Core Concepts](https://grpc.io/docs/what-is-grpc/core-concepts/)
- [@video@Stephane Maarek - gRPC Introduction](https://youtu.be/XRXTsQwyZSU)
- [@feed@Explore top posts about gRPC](https://app.daily.dev/tags/grpc?ref=roadmapsh)
- [@video@Stephane Maarek - gRPC Introduction](https://youtu.be/XRXTsQwyZSU)
@@ -1,8 +1,6 @@
# Spark, Hadoop MapReduce
Spark is a data processing framework that can quickly perform processing tasks on very large data sets, and can also distribute data processing tasks across multiple computers, either on its own or in tandem with other distributed computing tools.
Hadoop MapReduce is a software framework for easily writing applications which process vast amounts of data (multi-terabyte data-sets) in-parallel on large clusters (thousands of nodes) of commodity hardware in a reliable, fault-tolerant manner.
Hadoop, Spark, and MapReduce are frameworks for processing large datasets across clusters of machines. MapReduce, the original model, splits processing into map and reduce steps distributed across nodes, while Spark improves on this with in memory processing for much faster performance. Architects consider these tools when a system needs to process data at a scale that a single machine cannot handle.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Hadoop
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.
Hadoop is an open source framework for distributed storage and processing of large datasets across clusters of commodity hardware. Its core components include HDFS for storage and MapReduce for processing, though many projects now pair Hadoop's storage with faster engines like Spark. It remains common in enterprises with established big data infrastructure built around it.
Visit the following resources to learn more:
@@ -7,5 +7,4 @@ Visit the following resources to learn more:
- [@article@What is Hashing?](https://www.codecademy.com/resources/blog/what-is-hashing/)
- [@video@Hashing Algorithms and Security - Computerphile](https://www.youtube.com/watch?v=b4b8ktEV4Bg)
- [@video@Top Hashing Algorithms In Cryptography | MD5 and SHA 256 Algorithms Expalined | Simplilearn](https://www.youtube.com/watch?v=Plp4F3ZfC7A)
- [@video@SHA: Secure Hashing Algorithm - Computerphile](https://www.youtube.com/watch?v=DMtFhACPnTY)
- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh)
- [@video@SHA: Secure Hashing Algorithm - Computerphile](https://www.youtube.com/watch?v=DMtFhACPnTY)
@@ -1,8 +1,6 @@
# How to Code
Even as an Enterprise Architect, staying connected to coding practices is essential to understand developers’ challenges and earn their trust. Maintaining a **side project** allows you to explore new technologies, tools, and methodologies hands-on, building practical experience beyond theoretical knowledge. This helps in forming informed decisions and keeping pace with evolving trends in development.
To prioritize what to explore, structured resources like ThoughtWorks’ Technology Radar can guide you. It categorizes technologies into **Adopt**, **Trial**, **Assess**, and **Hold**, helping architects focus on impactful and enterprise-ready innovations. Staying informed and involved ensures better collaboration and alignment with developers.
An architect needs strong coding skills to design realistic solutions and earn credibility with the development team. Writing code themselves helps them understand the practical constraints of the technologies they choose and spot problems before they become costly. Staying hands on also keeps their architectural decisions grounded in real implementation experience rather than theory alone.
Visit the following resources to learn more:
@@ -1,10 +1,6 @@
# Http Https
HTTP is the `TCP/IP` based application layer communication protocol which standardizes how the client and server communicate with each other. It defines how the content is requested and transmitted across the internet.
HTTPS (Hypertext Transfer Protocol Secure) is the secure version of HTTP, which is the primary protocol used to send data between a web browser and a website.
`HTTPS = HTTP + SSL/TLS`
# HTTP, HTTPS
HTTP is the protocol that underlies most communication on the web, defining how clients and servers exchange requests and responses. HTTPS adds encryption on top of HTTP using TLS, protecting data in transit from being read or altered by third parties. Nearly every modern web architecture relies on a solid understanding of how these protocols handle requests, headers, and status codes.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Iaf
The Integrated Architecture Framework (IAF) is an enterprise architecture framework that covers business, information, information system and technology infrastructure.
The Integrated Architecture Framework is a methodology for enterprise architecture that structures architecture work across business, information, and technology domains. It provides a consistent way to model how different aspects of an organization's architecture relate to each other. Architects use frameworks like IAF when working in organizations that require formal architecture governance.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# IBM BPM
IBM BPM is a comprehensive business process management platform. It provides a robust set of tools to author, test, and deploy business processes, as well as full visibility and insight to managing those business processes.
IBM Business Process Manager is a platform for modeling, automating, and monitoring business processes within an organization. It provides tools for both business analysts and developers to design workflows and integrate them with existing enterprise systems. Architects encounter IBM BPM in enterprises that have standardized on IBM's middleware stack for process automation.
Visit the following resources to learn more:
@@ -1,14 +1,3 @@
# Important Skills
To support the laid-out activities specific skills are required. From my experience, read books and discussions we can boil this down to these ten skills every software architect should have:
* Design
* Decide
* Simplify
* Code
* Document
* Communicate
* Estimate
* Balance
* Consult
* Market
# Important Skills to Learn
Beyond technical knowledge, a software architect needs skills like clear communication, sound decision making, and the ability to simplify complex problems. These skills help them lead teams, justify technical choices to non technical stakeholders, and keep projects moving forward. Building these skills alongside technical expertise is what separates a senior developer from an effective architect.
@@ -1,8 +1,6 @@
# Infrastructure as Code
Sometimes referred to as IaC, this section refers to the techniques and tools used to define infrastructure, typically in a markup language like YAML or JSON. Infrastructure as code allows DevOps Engineers to use the same workflows used by software developers to version, roll back, and otherwise manage changes.
The term Infrastructure as Code encompasses everything from bootstrapping to configuration to orchestration, and it is considered a best practice in the industry to manage all infrastructure as code. This technique precipitated the explosion in system complexity seen in modern DevOps organizations.
Infrastructure as code manages servers, networks, and other infrastructure through machine readable configuration files instead of manual setup. Tools like Terraform or CloudFormation let teams version, review, and repeat infrastructure changes just like application code. Architects rely on this approach to ensure environments are consistent and reproducible across development, testing, and production.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# ITIL
**ITIL (Information Technology Infrastructure Library)** is a set of best practices for IT service management, designed to align IT services with business needs. Its primary focus is the efficient and effective delivery of value through managing the IT service lifecycle, which includes five phases: `Strategy`, `Design`, `Transition`, `Operation`, and `Continual Service Improvement`. ITIL includes key processes such as incident management, problem management, change management, configuration management, and service level agreements (SLAs). These practices aim to optimize performance, service quality, and customer satisfaction. Adopting ITIL helps organizations improve operational efficiency, reduce risks, and maintain clear control over IT services over time.
ITIL is a framework for IT service management, focused on aligning IT services with the needs of the business through defined processes like incident, change, and problem management. It is commonly adopted in enterprises that need consistent, auditable processes for running IT operations. Architects benefit from understanding ITIL when their systems must integrate with an organization's existing service management practices.
Visit the following resources to learn more:
@@ -9,9 +9,8 @@
Visit the following resources to learn more:
- [@roadmap@Visit Dedicated Java Roadmap](https://roadmap.sh/java)
- [@official@Java](https://www.java.com/)
- [@roadmap@Visit Dedicated Kotlin Roadmap](https://roadmap.sh/kotlin)
- [@official@Java](https://www.java.com/)
- [@official@Kotlin](https://kotlinlang.org/)
- [@official@Scala Documentation](https://docs.scala-lang.org/)
- [@official@Swift Docs](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/guidedtour)
- [@article@Explore top posts about Java](https://app.daily.dev/tags/java?ref=roadmapsh)
- [@official@Swift Docs](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/guidedtour)
@@ -1,16 +1,9 @@
# JavaScript
JavaScript allows you to add interactivity to your pages. Common examples that you may have seen on the websites are sliders, click interactions, popups and so on. Apart from being used on the frontend in browsers, there is Node.js which is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser. TypeScript adds optional types to JavaScript that support tools for large-scale JavaScript applications for any browser, for any host, on any OS. TypeScript compiles to readable, standards-based JavaScript.
# JavaScript / TypeScript
JavaScript is the primary language of the web, running in browsers and, through Node.js, on servers as well. TypeScript adds static typing on top of JavaScript, catching errors earlier and making large codebases easier to maintain. Architects working on web or full stack projects need to understand both languages to evaluate frontend and backend technology choices.
Visit the following resources to learn more:
- [@roadmap@Visit Dedicated JavaScript Roadmap](https://roadmap.sh/javascript)
- [@roadmap@Visit Dedicated TypedScript Roadmap](https://roadmap.sh/typescript)
- [@official@TypeScript](https://www.typescriptlang.org/)
- [@official@TypeScript Docs for Deep Dives](https://www.typescriptlang.org/docs/)
- [@article@The Modern JavaScript Tutorial](https://javascript.info/)
- [@video@JavaScript Crash Course for Beginners](https://youtu.be/hdI2bqOjy3c)
- [@video@Node.js Crash Course](https://www.youtube.com/watch?v=fBNz5xF-Kx4)
- [@video@Node.js Tutorial for Beginners](https://www.youtube.com/watch?v=TlB_eWDSMt4)
- [@video@TypeScript for Beginners](https://www.youtube.com/watch?v=BwuLxPH8IDs)
- [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh)
- [@article@The Modern JavaScript Tutorial](https://javascript.info/)
@@ -1,9 +1,9 @@
# Kanban
`Kanban` is a popular agile methodology that focuses on visualizing workflow and continuously improving that flow. It's a more flexible approach than Scrum, without the rigid framework.
Kanban is an agile method that visualizes work on a board with columns representing stages, helping teams manage flow and limit work in progress. It focuses on continuous delivery rather than fixed length iterations, making it flexible for teams with varying or unpredictable workloads. Architects use Kanban boards to track technical tasks and see bottlenecks in a team's workflow.
Visit the following resources to learn more:
- [@article@What Is Kanban? A Simple Guide to Improve Efficiency.](https://businessmap.io/kanban-resources/getting-started/what-is-kanban)
- [@article@Kanban Methodology: The Simplest Agile Framework ](https://kissflow.com/project/agile/kanban-methodology/)
- [@article@Kanban Methodology: The Simplest Agile Framework](https://kissflow.com/project/agile/kanban-methodology/)
- [@article@What is Kanban Methodology? The Ultimate Guide](https://www.wrike.com/kanban-guide/what-is-kanban/)
@@ -1,6 +1,6 @@
# Layered Architecture
Layered architecture is a software design pattern where an application is divided into distinct layers, each with a specific responsibility, such as presentation, business logic, and data access. This approach promotes modularity, easier maintenance, testing, and component reusability. The most common implementation is the three-tier architecture, which separates concerns between the user interface, business rules, and data handling. However, it can introduce complexity, performance issues, tight coupling, and overhead if not carefully implemented. Despite these challenges, layered architecture is widely used in scalable and maintainable systems, particularly in enterprise applications.
Layered architecture organizes a system into horizontal layers, such as presentation, business logic, and data access, where each layer only communicates with the ones directly above or below it. This separation makes it easier to change one layer without affecting the others, such as swapping a database without touching business rules. It is one of the oldest and most widely understood architectural styles.
Visit the following resources to learn more:
@@ -1,7 +1,3 @@
# Levels of Architecture
Architecture can be done on several “levels” of abstractions. The level influences the importance of necessary skills. As there are many categorizations possible my favorite segmentation includes these 3 levels:
* **Application Level:** The lowest level of architecture. Focus on one single application. Very detailed, low level design. Communication is usually within one development team.
* **Solution Level:** The mid-level of architecture. Focus on one or more applications which fulfill a business need (business solution). Some high, but mainly low-level design. Communication is between multiple development teams.
* **Enterprise Level:** The highest level of architecture. Focus on multiple solutions. High level, abstract design, which needs to be detailed out by solution or application architects. Communication is across the organization.
Architecture can be described at different levels of scope, ranging from a single application to an entire organization. Application architecture deals with the internals of one system, solution architecture connects several systems to solve a business problem, and enterprise architecture aligns technology strategy across a whole company. Each level requires a different set of concerns and a different audience.
@@ -7,6 +7,5 @@ Visit the following resources to learn more:
- [@roadmap@Visit Dedicated Linux Roadmap](https://roadmap.sh/linux)
- [@course@Coursera - Unix Courses](https://www.coursera.org/courses?query=unix)
- [@article@Unix & Linux Tutorial](https://www.tutorialspoint.com/unix/index.htm)
- [@article@Linux Basics ](https://dev.to/rudrakshi99/linux-basics-2onj)
- [@video@Linux Operating System - Crash Course](https://www.youtube.com/watch?v=ROjZy1WbCIA)
- [@feed@Explore top posts about Linux](https://app.daily.dev/tags/linux?ref=roadmapsh)
- [@article@Linux Basics](https://dev.to/rudrakshi99/linux-basics-2onj)
- [@video@Linux Operating System - Crash Course](https://www.youtube.com/watch?v=ROjZy1WbCIA)
@@ -1,6 +1,6 @@
# Management
Management in software architects encompasses various responsibilities and practices that ensure the successful design, development, and implementation of software systems. Software architects play a critical role in bridging the gap between business requirements and technical implementation.
Management covers the certifications, methodologies, and organizational practices an architect encounters when working within structured project and process frameworks. This includes formal project management certifications as well as agile methodologies used to organize team work. Knowledge here helps an architect operate effectively within an organization's existing processes.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Marketing Skills
Marketing skills are essential for promoting your ideas effectively, especially when others may not immediately embrace them. To convince others, it's crucial to motivate them by demonstrating the value and benefits of your ideas in an easily digestible format, such as through prototypes or videos. Persistence is key; if you're convinced of your idea’s worth, you need to fight for it, even if it's met with resistance. Establishing allies who support your ideas can also make it easier to gain traction, so start building a network. Repeating your message regularly can help, but be cautious not to overdo it, as credibility is essential for long-term success.
Marketing skills help an architect present and sell technical ideas internally, convincing stakeholders and teams to adopt a proposed direction. This includes framing technical benefits in terms that matter to business decision makers, such as cost savings or reduced risk. Even the best architectural design needs buy in to actually get implemented.
Visit the following resources to learn more:
@@ -5,5 +5,4 @@ Microfrontends is an architectural style where independently deliverable fronten
Visit the following resources to learn more:
- [@article@Micro Frontends](https://micro-frontends.org/)
- [@video@Micro-Frontends Course - Beginner to Expert](https://www.youtube.com/watch?v=lKKsjpH09dU)
- [@feed@Explore top posts about Web Development](https://app.daily.dev/tags/webdev?ref=roadmapsh)
- [@video@Micro-Frontends Course - Beginner to Expert](https://www.youtube.com/watch?v=lKKsjpH09dU)
@@ -8,5 +8,4 @@ Visit the following resources to learn more:
- [@article@What is Microservices?](https://smartbear.com/solutions/microservices/)
- [@article@Microservices 101](https://thenewstack.io/microservices-101/)
- [@article@Primer: Microservices Explained](https://thenewstack.io/primer-microservices-explained/)
- [@article@Articles about Microservices](https://thenewstack.io/category/microservices/)
- [@feed@Explore top posts about Microservices](https://app.daily.dev/tags/microservices?ref=roadmapsh)
- [@article@Articles about Microservices](https://thenewstack.io/category/microservices/)
@@ -1,6 +1,6 @@
# MS Dynamics
Microsoft Dynamics 365 is a combination of both Enterprise Resource Planning (ERP) software and Customer Relationship Management (CRM) software.
Microsoft Dynamics is a suite of enterprise resource planning and customer relationship management applications used to manage business processes like sales, finance, and operations. It integrates closely with other Microsoft products, making it a common choice for organizations already invested in the Microsoft ecosystem. Architects working with Dynamics need to understand its data model and integration options when connecting it to other systems.
Visit the following resources to learn more:
@@ -1,10 +1,6 @@
# MVC MVP MVVM
Model-view-controller, or MVC, is a pattern used to separate user-interface, data and application logic. It does this by separating an application into three parts: Model, View, and Controller. The model holds the data, the view encompasses the user-interface, and the controller acts as a mediator between the two.
Model-view-presenter, or MVP, was designed to ease automated unit testing and improve the separation of concerns in presentation logic. MVP is a variant of the MVC pattern, though differs in that it divides the application into the user-interface (view), data (model) and presentation logic (presenter). While the model and the view represent stay the same as in the model-view-controller pattern, the presenter differs from the controller in that it manipulates the model and updates the view.
Another variant of the MVC is the model-view-viewmodel pattern. The Model-view-viewmodel, or MVVM, separates the application into three core components: Model, View, and View Model. While the view and model represent all that they did in their parent pattern, the view model acts as a link between the model and view, retrieves data from the model and exposes it to the view through two-way data binding and can manipulate the model's data.
# MVC, MVP, MVVM
MVC, MVP, and MVVM are patterns for separating an application's data, logic, and user interface into distinct layers. MVC splits responsibilities between model, view, and controller, MVP replaces the controller with a presenter that handles view logic, and MVVM introduces a view model that binds data to the view automatically. Choosing between them depends on the platform and how much automatic data binding a framework supports.
Visit the following resources to learn more:
@@ -1,8 +1,6 @@
# .NET Framework
.NET is an open-source platform with tools and libraries for building web, mobile, desktop, games, IoT, cloud, and microservices.
Officially supported languages in .NET: C#, F#, Visual Basic.
# .NET Framework Based
The .NET ecosystem, built around languages like C#, is widely used for enterprise applications, especially in Windows centric environments. It provides a large set of libraries and tools for building web, desktop, and cloud applications. An architect working in enterprise settings often needs to understand .NET's strengths around tooling, performance, and integration with Microsoft infrastructure.
Visit the following resources to learn more:
@@ -11,5 +9,4 @@ Visit the following resources to learn more:
- [@official@Why Choose .NET?](https://dotnet.microsoft.com/en-us/platform/why-choose-dotnet)
- [@official@C# Documentation](https://learn.microsoft.com/en-us/dotnet/csharp/?WT.mc_id=dotnet-35129-website)
- [@official@F# Documentation](https://learn.microsoft.com/en-us/dotnet/fsharp/?WT.mc_id=dotnet-35129-website)
- [@official@Visual Basic Documentation](https://learn.microsoft.com/en-us/dotnet/visual-basic/?WT.mc_id=dotnet-35129-website)
- [@feed@Explore top posts about .NET](https://app.daily.dev/tags/.net?ref=roadmapsh)
- [@official@Visual Basic Documentation](https://learn.microsoft.com/en-us/dotnet/visual-basic/?WT.mc_id=dotnet-35129-website)
@@ -1,16 +1,8 @@
# Nosql databases
NoSQL databases (aka "not only SQL") are non-tabular databases and store data differently than relational tables. NoSQL databases come in a variety of types based on their data model. The main types are document, key-value, wide-column, and graph. They provide flexible schemas and scale easily with large amounts of data and high user loads.
Types of NoSQL databases
* Document databases Ex. MongoDB
* Key-value databases Ex. Redis
* Wide-column databases Ex. Cassandra
* Graph databases Ex. Neo4J
NoSQL databases store data in flexible formats like documents, key value pairs, or graphs, without requiring a fixed schema. They often trade strict consistency for better scalability and performance, making them suitable for large scale or rapidly changing data. Architects choose NoSQL databases when the data model does not fit neatly into relational tables or when horizontal scaling is a priority.
Visit the following resources to learn more:
- [@article@NoSQL Database - AWS](https://aws.amazon.com/nosql/)
- [@article@NoSQL Databases](https://www.mongodb.com/resources/basics/databases/nosql-explained)
- [@feed@Explore top posts about NoSQL](https://app.daily.dev/tags/nosql?ref=roadmapsh)
- [@article@NoSQL Databases](https://www.mongodb.com/resources/basics/databases/nosql-explained)
@@ -1,6 +1,6 @@
# OOP
Object-oriented programming (OOP) is a computer programming model that organizes software design around data, or objects, rather than functions and logic. An object can be defined as a data field that has unique attributes and behavior.
Object oriented programming organizes code around objects that combine data and behavior, using concepts like encapsulation, inheritance, and polymorphism. It helps model real world entities and relationships in a way that keeps related code together and reusable. Most enterprise architecture patterns and languages rely on object oriented principles as a foundation.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Proxies
In computer networking, a proxy server is a server application that acts as an intermediary between a client requesting a resource and the server providing that resource.
A proxy is an intermediary server that sits between a client and a destination server, forwarding requests and often adding functionality like caching, load balancing, or filtering. Reverse proxies sit in front of backend servers to distribute traffic and hide internal infrastructure, while forward proxies sit in front of clients. Architects use proxies to improve performance, security, and manageability of network traffic.
Visit the following resources to learn more:
@@ -8,5 +8,4 @@ Visit the following resources to learn more:
- [@official@Python Website](https://www.python.org/)
- [@official@Python Getting Started](https://www.python.org/about/gettingstarted/)
- [@article@Automate the Boring Stuff](https://automatetheboringstuff.com/)
- [@article@Python Crash Course](https://ehmatthes.github.io/pcc/)
- [@feed@Explore top posts about Python](https://app.daily.dev/tags/python?ref=roadmapsh)
- [@article@Python Crash Course](https://ehmatthes.github.io/pcc/)
@@ -1,20 +1,9 @@
# React
React is the most popular front-end JavaScript library for building user interfaces. React can also render on the server using Node and power mobile apps using React Native.
Vue.js is a progressive JavaScript framework designed for building user interfaces and single-page applications.
Angular is a TypeScript-based open-source front-end web application framework led by the Angular Team at Google.
# React, Vue, Angular
React, Vue, and Angular are popular JavaScript frameworks and libraries for building interactive web user interfaces through reusable components. React focuses on a flexible component model with a large ecosystem, Vue emphasizes simplicity and gradual adoption, and Angular provides a more complete, opinionated framework out of the box. An architect chooses between them based on team experience, project scale, and how much structure the framework should enforce.
Visit the following resources to learn more:
- [@roadmap@Visit Dedicated React Roadmap](https://roadmap.sh/react)
- [@roadmap@Visit Dedicated Vue Roadmap](https://roadmap.sh/vue)
- [@roadmap@Visit Dedicated Angular Roadmap](https://roadmap.sh/angular)
- [@official@React](https://react.dev/)
- [@official@Vue.js](https://vuejs.org/)
- [@official@Angular](https://angular.dev/)
- [@video@React JS Course for Beginners](https://www.youtube.com/watch?v=nTeuhbP7wdE)
- [@video@Vue.js Course for Beginners](https://www.youtube.com/watch?v=FXpIoQ_rT_c)
- [@video@Angular Course for Beginners](https://www.youtube.com/watch?v=3qBXWUpoPHo)
- [@feed@Explore top posts about Angular](https://app.daily.dev/tags/angular?ref=roadmapsh)
- [@roadmap@Visit Dedicated Angular Roadmap](https://roadmap.sh/angular)
@@ -1,18 +1,6 @@
# Architect Responsibilities
To understand the necessary skills an architect needs, we first need to understand typical activities. The following list contains from my perspective the most important activities:
* Define and decide development technology and platform
* Define development standards, e.g., coding standards, tools, review processes, test approach, etc.
* Support identifying and understanding business requirements
* Design systems and take decisions based on requirements
* Document and communicate architectural definitions, design and decisions
* Check and review architecture and code, e.g., check if defined patterns and coding standards are implemented properly
* Collaborate with other architects and stakeholders
* Coach and consult developers
* Make sure that as implementation takes place, the architecture is being adhered to
* Play a key part in reviewing code
* Detail out and refine higher level design into lower level design
# Responsibilities
A software architect's responsibilities include defining system structure, choosing technologies, setting technical standards, and reviewing code for architectural consistency. They also assess risks, plan for scalability, and mentor developers on best practices. Beyond technical work, they communicate decisions to stakeholders and balance competing demands like cost, time, and quality.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# REST
REST, or REpresentational State Transfer, is an architectural style for providing standards between computer systems on the web, making it easier for systems to communicate with each other.
REST is an architectural style for designing APIs around resources, identified by URLs and manipulated through standard HTTP methods like GET, POST, and DELETE. Its simplicity and reliance on existing web standards have made it the most common approach for building public and internal APIs. Architects favor REST when they need a widely understood, easy to consume interface.
Visit the following resources to learn more:
@@ -5,5 +5,4 @@ Ruby is a high-level, interpreted programming language that blends Perl, Smallta
Visit the following resources to learn more:
- [@official@Ruby](https://www.ruby-lang.org/en/)
- [@official@Learn Ruby in 20 minutes](https://www.ruby-lang.org/en/documentation/quickstart/)
- [@feed@Explore top posts about Ruby](https://app.daily.dev/tags/ruby?ref=roadmapsh)
- [@official@Learn Ruby in 20 minutes](https://www.ruby-lang.org/en/documentation/quickstart/)
@@ -1,6 +1,6 @@
# Salesforce
Salesforce is a cloud platform helping companies to manage relationships with their customers
Salesforce is a widely used cloud based customer relationship management platform that also supports custom application development through its Apex language and Lightning platform. Many organizations extend Salesforce beyond CRM into custom business applications built on top of its platform. Architects need to understand Salesforce's data model, API options, and platform limits when integrating it with other enterprise systems.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# SAP ERP, HANA, Business Objects
SAP (Systems, Applications, and Products in Data Processing) is a leading enterprise resource planning (ERP) software provider that helps organizations manage their business operations and customer relations effectively. SAP ERP integrates various business processes, such as finance, sales, procurement, and human resources, into a unified system, enabling real-time data access and improved decision-making. SAP HANA (High-Performance Analytic Appliance) is an in-memory database and application development platform that allows businesses to process large volumes of data quickly and efficiently, supporting advanced analytics and real-time reporting. BusinessObjects, part of the SAP Business Intelligence suite, provides powerful tools for data visualization, reporting, and analysis, enabling users to transform raw data into actionable insights. Together, these solutions empower organizations to streamline operations, enhance productivity, and drive strategic decision-making through data-driven insights.
SAP ERP is a widely used enterprise resource planning system that manages core business processes across large organizations, from finance to supply chain. SAP HANA is an in memory database platform that powers faster processing for SAP applications, and SAP Business Objects provides business intelligence and reporting on top of that data. Architects in large enterprises often need to design integrations that connect custom systems to this SAP landscape.
Visit the following resources to learn more:
@@ -1,15 +1,6 @@
# Scrum
`Scrum` is a popular agile framework used for project management, particularly in software development. It emphasizes iterative development, collaboration, and flexibility to deliver high-quality products.
Key elements of Scrum:
* **Sprints**: Time-boxed iterations (usually 2-4 weeks) where teams work on specific goals.
* **Product Backlog**: Prioritized list of features or requirements for the product.
* **Sprint Backlog**: Selected items from the Product Backlog to be completed during a Sprint.
* **Daily Scrum (Stand-up)**: Brief daily meeting where team members share progress, challenges, and plans for the day.
* **Sprint Review**: Meeting at the end of a Sprint to demonstrate completed work and gather feedback.
* **Sprint Retrospective**: Meeting to reflect on the Sprint, identify improvements, and adjust processes for the next Sprint.
Scrum is an agile framework that organizes work into fixed length iterations called sprints, with defined roles like product owner and scrum master guiding the process. It includes regular ceremonies such as sprint planning, daily standups, and retrospectives to keep the team aligned and improve over time. It is one of the most widely adopted agile methodologies in software development.
Visit the following resources to learn more:
@@ -5,5 +5,4 @@ Serverless architecture (also known as serverless computing or function as a ser
Visit the following resources to learn more:
- [@article@Serverless Architectures By AWS](https://aws.amazon.com/lambda/serverless-architectures-learn-more/)
- [@article@Serverless in Detail](https://martinfowler.com/articles/serverless.html)
- [@feed@Explore top posts about Serverless](https://app.daily.dev/tags/serverless?ref=roadmapsh)
- [@article@Serverless in Detail](https://martinfowler.com/articles/serverless.html)
@@ -1,13 +1,6 @@
# Service oriented
Service-oriented architecture (SOA) is an enterprise-wide approach to software development of application components that takes advantage of reusable software components, or services.
SOA provides four different service types:
1. Functional services (i.e., business services), which are critical for business applications.
2. Enterprise services, which serve to implement functionality.
3. Application services, which are used to develop and deploy apps.
4. Infrastructure services, which are instrumental for backend processes like security and authentication.
Service oriented architecture structures a system as a set of loosely coupled services that communicate through well defined interfaces, often using standards like SOAP. It predates microservices and shares similar goals of modularity and reuse, but typically involves heavier middleware like an enterprise service bus. Many large enterprises still run service oriented systems built before microservices became common.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Simplifying Things
Simplifying solutions is critical for effective problem-solving, aligning with Occam’s Razor, which favors simplicity by reducing unnecessary assumptions. To achieve this, “shake” your solution by analyzing it from different perspectives and questioning its assumptions. After complex discussions, take a step back to review the big picture and refactor if needed, giving your brain time to process ideas. Apply the _divide and conquer_ method to break problems into smaller parts and validate their integration afterward. Finally, remember that refactoring is a valuable process to improve overly complex solutions, provided there’s adequate test coverage and stakeholder support.
Simplifying things means reducing complex problems and systems into clear, manageable parts that others can understand and act on. Architects often deal with many moving pieces, and the ability to cut through unnecessary complexity leads to designs that are easier to build, test, and maintain. This skill also helps when explaining technical decisions to people without a deep technical background.
Visit the following resources to learn more:
@@ -1,12 +1,6 @@
# SOLID
SOLID is a set of principles applied to object-oriented design (OOD) to create maintainable, understandable, and flexible code, while avoiding code smells and defects. The principles are:
* Single Responsibility
* Open/Closed
* Liskov Substitution
* Interface Segregation
* Dependency Inversion
SOLID is a set of five object oriented design principles: single responsibility, open closed, Liskov substitution, interface segregation, and dependency inversion. Following these principles leads to code that is easier to extend, test, and maintain as a system grows. Architects use SOLID as a checklist when reviewing designs for long term maintainability.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Solution Level Architecture
The mid-level of architecture. Focus on one or more applications which fulfill a business need (business solution). Some high, but mainly low-level design. Communication is between multiple development teams.
# Solution Architecture
Solution architecture designs how multiple applications and systems work together to satisfy a specific business need. It sits between application architecture and enterprise architecture, dealing with integration points, data flow, and technology choices across several components. A solution architect often works closely with project stakeholders to make sure the combined systems meet both technical and business goals.
Visit the following resources to learn more:
@@ -1,11 +1,8 @@
# SPA vs SSG vs SSR
* **SPA**: A single page application loads only a single web document from the server and then updates the content of that document on demand via `Javascript APIs` without reloading the entire document. React, Vue, Angular are the top frameworks used to create single page applications.
* **SSR**: This technique uses a server like `Node.js` to fully render the web document upon the receival of a request and then send it back to the client. This way the user get an interactive document with all the necessary information without having to wait for any JavaScript or CSS files to load.
* **SSG**: Static site generation renders the web document in the server(like SSR), however the page is rendered at **build time**. So, instead of rendering the page on the server upon the receival of a request, the page is already rendered in the server, waiting to be served to the client.
Single page applications load once and update content dynamically without full page reloads, giving a smooth user experience but sometimes at the cost of slower initial load and weaker search engine visibility. Server side rendering generates HTML on the server for each request, improving initial load time and SEO. Static site generation pre builds pages at build time, offering the fastest performance for content that does not change often. Architects choose between these rendering strategies based on performance needs, content type, and SEO requirements.
Visit the following resources to learn more:
- [@article@Web Design Patterns — SSR, SSG, and SPA](https://medium.com/codex/web-design-patterns-ssr-ssg-and-spa-fadad7673dfe)
- [@article@Rendering on the Web](https://web.dev/rendering-on-the-web/)
- [@feed@Explore top posts about Web Development](https://app.daily.dev/tags/webdev?ref=roadmapsh)
- [@article@Rendering on the Web](https://web.dev/rendering-on-the-web/)
@@ -1,14 +1,6 @@
# TCP/IP Model
The `TCP/IP model` defines how devices should transmit data between them and enables communication over networks and large distances. The model represents how data is exchanged and organized over networks. It is split into four layers, which set the standards for data exchange and represent how data is handled and packaged when being delivered between applications, devices, and servers.
* **Network Access Layer**: The network access layer is a group of applications requiring network communications. This layer is responsible for generating the data and requesting connections.
* **Internet Layer**: The internet layer is responsible for sending packets from a network and controlling their movement across a network to ensure they reach their destination.
* **Transport Layer**: The transport layer is responsible for providing a solid and reliable data connection between the original application or device and its intended destination.
* **Application Layer**: The application layer refers to programs that need TCP/IP to help them communicate with each other.
The TCP/IP model is the practical, four layer framework that actually underlies how the internet works, covering link, internet, transport, and application layers. It is simpler than the OSI model and maps more directly to real protocols like IP, TCP, and HTTP. Understanding TCP/IP helps an architect reason about how data actually travels between systems over the internet.
Visit the following resources to learn more:
@@ -1,10 +1,3 @@
# Technical Skills
* Experience in software development
* Experience in project management
* Knowledge of one or more programming languages, such as Java, Python, JavaScript, Ruby, Rust, and C
* Knowledge of different development platforms
* Understanding of web applications, cybersecurity, and open source technologies
* Proficiency in analyzing code for issues and errors
* Experience in database platforms
* Experience with Operations and DevOps Skills
Technical skills cover the practical, hands on knowledge an architect needs, including programming languages, design patterns, tools, and infrastructure concepts. These skills give an architect the credibility and depth needed to make informed decisions rather than relying only on theory. The following sections break this knowledge down into specific areas like languages, patterns, and tools.
@@ -1,6 +1,6 @@
# Togaf
The TOGAF content framework provides a detailed model of architectural work products, including deliverables, artifacts within deliverables, and the architectural building blocks that artifacts represent.
TOGAF, The Open Group Architecture Framework, is one of the most widely used frameworks for developing and managing enterprise architecture. It defines a structured process, called the Architecture Development Method, for creating and maintaining architecture that aligns with business goals. Large organizations often adopt TOGAF to bring consistency to how architecture decisions are made and documented across teams.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Trello
Trello is the visual tool that empowers your team to manage any type of project, workflow, or task tracking.
Trello is a visual project management tool based on boards, lists, and cards that represent tasks moving through stages of work. Its simplicity makes it popular for smaller teams or lightweight project tracking compared to more complex tools. Architects may use it to track technical debt items or smaller initiatives outside a full project management system.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# UML
The Unified Modeling Language, or UML, is a modeling language that is intended to provide a standard way to visualize and describe the design of a system.
The Unified Modeling Language is a standardized set of diagram types used to visualize the design of a system, including class diagrams, sequence diagrams, and use case diagrams. It gives architects and developers a common visual language for describing structure and behavior before or during implementation. While not every team uses UML formally, understanding its notation helps when reading architecture documentation.
Visit the following resources to learn more:
@@ -1,3 +1,3 @@
# Software Architect Basics
Understand different concepts such as what is software architecture, software architect, different types of architects and so on.
# Understand the Basics
Understanding the basics means knowing what software architecture is, what a software architect does, and how architectural decisions are structured across different levels of a system. It covers the terminology and mental models an architect uses before diving into any specific pattern or tool. This foundation shapes how later, more technical topics fit into the bigger picture.
@@ -1,8 +1,6 @@
# W3c and WHATWG Standards
World Wide Web Consortium (W3C) standards define the best practices for web development to enable developers to build rich interactive experiences that are available on any device. Theses standards range from recommended web technologies such as HTML, CSS, XML to the generally accepted principles of web architecture, semantics and services.
Web Hypertext Application Technology Working Group (WHATWG) is another set of web standards that came into existence after W3C announced that it was going to be focusing on XHTML over HTML.
The W3C and WHATWG are the organizations responsible for defining and maintaining web standards like HTML, CSS, and related specifications. The W3C historically focused on formal standardization, while WHATWG, formed by browser vendors, drives the living standard for HTML used by modern browsers today. Understanding these standards bodies helps an architect know where to look for authoritative guidance on how web technologies should behave.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# Web and Mobile
Web apps and mobile apps are two distinct types of software applications designed to run on different platforms. Web apps are accessed through web browsers and run on various devices using internet connectivity. They are platform-independent, making them easy to update and maintain, but often require an active internet connection. Mobile apps, on the other hand, are specifically developed for mobile operating systems like Android and iOS, providing enhanced performance, offline functionality, and seamless access to device features such as GPS, cameras, and sensors. While web apps prioritize accessibility and cost-effectiveness, mobile apps focus on delivering a tailored and optimized user experience.
This section covers concepts and technologies specific to building web and mobile user facing applications. It includes frontend frameworks, rendering strategies, and programming paradigms that shape how these applications are structured. An architect working on user facing products needs to understand these choices even if they are not writing the frontend code themselves.
Visit the following resources to learn more:
@@ -1,6 +1,6 @@
# What is Software Architect?
An expert developer who design software solutions from the ground up, making high-level decisions about each stage of the process including technical standards, tools, design principles, platforms to be used, etc., leading a team of engineers to create the final product.
# What is a Software Architect
A software architect is the person responsible for making high level technical decisions on a project, including choosing technologies, defining system structure, and setting coding standards. They act as a bridge between business requirements and the engineering team, translating goals into a technical roadmap. The role combines deep technical knowledge with communication skills, since decisions need to be explained to both developers and stakeholders.
Visit the following resources to learn more:
@@ -1,9 +1,8 @@
# What is Software Architecture?
Describes how an application is built including its components, how they interact with each other, environment in which they operate and so on.
# What is Software Architecture
Software architecture is the high level structure of a software system: how it is divided into components, how those components interact, and the principles that guide their design. It defines the technical decisions that are hard to change later, such as how data flows between services or which technology stack underpins the system. Good architecture balances functional requirements with qualities like performance, scalability, and maintainability.
Visit the following resources to learn more:
- [@article@What is Software Architecture in Software Engineering?](https://www.computer.org/resources/software-architecture)
- [@article@Software Architecture: It might not be what you think it is](https://www.infoq.com/articles/what-software-architecture/)
- [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh)
- [@article@Software Architecture: It might not be what you think it is](https://www.infoq.com/articles/what-software-architecture/)
@@ -1,6 +1,6 @@
# Working with Databases
Working with databases involves storing, managing, and retrieving data efficiently to support applications and business processes. Databases can be relational, like MySQL and PostgreSQL, which use structured tables and SQL for querying, or non-relational (NoSQL), like MongoDB and Cassandra, which handle unstructured or semi-structured data. Effective database management requires designing normalized schemas for relational databases, ensuring data integrity, and optimizing queries for performance. For NoSQL databases, it's important to choose the right type (e.g., document, key-value, columnar) based on application needs. Additionally, managing transactions, indexing, backups, and security are crucial for maintaining reliable and scalable database systems.
Working with data covers the tools and concepts an architect needs to design systems that store, process, and analyze large amounts of information. This includes choosing between database types, understanding data processing frameworks, and knowing how analytics fits into a broader system. Data heavy systems often require different architectural trade offs than typical transactional applications.
Visit the following resources to learn more:
@@ -1,12 +1,6 @@
# Extreme Programming (XP)
`Extreme Programming (XP)` is a popular agile software development framework that emphasizes speed, simplicity, and quality. It was developed by Kent Beck in the late 1990s and is based on five values:
* **Communication**: Open and honest communication among team members and stakeholders is essential.
* **Simplicity**: The simplest solution that works is always preferred.
* **Feedback**: Continuous feedback from customers and team members is used to improve the product.
* **Courage**: Team members must be willing to make changes and take risks.
* **Respect**: Everyone on the team is treated with respect.
Extreme Programming is an agile methodology that emphasizes technical practices like pair programming, test driven development, and continuous integration to improve software quality. It focuses heavily on engineering discipline alongside the process and collaboration elements found in other agile frameworks. Architects who value technical excellence often draw on XP practices even when a team formally follows a different methodology.
Visit the following resources to learn more: