diff --git a/src/data/roadmaps/software-architect/content/apache-spark@a0baFv7hVWZGvS5VLh5ig.md b/src/data/roadmaps/software-architect/content/apache-spark@a0baFv7hVWZGvS5VLh5ig.md index a6bc02998..78d4f0864 100644 --- a/src/data/roadmaps/software-architect/content/apache-spark@a0baFv7hVWZGvS5VLh5ig.md +++ b/src/data/roadmaps/software-architect/content/apache-spark@a0baFv7hVWZGvS5VLh5ig.md @@ -4,5 +4,5 @@ Apache Spark is a multi-language engine for executing data engineering, data sci Visit the following resources to learn more: -- [@article@Official Website](https://spark.apache.org/) +- [@official@Apache Spark](https://spark.apache.org/) - [@feed@Explore top posts about Apache](https://app.daily.dev/tags/apache?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/apis--integrations@Ocn7-ctpnl71ZCZ_uV-uD.md b/src/data/roadmaps/software-architect/content/apis--integrations@Ocn7-ctpnl71ZCZ_uV-uD.md index cf6a63a9e..496b0c4f3 100644 --- a/src/data/roadmaps/software-architect/content/apis--integrations@Ocn7-ctpnl71ZCZ_uV-uD.md +++ b/src/data/roadmaps/software-architect/content/apis--integrations@Ocn7-ctpnl71ZCZ_uV-uD.md @@ -1 +1,9 @@ -# Apis and integrations +# 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. + +Visit the following resources to learn more: + +- [@article@What is API Integration](https://www.ibm.com/topics/api-integration) +- [@article@API Integration - Postman](https://www.postman.com/api-platform/api-integration/) +- [@article@API First Integration](https://www.infoq.com/articles/api-first-integration/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/application-architecture@Lqe47l4j-C4OwkbkwPYry.md b/src/data/roadmaps/software-architect/content/application-architecture@Lqe47l4j-C4OwkbkwPYry.md index c44bfb7d6..ec80c422d 100644 --- a/src/data/roadmaps/software-architect/content/application-architecture@Lqe47l4j-C4OwkbkwPYry.md +++ b/src/data/roadmaps/software-architect/content/application-architecture@Lqe47l4j-C4OwkbkwPYry.md @@ -1,3 +1,7 @@ # 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. + +Visit the following resources to learn more: + +- [@article@Application Architecture](https://www.codesee.io/learning-center/application-architecture) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/architecture@OaLmlfkZid7hKqJ9G8oNV.md b/src/data/roadmaps/software-architect/content/architecture@OaLmlfkZid7hKqJ9G8oNV.md index cc7be8d1d..c809b236b 100644 --- a/src/data/roadmaps/software-architect/content/architecture@OaLmlfkZid7hKqJ9G8oNV.md +++ b/src/data/roadmaps/software-architect/content/architecture@OaLmlfkZid7hKqJ9G8oNV.md @@ -1 +1,3 @@ # Architectures + +Architecture refers to the approach of designing and implementing software architecture with a focus on the tools and technologies that will be used during the development process. This perspective emphasizes that the selection of tools can significantly influence architectural decisions and the overall design of the system. \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/atlassian-tools@3bpd0iZTd3G-H8A7yrExY.md b/src/data/roadmaps/software-architect/content/atlassian-tools@3bpd0iZTd3G-H8A7yrExY.md index 617a00b3a..cf39cd939 100644 --- a/src/data/roadmaps/software-architect/content/atlassian-tools@3bpd0iZTd3G-H8A7yrExY.md +++ b/src/data/roadmaps/software-architect/content/atlassian-tools@3bpd0iZTd3G-H8A7yrExY.md @@ -1,48 +1,15 @@ -# Atlassian tools +# Atlassian Tools -The Jira platform is, at its core, our workflow engine that allows you to track issues or tasks through a predefined and customizable workflow. These tasks can be organized by project, allowing for the entirety of your organization to track their issues at a project level with complete transparency using granular user permissions. +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. -### Jira Service Desk - -Jira Service Desk is for teams who receive incoming issues/requests from other teams/customers. -Jira Service Desk is designed specifically for end-users to submit tickets to a help desk team. - -### Jira Core - -Jira Core takes this workflow engine and caters it for business teams to develop organized, easy to use, task-oriented projects. Whether the tasks are a simple to-do list or a robust 7 step workflow with complex transitions, Jira Core is built to accommodate all of your requirements. Jira Core is an excellent solution for business teams, legal teams, HR teams, non-technical teams, marketing teams, financial teams, operation teams, and more. - -### Confluence - -Confluence is a collaboration wiki used to help teams collaborate and share knowledge efficiently. It acts as your document collaboration and repository as it keeps full tracking of what changed in each document, when, and by whom to keep an 'audit' trail. Team members can create, share, and collaborate on content. - -### Bitbucket - -Bitbucket Server is the on-premises Git repository management solution for enterprise teams. It allows everyone in your organization to easily collaborate on your Git repositories. - -### Statuspage - -Statuspage helps teams inform customers and end-users about outages and scheduled maintenance. Statuspage is the communication piece of your incident management process. Keep users in the loop from 'investigating' through 'resolved'. - -### Opsgenie - -Opsgenie is a modern incident management solution for operating always-on services that enable dev and ops teams to stay aware and in control of alerts and incidents. - -### Advanced Roadmaps for Jira - -Advanced Roadmaps is a Jira Software Cloud Premium feature that's designed to help multiple teams collaborate together, track the big picture, identify dependencies across large pieces of work, and plan for team capacity. - -Advanced Roadmaps is available as a standalone app for Jira Software Server and Data Center. - -### Jira Align - -Jira Align is an Enterprise Agile Planning platform that helps improve visibility, strategic alignment, and enterprise adaptability in order to accelerate your digital transformation. +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. Visit the following resources to learn more: - [@official@Jira Service Desk](https://www.atlassian.com/software/jira/service-management/features/service-desk) - [@official@Jira Core](https://www.atlassian.com/software/jira/work-management) - [@official@Confluence](https://www.atlassian.com/wac/software/confluence?) -- [@article@Bitbucket](https://bitbucket.org/product/) +- [@official@Bitbucket](https://bitbucket.org/product/) - [@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) diff --git a/src/data/roadmaps/software-architect/content/auth-strategies@KiwFXB6yd0go30zAFMTJt.md b/src/data/roadmaps/software-architect/content/auth-strategies@KiwFXB6yd0go30zAFMTJt.md index ee77395b9..45218c071 100644 --- a/src/data/roadmaps/software-architect/content/auth-strategies@KiwFXB6yd0go30zAFMTJt.md +++ b/src/data/roadmaps/software-architect/content/auth-strategies@KiwFXB6yd0go30zAFMTJt.md @@ -1,11 +1,25 @@ -# Auth strategies +# 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 Visit the following resources to learn more: - [@article@JSON Web Token - Handbook](https://auth0.com/resources/ebooks/jwt-handbook) +- [@article@Authentication vs Authorization](https://www.cerbos.dev/blog/authentication-vs-authorization) - [@video@SAML Overview](https://www.youtube.com/watch?v=i8wFExDSZv0) -- [@video@A Devlopers Guide to SAML](https://www.youtube.com/watch?v=l-6QSEqDJPo) +- [@video@A Developers Guide to SAML](https://www.youtube.com/watch?v=l-6QSEqDJPo) - [@video@SAML 2.0: Technical Overview](https://www.youtube.com/watch?v=SvppXbpv-5k) - [@video@An Illustrated Guide to OAuth and OpenID Connect](https://www.youtube.com/watch?v=t18YB3xDfXI) - [@video@OAuth 2.0 & OpenID Connect (OIDC): Technical Overview](https://www.youtube.com/watch?v=rTzlF-U9Y6Y) -- [@article@Authentication vs Authorization](https://www.cerbos.dev/blog/authentication-vs-authorization) diff --git a/src/data/roadmaps/software-architect/content/babok@LQlzVxUxM3haWRwbhYHKY.md b/src/data/roadmaps/software-architect/content/babok@LQlzVxUxM3haWRwbhYHKY.md index a389fab0b..6c8d4746b 100644 --- a/src/data/roadmaps/software-architect/content/babok@LQlzVxUxM3haWRwbhYHKY.md +++ b/src/data/roadmaps/software-architect/content/babok@LQlzVxUxM3haWRwbhYHKY.md @@ -4,5 +4,5 @@ The guide to the Business Analysis Body of Knowledge (BABOK Guide) is a book fro Visit the following resources to learn more: -- [@article@Official Website](https://www.iiba.org/career-resources/a-business-analysis-professionals-foundation-for-success/babok/) +- [@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) diff --git a/src/data/roadmaps/software-architect/content/balance@otHQ6ye1xgkI1qb4tEHVF.md b/src/data/roadmaps/software-architect/content/balance@otHQ6ye1xgkI1qb4tEHVF.md index 6592aa76f..d806fcdf6 100644 --- a/src/data/roadmaps/software-architect/content/balance@otHQ6ye1xgkI1qb4tEHVF.md +++ b/src/data/roadmaps/software-architect/content/balance@otHQ6ye1xgkI1qb4tEHVF.md @@ -1,7 +1,7 @@ # Balance -- **Quality comes at a price**: Earlier I talked about quality and non-functional requirements. If you overdo architecture it will increase costs and probably lower speed of development. You need to balance architectural and functional requirements. Over engineering should be avoided. -- **Solve contradicting goals**: A classic example of contradicting goals are short- and long-term goals. Projects often tend to build the simplest solution whereas an architect has the long-term vision in mind. Often, the simple solution does not fit into the long-term solution and is at risk to be thrown away later (sunk costs). To avoid implementation into the wrong direction, two things need to be considered: - 1. Developers and business need to understand the long term vision and their benefits in order to adapt their solution and - 2. managers who are responsible for budget need to be involved to understand the financial impact. It is not necessary to have 100% of the long term vision in place directly, but the developed piece should fit into it. -- **Conflict management**: Architects are often the glue between multiple groups with different backgrounds. This may lead to conflicts on different levels of communication. To find a balanced solution which also reflect long-term, strategic goals, it is often the role of architects to help overcome the conflict. My starting point regarding communication theory was the “Four-Ears Model” of Schulze von Thun. Based on this model a lot can be shown and deducted. But this theory needs some practice, which should be experienced during communication seminars. +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. + +Visit the following resources to learn more: + +- [@article@Wikipedia](https://en.wikipedia.org/wiki/Balance_(architecture)) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/ci--cd@isavRe4ANVn77ZX6gNSLH.md b/src/data/roadmaps/software-architect/content/ci--cd@isavRe4ANVn77ZX6gNSLH.md index 2543b6364..15aaa3c56 100644 --- a/src/data/roadmaps/software-architect/content/ci--cd@isavRe4ANVn77ZX6gNSLH.md +++ b/src/data/roadmaps/software-architect/content/ci--cd@isavRe4ANVn77ZX6gNSLH.md @@ -4,6 +4,7 @@ CI/CD is a method to frequently deliver apps to customers by introducing automat Visit the following resources to learn more: -- [@article@What is CI/CD?](https://www.redhat.com/en/topics/devops/what-is-ci-cd) -- [@article@What is CI/CD? Continuous integration and continuous delivery explained](https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html) +- [@article@CI/CID - Github](https://github.com/resources/articles/devops/ci-cd) +- [@article@What is CI/CD? - Redhat](https://www.redhat.com/en/topics/devops/what-is-ci-cd) +- [@article@Continuous Integration and Continuous Delivery Explained](https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html) - [@feed@Explore top posts about CI/CD](https://app.daily.dev/tags/cicd?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/client--server@mka_DwiboH5sGFhXhk6ez.md b/src/data/roadmaps/software-architect/content/client--server@mka_DwiboH5sGFhXhk6ez.md index 8b28e00a9..09a96e7d0 100644 --- a/src/data/roadmaps/software-architect/content/client--server@mka_DwiboH5sGFhXhk6ez.md +++ b/src/data/roadmaps/software-architect/content/client--server@mka_DwiboH5sGFhXhk6ez.md @@ -1,4 +1,6 @@ -# Client server architecture +# Client-Server Architecture + +Client-server architecture is a computing model that separates tasks or workloads between service providers (servers) and service requesters (clients). This architecture is widely used in networked applications, including web applications, where clients interact with servers to access resources, services, and data. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/cloud-design-patterns@CxceVdaNCyKDhs0huDtcL.md b/src/data/roadmaps/software-architect/content/cloud-design-patterns@CxceVdaNCyKDhs0huDtcL.md index 537e7a2fb..f6eb107ea 100644 --- a/src/data/roadmaps/software-architect/content/cloud-design-patterns@CxceVdaNCyKDhs0huDtcL.md +++ b/src/data/roadmaps/software-architect/content/cloud-design-patterns@CxceVdaNCyKDhs0huDtcL.md @@ -1,8 +1,6 @@ # Cloud Design Patterns -These design patterns are useful for building reliable, scalable, secure applications in the cloud. - -The link below has cloud design patterns where each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Most patterns include code samples or snippets that show how to implement the pattern on Azure. However, most patterns are relevant to any distributed system, whether hosted on Azure or other cloud platforms. +These design patterns are useful for building reliable, scalable, secure applications in the cloud. The cloud design patterns where each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Most patterns include code samples or snippets that show how to implement the pattern on Azure. However, most patterns are relevant to any distributed system, whether hosted on Azure or other cloud platforms. Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/cloud-providers@C0rKd5Rr27Z1_GleoEZxF.md b/src/data/roadmaps/software-architect/content/cloud-providers@C0rKd5Rr27Z1_GleoEZxF.md index 4f95a1f4c..7d43fd60e 100644 --- a/src/data/roadmaps/software-architect/content/cloud-providers@C0rKd5Rr27Z1_GleoEZxF.md +++ b/src/data/roadmaps/software-architect/content/cloud-providers@C0rKd5Rr27Z1_GleoEZxF.md @@ -1 +1,9 @@ -# Cloud providers +# Cloud Providers + +Cloud providers provide a layer of APIs to abstract infrastructure and provision it based on security and billing boundaries. The cloud runs on servers in data centers, but the abstractions cleverly give the appearance of interacting with a single “platform” or large application. The ability to quickly provision, configure, and secure resources with cloud providers has been key to both the tremendous success and complexity of modern DevOps. + +Visit the following resources to learn more: + +- [@article@Cloud Service Provider](https://www.techtarget.com/searchitchannel/definition/cloud-service-provider-cloud-provider) +- [@article@What are Cloud Providers?](https://www.redhat.com/en/topics/cloud-computing/what-are-cloud-providers) +- [@feed@Explore top posts about Cloud](https://app.daily.dev/tags/cloud?ref=roadmapsh) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/communication@Ac49sOlQKblYK4FZuFHDR.md b/src/data/roadmaps/software-architect/content/communication@Ac49sOlQKblYK4FZuFHDR.md index 91e683d6c..50f9d442f 100644 --- a/src/data/roadmaps/software-architect/content/communication@Ac49sOlQKblYK4FZuFHDR.md +++ b/src/data/roadmaps/software-architect/content/communication@Ac49sOlQKblYK4FZuFHDR.md @@ -2,9 +2,8 @@ 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. -- **Learn how to communicate your ideas**: When collaborating on a board or flip chart, it is essential to know how to use it properly in order to structure you and your peers’ thoughts. I found the book “UZMO — Thinking With Your Pen” to be a good resource to enhance my skills in this area. As an architect you usually do not only participating in a meeting, usually you need to drive the meeting and to moderate it. -- **Give talks to large groups**: Presenting your ideas to a small or large group should be doable for you. If you feel uncomfortable with this, start presenting to your best friend. Enlarge the group slowly. This is something which you can only learn by doing and by leaving your personal comfort zone. Be patient with yourself, this process may take some time. -- **Find the right level of communication**: Different stakeholders have different interests and views. They need to be addressed individually on their level. Before you communicate, step back and check if the information you want to share have the right level, regarding abstractness, content, goals, motivations, etc. Example: A developer is usually interested in the very little detail of the solution, whereas a manager prefers to know which option saves most money. -- **Communicate often**: A brilliant architecture is worthless if nobody knows about it. Distribute the target architecture and the thoughts behind it, regularly and on every organizational level. Schedule meetings with developers, architects and managers to show them the desired or defined way. -- **Be transparent**: Regular communication mitigates missing transparency only partially. You need to make the reason behind decisions transparent. Especially, if people are not involved in the decision-making process it is hard to understand and to follow the decision and rationale behind it. -- **Be always prepared to give a presentation**: There is always someone with questions and you want to give the right answers immediately. Try to always have the most important slides in a consolidated set which you can show and explain. It saves you a lot of time and it gives security to yourself. +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. + +Visit the following resources to learn more: + +- [@article@Communication Skills](https://en.wikipedia.org/wiki/Communication) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/consult--coach@LSWlk9A3b6hco9Il_elao.md b/src/data/roadmaps/software-architect/content/consult--coach@LSWlk9A3b6hco9Il_elao.md index 78fef97b6..3f690f4c0 100644 --- a/src/data/roadmaps/software-architect/content/consult--coach@LSWlk9A3b6hco9Il_elao.md +++ b/src/data/roadmaps/software-architect/content/consult--coach@LSWlk9A3b6hco9Il_elao.md @@ -1,7 +1,7 @@ # Consult and Coach -Being pro-active is probably the best you can do when it comes to consulting and coaching. If you are asked, it is often too late. And cleaning up on the architecture site is something which you want to avoid. You need to somehow foresee the next weeks, months or even years and prepare yourself and the organization for the next steps. +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. -- **Have a vision**: If you are deployed in a project, whether it is a traditional waterfall like approach or agile, you always need to have a vision of your mid- and long-term goals you want to achieve. This is not a detailed concept, but more a road-map towards everyone can work. As you cannot achieve everything at once (it is a journey) I prefer to use maturity models. They give a clear structure which can be easily consumed and give the current status of progress at every time. For different aspects I use different models, e.g. development practices or continuous delivery. Every level in the maturity model has clear requirements which follow the SMART criteria in order to ease measuring if you have achieved it or not. One nice example I found is for continues delivery. -- **Build a community of practice (CoP)**: Exchanging experience and knowledge among a common interest group helps distributing ideas and standardizing approaches. For example you could gather all JavaScript developer and architects in one room, every three months or so, and discuss past and current challenges and how they were tackled or new methodologies and approaches. Architects can share, discuss and align their visions, developers can share experience and learn from their peers. Such a round can be highly beneficial for the enterprise but also for the individual itself, as it helps building a stronger network and distributes ideas. Also check out the article Communities of Practice from the SAFe Framework which explains the CoP concept in an agile setting. -- **Conduct open door sessions**: One source of misconceptions or ambiguity is lack of communication. Block a fixed time slot, e.g. 30 min every week, for exchanging hot topics with your peers. This session has no agenda everything can be discussed. Try to solve minor things on the spot. Schedule follow-ups on the more complex topics. +Visit the following resources to learn more: + +- [@article@Wikipedia](https://en.wikipedia.org/wiki/Consulting) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/containers@l3oeo65FyV5HHvw5n_1wa.md b/src/data/roadmaps/software-architect/content/containers@l3oeo65FyV5HHvw5n_1wa.md index 57490e73f..ab20418ee 100644 --- a/src/data/roadmaps/software-architect/content/containers@l3oeo65FyV5HHvw5n_1wa.md +++ b/src/data/roadmaps/software-architect/content/containers@l3oeo65FyV5HHvw5n_1wa.md @@ -1,11 +1,12 @@ # Containers -Containers are a construct in which [cgroups](https://en.wikipedia.org/wiki/Cgroups), [namespaces](https://en.wikipedia.org/wiki/Linux_namespaces), and [chroot](https://en.wikipedia.org/wiki/Chroot) are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines. - -These images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform. +Containers are a construct in which cgroups, namespaces, and chroot are used to fully encapsulate and isolate a process. This encapsulated process, called a container image, shares the kernel of the host with other containers, allowing containers to be significantly smaller and faster than virtual machines. These images are designed for portability, allowing for full local testing of a static image, and easy deployment to a container management platform. Visit the following resources to learn more: +- [@article@cgroups](https://en.wikipedia.org/wiki/Cgroups) +- [@article@namespaces](https://en.wikipedia.org/wiki/Linux_namespaces) +- [@article@chroot](https://en.wikipedia.org/wiki/Chroot) - [@article@What are Containers?](https://cloud.google.com/learn/what-are-containers) - [@article@What is a Container?](https://www.docker.com/resources/what-container/) - [@video@What are Containers?](https://www.youtube.com/playlist?list=PLawsLZMfND4nz-WDBZIj8-nbzGFD4S9oz) diff --git a/src/data/roadmaps/software-architect/content/datawarehouse-principles@B5YtP8C1A0jB3MOdg0c_q.md b/src/data/roadmaps/software-architect/content/datawarehouse-principles@B5YtP8C1A0jB3MOdg0c_q.md index 41710975f..dec80886a 100644 --- a/src/data/roadmaps/software-architect/content/datawarehouse-principles@B5YtP8C1A0jB3MOdg0c_q.md +++ b/src/data/roadmaps/software-architect/content/datawarehouse-principles@B5YtP8C1A0jB3MOdg0c_q.md @@ -1,4 +1,4 @@ -# Datawarehouses principles +# 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. diff --git a/src/data/roadmaps/software-architect/content/decision-making@MSDo0nPk_ghRYkZS4MAQ_.md b/src/data/roadmaps/software-architect/content/decision-making@MSDo0nPk_ghRYkZS4MAQ_.md index c28f96280..c235ba99d 100644 --- a/src/data/roadmaps/software-architect/content/decision-making@MSDo0nPk_ghRYkZS4MAQ_.md +++ b/src/data/roadmaps/software-architect/content/decision-making@MSDo0nPk_ghRYkZS4MAQ_.md @@ -1,10 +1,9 @@ # Decision Making -An architect needs to be able to take decisions and guide projects or the entire organization into the right direction. - -- **Know what is important**: Do not waste time with unimportant decisions or activities. Learn what is important. To my knowledge there is not a book which has these information. My personal favorites are these 2 characteristics which I usually consider when evaluating if something is important or not: - 1. Conceptional Integrity: If you decide to do it in one way, stick to it, even if it is sometimes better to do it differently. Usually, this leads to a more straightforward overall concept, eases comprehensibility and eases maintenance. - 2. Uniformity: If you for example define and apply naming conventions it is not about upper- or lowercase, but to have it applied everywhere in the same way. -- **Prioritize**: Some decisions are highly critical. If they are not taken early enough workarounds are build up which are often unlikely to be removed later and are a nightmare for maintenance, or worse, developers simply stop working until a decision is taken. In such situations it is sometimes even better to go with a “bad” decision instead of having no decision. But before it comes to this situation, consider prioritizing upcoming decisions. There are different ways to do so. I suggest having a look at the Weighted Shortest Job First (WSJF) model which is widely used within agile software development. Especially the measures time criticality and risk reduction are critical to estimate the priority of architecture decisions. -- **Know your competence**: Do not decide things which are not in your competence. This is critical as it may ruin your position as architect significantly if not considered. To avoid this, clarify with your peers which responsibilities you have and what is part of your role. If there are more than one architect, then you should respect the level of architecture in which you are currently deployed. As an lower level architect you better come up with suggestions for higher level architecture instead of decisions. Further, I recommend checking critical decisions always with a peer. -- **Evaluate multiple options**: Always lay out more than one option if it comes to decisions. In the majority of the cases I was involved in, there was more than one possible (good) option. Going with only one option is bad in two respects: First, it seems that you did not do your job properly and secondly it impedes making proper decisions. By defining measures, options can be compared based on facts instead of gut feelings, e.g. license costs or maturity. This usually leads to better and more sustainable decisions. Further, it eases to sell the decision to different stakeholders. Besides, if you do not have evaluated options properly you may miss arguments when it comes to discussions. +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. + +Visit the following resources to learn more: + +- [@article@Decision Making - Wikipedia](https://en.wikipedia.org/wiki/Decision-making) diff --git a/src/data/roadmaps/software-architect/content/design--architecture@fBd2m8tMJmhuNSaakrpg4.md b/src/data/roadmaps/software-architect/content/design--architecture@fBd2m8tMJmhuNSaakrpg4.md index aed1ffd72..f8a4ee655 100644 --- a/src/data/roadmaps/software-architect/content/design--architecture@fBd2m8tMJmhuNSaakrpg4.md +++ b/src/data/roadmaps/software-architect/content/design--architecture@fBd2m8tMJmhuNSaakrpg4.md @@ -1,11 +1,10 @@ # Design and Architecture -What makes a good design? This is probably the most important and challenging question. I will make a distinction between theory and practice. To my experience, having a mix of both is most valuable. Let’s start with theory: - -- **Know the basic design patterns**: Patterns are one of the most important tools an architect needs to have to develop maintainable systems. With patterns you can reuse designs to solve common problems with proven solutions. The book “Design Patterns: Elements of Reusable Object-Oriented Software” written by John Vlissides, Ralph Johnson, Richard Helm, Erich Gamma is a must-read to everyone who is in software development. Although the patterns were published more than 20 years ago they are still the basis of modern software architecture. For example, the Model-View-Controller (MVC) pattern was described in this book, which is applied in many areas or is the basis for newer pattern, e.g. Model-View-ViewModel (MVVM). -- **Dig deeper into patterns and anti-patterns**: If you already know all basic Gang-of-Four patterns, then extend your knowledge with more software design patterns or dig deeper into your area of interest. One of my favorite books about application integration is “Enterprise Integration Patterns” written by Gregor Hohpe. This book is applicable in various areas whenever two applications need to exchange data, whether it is an old-school file exchange from some legacy systems or a modern microservice architecture. -- **Know quality measures**: Defining architecture is not the end. There are reasons why guidelines and coding standards are defined, applied and controlled. You do this because of quality and non-functional requirements. You want to have a system which is maintainable, reliable, adaptable, secure, testable, scalable, usable, etc. And one piece to achieving all of these quality attributes is applying good architecture work. You can start to learn more about quality measures on Wikipedia. - Theory is important. Practice is equally—or even more—important if you do not want to become an Ivory Tower Architect. -- **Try out and understand different technology stacks**: I think this is the most important activity if you want to become a better architect. Try out (new) technology stacks and learn their ups and downs. Different or new technology comes with different design aspects and patterns. You most likely do not learn anything from just flipping through abstract slides but by trying it out by yourself and feeling the pain or the relief. An architect should not only have broad, but—also in some areas—deep knowledge. It is not important to master all technology stacks but to have a solid understanding of the most important in your area. Also, try out technology which is not in your area, e.g., if you are deep into SAP R/3 you should also try JavaScript and vice versa. Still, both parties will be surprised about the latest advances in SAP S/4 Hana. For example, you can try it by yourself and take a course at openSAP for free. Be curious and try out new things. Also try out stuff which you did not like some years ago. -- **Analyze and understand applied patterns**: Have a look at any current framework, e.g., Angular. You can study a lot of patterns in practice, e.g., Observables. Try to understand how it is applied in the framework, why it was done. And if you are really dedicated, have a deeper look into the code and understand how it was implemented. -- **Be curious and attend User Groups**. [Meetup](https://www.meetup.com/) +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. + +Visit the following resources to learn more: + +- [@roadmap@Visit Dedicated Software Design Roadmap](https://roadmap.sh/software-design-architecture) +- [@opensource@Design Patterns for Humans](https://github.com/kamranahmedse/design-patterns-for-humans) diff --git a/src/data/roadmaps/software-architect/content/distributed-systems@j7OP6RD_IAU6HsyiGaynx.md b/src/data/roadmaps/software-architect/content/distributed-systems@j7OP6RD_IAU6HsyiGaynx.md index 6d9f6360a..26aebda8b 100644 --- a/src/data/roadmaps/software-architect/content/distributed-systems@j7OP6RD_IAU6HsyiGaynx.md +++ b/src/data/roadmaps/software-architect/content/distributed-systems@j7OP6RD_IAU6HsyiGaynx.md @@ -1,6 +1,9 @@ -# Distributed systems +# 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. Visit the following resources to learn more: - [@article@Free Distributed Systems book from Maarten van Steen](https://www.distributed-systems.net/index.php/books/ds3/) +- [@article@Distributed Architectures](https://estuary.dev/distributed-architecture/) - [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/documentation@5D-kbQ520k1D3fCtD01T7.md b/src/data/roadmaps/software-architect/content/documentation@5D-kbQ520k1D3fCtD01T7.md index 77e45919b..6cc3fa8db 100644 --- a/src/data/roadmaps/software-architect/content/documentation@5D-kbQ520k1D3fCtD01T7.md +++ b/src/data/roadmaps/software-architect/content/documentation@5D-kbQ520k1D3fCtD01T7.md @@ -2,7 +2,7 @@ Architectural documentation is sometimes more and sometimes less important. Important documents are for example architectural decisions or code guidelines. Initial documentation is often required before coding starts and need to be refined continuously. Other documentation can be automatically generated as code can also be documentation, e.g. UML class diagrams. -- **Clean Code**: Code is the best documentation if done right. A good architect should be capable to distinguish between good and bad code. A really great resource to learn more about good and bad code is the book “Clean Code” by Robert C. Martin. -- **Generate documentation where possible**: Systems are changing quickly and it is hard to update the documentation. Whether it is about APIs or system landscapes in form of CMDBs (Configuration management database): The underlying information often changes too fast to keep the corresponding documentation up to date by hand. Example: For APIs you could auto generate documentation based on the definition file if you are model driven, or directly from the source code. A lot of tools exist for that, I think Swagger and RAML are a good starting point to learn more. -- **As much as necessary, as little as possible**: Whatever you need to document, e.g., decision papers, try to focus on only one thing at a time and include only the necessary information for this one thing. Extensive documentation is hard to read and to understand. Additional information should be stored in the appendix. Especially for decision papers it is more important to tell a convincing story instead of just throwing tons of arguments. Further, this saves you and your co-workers, who have to read it, a lot of time. Have a look at some documentation you have done in the past (source code, models, decision papers, etc.) and ask yourself the following questions: “Are all necessary information included to understand it?”, “Which information are really required and which could be omitted?” and “Does the documentation has a red line?”. -- **Learn more about architecture frameworks**: This point could be applied to all other “technical” points as well. I put it here, as frameworks like TOGAF or Zachmann are providing “tools” which feel heavy on the documentation side, although their added value is not limited to documentation. Getting certified in such a framework teaches you to tackle architecture more systematically. +Visit the following resources to learn more: + +- [@article@Wikipedia](https://en.wikipedia.org/wiki/Documentation) +- [@article@The Ultimate Guide To Software Architecture Documentation](https://www.workingsoftware.dev/software-architecture-documentation-the-ultimate-guide/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/emc-dms@YfYviOXqGVp9C6DuhqBrn.md b/src/data/roadmaps/software-architect/content/emc-dms@YfYviOXqGVp9C6DuhqBrn.md index db4f610ef..235074125 100644 --- a/src/data/roadmaps/software-architect/content/emc-dms@YfYviOXqGVp9C6DuhqBrn.md +++ b/src/data/roadmaps/software-architect/content/emc-dms@YfYviOXqGVp9C6DuhqBrn.md @@ -1 +1,12 @@ -# Emc dms +# 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. + +Visit the following resources to learn more: + +- [@article@DMS](https://www.opentext.com/products/documentum-content-management) +- [@article@EMC Softwares](https://www.spiceworks.com/collaboration/content-collaboration/articles/top-10-enterprise-content-management-software-systems/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/enterprise-architecture@vlW07sc-FQnxPMjDMn8_F.md b/src/data/roadmaps/software-architect/content/enterprise-architecture@vlW07sc-FQnxPMjDMn8_F.md index 658a25339..4634244be 100644 --- a/src/data/roadmaps/software-architect/content/enterprise-architecture@vlW07sc-FQnxPMjDMn8_F.md +++ b/src/data/roadmaps/software-architect/content/enterprise-architecture@vlW07sc-FQnxPMjDMn8_F.md @@ -1,6 +1,7 @@ # Enterprise Level Architecture 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. + Visit the following resources to learn more: - [@article@Enterprise Software Architecture](https://medium.com/@hsienwei/enterprise-software-architecture-957288829daa) diff --git a/src/data/roadmaps/software-architect/content/enterprise-software@8yALyPVUZPtd7LX3GrO1e.md b/src/data/roadmaps/software-architect/content/enterprise-software@8yALyPVUZPtd7LX3GrO1e.md index fcc7fc346..68ba151c6 100644 --- a/src/data/roadmaps/software-architect/content/enterprise-software@8yALyPVUZPtd7LX3GrO1e.md +++ b/src/data/roadmaps/software-architect/content/enterprise-software@8yALyPVUZPtd7LX3GrO1e.md @@ -1 +1,7 @@ -# Enterprise software +# Enterprise Software + +Enterprise software refers to software applications that are designed to meet the needs of large organizations or enterprises. These applications are typically complex, scalable, and capable of integrating with other systems to support a wide range of business functions. Enterprise software is used to improve efficiency, streamline processes, and enhance productivity across various departments within an organization. + +Visit the following resources to learn more: + +- [@article@Enterprise Softwares](https://en.wikipedia.org/wiki/Enterprise_software) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/esb-soap@fELnBA0eOoE-d9rSmDJ8l.md b/src/data/roadmaps/software-architect/content/esb-soap@fELnBA0eOoE-d9rSmDJ8l.md index 5b9e7d9bd..85342b68a 100644 --- a/src/data/roadmaps/software-architect/content/esb-soap@fELnBA0eOoE-d9rSmDJ8l.md +++ b/src/data/roadmaps/software-architect/content/esb-soap@fELnBA0eOoE-d9rSmDJ8l.md @@ -1 +1,9 @@ -# Esb soap +# ESB and SOAP + +ESB (Enterprise Service Bus) and SOAP (Simple Object Access Protocol) are two technologies that enable communication between different systems. ESB is a software architecture that allows for the integration of various systems, such as databases, web services, and mobile applications. SOAP is a messaging protocol that enables the exchange of structured data between systems over the internet. + +Visit the following resources to learn more: + +- [@article@Understanding SOAP: The Old Guard of Web Services](https://mariomthree.medium.com/understanding-soap-the-old-guard-of-web-services-6ca89d8ec312) +- [@article@Enterprise Service Bus](https://en.wikipedia.org/wiki/Enterprise_service_bus) +- [@article@ESB - IBM](https://www.ibm.com/topics/esb) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/estimate-and-evaluate@m0ZYdqPFDoHOPo18wKyvV.md b/src/data/roadmaps/software-architect/content/estimate-and-evaluate@m0ZYdqPFDoHOPo18wKyvV.md index 08309d7c1..a9ae3f556 100644 --- a/src/data/roadmaps/software-architect/content/estimate-and-evaluate@m0ZYdqPFDoHOPo18wKyvV.md +++ b/src/data/roadmaps/software-architect/content/estimate-and-evaluate@m0ZYdqPFDoHOPo18wKyvV.md @@ -1,8 +1,10 @@ # Estimate and Evaluate -- **Know basic project management principles**: As architect or lead developer you are often asked for estimates to realize your ideas: How long, how much, how many people, which skills, etc.? Of course, if you plan to introduce new tools or frameworks you need to have an answer for these kind of “management” questions. Initially, you should be able to give a rough estimate, like days, months or years. And do not forget that it is not only about implementing, there are more activities to consider, like requirements engineering, testing and fixing bugs. Therefore, you should know the activities the used software development process. One thing you can apply to get better estimates, is to use past data and derive your prediction from that. If you do not have past data, you can also try approaches such as COCOMO by Barry W. Boehm. If you are deployed in an agile project, learn how to estimate and to plan properly: The book “Agile Estimating and Planning” by Mike Cohn provides a solid overview in this area. -- **Evaluate “unknown” architecture**: As architect you should also be able to evaluate the suitability of architectures for the current or future context(s). This is not an easy task but you can prepare for it by having a set of questions at hand which are common for every architecture. And it’s not only about architecture but also about how the system is managed, as this also gives you insights about the quality. I suggest to always have some questions prepared and ready to use. Some ideas for general questions: - - Design practices: Which patterns does the architecture follow? Are they consequently and correctly used? Does the design follow a red line or is there an uncontrolled growth? Is there a clear structure and separation of concerns? - - Development practices: Code guidelines in place and followed? How is the code versioned? Deployment practices? - - Quality assurance: Test automation coverage? Static code analysis in place and good results? Peer reviews in place? - - Security: Which security concepts are in place? Built-in security? Penetration tests or automated security analysis tools in place and regularly used? +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. + +Visit the following resources to learn more: + +- [@article@Evaluating Software Architectures](https://medium.com/oolooroo/evaluating-digital-architectures-a-deep-dive-into-modern-software-systems-analysis-dff3b0d2da8f) +- [@article@How to Evaluate Software Architecture: Methods and Tools](https://www.linkedin.com/advice/0/what-most-common-software-architecture-evaluation) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/etl-datawarehouses@JUFE4OQhnXOt1J_MG-Sjf.md b/src/data/roadmaps/software-architect/content/etl-datawarehouses@JUFE4OQhnXOt1J_MG-Sjf.md index 1e71b72f4..148f8461c 100644 --- a/src/data/roadmaps/software-architect/content/etl-datawarehouses@JUFE4OQhnXOt1J_MG-Sjf.md +++ b/src/data/roadmaps/software-architect/content/etl-datawarehouses@JUFE4OQhnXOt1J_MG-Sjf.md @@ -1,15 +1,9 @@ # ETL Datawarehouses -In the world of data warehousing, if you need to bring data from multiple different data sources into one, centralized database, you must first: - -- **EXTRACT** data from its original source -- **TRANSFORM** data by deduplicating it, combining it, and ensuring quality, to then -- **LOAD** data into the target database - -ETL tools enable data integration strategies by allowing companies to gather data from multiple data sources and consolidate it into a single, centralized location. ETL tools also make it possible for different types of data to work together. +ETL (Extract, Transform, Load) is a key process in data warehousing, enabling the integration of data from multiple sources into a centralized database. The process begins by **extracting** data from original sources, followed by **transforming** it to ensure quality, deduplication, and combination, and finally **loading** it into the target database. ETL tools streamline this process, allowing companies to consolidate diverse data types and ensure seamless integration for effective data analysis and decision-making. Visit the following resources to learn more: - [@article@What is ETL?](https://www.snowflake.com/guides/what-etl) -- [@video@ETL explained](https://www.youtube.com/watch?v=OW5OgsLpDCQ) +- [@video@ETL Explained](https://www.youtube.com/watch?v=OW5OgsLpDCQ) - [@feed@Explore top posts about ETL](https://app.daily.dev/tags/etl?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/firewalls@Hqk_GGsFi14SI5fgPSoGV.md b/src/data/roadmaps/software-architect/content/firewalls@Hqk_GGsFi14SI5fgPSoGV.md index f2f5c9c11..5198fb040 100644 --- a/src/data/roadmaps/software-architect/content/firewalls@Hqk_GGsFi14SI5fgPSoGV.md +++ b/src/data/roadmaps/software-architect/content/firewalls@Hqk_GGsFi14SI5fgPSoGV.md @@ -1,3 +1,8 @@ # Firewalls -A Firewall is a network security device that monitors and filters incoming and outgoing network traffic based on an organization's previously established security policies. +A Firewall is a network security device that monitors and filters incoming and outgoing network traffic based on an organization's previously established security policies. Firewalls usually sit between a trusted network and an untrusted network; oftentimes the untrusted network is the Internet. For example, office networks often use a firewall to protect their network from online threats. + +Visit the following resources to learn more: + +- [@article@What is a Firewall? - Cloudflare](https://www.cloudflare.com/learning/security/what-is-a-firewall/) +- [@article@Firewall - Cisco](https://www.cisco.com/site/us/en/learn/topics/security/what-is-a-firewall.html) diff --git a/src/data/roadmaps/software-architect/content/frameworks@hjlkxYZS7Zf9En3IUS-Wm.md b/src/data/roadmaps/software-architect/content/frameworks@hjlkxYZS7Zf9En3IUS-Wm.md index 1f571cd1b..ce4c554ed 100644 --- a/src/data/roadmaps/software-architect/content/frameworks@hjlkxYZS7Zf9En3IUS-Wm.md +++ b/src/data/roadmaps/software-architect/content/frameworks@hjlkxYZS7Zf9En3IUS-Wm.md @@ -1 +1,8 @@ -# Architect frameworks +# 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: + +Visit the following resources to learn more: + +- [@article@Architect Frameworks](https://www.techtarget.com/searchapparchitecture/definition/enterprise-architecture-framework) +- [@article@Common Software Architecture Frameworks](https://medium.com/@publicapplicationcenter/tutorial-notes-common-software-architecture-frameworks-1a9915e1d806) diff --git a/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa.md b/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa.md index 76cf07cf3..57e348157 100644 --- a/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa.md +++ b/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa.md @@ -4,5 +4,6 @@ Functional programming is a programming paradigm designed to handle pure mathema Visit the following resources to learn more: +- [@article@Functional Programming](https://en.wikipedia.org/wiki/Functional_programming) - [@video@Learning Functional Programming](https://youtube.com/watch?v=e-5obm1G_FY) - [@article@Functional Programming with JavaScript](https://www.telerik.com/blogs/functional-programming-javascript) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/git@ZEzYb-i55hBe9kK3bla94.md b/src/data/roadmaps/software-architect/content/git@ZEzYb-i55hBe9kK3bla94.md index 01cfa9a7a..b2f35eddd 100644 --- a/src/data/roadmaps/software-architect/content/git@ZEzYb-i55hBe9kK3bla94.md +++ b/src/data/roadmaps/software-architect/content/git@ZEzYb-i55hBe9kK3bla94.md @@ -1,10 +1,11 @@ # Git -Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. +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. Visit the following resources to learn more: +- [@roadmap@Visit Dedicated Git & Github Roadmap](https://roadmap.sh/git-github) - [@video@Git & GitHub Crash Course For Beginners](https://www.youtube.com/watch?v=SWYqp7iY_Tc) -- [@article@Learn Git with Tutorials, News and Tips - Atlassian](https://www.atlassian.com/git) - [@article@Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet) +- [@article@Tutorial: Git for Absolutely Everyone](https://thenewstack.io/tutorial-git-for-absolutely-everyone/) - [@feed@Explore top posts about Git](https://app.daily.dev/tags/git?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/github@PyTuVs08_z4EhLwhTYzFu.md b/src/data/roadmaps/software-architect/content/github@PyTuVs08_z4EhLwhTYzFu.md index 828438048..39ba414f5 100644 --- a/src/data/roadmaps/software-architect/content/github@PyTuVs08_z4EhLwhTYzFu.md +++ b/src/data/roadmaps/software-architect/content/github@PyTuVs08_z4EhLwhTYzFu.md @@ -1,14 +1,14 @@ # GitHub -GitHub is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features. +GitHub has become a central hub for open-source projects and is widely used by developers, companies, and organizations for both private and public repositories. It was acquired by Microsoft in 2018 but continues to operate as a relatively independent entity. GitHub's popularity has made it an essential tool in modern software development workflows and a key platform for showcasing coding projects and contributing to open-source software. Visit the following resources to learn more: -- [@opensource@GitHub Website](https://github.com) -- [@article@GitHub Documentation](https://docs.github.com/en/get-started/quickstart) +- [@roadmap@Visit Dedicated Git & Github Roadmap](https://roadmap.sh/git-github) +- [@official@GitHub](https://github.com) +- [@official@GitHub: Quickstart](https://docs.github.com/en/get-started/quickstart/hello-world) +- [@official@GitHub Documentation](https://docs.github.com/en/get-started/quickstart) +- [@official@Learn GitHub by doing](https://skills.github.com/) - [@video@What is GitHub?](https://www.youtube.com/watch?v=w3jLJU7DT5E) -- [@video@Git vs. GitHub: Whats the difference?](https://www.youtube.com/watch?v=wpISo9TNjfU) -- [@video@Git and GitHub for Beginners](https://www.youtube.com/watch?v=RGOj5yH7evk) -- [@video@Git and GitHub - CS50 Beyond 2019](https://www.youtube.com/watch?v=eulnSXkhE7I) -- [@article@How to Use Git in a Professional Dev Team](https://ooloo.io/project/github-flow) - [@feed@Explore top posts about GitHub](https://app.daily.dev/tags/github?ref=roadmapsh) + diff --git a/src/data/roadmaps/software-architect/content/graphql@Sp3FdPT4F9YnTGvlE_vyq.md b/src/data/roadmaps/software-architect/content/graphql@Sp3FdPT4F9YnTGvlE_vyq.md index fbe3c9d40..55daa6548 100644 --- a/src/data/roadmaps/software-architect/content/graphql@Sp3FdPT4F9YnTGvlE_vyq.md +++ b/src/data/roadmaps/software-architect/content/graphql@Sp3FdPT4F9YnTGvlE_vyq.md @@ -1,8 +1,12 @@ -# GraphQL +# Graphql -GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools. +GraphQL is a query language and runtime for APIs, developed by Facebook. GraphQL's flexibility and efficiency make it popular for building complex applications, especially those with diverse client requirements. It's particularly useful for mobile applications where bandwidth efficiency is crucial. While it requires a paradigm shift from REST, many developers and organizations find GraphQL's benefits outweigh the learning curve, especially for large-scale or rapidly evolving APIs. Visit the following resources to learn more: -- [@article@Apollo GraphQL Tutorials](https://www.apollographql.com/tutorials/) -- [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh) +- [@roadmap@visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql) +- [@official@Introduction to GraphQL](https://graphql.org/learn/) +- [@video@GraphQL Course for Beginners](https://www.youtube.com/watch?v=ed8SzALpx1Q) +- [@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/) +- [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/grpc@priDGksAvJ05YzakkTFtM.md b/src/data/roadmaps/software-architect/content/grpc@priDGksAvJ05YzakkTFtM.md index daa5a89fe..d51bd9006 100644 --- a/src/data/roadmaps/software-architect/content/grpc@priDGksAvJ05YzakkTFtM.md +++ b/src/data/roadmaps/software-architect/content/grpc@priDGksAvJ05YzakkTFtM.md @@ -3,7 +3,6 @@ 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 Visit the following resources to learn more: diff --git a/src/data/roadmaps/software-architect/content/hadoop-spark-mapreduce@92GG4IRZ3FijumC94aL-T.md b/src/data/roadmaps/software-architect/content/hadoop-spark-mapreduce@92GG4IRZ3FijumC94aL-T.md index 72ac977e3..07c796d39 100644 --- a/src/data/roadmaps/software-architect/content/hadoop-spark-mapreduce@92GG4IRZ3FijumC94aL-T.md +++ b/src/data/roadmaps/software-architect/content/hadoop-spark-mapreduce@92GG4IRZ3FijumC94aL-T.md @@ -1,11 +1,12 @@ # Spark, Hadoop MapReduce -[Apache Spark](https://spark.apache.org/) 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. +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. Visit the following resources to learn more: +- [@official@Apache Spark](https://spark.apache.org/) - [@article@Spark vs Hadoop MapReduce](https://www.integrate.io/blog/apache-spark-vs-hadoop-mapreduce) - [@video@Hadoop explained in 5 minutes](https://www.youtube.com/watch?v=aReuLtY0YMI) - [@feed@Explore top posts about Apache Spark](https://app.daily.dev/tags/spark?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/hadoop@I_VjjmMK52_tS8qjQUspN.md b/src/data/roadmaps/software-architect/content/hadoop@I_VjjmMK52_tS8qjQUspN.md index 45c081420..b1df2e0b8 100644 --- a/src/data/roadmaps/software-architect/content/hadoop@I_VjjmMK52_tS8qjQUspN.md +++ b/src/data/roadmaps/software-architect/content/hadoop@I_VjjmMK52_tS8qjQUspN.md @@ -4,5 +4,6 @@ The Apache Hadoop software library is a framework that allows for the distribute Visit the following resources to learn more: -- [@article@Official Website](https://hadoop.apache.org/) +- [@official@Apache Hadoop](https://hadoop.apache.org/) +- [@article@Apache Hadoop - Wikipedia](https://en.wikipedia.org/wiki/Apache_Hadoop) - [@feed@Explore top posts about Apache Hadoop](https://app.daily.dev/tags/apache-hadoop?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/hashing-algorithms@7tBAD0ox9hTK4D483GTRo.md b/src/data/roadmaps/software-architect/content/hashing-algorithms@7tBAD0ox9hTK4D483GTRo.md index ff2bf13a0..c46a3f634 100644 --- a/src/data/roadmaps/software-architect/content/hashing-algorithms@7tBAD0ox9hTK4D483GTRo.md +++ b/src/data/roadmaps/software-architect/content/hashing-algorithms@7tBAD0ox9hTK4D483GTRo.md @@ -4,6 +4,7 @@ Hashing algorithms are used to generate a unique value for a given input. This v 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) diff --git a/src/data/roadmaps/software-architect/content/how-to-code@77KvWCA1oHSGgDKBTwjv7.md b/src/data/roadmaps/software-architect/content/how-to-code@77KvWCA1oHSGgDKBTwjv7.md index 5e5aab289..cc4082932 100644 --- a/src/data/roadmaps/software-architect/content/how-to-code@77KvWCA1oHSGgDKBTwjv7.md +++ b/src/data/roadmaps/software-architect/content/how-to-code@77KvWCA1oHSGgDKBTwjv7.md @@ -1,14 +1,10 @@ # How to Code -Even as an Enterprise Architect, the most abstract level of architecture, you should still know what developers are doing on their daily basis. And if you do not understand how this is done, you may face two major problems: - -- Developers won’t accept your sayings. -- You do not understand challenges and needs of developers. -- **Have a side project**: The purpose of this is to try out new technologies and tools to find out how development is done today and in the future. Experience is the combination of observations, emotions and hypothesis (“Experience and Knowledge Management in Software Engineering” by Kurt Schneider). Reading a tutorial or some pros and cons is good. But this is just “book knowledge”. Only if you try out things by yourself you can experience emotions and can built up hypothesis about why something is good or bad. And the longer you work with a technology the better your hypothesis will get. This will help you to take better decisions in your day to day work. As I started programming I had no code completion and only some utility libraries to speed up development. Obviously, with this background I would make wrong decisions today. Today, we have tons of programming languages, frameworks, tools, processes and practices. Only if you have some experience and a rough overview in the major trends you are able to take part of the conversation and to steer development into the right direction. -- **Find the right things to try out**: You cannot try out everything. This is simply impossible. You need a more structured approach. One source I recently discovered is the [Technology Radar](https://www.thoughtworks.com/radar) from ThoughtWorks. They categorize technologies, tools, platforms, languages and frameworks into four categories: - - Adopt: “strong feeling to be ready for enterprise usage”. - - Trial: “enterprise should try it in one project that can handle the risk”. - - Assess: “explore how it affects your enterprise” - - Hold: “process with caution”. - -With this categorization it is easier to get an overview of new things and their readiness to better evaluate which trend to explore next. +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. + +Visit the following resources to learn more: + +- [@article@How to Code](https://www.thoughtworks.com/insights/blog/how-to-code) +- [@article@Technology Radar](https://www.thoughtworks.com/radar) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/http-https@Nq6o6Ty8VyNRsvg-UWp7D.md b/src/data/roadmaps/software-architect/content/http-https@Nq6o6Ty8VyNRsvg-UWp7D.md index a5bd6fa48..25f99d65f 100644 --- a/src/data/roadmaps/software-architect/content/http-https@Nq6o6Ty8VyNRsvg-UWp7D.md +++ b/src/data/roadmaps/software-architect/content/http-https@Nq6o6Ty8VyNRsvg-UWp7D.md @@ -2,17 +2,17 @@ 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 (**H**ypertext **T**ransfer **P**rotocol **S**ecure) is the secure version of HTTP, which is the primary protocol used to send data between a web browser and a website. +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` Visit the following resources to learn more: -- [@article@Everything you need to know about HTTP](https://cs.fyi/guide/http-in-depth) +- [@article@What is HTTPS?](https://www.cloudflare.com/en-gb/learning/ssl/what-is-https/) - [@article@What is HTTP?](https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/) -- [@article@An overview of HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview) +- [@article@Overview of HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview) +- [@article@Everything you need to know about HTTP](https://cs.fyi/guide/http-in-depth) - [@article@HTTP/3 From A To Z: Core Concepts](https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/) -- [@article@What is HTTPS?](https://www.cloudflare.com/en-gb/learning/ssl/what-is-https/) - [@article@Why HTTPS Matters](https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https) - [@article@Enabling HTTPS on Your Servers](https://developers.google.com/web/fundamentals/security/encrypt-in-transit/enable-https) - [@video@HTTP Crash Course & Exploration](https://www.youtube.com/watch?v=iYM2zFP3Zn0) diff --git a/src/data/roadmaps/software-architect/content/iaf@wFu9VO48EYbIQrsM8YUCj.md b/src/data/roadmaps/software-architect/content/iaf@wFu9VO48EYbIQrsM8YUCj.md index 374a1fefe..d2afce5e3 100644 --- a/src/data/roadmaps/software-architect/content/iaf@wFu9VO48EYbIQrsM8YUCj.md +++ b/src/data/roadmaps/software-architect/content/iaf@wFu9VO48EYbIQrsM8YUCj.md @@ -4,5 +4,5 @@ The Integrated Architecture Framework (IAF) is an enterprise architecture framew Visit the following resources to learn more: -- [@article@Official PDF](https://www.capgemini.com/wp-content/uploads/2018/03/architecture-for-the-information-age.pdf) - [@article@Wikipedia](https://en.wikipedia.org/wiki/Integrated_Architecture_Framework) +- [@article@IAF PDF](https://www.capgemini.com/wp-content/uploads/2018/03/architecture-for-the-information-age.pdf) diff --git a/src/data/roadmaps/software-architect/content/ibm-bpm@5EVecZmvor09LjD7WR_Y9.md b/src/data/roadmaps/software-architect/content/ibm-bpm@5EVecZmvor09LjD7WR_Y9.md index 365de5625..87db2af9e 100644 --- a/src/data/roadmaps/software-architect/content/ibm-bpm@5EVecZmvor09LjD7WR_Y9.md +++ b/src/data/roadmaps/software-architect/content/ibm-bpm@5EVecZmvor09LjD7WR_Y9.md @@ -4,6 +4,6 @@ IBM BPM is a comprehensive business process management platform. It provides a r Visit the following resources to learn more: -- [@official@BPM overview](https://www.ibm.com/docs/en/bpm/8.5.5?topic=manager-business-process-overview) +- [@official@Overview BPM](https://www.ibm.com/docs/en/bpm/8.5.5?topic=manager-business-process-overview) - [@video@BPM Demo](https://www.youtube.com/watch?v=6yn4nCWMNLI) - [@feed@Explore top posts about IBM](https://app.daily.dev/tags/ibm?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/important-skills-to-learn@lBtlDFPEQvQ_xtLtehU0S.md b/src/data/roadmaps/software-architect/content/important-skills-to-learn@lBtlDFPEQvQ_xtLtehU0S.md index 938a8ac36..2a6d3b94c 100644 --- a/src/data/roadmaps/software-architect/content/important-skills-to-learn@lBtlDFPEQvQ_xtLtehU0S.md +++ b/src/data/roadmaps/software-architect/content/important-skills-to-learn@lBtlDFPEQvQ_xtLtehU0S.md @@ -12,3 +12,7 @@ To support the laid-out activities specific skills are required. From my experie - Balance - Consult - Market + +Visit the following resources to learn more: + +- [@article@Software Architect Skills](https://www.geeksforgeeks.org/software-architects-skills/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/infrastructure-as-code@igf9yp1lRdAlN5gyQ8HHC.md b/src/data/roadmaps/software-architect/content/infrastructure-as-code@igf9yp1lRdAlN5gyQ8HHC.md index 8b840ed6c..8b1307d03 100644 --- a/src/data/roadmaps/software-architect/content/infrastructure-as-code@igf9yp1lRdAlN5gyQ8HHC.md +++ b/src/data/roadmaps/software-architect/content/infrastructure-as-code@igf9yp1lRdAlN5gyQ8HHC.md @@ -6,9 +6,9 @@ The term Infrastructure as Code encompasses everything from bootstrapping to con Visit the following resources to learn more: +- [@article@What is Infrastructure as Code](https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac) +- [@article@GUIs, CLI, APIs: Learn Basic Terms of Infrastructure-as-Code](https://thenewstack.io/guis-cli-apis-learn-basic-terms-of-infrastructure-as-code/) - [@video@What is Infrastructure as Code?](https://www.youtube.com/watch?v=zWw2wuiKd5o) - [@video@What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es) -- [@video@Video introduction to infrastructure as code](https://www.youtube.com/watch?v=zWw2wuiKd5o) -- [@article@GUIs, CLI, APIs: Learn Basic Terms of Infrastructure-as-Code](https://thenewstack.io/guis-cli-apis-learn-basic-terms-of-infrastructure-as-code/) -- [@article@What is infrastructure as code](https://www.redhat.com/en/topics/automation/what-is-infrastructure-as-code-iac) +- [@video@Introduction to Infrastructure as Code](https://www.youtube.com/watch?v=zWw2wuiKd5o) - [@feed@Explore top posts about Infrastructure](https://app.daily.dev/tags/infrastructure?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/itil@Rq1Wi-cHjS54SYo-Btp-e.md b/src/data/roadmaps/software-architect/content/itil@Rq1Wi-cHjS54SYo-Btp-e.md index 1ebab580f..685770c57 100644 --- a/src/data/roadmaps/software-architect/content/itil@Rq1Wi-cHjS54SYo-Btp-e.md +++ b/src/data/roadmaps/software-architect/content/itil@Rq1Wi-cHjS54SYo-Btp-e.md @@ -4,5 +4,5 @@ Visit the following resources to learn more: -- [@oficial@Documentation](https://www.axelos.com/certifications/itil-service-management/itil-4-foundation) +- [@official@ITIL Documentation](https://www.axelos.com/certifications/itil-service-management/itil-4-foundation) - [@video@What is ITIL?](https://www.youtube.com/watch?v=wgnpfMK8vDk) diff --git a/src/data/roadmaps/software-architect/content/java--kotlin--scala@a5DB_hsD4bAf8BtHNFNPo.md b/src/data/roadmaps/software-architect/content/java--kotlin--scala@a5DB_hsD4bAf8BtHNFNPo.md index 0273cf038..9fb671d9f 100644 --- a/src/data/roadmaps/software-architect/content/java--kotlin--scala@a5DB_hsD4bAf8BtHNFNPo.md +++ b/src/data/roadmaps/software-architect/content/java--kotlin--scala@a5DB_hsD4bAf8BtHNFNPo.md @@ -1,10 +1,17 @@ # Java/Kotlin/Scala +- **Java**: Java is a widely-used, object-oriented programming language known for its platform independence, reliability, and scalability. It’s commonly used for building large-scale enterprise applications, Android development, and web services. Java’s extensive libraries, frameworks, and strong community support make it a popular choice for developers. + +- **Scala**: Scala is a statically-typed programming language that combines object-oriented and functional programming paradigms. It runs on the Java Virtual Machine (JVM) and is known for its concise syntax, expressive power, and compatibility with Java. Scala is often used in data engineering, backend services, and applications requiring high concurrency. + +- **Kotlin**: Kotlin is a modern, statically-typed programming language designed to be fully interoperable with Java while offering more concise and expressive syntax. It is particularly popular for Android development due to its simplicity and safety features, such as null safety, and is gaining traction in backend development as well. + Visit the following resources to learn more: - [@roadmap@Visit Dedicated Java Roadmap](https://roadmap.sh/java) -- [@article@Java Basics](https://www.w3schools.com/java/) -- [@article@Learn the basics of Kotlin](https://blog.teamtreehouse.com/absolute-beginners-guide-kotlin) -- [@article@Kotlin Docs](https://kotlinlang.org/docs/reference/basic-syntax.html) -- [@article@Scala Tutorial](https://docs.scala-lang.org/tour/basics.html) +- [@official@Scala](https://www.scala-lang.org/) +- [@official@Scala Documentation](https://docs.scala-lang.org/) +- [@official@Kotlin](https://kotlinlang.org/) +- [@official@Kotlin Documentation](https://kotlinlang.org/docs/home.html) +- [@official@Java](https://www.java.com/) - [@feed@Explore top posts about Java](https://app.daily.dev/tags/java?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/javascript--typescript@bhP5gMpRVebSFpCeHVXBj.md b/src/data/roadmaps/software-architect/content/javascript--typescript@bhP5gMpRVebSFpCeHVXBj.md index ef359ffaa..abcd4e06e 100644 --- a/src/data/roadmaps/software-architect/content/javascript--typescript@bhP5gMpRVebSFpCeHVXBj.md +++ b/src/data/roadmaps/software-architect/content/javascript--typescript@bhP5gMpRVebSFpCeHVXBj.md @@ -1,18 +1,16 @@ # 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. +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. Visit the following resources to learn more: - [@roadmap@Visit Dedicated JavaScript Roadmap](https://roadmap.sh/javascript) -- [@article@W3Schools – JavaScript Tutorial](https://www.w3schools.com/js/) +- [@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) -- [@article@Official Website](https://www.typescriptlang.org/) -- [@article@Official Docs for Deep Dives](https://www.typescriptlang.org/docs/) -- [@article@The TypeScript Handbook](https://www.typescriptlang.org/docs/handbook/intro.html) -- [@article@TypeScript Tutorial](https://www.tutorialspoint.com/typescript/index.htm) - [@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) diff --git a/src/data/roadmaps/software-architect/content/layered@05hLO2_A8Tr6cLJGFRhOh.md b/src/data/roadmaps/software-architect/content/layered@05hLO2_A8Tr6cLJGFRhOh.md index 04b6c5ee2..bbaeb05f4 100644 --- a/src/data/roadmaps/software-architect/content/layered@05hLO2_A8Tr6cLJGFRhOh.md +++ b/src/data/roadmaps/software-architect/content/layered@05hLO2_A8Tr6cLJGFRhOh.md @@ -1,19 +1,7 @@ # Layered Architecture -Layered architecture is a software design pattern in which an application is composed of several layers or tiers. Each layer has a specific responsibility and communicates with the other layers through well-defined interfaces. This modular approach to software design allows for easier maintenance and testing, and also makes it possible to reuse components in different applications. +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. -The most common type of layered architecture is the three-tier architecture, which is typically composed of a presentation layer, a business logic layer, and a data access layer. The presentation layer is responsible for displaying data to the user and receiving user input. The business logic layer contains the core business logic and rules of the application, and the data access layer is responsible for accessing and manipulating data in the database. +Visit the following resources to learn more: -Layered architecture is a common approach to designing scalable and maintainable software systems, and it is often used in enterprise-level applications. - -While layered architecture has many benefits, it also has some drawbacks that should be considered. These include the following: - -- Complexity: Layered architecture can add complexity to an application, especially if it is not implemented carefully. This can make the application more difficult to understand and maintain. - -- Performance: Layered architecture can potentially impact the performance of an application, because data has to be passed between the different layers. This can be especially problematic if the application has a large number of layers or if the layers are not optimized for performance. - -- Tight coupling: If the layers in a layered architecture are not well-defined and loosely coupled, changes to one layer can potentially affect other layers, which can lead to maintainability issues. - -- Overhead: Layered architecture can add overhead to an application, because data has to be passed between the different layers. This can potentially impact the performance and scalability of the application. - -Overall, while layered architecture has many benefits, it is important to carefully consider the potential drawbacks and make sure that the benefits outweigh the costs in your specific application. +- [@article@Wikipedia](https://en.wikipedia.org/wiki/Layered_architecture) diff --git a/src/data/roadmaps/software-architect/content/less@qwpsGRFgzAYstM7bJA2ZJ.md b/src/data/roadmaps/software-architect/content/less@qwpsGRFgzAYstM7bJA2ZJ.md index 1fe336aaf..8ad99da09 100644 --- a/src/data/roadmaps/software-architect/content/less@qwpsGRFgzAYstM7bJA2ZJ.md +++ b/src/data/roadmaps/software-architect/content/less@qwpsGRFgzAYstM7bJA2ZJ.md @@ -5,4 +5,4 @@ Visit the following resources to learn more: - [@official@LeSS Framework](https://less.works/less/framework) -- [@video@Introductio to LeSS](https://www.youtube.com/watch?v=1BZf_Oa7W94) +- [@video@Introduction to LeSS](https://www.youtube.com/watch?v=1BZf_Oa7W94) diff --git a/src/data/roadmaps/software-architect/content/levels-of-architecture@2sR4KULvAUUoOtopvsEBs.md b/src/data/roadmaps/software-architect/content/levels-of-architecture@2sR4KULvAUUoOtopvsEBs.md index 52f97c43d..ba56b5894 100644 --- a/src/data/roadmaps/software-architect/content/levels-of-architecture@2sR4KULvAUUoOtopvsEBs.md +++ b/src/data/roadmaps/software-architect/content/levels-of-architecture@2sR4KULvAUUoOtopvsEBs.md @@ -5,3 +5,7 @@ Architecture can be done on several “levels” of abstractions. The level infl - **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. + +Visit the following resources to learn more: + +- [@article@Software Engineering Architecture](https://www.geeksforgeeks.org/software-engineering-architectural-design/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/linux--unix@XnvlRrOhdoMsiGwGEhBro.md b/src/data/roadmaps/software-architect/content/linux--unix@XnvlRrOhdoMsiGwGEhBro.md index 54431ee0c..162a45a95 100644 --- a/src/data/roadmaps/software-architect/content/linux--unix@XnvlRrOhdoMsiGwGEhBro.md +++ b/src/data/roadmaps/software-architect/content/linux--unix@XnvlRrOhdoMsiGwGEhBro.md @@ -4,8 +4,9 @@ Knowledge of UNIX is a must for almost all kind of development as most of the co Visit the following resources to learn more: +- [@roadmap@Visit Dedicated Linux Roadmap](https://roadmap.sh/linux) - [@video@Linux Operating System - Crash Course](https://www.youtube.com/watch?v=ROjZy1WbCIA) -- [@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) -- [@article@Unix / Linux Tutorial](https://www.tutorialspoint.com/unix/index.htm) +- [@course@Coursera - Unix Courses](https://www.coursera.org/courses?query=unix) - [@feed@Explore top posts about Linux](https://app.daily.dev/tags/linux?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/management@UyIwiIiKaa6LTQaqzbCam.md b/src/data/roadmaps/software-architect/content/management@UyIwiIiKaa6LTQaqzbCam.md index ec8049f7c..188d823e9 100644 --- a/src/data/roadmaps/software-architect/content/management@UyIwiIiKaa6LTQaqzbCam.md +++ b/src/data/roadmaps/software-architect/content/management@UyIwiIiKaa6LTQaqzbCam.md @@ -1 +1,7 @@ # 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. + +Visit the following resources to learn more: + +- [@article@Wikipedia](https://en.wikipedia.org/wiki/Management) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/marketing-skills@YW6j3Sg511dXToTcwSnOS.md b/src/data/roadmaps/software-architect/content/marketing-skills@YW6j3Sg511dXToTcwSnOS.md index e6a206ee5..9a5925fc1 100644 --- a/src/data/roadmaps/software-architect/content/marketing-skills@YW6j3Sg511dXToTcwSnOS.md +++ b/src/data/roadmaps/software-architect/content/marketing-skills@YW6j3Sg511dXToTcwSnOS.md @@ -1,10 +1,7 @@ # Marketing Skills -Your ideas are great and you have communicated them well but still nobody wants to follow? Then you probably lack 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. -- **Motivate and convince**: How do companies convince you of buying a product? They demonstrate its value and benefits. But not just with 5 bullet points. They wrap it nicely and make it as easy as possible to digest. - - Prototypes: Show a prototype of your idea. There are plenty of tools for creating prototypes. In the context of enterprises who love SAP check out build.me in which you can create nice looking and clickable UI5 apps fast and easy. - - Show a video: Instead of “boring slides” you can also show a video which demonstrates your idea or at least the direction. But please, don’t overdo marketing: In the long term, content is king. If your words do not come true, this will damage your reputation in the long term. -- **Fight for your ideas and be persistent**: People sometime do not like your ideas or they are just too lazy to follow them. If you are really convinced by your ideas, you should continuously go after them and “fight”. This is sometimes necessary. Architecture decisions with long term goals are often not the easiest one’s: Developers do not like them, as they are more complex to develop. Managers do not like them, as they are more expensive in the short term. This is your job to be persistent and to negotiate. -- **Find allies**: Establishing or enforcing your ideas on your own can be hard or even impossible. Try to find allies who can support and help convincing others. Use your network. If you do not have one yet, start building it now. You could start by talking to your (open-minded) peers about your ideas. If they like it, or at least parts of it, it is likely that they support your idea if asked by others (“The idea by X was interesting.”). If they don’t like it, ask for the why: Maybe you have missed something? Or your story is not convincing enough? Next step is to find allies with decision power. Ask for an open-minded discussion. If you fear the discussion, remember that sometimes you need to leave your comfort zone. -- **Repeat It, Believe It**: “[…] studies show that repeated exposure to an opinion makes people believe the opinion is more prevalent, even if the source of that opinion is only a single person.” (Source: The Financial Brand) If you publish few messages often enough, it can help to convince people more easily. But be aware: From my perspective such a strategy should be used wisely as it could backfire as a lousy marketing trick. +Visit the following resources to learn more: + +- [@article@Marketing Skills for Architects](https://openasset.com/blog/marketing-for-architects/) diff --git a/src/data/roadmaps/software-architect/content/microfrontends@vpko5Kyf6BZ5MHpxXOKaf.md b/src/data/roadmaps/software-architect/content/microfrontends@vpko5Kyf6BZ5MHpxXOKaf.md index 6fdcef84c..1c9981fdd 100644 --- a/src/data/roadmaps/software-architect/content/microfrontends@vpko5Kyf6BZ5MHpxXOKaf.md +++ b/src/data/roadmaps/software-architect/content/microfrontends@vpko5Kyf6BZ5MHpxXOKaf.md @@ -4,6 +4,6 @@ Microfrontends is an architectural style where independently deliverable fronten Visit the following resources to learn more: -- [@video@Micro-Frontends Course - Beginner to Expert](https://www.youtube.com/watch?v=lKKsjpH09dU) - [@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) diff --git a/src/data/roadmaps/software-architect/content/net-framework-based@D1IXOBUrrXf5bXhVu9cmI.md b/src/data/roadmaps/software-architect/content/net-framework-based@D1IXOBUrrXf5bXhVu9cmI.md index 632ea487e..ae312fb1e 100644 --- a/src/data/roadmaps/software-architect/content/net-framework-based@D1IXOBUrrXf5bXhVu9cmI.md +++ b/src/data/roadmaps/software-architect/content/net-framework-based@D1IXOBUrrXf5bXhVu9cmI.md @@ -6,10 +6,10 @@ Officially supported languages in .NET: C#, F#, Visual Basic. Visit the following resources to learn more: -- [@article@.NET Website](https://dotnet.microsoft.com/en-us/) -- [@article@What is .NET?](https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet) -- [@article@Why Choose .NET?](https://dotnet.microsoft.com/en-us/platform/why-choose-dotnet) -- [@article@C# Documentation](https://learn.microsoft.com/en-us/dotnet/csharp/?WT.mc_id=dotnet-35129-website) -- [@article@F# Documentation](https://learn.microsoft.com/en-us/dotnet/fsharp/?WT.mc_id=dotnet-35129-website) -- [@article@Visual Basic Documentation](https://learn.microsoft.com/en-us/dotnet/visual-basic/?WT.mc_id=dotnet-35129-website) +- [@official@.NET Website](https://dotnet.microsoft.com/en-us/) +- [@official@What is .NET?](https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet) +- [@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) diff --git a/src/data/roadmaps/software-architect/content/networks@cBWJ6Duw99tSKr7U6OW3A.md b/src/data/roadmaps/software-architect/content/networks@cBWJ6Duw99tSKr7U6OW3A.md index 1bb6593b2..edce99f15 100644 --- a/src/data/roadmaps/software-architect/content/networks@cBWJ6Duw99tSKr7U6OW3A.md +++ b/src/data/roadmaps/software-architect/content/networks@cBWJ6Duw99tSKr7U6OW3A.md @@ -1 +1,9 @@ # Networks + +A computer network is a set of computers sharing resources located on or provided by network nodes. Computers use common communication protocols over digital interconnections to communicate with each other. These interconnections are made up of telecommunication network technologies based on physically wired, optical, and wireless radio-frequency methods that may be arranged in a variety of network topologies. + +Visit the following resources to learn more: + +- [@article@Networking - IBM](https://www.ibm.com/topics/networking) +- [@article@Networking - Wikipedia](https://en.wikipedia.org/wiki/Networking) +- [@article@Networking Basics](https://www.cisco.com/c/en/us/solutions/small-business/resource-center/networking/networking-basics.html) diff --git a/src/data/roadmaps/software-architect/content/nosql-databases@57liQPaPyVpE-mdLnsbi0.md b/src/data/roadmaps/software-architect/content/nosql-databases@57liQPaPyVpE-mdLnsbi0.md index d73634d8a..3e3419501 100644 --- a/src/data/roadmaps/software-architect/content/nosql-databases@57liQPaPyVpE-mdLnsbi0.md +++ b/src/data/roadmaps/software-architect/content/nosql-databases@57liQPaPyVpE-mdLnsbi0.md @@ -11,5 +11,6 @@ Types of NoSQL databases Visit the following resources to learn more: -- [@article@NoSQL Databases](https://www.mongodb.com/nosql-explained) +- [@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) diff --git a/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md b/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md index ddbf7cc96..bbe8efb60 100644 --- a/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md +++ b/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md @@ -4,7 +4,8 @@ Object-oriented programming (OOP) is a computer programming model that organizes Visit the following resources to learn more: -- [@article@Basic concepts of object-oriented programming](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_programming) -- [@article@w3schools - OOP Concepts](https://www.w3schools.com/java/java_oop.asp) +- [@article@OOP - Wikipedia](https://en.wikipedia.org/wiki/Object-oriented_programming) +- [@article@Basic Concepts of Object-Oriented Programming](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_programming) +- [@article@W3schools - OOP Concepts](https://www.w3schools.com/java/java_oop.asp) - [@video@FreeCodeCamp - (OOP) in C++](https://www.youtube.com/watch?v=wN0x9eZLix4) - [@video@FreeCodeCamp - (OPP) in Python](https://www.youtube.com/watch?v=Ej_02ICOIgs) diff --git a/src/data/roadmaps/software-architect/content/operations-knowledge@EdJhuNhMSWjeVxGW-RZtL.md b/src/data/roadmaps/software-architect/content/operations-knowledge@EdJhuNhMSWjeVxGW-RZtL.md index 236d17d85..0be8cad5b 100644 --- a/src/data/roadmaps/software-architect/content/operations-knowledge@EdJhuNhMSWjeVxGW-RZtL.md +++ b/src/data/roadmaps/software-architect/content/operations-knowledge@EdJhuNhMSWjeVxGW-RZtL.md @@ -1 +1,3 @@ -# Operations knowledge +# Operations Knowledge + +Operational knowledge refers to the understanding and insights that software architects need to effectively design, implement, and manage software systems throughout their lifecycle. This knowledge encompasses various aspects of software development, deployment, and maintenance, and it is crucial for ensuring that systems operate efficiently, reliably, and securely. diff --git a/src/data/roadmaps/software-architect/content/owasp@KhqUK-7jdClu9M2Pq7x--.md b/src/data/roadmaps/software-architect/content/owasp@KhqUK-7jdClu9M2Pq7x--.md index 3438c93ee..4c3424bef 100644 --- a/src/data/roadmaps/software-architect/content/owasp@KhqUK-7jdClu9M2Pq7x--.md +++ b/src/data/roadmaps/software-architect/content/owasp@KhqUK-7jdClu9M2Pq7x--.md @@ -4,7 +4,7 @@ OWASP or Open Web Application Security Project is an online community that produ Visit the following resources to learn more: -- [@article@Wikipedia - OWASP](https://en.wikipedia.org/wiki/OWASP) - [@opensource@OWASP Web Application Security Testing Checklist](https://github.com/0xRadi/OWASP-Web-Checklist) +- [@article@Wikipedia - OWASP](https://en.wikipedia.org/wiki/OWASP) - [@article@OWASP Top 10 Security Risks](https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2021/) - [@article@OWASP Cheatsheets](https://cheatsheetseries.owasp.org/cheatsheets/AJAX_Security_Cheat_Sheet.html) diff --git a/src/data/roadmaps/software-architect/content/pki@OpL2EqvHbUmFgnpuhtZPr.md b/src/data/roadmaps/software-architect/content/pki@OpL2EqvHbUmFgnpuhtZPr.md index 5f110cb9e..8c3da7d19 100644 --- a/src/data/roadmaps/software-architect/content/pki@OpL2EqvHbUmFgnpuhtZPr.md +++ b/src/data/roadmaps/software-architect/content/pki@OpL2EqvHbUmFgnpuhtZPr.md @@ -2,27 +2,7 @@ A public key infrastructure (PKI) is a set of roles, policies, hardware, software, and procedures to create, manage, distribute, use, store and revoke digital certificates and public-key encryption. The purpose of a PKI is to facilitate the secure electronic transfer of information for a range of network activities such as e-commerce, internet banking, and confidential email. It is required for activities where simple passwords are an inadequate authentication method, and the more rigorous proof is required to confirm the identity of the parties involved in the communication and to validate the information being transferred. -### Components of PKI +Visit the following resources to learn more: -- **Digital certificates:** digital "identities" issued by trusted third parties, that identify users and machines. They may be securely stored in wallets or in directories. -- **Public and private keys:** form the basis of a PKI for secure communications, based on a secret private key and a mathematically related public key -- **Secure sockets layer (SSL):** An Internet-standard secure protocol -- **Certificate Authority (CA):** acts as a trusted, independent provider of digital certificates - -### What is PKI used for? - -- Providing a recovery key for an encrypted hard drive -- Securing internal communications with database servers -- Signing documents -- Securing local networks: PKI capacities are built into Microsoft's Active Directory, for instance, and can work with physical keycards that store digital certificates to ensure that users are who they say they are. -- Secure messaging: the Signal protocol uses PKI, for instance -- Email Encryption -- Securing access to internet of things (IoT) devices - -### Advantages of the PKI Approach - -- PKI is a standards-based technology. -- It allows the choice of trust provider. -- It is highly scalable. Users maintain their own certificates, and certificate authentication only involves the data exchange between the client and server. This means that no third-party authentication server needs to be online. There is, thus, no limit to the number of users who can be supported using PKI. -- PKI allows delegated trust. A user who has obtained a certificate from a recognized and trusted certificate authority can authenticate himself to a server the first time he connects to that server without having previously been registered with the system. -- Although PKI is not notably a single sign-on service, it can be implemented in such a way as to enable single sign-on. +- [@article@PKI - Wikipedia](https://en.wikipedia.org/wiki/Public_key_infrastructure) +- [@article@PKI - DoD Cyber Exchange](https://public.cyber.mil/pki-pke/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/pmi@hRug9yJKYacB9X_2cUalR.md b/src/data/roadmaps/software-architect/content/pmi@hRug9yJKYacB9X_2cUalR.md index 8bc31a89e..72d8cd6db 100644 --- a/src/data/roadmaps/software-architect/content/pmi@hRug9yJKYacB9X_2cUalR.md +++ b/src/data/roadmaps/software-architect/content/pmi@hRug9yJKYacB9X_2cUalR.md @@ -4,4 +4,4 @@ The PMI certification (Project Management Institute) is an internationally recog Visit the following resources to learn more: -- [@official@Project Managment Institute](https://www.pmi.org/) +- [@official@Project Management Institute](https://www.pmi.org/) diff --git a/src/data/roadmaps/software-architect/content/prince2@SJ5lrlvyXgtAwOx4wvT2W.md b/src/data/roadmaps/software-architect/content/prince2@SJ5lrlvyXgtAwOx4wvT2W.md index e69de29bb..d346813c8 100644 --- a/src/data/roadmaps/software-architect/content/prince2@SJ5lrlvyXgtAwOx4wvT2W.md +++ b/src/data/roadmaps/software-architect/content/prince2@SJ5lrlvyXgtAwOx4wvT2W.md @@ -0,0 +1,8 @@ +# Prince2 + +Prince2 is a structured project management method and practitioner certification programme. Prince2 emphasizes dividing projects into manageable and controllable stages. It is adopted in many countries worldwide, including the UK, Western European countries, and Australia. + +Visit the following resources to learn more: + +- [@official@Prince2 Certification](https://www.axelos.com/certifications/propath/prince2-project-management) +- [@course@Prince2 Project Management Course](https://www.simplilearn.com/project-management/prince2-foundation-and-practitioner-certification-training) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/programming-languages@uoDtVFThaV6OMK2wXGfP5.md b/src/data/roadmaps/software-architect/content/programming-languages@uoDtVFThaV6OMK2wXGfP5.md index 54c353aeb..4cb1a48d2 100644 --- a/src/data/roadmaps/software-architect/content/programming-languages@uoDtVFThaV6OMK2wXGfP5.md +++ b/src/data/roadmaps/software-architect/content/programming-languages@uoDtVFThaV6OMK2wXGfP5.md @@ -1 +1,7 @@ -# Programming languages +# Programming Languages + +A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their syntax and semantics, usually defined by a formal language. Languages usually provide features such as a type system, variables, and mechanisms for error handling. + +Visit the following resources to learn more: + +- [@article@Programming Language](https://en.wikipedia.org/wiki/Programming_language) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/proxies@6_EOmU5GYGDGzmNoLY8cB.md b/src/data/roadmaps/software-architect/content/proxies@6_EOmU5GYGDGzmNoLY8cB.md index 7414bba67..1b444a8e3 100644 --- a/src/data/roadmaps/software-architect/content/proxies@6_EOmU5GYGDGzmNoLY8cB.md +++ b/src/data/roadmaps/software-architect/content/proxies@6_EOmU5GYGDGzmNoLY8cB.md @@ -1,3 +1,7 @@ # 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. + +Visit the following resources to learn more: + +- [@article@Proxy Server](https://en.wikipedia.org/wiki/Proxy_server) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/react-vue-angular@mCiYCbKIOVU34qil_q7Hg.md b/src/data/roadmaps/software-architect/content/react-vue-angular@mCiYCbKIOVU34qil_q7Hg.md index 5ecb07ae5..ced66c255 100644 --- a/src/data/roadmaps/software-architect/content/react-vue-angular@mCiYCbKIOVU34qil_q7Hg.md +++ b/src/data/roadmaps/software-architect/content/react-vue-angular@mCiYCbKIOVU34qil_q7Hg.md @@ -2,17 +2,19 @@ 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. + Visit the following resources to learn more: - [@roadmap@Visit Dedicated React Roadmap](https://roadmap.sh/react) -- [@article@React Website](https://react.dev/) -- [@article@Official Getting Started](https://react.dev/learn/tutorial-tic-tac-toe) +- [@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@React Course - Beginners Tutorial for React JavaScript Library \[2022\]](https://www.youtube.com/watch?v=bMknfKXIFA8) -- [@video@Understanding Reacts UI Rendering Process](https://www.youtube.com/watch?v=i793Qm6kv3U) -- [@article@Vue.js Website](https://vuejs.org/) -- [@article@Official Getting Started](https://vuejs.org/v2/guide/) - [@video@Vue.js Course for Beginners](https://www.youtube.com/watch?v=FXpIoQ_rT_c) -- [@video@Vue.js Crash Course](https://www.youtube.com/watch?v=qZXt1Aom3Cs) -- [@official@Official - Getting started with Angular](https://angular.io/start) +- [@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) diff --git a/src/data/roadmaps/software-architect/content/responsibilities@rUxbG2S2nJuA1YVY6sjiX.md b/src/data/roadmaps/software-architect/content/responsibilities@rUxbG2S2nJuA1YVY6sjiX.md index 0afa49ffa..5a100496a 100644 --- a/src/data/roadmaps/software-architect/content/responsibilities@rUxbG2S2nJuA1YVY6sjiX.md +++ b/src/data/roadmaps/software-architect/content/responsibilities@rUxbG2S2nJuA1YVY6sjiX.md @@ -14,4 +14,6 @@ To understand the necessary skills an architect needs, we first need to understa - Play a key part in reviewing code - Detail out and refine higher level design into lower level design -_Note: Architecture is a continuous activity, especially when it is applied in agile software development. Therefore, these activities are done over and over again._ +Visit the following resources to learn more: + +- [@article@Software Architect](https://en.wikipedia.org/wiki/Software_architect) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/ruby@U_Hmzfjjs1jVtu2CZ0TlG.md b/src/data/roadmaps/software-architect/content/ruby@U_Hmzfjjs1jVtu2CZ0TlG.md index 97ca74ff8..35d06b87c 100644 --- a/src/data/roadmaps/software-architect/content/ruby@U_Hmzfjjs1jVtu2CZ0TlG.md +++ b/src/data/roadmaps/software-architect/content/ruby@U_Hmzfjjs1jVtu2CZ0TlG.md @@ -4,6 +4,6 @@ Ruby is a high-level, interpreted programming language that blends Perl, Smallta Visit the following resources to learn more: -- [@article@Ruby Website](https://www.ruby-lang.org/en/) -- [@article@Learn Ruby in 20 minutes](https://www.ruby-lang.org/en/documentation/quickstart/) +- [@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) diff --git a/src/data/roadmaps/software-architect/content/rup@7rudOREGG-TTkCosU0hNw.md b/src/data/roadmaps/software-architect/content/rup@7rudOREGG-TTkCosU0hNw.md index ea1e41a1d..ca63f533e 100644 --- a/src/data/roadmaps/software-architect/content/rup@7rudOREGG-TTkCosU0hNw.md +++ b/src/data/roadmaps/software-architect/content/rup@7rudOREGG-TTkCosU0hNw.md @@ -4,4 +4,4 @@ The RUP (**Rational Unified Process**) is not a widely recognized certification Visit the following resources to learn more: -- [@official@IBM certified solution designer RUP](https://www.ibm.com/training/certification/ibm-certified-solution-designer-ibm-rational-unified-process-v70-38008003) +- [@official@IBM Certified Solution Designer RUP](https://www.ibm.com/training/certification/ibm-certified-solution-designer-ibm-rational-unified-process-v70-38008003) diff --git a/src/data/roadmaps/software-architect/content/sap-erp-hana-business-objects@TxWAznp1tUtZ1MvThf9M1.md b/src/data/roadmaps/software-architect/content/sap-erp-hana-business-objects@TxWAznp1tUtZ1MvThf9M1.md index 647d2df2e..ea0eb59ee 100644 --- a/src/data/roadmaps/software-architect/content/sap-erp-hana-business-objects@TxWAznp1tUtZ1MvThf9M1.md +++ b/src/data/roadmaps/software-architect/content/sap-erp-hana-business-objects@TxWAznp1tUtZ1MvThf9M1.md @@ -1 +1,7 @@ # 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. + +Visit the following resources to learn more: + +- [@official@SAP](https://www.sap.com/) diff --git a/src/data/roadmaps/software-architect/content/scrum@PKqwKvoffm0unwcFwpojk.md b/src/data/roadmaps/software-architect/content/scrum@PKqwKvoffm0unwcFwpojk.md index 229ec394c..fe8b510ea 100644 --- a/src/data/roadmaps/software-architect/content/scrum@PKqwKvoffm0unwcFwpojk.md +++ b/src/data/roadmaps/software-architect/content/scrum@PKqwKvoffm0unwcFwpojk.md @@ -13,7 +13,7 @@ Key elements of Scrum: Visit the following resources to learn more: -- [@article@What is scrum and how to get started](https://www.atlassian.com/agile/scrum.) +- [@article@What is Scrum and How to Get Started](https://www.atlassian.com/agile/scrum.) - [@article@Scrum Methodology: The Complete Guide & Best Practices](https://thedigitalprojectmanager.com/projects/pm-methodology/scrum-methodology-complete-guide/) - [@article@Essential Topics for the Scrum Product Owner](https://www.scrum.org/resources/blog/essential-topics-scrum-product-owner) - [@article@Scrum • Topics - Thriving Technologist](https://thrivingtechnologist.com/topics/scrum/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/security@IzFTn5-tQuF_Z0cG_w6CW.md b/src/data/roadmaps/software-architect/content/security@IzFTn5-tQuF_Z0cG_w6CW.md index 8dbb2f9bc..14314c693 100644 --- a/src/data/roadmaps/software-architect/content/security@IzFTn5-tQuF_Z0cG_w6CW.md +++ b/src/data/roadmaps/software-architect/content/security@IzFTn5-tQuF_Z0cG_w6CW.md @@ -1 +1,8 @@ # Security + +Security is a broad field that encompasses various measures and practices designed to protect information, systems, and networks from unauthorized access, damage, or theft. It is essential in safeguarding sensitive data and maintaining the integrity and availability of resources. + +Visit the following resources to learn more: + +- [@article@Security - Wikipedia](https://en.wikipedia.org/wiki/Security) +- [@article@Architect Security](https://aws.amazon.com/blogs/architecture/lets-architect-security-in-software-architectures/) diff --git a/src/data/roadmaps/software-architect/content/serverless-concepts@WoXoVwkSqXTP5U8HtyJOL.md b/src/data/roadmaps/software-architect/content/serverless-concepts@WoXoVwkSqXTP5U8HtyJOL.md index ca65958bb..f39466f99 100644 --- a/src/data/roadmaps/software-architect/content/serverless-concepts@WoXoVwkSqXTP5U8HtyJOL.md +++ b/src/data/roadmaps/software-architect/content/serverless-concepts@WoXoVwkSqXTP5U8HtyJOL.md @@ -1,12 +1,10 @@ # Serverless Concepts -Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers. - -There are still servers in serverless, but they are abstracted away from app development. A cloud provider handles the routine work of provisioning, maintaining, and scaling the server infrastructure. Developers can simply package their code in containers for deployment. +Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers. There are still servers in serverless, but they are abstracted away from app development. A cloud provider handles the routine work of provisioning, maintaining, and scaling the server infrastructure. Developers can simply package their code in containers for deployment. Visit the following resources to learn more: -- [@article@What is serverless?](https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless) -- [@article@What is serverless computing?](https://www.cloudflare.com/learning/serverless/what-is-serverless/) +- [@article@What is Serverless?](https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless) +- [@article@What is Serverless Computing?](https://www.cloudflare.com/learning/serverless/what-is-serverless/) - [@article@Serverless on AWS](https://aws.amazon.com/serverless/) - [@feed@Explore top posts about Serverless](https://app.daily.dev/tags/serverless?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/simplifying-things@lrtgF1RTaS4TCKww0aY6C.md b/src/data/roadmaps/software-architect/content/simplifying-things@lrtgF1RTaS4TCKww0aY6C.md index ab64863b1..17f804e37 100644 --- a/src/data/roadmaps/software-architect/content/simplifying-things@lrtgF1RTaS4TCKww0aY6C.md +++ b/src/data/roadmaps/software-architect/content/simplifying-things@lrtgF1RTaS4TCKww0aY6C.md @@ -1,8 +1,7 @@ # Simplifying Things -Keep in mind the problem-solving principle Occam’s Razor which states to prefer simplicity. I interpret the principle as following: If you have too many assumptions about the problem to solve your solution will probably be wrong or lead to an unnecessary complex solution. Assumptions should be reduced (simplified) to come to a good solution. +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. -- **Shake the solution**: To get solutions simplified, it often helps to “shake” the solution and look at them from different positions. Try to shape the solution by thinking top-down and again bottom-up. If you have a data flow or process, then first think left to right and again right to left. Ask questions such as: “What happens to your solution in a perfect world?” Or: “What would company / person X do?” (Where X is probably not your competitor, but one of the GAFA (Google, Apple, Facebook, & Amazon) companies.) Both questions force you to reduce assumptions as suggested by Occam’s Razor. -- **Take a step back**: After intense and long discussions, highly complex scribbles are often the results. You should never ever see these as the final results. Take a step back: Have a look at the big picture again (abstract level). Does it still make sense? Then go through it on the abstract level again and refactor. Sometimes it helps to stop a discussion and continue the next day. At least my brain needs some time to process and to come up with better, more elegant and simpler solutions. -- **Divide and Conquer**: Simplify the problem by dividing it into smaller pieces. Then solve them independently. Afterwards validate if the small pieces match together. Take the step back to have a look at the overall picture for this. -- **Refactoring is not evil**: It is totally ok to start with a more complex solution if no better idea can be found. If the solution is making troubles you can later rethink the solution and apply your learning. Refactoring is not evil. But before you start refactoring, keep in mind to have (1) enough automated tests in place which can ensure the proper functionality of the system and (2) the buy-in from your stakeholders. To learn more about refactoring I suggest reading “Refactoring. Improving the Design of Existing Code” by Martin Fowler. +Visit the following resources to learn more: + +- [@article@Simplifying Things](https://www.infoq.com/articles/driving-architectural-simplicity/) diff --git a/src/data/roadmaps/software-architect/content/slack@CYnUg_okOcRrD7fSllxLW.md b/src/data/roadmaps/software-architect/content/slack@CYnUg_okOcRrD7fSllxLW.md index e73f787e9..e2c89de30 100644 --- a/src/data/roadmaps/software-architect/content/slack@CYnUg_okOcRrD7fSllxLW.md +++ b/src/data/roadmaps/software-architect/content/slack@CYnUg_okOcRrD7fSllxLW.md @@ -5,6 +5,6 @@ Slack is a messaging app for business that connects people to the information th Visit the following resources to learn more: - [@official@Slack](https://slack.com) +- [@official@Getting Started with Slack](https://slack.com/intl/en-in/help/categories/360000049043) - [@video@What is Slack?](https://www.youtube.com/watch?v=q19RtuCHt1Q) -- [@official@Getting Started](https://slack.com/intl/en-in/help/categories/360000049043) - [@feed@Explore top posts about Slack](https://app.daily.dev/tags/slack?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/solution-architecture@uGs-9xE3DMJxKhenltbFK.md b/src/data/roadmaps/software-architect/content/solution-architecture@uGs-9xE3DMJxKhenltbFK.md index 4fcd243e0..458a3eb4d 100644 --- a/src/data/roadmaps/software-architect/content/solution-architecture@uGs-9xE3DMJxKhenltbFK.md +++ b/src/data/roadmaps/software-architect/content/solution-architecture@uGs-9xE3DMJxKhenltbFK.md @@ -1,3 +1,7 @@ # 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. + +Visit the following resources to learn more: + +- [@article@Solution Architecture](https://www.leanix.net/en/wiki/it-architecture/solution-architecture) diff --git a/src/data/roadmaps/software-architect/content/spa-ssr-ssg@ulwgDCQi_BYx5lmll7pzU.md b/src/data/roadmaps/software-architect/content/spa-ssr-ssg@ulwgDCQi_BYx5lmll7pzU.md index b18728268..9ea4994c7 100644 --- a/src/data/roadmaps/software-architect/content/spa-ssr-ssg@ulwgDCQi_BYx5lmll7pzU.md +++ b/src/data/roadmaps/software-architect/content/spa-ssr-ssg@ulwgDCQi_BYx5lmll7pzU.md @@ -6,6 +6,6 @@ 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@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) diff --git a/src/data/roadmaps/software-architect/content/sql-databases@n5AcBt_u8qtTe3PP9svPZ.md b/src/data/roadmaps/software-architect/content/sql-databases@n5AcBt_u8qtTe3PP9svPZ.md index 03d96ecc5..8fa8d3ebf 100644 --- a/src/data/roadmaps/software-architect/content/sql-databases@n5AcBt_u8qtTe3PP9svPZ.md +++ b/src/data/roadmaps/software-architect/content/sql-databases@n5AcBt_u8qtTe3PP9svPZ.md @@ -1,13 +1,10 @@ # Sql databases -SQL stands for Structured Query Language. It's used for relational databases. A SQL database is a collection of tables that stores a specific set of structured data. - -Examples of SQL Databases - -- MariaDB and MySQL -- PostgreSQL +SQL stands for Structured Query Language. It's used for relational databases. A SQL database is a collection of tables that stores a specific set of structured data. Examples of SQL Databases includes MariaDB, MySQL and PostgreSQL. Visit the following resources to learn more: +- [@roadmap@Visit Dedicated SQL Roadmap](https://roadmap.sh/sql) +- [@article@What is SQL? - AWS](https://aws.amazon.com/what-is/sql/) - [@article@SQL Databases](https://www.openlogic.com/blog/what-sql-database) - [@feed@Explore top posts about SQL](https://app.daily.dev/tags/sql?ref=roadmapsh) diff --git a/src/data/roadmaps/software-architect/content/togaf@5TDTU22Fla2mRr6JeOcaY.md b/src/data/roadmaps/software-architect/content/togaf@5TDTU22Fla2mRr6JeOcaY.md index d31f86ecc..1a001cebc 100644 --- a/src/data/roadmaps/software-architect/content/togaf@5TDTU22Fla2mRr6JeOcaY.md +++ b/src/data/roadmaps/software-architect/content/togaf@5TDTU22Fla2mRr6JeOcaY.md @@ -4,5 +4,5 @@ The TOGAF content framework provides a detailed model of architectural work prod Visit the following resources to learn more: -- [@article@Official Website](https://www.opengroup.org/togaf) +- [@official@Togaf](https://www.opengroup.org/togaf) - [@article@Wikipedia](https://en.wikipedia.org/wiki/The_Open_Group_Architecture_Framework) diff --git a/src/data/roadmaps/software-architect/content/tools@SuMhTyaBS9vwASxAt39DH.md b/src/data/roadmaps/software-architect/content/tools@SuMhTyaBS9vwASxAt39DH.md index 9e2440444..d6b0fb073 100644 --- a/src/data/roadmaps/software-architect/content/tools@SuMhTyaBS9vwASxAt39DH.md +++ b/src/data/roadmaps/software-architect/content/tools@SuMhTyaBS9vwASxAt39DH.md @@ -1 +1,7 @@ -# Architect tools +# Architect Tools + +Architect tools are software tools that help architects to design, document, and manage software architectures. These tools can be used to create architecture diagrams, generate code, and automate the software development process. + +Visit the following resources to learn more: + +- [@article@Top 10 Software Architecture Tools in 2024](https://www.geeksforgeeks.org/software-architecture-tools/) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/trello@a6joS9WXg-rbw29_KfBd9.md b/src/data/roadmaps/software-architect/content/trello@a6joS9WXg-rbw29_KfBd9.md index 93ec94701..be87929ae 100644 --- a/src/data/roadmaps/software-architect/content/trello@a6joS9WXg-rbw29_KfBd9.md +++ b/src/data/roadmaps/software-architect/content/trello@a6joS9WXg-rbw29_KfBd9.md @@ -5,5 +5,5 @@ Trello is the visual tool that empowers your team to manage any type of project, Visit the following resources to learn more: - [@official@Trello](https://trello.com) -- [@video@A Tour Of Trello](https://www.youtube.com/watch?v=AyfupeWS0yY) - [@official@Trello Guide](https://trello.com/guide) +- [@video@A Tour Of Trello](https://www.youtube.com/watch?v=AyfupeWS0yY) diff --git a/src/data/roadmaps/software-architect/content/uml@8FTKnAKNL9LnZBrw9YXqK.md b/src/data/roadmaps/software-architect/content/uml@8FTKnAKNL9LnZBrw9YXqK.md index 59d39f26a..6ba82aa6d 100644 --- a/src/data/roadmaps/software-architect/content/uml@8FTKnAKNL9LnZBrw9YXqK.md +++ b/src/data/roadmaps/software-architect/content/uml@8FTKnAKNL9LnZBrw9YXqK.md @@ -5,6 +5,6 @@ The Unified Modeling Language, or UML, is a modeling language that is intended t Visit the following resources to learn more: - [@official@UML Website](https://www.uml.org) +- [@article@UML Pattern - IBM](https://www.ibm.com/docs/en/rational-soft-arch/9.6.1?topic=files-uml-pattern-frameworks) - [@article@The Unified Modeling Language Reference Manual (Second Edition)](https://personal.utdallas.edu/~chung/Fujitsu/UML_2.0/Rumbaugh--UML_2.0_Reference_CD.pdf) -- [@article@IBM Docs](https://www.ibm.com/docs/en/rational-soft-arch/9.6.1?topic=files-uml-pattern-frameworks) - [@article@Wikipedia](https://en.wikipedia.org/wiki/Unified_Modeling_Language) diff --git a/src/data/roadmaps/software-architect/content/w3c-and-whatwg@s0RvufK2PLMXtlsn2KAUN.md b/src/data/roadmaps/software-architect/content/w3c-and-whatwg@s0RvufK2PLMXtlsn2KAUN.md index fa31ec419..7f4f08e77 100644 --- a/src/data/roadmaps/software-architect/content/w3c-and-whatwg@s0RvufK2PLMXtlsn2KAUN.md +++ b/src/data/roadmaps/software-architect/content/w3c-and-whatwg@s0RvufK2PLMXtlsn2KAUN.md @@ -6,5 +6,5 @@ Web Hypertext Application Technology Working Group (WHATWG) is another set of we Visit the following resources to learn more: -- [@article@W3C Standards](https://www.w3.org/standards/) -- [@article@WHATWG Standards](https://spec.whatwg.org/) +- [@official@W3C Standards](https://www.w3.org/standards/) +- [@official@WHATWG Standards](https://spec.whatwg.org/) diff --git a/src/data/roadmaps/software-architect/content/web-mobile@j9Y2YbBKi3clO_sZ2L_hQ.md b/src/data/roadmaps/software-architect/content/web-mobile@j9Y2YbBKi3clO_sZ2L_hQ.md index c8f9a0d06..36c8b911e 100644 --- a/src/data/roadmaps/software-architect/content/web-mobile@j9Y2YbBKi3clO_sZ2L_hQ.md +++ b/src/data/roadmaps/software-architect/content/web-mobile@j9Y2YbBKi3clO_sZ2L_hQ.md @@ -1 +1,7 @@ -# Web and mobile +# 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. + +Visit the following resources to learn more: + +- [@article@Web vs Mobile](https://buildfire.com/difference-between-web-app-and-mobile-app/) diff --git a/src/data/roadmaps/software-architect/content/working-with-data@YCJYRA3b-YSm8vKmGUFk5.md b/src/data/roadmaps/software-architect/content/working-with-data@YCJYRA3b-YSm8vKmGUFk5.md index 14df64160..3b8badbbd 100644 --- a/src/data/roadmaps/software-architect/content/working-with-data@YCJYRA3b-YSm8vKmGUFk5.md +++ b/src/data/roadmaps/software-architect/content/working-with-data@YCJYRA3b-YSm8vKmGUFk5.md @@ -1 +1,7 @@ -# Working with data +# 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. + +Visit the following resources to learn more: + +- [@article@Introduction to Databases](https://www.digitalocean.com/community/conceptual-articles/an-introduction-to-databases) \ No newline at end of file