diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c7973801b..825ffb15a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,7 +17,7 @@ jobs: persist-credentials: false - uses: actions/setup-node@v1 with: - node-version: 14 + node-version: 16 - name: Setup Environment run: | npm install diff --git a/components/custom-ad.tsx b/components/custom-ad.tsx index 09c756d8f..939e5517d 100644 --- a/components/custom-ad.tsx +++ b/components/custom-ad.tsx @@ -1,37 +1,68 @@ +import { Box, Flex, Heading, Image, Link } from '@chakra-ui/react'; +import { event } from '../lib/gtag'; + +function getPageSlug() { + const pathname = (typeof window !== 'undefined' ? window : {} as any)?.location?.pathname || ''; + + return pathname?.replace(/\//g, ''); +} + export const CustomAd = () => { + const slug = getPageSlug(); + if (slug !== 'devops') { + return null; + } + return ( -
- - - - Custom Logo - - - He Went from ZERO TO $74,000 as a Full Time Developer in 7 Weeks - - - { + event({ + category: 'SponsorClick', + action: `TNS EBook Redirect`, + label: `Clicked TNS EBook Link` + }); + }} + > + Custom Logo + + + Free DevOps eBook + + Learn all about doing DevOps the Cloud Native way with this free ebook from our partner, The New Stack + + + - Sponsored by - - -
+ Partner Content + + + ); }; diff --git a/components/footer.tsx b/components/footer.tsx index 83bb54aa5..25116f732 100644 --- a/components/footer.tsx +++ b/components/footer.tsx @@ -1,6 +1,7 @@ import { Box, Container, Flex, Image, Link, Stack, Text } from '@chakra-ui/react'; import siteConfig from '../content/site.json'; import { CustomAd } from './custom-ad'; +import React from 'react'; function NavigationLinks() { return ( @@ -62,6 +63,8 @@ export function Footer() { + + ); } diff --git a/components/home/featured-roadmaps-list.tsx b/components/home/featured-roadmaps-list.tsx index c26119bdc..c770a067a 100644 --- a/components/home/featured-roadmaps-list.tsx +++ b/components/home/featured-roadmaps-list.tsx @@ -8,12 +8,6 @@ type FeaturedRoadmapsListProps = { }; export const upcomingRoadmaps = [ - { - type: 'Role Based', - title: 'Software Architect', - description: 'Roadmap to become a modern Software Architect', - id: 'software-architect' - }, { type: 'Role Based', title: 'React Native', diff --git a/components/roadmap/home-roadmap-item.tsx b/components/roadmap/home-roadmap-item.tsx index 62dcd6d01..e5cd0939d 100644 --- a/components/roadmap/home-roadmap-item.tsx +++ b/components/roadmap/home-roadmap-item.tsx @@ -38,6 +38,7 @@ export function HomeRoadmapItem(props: RoadmapGridItemProps) { return ( {title} - { isNew && New } + { isNew && New } {subtitle} diff --git a/content/pages/pdfs.md b/content/pages/pdfs.md index 825792e43..0465c5c27 100644 --- a/content/pages/pdfs.md +++ b/content/pages/pdfs.md @@ -9,6 +9,7 @@ Here is the list of PDF links for each of the roadmaps. * **Backend Roadmap** - [Roadmap Link](https://roadmap.sh/backend) / [PDF Link](https://roadmap.sh/pdfs/backend.pdf) * **DevOps Roadmap** - [Roadmap Link](https://roadmap.sh/devops) / [PDF Link](https://roadmap.sh/pdfs/devops.pdf) * **QA Roadmap** - [Roadmap Link](https://roadmap.sh/qa) / [PDF Link](https://roadmap.sh/pdfs/qa.pdf) +* **Software Architect Roadmap** - [Roadmap Link](https://roadmap.sh/software-architect) / [PDF Link](https://roadmap.sh/pdfs/software-architect.pdf) * **JavaScript Roadmap** - [Roadmap Link](https://roadmap.sh/javascript) / [PDF Link](https://roadmap.sh/pdfs/javascript.pdf) * **Node.js Roadmap** - [Roadmap Link](https://roadmap.sh/nodejs) / [PDF Link](https://roadmap.sh/pdfs/nodejs.pdf) * **Angular Roadmap** - [Roadmap Link](https://roadmap.sh/angular) / [PDF Link](https://roadmap.sh/pdfs/angular.pdf) diff --git a/content/roadmaps.json b/content/roadmaps.json index 16c779f56..8c546abff 100644 --- a/content/roadmaps.json +++ b/content/roadmaps.json @@ -903,5 +903,55 @@ "id": "qa", "metaPath": "/roadmaps/113-qa/meta.json", "isUpcoming": false + }, + { + "seo": { + "title": "Software Architect Roadmap: Learn to become a modern Software Architect", + "description": "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.", + "keywords": [ + "solution architect roadmap", + "enterprise architect roadmap", + "guide to becoming a software architect", + "guide to becoming a Software Architect", + "software architect roadmap", + "db administrator roadmap", + "software architect roadmap", + "software architect skills", + "db administrator skills", + "become software architect", + "modern software architect skills", + "software architect skills test", + "skills for software architect", + "skills for software architect", + "learn software architect", + "what is software architect", + "software architect quiz", + "software architect interview questions" + ] + }, + "title": "Software Architect", + "description": "Step by step guide to becoming a Software Architect in 2022", + "featuredTitle": "Software Architect", + "isNew": true, + "type": "role", + "jsonUrl": "/project/software-architect.json", + "featuredDescription": "Step by step guide to become a Software Architect in 2022", + "isCommunity": false, + "featured": true, + "detailed": false, + "versions": [], + "relatedRoadmaps": [ + "backend", + "python", + "python", + "nodejs", + "golang", + "java", + "devops" + ], + "contentPathsFilePath": "/roadmaps/114-software-architect/content-paths.json", + "id": "software-architect", + "metaPath": "/roadmaps/114-software-architect/meta.json", + "isUpcoming": false } ] \ No newline at end of file diff --git a/content/roadmaps/101-backend/content/101-basic-frontend/102-javascript.md b/content/roadmaps/101-backend/content/101-basic-frontend/102-javascript.md index e255c38b5..58d071d68 100644 --- a/content/roadmaps/101-backend/content/101-basic-frontend/102-javascript.md +++ b/content/roadmaps/101-backend/content/101-basic-frontend/102-javascript.md @@ -1,3 +1,9 @@ + + # JavaScript JavaScript allows you to add interactivity to your pages. Common examples that you may have seen on the websites are sliders, click interactions, popups and so on. diff --git a/content/roadmaps/101-backend/content/118-containerization/101-rkt.md b/content/roadmaps/101-backend/content/118-containerization/101-rkt.md index 916fd70a9..35739b328 100644 --- a/content/roadmaps/101-backend/content/118-containerization/101-rkt.md +++ b/content/roadmaps/101-backend/content/118-containerization/101-rkt.md @@ -1 +1,13 @@ -# Rkt \ No newline at end of file +# RKT + +RKT(pronounced like a "rocket") is an application container engine developed for modern production cloud-native environments. It features a pod-native approach, a pluggable execution environment, and a well-defined surface area that makes it ideal for integration with other systems. + + +RKT project was ended in 2018. + +Free Content +RKT Documentation +What is RKT? +What is RKT? +Introduction to RKT +The RKT Container Runtime - Explanation & Demonstration diff --git a/content/roadmaps/101-backend/content/118-containerization/102-lxc.md b/content/roadmaps/101-backend/content/118-containerization/102-lxc.md index 5b04c84c2..81ec1925a 100644 --- a/content/roadmaps/101-backend/content/118-containerization/102-lxc.md +++ b/content/roadmaps/101-backend/content/118-containerization/102-lxc.md @@ -1 +1,9 @@ -# Lxc \ No newline at end of file +# LXC + +LXC is an abbreviation used for Linux Containers which is an operating system that is used for running multiple Linux systems virtually on a controlled host via a single Linux kernel. LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers. + +Free Content +LXC Documentation +What is LXC? +Linux Container (LXC) Introduction +Getting started with LXC containers diff --git a/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/105-editors.md b/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/105-editors.md index f09b07e89..fe4969567 100644 --- a/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/105-editors.md +++ b/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/105-editors.md @@ -1 +1,40 @@ -# Editors \ No newline at end of file +# Editors + +Editors are tools that allow you to create or edit files on your file system. + +## Vim + +Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is included as "vi" with most UNIX systems and with Apple OS X. + +Vim ships with `vimtutor` that is a tutor designed to describe enough of the Vim commands that you will be able to easily use Vim as an all-purpose editor. + +Free Content +Vim +Vim help files +Vim Tips Wiki +Vim Adventures + +## Nano + +GNU nano is a small and friendly text editor. + +Free Content +GNU Nano +GNU Nano Manual + +## PowerShell + +PowerShell is a cross-platform task automation solution made up of a command-line shell, a scripting language, and a configuration management framework. PowerShell runs on Windows, Linux, and macOS. + +Free Content +PowerShell Documentation + +## Emacs + +An extensible, customizable, free/libre text editor. + +At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing. + +Free Content +GNU Emacs +GNU Emacs Documentation diff --git a/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md b/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md index ecb0e6b4c..8e97e1f46 100644 --- a/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md +++ b/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md @@ -1 +1,10 @@ -# Mtr \ No newline at end of file +# mtr + +`mtr` combines the functionality of the traceroute and ping programs in a single network diagnostic tool. + +As `mtr` starts, it investigates the network connection between the host `mtr` runs on and `HOSTNAME` by sending packets with purposely low TTLs. It continues sending packets with low TTL, noting the response time of the intervening routers. This allows `mtr` to print the internet route's response percentage and response times to HOSTNAME. A sudden packet loss or response time increase often indicates a bad (or simply overloaded) link. + +Free Content +Javatpoint: Linux mtr Command +mtr Linux command +How to traceroute use mtr command in Linux \ No newline at end of file diff --git a/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md b/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md index 118a3277e..a107b552d 100644 --- a/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md +++ b/content/roadmaps/102-devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md @@ -1 +1,7 @@ -# Nmap \ No newline at end of file +# NMAP + +NMAP stands for Network Mapper and is an open-source tool used to explore and audit the network's security, such as checking firewalls and scanning ports. + +Free Content +NMAP Official Manual Book +What is Nmap and How to Use it \ No newline at end of file diff --git a/content/roadmaps/102-devops/content/103-networking-protocols/103-emails/104-dmarc.md b/content/roadmaps/102-devops/content/103-networking-protocols/103-emails/104-dmarc.md index a0a6c0f54..982732288 100644 --- a/content/roadmaps/102-devops/content/103-networking-protocols/103-emails/104-dmarc.md +++ b/content/roadmaps/102-devops/content/103-networking-protocols/103-emails/104-dmarc.md @@ -1 +1,6 @@ -# Dmarc \ No newline at end of file +# DMARC + +DMARC stands for Domain-based Message Authentication, Reporting, and Conformance, is an authentication method on the email that is built to protect domain email from invalid email addresses or commonly known as email spoofing, email attacks, phishing, scams, and other threat activities. + +Free Content +DMARC Official Website \ No newline at end of file diff --git a/content/roadmaps/102-devops/content/105-infrastructure-as-code/101-containers.md b/content/roadmaps/102-devops/content/105-infrastructure-as-code/101-containers.md index ea69964a8..e544f06ff 100644 --- a/content/roadmaps/102-devops/content/105-infrastructure-as-code/101-containers.md +++ b/content/roadmaps/102-devops/content/105-infrastructure-as-code/101-containers.md @@ -8,3 +8,4 @@ These images are designed for portability, allowing for full local testing of a What are Containers? What is a Container? What are Containers? +Articles about Containers - The New Stack diff --git a/content/roadmaps/106-javascript/content/100-javascript-introduction/101-history-of-javascript.md b/content/roadmaps/106-javascript/content/100-javascript-introduction/101-history-of-javascript.md index f66968dbd..0a30ca884 100644 --- a/content/roadmaps/106-javascript/content/100-javascript-introduction/101-history-of-javascript.md +++ b/content/roadmaps/106-javascript/content/100-javascript-introduction/101-history-of-javascript.md @@ -1,6 +1,6 @@ # History of JavaScript -JavaScript was initially created by Brendan Eich of NetScape and was first announced in a press release by Netscape in 1995. It has a bizarre history of naming; initally it was named Mocha by the creator, which was later renamed to LiveScript. In 1996, about a year later after the release, NetScape decided to rename it to be JavaScript with hopes of capitalizing on the Java community (although JavaScript did not have any relationship with Java) and released Netscape 2.0 with the official support of JavaScript. +JavaScript was initially created by Brendan Eich of NetScape and was first announced in a press release by Netscape in 1995. It has a bizarre history of naming; initially, it was named Mocha by the creator, which was later renamed LiveScript. In 1996, about a year later after the release, NetScape decided to rename it to JavaScript with hopes of capitalizing on the Java community (although JavaScript did not have any relationship with Java) and released Netscape 2.0 with the official support of JavaScript. Free Content Brief History of JavaScript diff --git a/content/roadmaps/106-javascript/content/100-javascript-introduction/103-how-to-run-javascript.md b/content/roadmaps/106-javascript/content/100-javascript-introduction/103-how-to-run-javascript.md index 780d20764..3d849d042 100644 --- a/content/roadmaps/106-javascript/content/100-javascript-introduction/103-how-to-run-javascript.md +++ b/content/roadmaps/106-javascript/content/100-javascript-introduction/103-how-to-run-javascript.md @@ -1,6 +1,6 @@ # How to run Javascript -JavaScript can be run in the browser by including the external script file using the `script` tag, write it within the HTML page using the `script` tag again, run it in the browser console or you can also use [REPL](https://www.digitalocean.com/community/tutorials/how-to-use-the-node-js-repl). +JavaScript can be run in the browser by including the external script file using the `script` tag, writing it within the HTML page using the `script` tag again, running it in the browser console or you can also use [REPL](https://www.digitalocean.com/community/tutorials/how-to-use-the-node-js-repl). Free Content How To Add JavaScript to HTML diff --git a/content/roadmaps/106-javascript/content/101-javascript-variables/100-variable-declarations/readme.md b/content/roadmaps/106-javascript/content/101-javascript-variables/100-variable-declarations/readme.md index aee92e899..791e79419 100644 --- a/content/roadmaps/106-javascript/content/101-javascript-variables/100-variable-declarations/readme.md +++ b/content/roadmaps/106-javascript/content/101-javascript-variables/100-variable-declarations/readme.md @@ -1,6 +1,6 @@ # Variable Declarations -To use variables in JavaScript, we first need to create it i.e. declare a variable. To declare variables, we use one of the `var`, `let` or `const` keywords. +To use variables in JavaScript, we first need to create it i.e. declare a variable. To declare variables, we use one of the `var`, `let`, or `const` keywords. Free Content Storing the information you need — Variables diff --git a/content/roadmaps/106-javascript/content/101-javascript-variables/101-hoisting.md b/content/roadmaps/106-javascript/content/101-javascript-variables/101-hoisting.md index c94874996..f219e787b 100644 --- a/content/roadmaps/106-javascript/content/101-javascript-variables/101-hoisting.md +++ b/content/roadmaps/106-javascript/content/101-javascript-variables/101-hoisting.md @@ -1,6 +1,6 @@ # Hoisting -JavaScript Hoisting refers to the process whereby the interpreter appears to move the declaration of functions, variables or classes to the top of their scope, prior to execution of the code. +JavaScript Hoisting refers to the process whereby the interpreter appears to move the declaration of functions, variables, or classes to the top of their scope, prior to execution of the code. Free Content What is Hoisting - MDN Docs diff --git a/content/roadmaps/106-javascript/content/101-javascript-variables/readme.md b/content/roadmaps/106-javascript/content/101-javascript-variables/readme.md index 008758544..166b8e3f6 100644 --- a/content/roadmaps/106-javascript/content/101-javascript-variables/readme.md +++ b/content/roadmaps/106-javascript/content/101-javascript-variables/readme.md @@ -1,6 +1,6 @@ # Javascript Variables -Most of the time, a JavaScript application needs to work with information. To store and represent this information in JavaScript codebase, we use variables. A variable is a container for a value. +Most of the time, a JavaScript application needs to work with information. To store and represent this information in the JavaScript codebase, we use variables. A variable is a container for a value. Free Content JavaScript Variables diff --git a/content/roadmaps/106-javascript/content/102-javascript-datatypes/101-object/100-prototype.md b/content/roadmaps/106-javascript/content/102-javascript-datatypes/101-object/100-prototype.md index 20bdf20c0..bebec3e7d 100644 --- a/content/roadmaps/106-javascript/content/102-javascript-datatypes/101-object/100-prototype.md +++ b/content/roadmaps/106-javascript/content/102-javascript-datatypes/101-object/100-prototype.md @@ -1,6 +1,6 @@ # Prototypes -JavaScript is an object-oriented language built around a prototype model. In JavaScript, every object inherits properties from its prototype, if there is any. A prototype is simply an object from which another object inherits properties. To create complex programs using JavaScript, one has to be proficient in working with prototypes — they form the very core of OOP in the language. +JavaScript is an object-oriented language built around a prototype model. In JavaScript, every object inherits properties from its prototype, if there are any. A prototype is simply an object from which another object inherits properties. To create complex programs using JavaScript, one has to be proficient in working with prototypes — they form the very core of OOP in the language. Free Content Prototypes in JavaScript - A Comprehensive Guide diff --git a/content/roadmaps/106-javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md b/content/roadmaps/106-javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md index 96581402c..98d18f2fd 100644 --- a/content/roadmaps/106-javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md +++ b/content/roadmaps/106-javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md @@ -1,6 +1,6 @@ # Arrays -Arrays are objects that store a collection of items and can be assigned to a variable. They have their own methods that can perform operations on the array. +Arrays are objects that store a collection of items and can be assigned to a variable. They have their methods that can perform operations on the array. Free Content Working with Arrays in JavaScript diff --git a/content/roadmaps/106-javascript/content/104-javascript-data-structures/101-keyed-collections/103-weak-set.md b/content/roadmaps/106-javascript/content/104-javascript-data-structures/101-keyed-collections/103-weak-set.md index 129124747..45aa33c28 100644 --- a/content/roadmaps/106-javascript/content/104-javascript-data-structures/101-keyed-collections/103-weak-set.md +++ b/content/roadmaps/106-javascript/content/104-javascript-data-structures/101-keyed-collections/103-weak-set.md @@ -1 +1,8 @@ -# Weak set \ No newline at end of file +# WeakSet + +`WeakSet` objects are collections of objects. Just as with `Sets`, each object in a `WeakSet` may occur only once; all objects in a `WeakSet`'s collection are unique. + +Free Content + +WeakSet +WeakMap and WeakSet diff --git a/content/roadmaps/106-javascript/content/106-javascript-loops-iterations/103-for-statement.md b/content/roadmaps/106-javascript/content/106-javascript-loops-iterations/103-for-statement.md index 80c22b7bf..9a0893ce4 100644 --- a/content/roadmaps/106-javascript/content/106-javascript-loops-iterations/103-for-statement.md +++ b/content/roadmaps/106-javascript/content/106-javascript-loops-iterations/103-for-statement.md @@ -1,6 +1,6 @@ # The `for` loop -The `for` loop is a standard control-flow construct in many programming languages, including JavaScript. It's commonly used to iterate over given sequences or iterate a known number of times, and execute a piece of code for each iteration. +The `for` loop is a standard control-flow construct in many programming languages, including JavaScript. It's commonly used to iterate over given sequences or iterate a known number of times and execute a piece of code for each iteration. Free Content JavaScript `for` Loop - CodeGuage diff --git a/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md b/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md index 461e9fd10..5df5323e3 100644 --- a/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md +++ b/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md @@ -1 +1,14 @@ -# Arithmetic operators \ No newline at end of file +# Arithmetic operators + +The Arithmetic operators perform addition, subtraction, multiplication, division, exponentiation, and remainder perations. + +Arithmetic operators in JavaScript are as follows: +- `+` (Addition) +- `-` (Subtraction) +- `*` (Multiplication) +- `/` (Division) +- `%` (Remainder) +- `**` (Exponentiation) + +Arithmetic Operators - MDN +Arithmetic Operators - JavaScript.info diff --git a/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md b/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md index b0b417f19..a9a05fad0 100644 --- a/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md +++ b/content/roadmaps/106-javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md @@ -1 +1,17 @@ -# Bitwise operators \ No newline at end of file +# Bitwise operators + +Bitwise operators treat arguments as 32-bits (zeros & ones) and work on the level of their binary representation. +Ex. Decimal number `9` has a binary representation of `1001`. Bitwise operators perform their operations on such binary representations, but they return standard JavaScript numerical values. + +Bitwise operators in JavaScript are as follows: + +- `&` (AND) +- `|` (OR) +- `^` (XOR) +- `~` (NOT) +- `<<` (Left SHIFT) +- `>>` (Right SHIFT) +- `>>>` (Zero-Fill Right SHIFT) + +Bitwise Operators - MDN +Bitwise Operators - JavaScript.info \ No newline at end of file diff --git a/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/100-recursion.md b/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/100-recursion.md index 6f5657b80..4415dc5be 100644 --- a/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/100-recursion.md +++ b/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/100-recursion.md @@ -1,6 +1,6 @@ # Recursion -One of the most powerfula and elegant concept of functions, recursion is when a function invokes itself. Such a function is called a **_recursive function_**. As recursion happens, the underlying code of the recursive function gets executed again and again until a terminating condition, called the _base case_, gets fulfilled. As you dive into the world of algorithms, you'll come across recursion in many many instances. +One of the most powerful and elegant concept of functions, recursion is when a function invokes itself. Such a function is called a **_recursive function_**. As recursion happens, the underlying code of the recursive function gets executed again and again until a terminating condition, called the _base case_, gets fulfilled. As you dive into the world of algorithms, you'll come across recursion in many many instances. Free Content Recursion and Stack diff --git a/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/101-lexical-scoping.md b/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/101-lexical-scoping.md index df348e03d..7c321c3ca 100644 --- a/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/101-lexical-scoping.md +++ b/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/101-lexical-scoping.md @@ -1,6 +1,6 @@ # Lexical scoping -Before one can make intuition of closures in JavaScript, it's important to first get the hang of the term '**_lexical environment_**'. In simple words, the lexical environment for a function `f` simply refers to the environment enclosing that function's definition in the source code. +Before one can make an intuition of closures in JavaScript, it's important to first get the hang of the term '**_lexical environment_**'. In simple words, the lexical environment for a function `f` simply refers to the environment enclosing that function's definition in the source code. Free Content What is a lexical environment? - JavaScript - CodeGuage diff --git a/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/102-closures.md b/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/102-closures.md index 020e8f5bb..aa4003a09 100644 --- a/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/102-closures.md +++ b/content/roadmaps/106-javascript/content/109-javascript-functions/105-scope-and-function-stack/102-closures.md @@ -1,6 +1,6 @@ # Closures -Function closures are one of the most powerful, yet most misunderstood, concepts of JavaScript that are actually really simple to understand. A closure refers to a function along with its lexical environment. It is essentially what allows us to return a function `A`, from another function `B`, that remembers the local variables defined in `B`, even after `B` exits. The idea of closures is employed in nearly every other JavaScript program, hence, it's paramount for a JavaScript developer to know of it really well. +Function closures are one of the most powerful, yet most misunderstood, concepts of JavaScript that are actually really simple to understand. A closure refers to a function along with its lexical environment. It is essentially what allows us to return a function `A`, from another function `B`, that remembers the local variables defined in `B`, even after `B` exits. The idea of closures is employed in nearly every other JavaScript program, hence, it's paramount for a JavaScript developer to know it really well. Free Content JavaScript Closures - The Simplest Explanation diff --git a/content/roadmaps/106-javascript/content/111-javascript-this-keyword/readme.md b/content/roadmaps/106-javascript/content/111-javascript-this-keyword/readme.md index c706f9142..1f3be6938 100644 --- a/content/roadmaps/106-javascript/content/111-javascript-this-keyword/readme.md +++ b/content/roadmaps/106-javascript/content/111-javascript-this-keyword/readme.md @@ -1,6 +1,6 @@ # This Keyword -In JavaScript, the `this` keyword is a little different compared to other languages. It refers to an object, but it depends on how or where its being invoked. It also has some differences between strict mode and non-strict mode. +In JavaScript, the `this` keyword is a little different compared to other languages. It refers to an object, but it depends on how or where it is being invoked. It also has some differences between strict mode and non-strict mode. - In an object method, `this` refers to the object - Alone, `this` refers to the global object diff --git a/content/roadmaps/106-javascript/content/112-javascript-asynchronous-javascript/104-promises/readme.md b/content/roadmaps/106-javascript/content/112-javascript-asynchronous-javascript/104-promises/readme.md index 0a4501bf2..57aefbe51 100644 --- a/content/roadmaps/106-javascript/content/112-javascript-asynchronous-javascript/104-promises/readme.md +++ b/content/roadmaps/106-javascript/content/112-javascript-asynchronous-javascript/104-promises/readme.md @@ -1,6 +1,6 @@ # Promises -Promises are a much better way to work with asynchronous code in JavaScript than the old and error-prone callback approach. They were introduced into JavaScript with ECMAScript 6. Using promises, we can manage extremely complex asynchronous code with rigorous error-handling set up, write code in a more or less synchronous style, and keep ourselves from running into the so-called callback hell. +Promises are a much better way to work with asynchronous code in JavaScript than the old and error-prone callback approach. They were introduced into JavaScript with ECMAScript 6. Using promises, we can manage extremely complex asynchronous code with rigorous error-handling setup, write code in a more or less synchronous style, and keep ourselves from running into the so-called callback hell. Free Content A Detailed Introduction to Promises diff --git a/content/roadmaps/106-javascript/content/114-javascript-iterators-and-generators.md b/content/roadmaps/106-javascript/content/114-javascript-iterators-and-generators.md index e70af0d56..f7913bf95 100644 --- a/content/roadmaps/106-javascript/content/114-javascript-iterators-and-generators.md +++ b/content/roadmaps/106-javascript/content/114-javascript-iterators-and-generators.md @@ -1,6 +1,6 @@ # Javascript Iterators and Generators -Iterators and generators, introduced into JavaScript with ECMAScript 6, represent an extremely useful concept related to iteration in the language. Iterators are objects, abiding by the iterator protocol, that allow us to easily iterate over a given sequence in various ways, such as using the `for...of` loop. Generators, on the other hand, allow us to use functions and the `yield` keyword to easily define iterable sequences that are iterators as well. +Iterators and generators, introduced into JavaScript with ECMAScript 6, represent an extremely useful concept related to iteration in the language. Iterators are objects, abiding by the iterator protocol, that allows us to easily iterate over a given sequence in various ways, such as using the `for...of` loop. Generators, on the other hand, allow us to use functions and the `yield` keyword to easily define iterable sequences that are iterators as well. Free Content Introduction to Iterators - Advanced JavaScript diff --git a/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/101-event-emitter.md b/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/101-event-emitter.md index 8cac7ce31..3ef5f3ac2 100644 --- a/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/101-event-emitter.md +++ b/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/101-event-emitter.md @@ -1 +1,7 @@ -# Event emitter \ No newline at end of file +# Event Emitter + +In Node.js, an event can be described simply as a string with a corresponding callback. An event can be "emitted" (or, in other words, the corresponding callback be called) multiple times or you can choose to only listen for the first time it is emitted. + +Free Content +What are Event Emitters? +Using Event Emitters in Node.js diff --git a/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/107-set-immediate.md b/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/107-set-immediate.md index e951a60ab..26d5227eb 100644 --- a/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/107-set-immediate.md +++ b/content/roadmaps/107-nodejs/content/104-nodejs-async-programming/107-set-immediate.md @@ -1 +1,7 @@ -# Set immediate \ No newline at end of file +# setImmediate + +The `setImmediate` function delays the execution of a function to be called after the current event loops finish all their execution. It's very similar to calling `setTimeout` with 0 ms delay. + +Free Content +Understanding setImmediate +Understanding setImmediate diff --git a/content/roadmaps/107-nodejs/content/107-nodejs-apis/100-http-module.md b/content/roadmaps/107-nodejs/content/107-nodejs-apis/100-http-module.md index 7e4d4fec0..cf0609163 100644 --- a/content/roadmaps/107-nodejs/content/107-nodejs-apis/100-http-module.md +++ b/content/roadmaps/107-nodejs/content/107-nodejs-apis/100-http-module.md @@ -1 +1,9 @@ -# Http module \ No newline at end of file +# Http module + +To make HTTP requests in Node.js, there is a built-in module HTTP in Node.js to transfer data over the HTTP. To use the HTTP server in node, we need to require the HTTP module using `require()` method. The HTTP module creates an HTTP server that listens to server ports and gives a response back to the client. + +Free Content + +How To Create a Web Server in Node.js with the HTTP Modulet +Node.js Http Module +The Node.js Http Module diff --git a/content/roadmaps/109-golang/content/100-go-basics/115-make.md b/content/roadmaps/109-golang/content/100-go-basics/115-make.md index fe4af3cbd..43386edd4 100644 --- a/content/roadmaps/109-golang/content/100-go-basics/115-make.md +++ b/content/roadmaps/109-golang/content/100-go-basics/115-make.md @@ -1 +1,9 @@ -# Make \ No newline at end of file +# Make + +Golang's built-in function make, helps us create and initialize slices, maps and channels, depending on the arguments that are provided to the function. + +Free Content + +Create a slice with make +Create a map with make +Create a channel with make \ No newline at end of file diff --git a/content/roadmaps/109-golang/content/100-go-basics/116-structs.md b/content/roadmaps/109-golang/content/100-go-basics/116-structs.md index 17c24f6c0..656a2f0d2 100644 --- a/content/roadmaps/109-golang/content/100-go-basics/116-structs.md +++ b/content/roadmaps/109-golang/content/100-go-basics/116-structs.md @@ -1 +1,8 @@ -# Structs \ No newline at end of file +# Structs + +Structs are user-defined types that help us create a collection of data describing a single entity. + +Free Content +Go Structs +Go by Example: Structs +Structs in Go \ No newline at end of file diff --git a/content/roadmaps/110-java/content/102-java-build-tools/100-gradle.md b/content/roadmaps/110-java/content/102-java-build-tools/100-gradle.md index ca8527737..2caf8d003 100644 --- a/content/roadmaps/110-java/content/102-java-build-tools/100-gradle.md +++ b/content/roadmaps/110-java/content/102-java-build-tools/100-gradle.md @@ -1 +1,6 @@ -# Gradle \ No newline at end of file +# Gradle + +Gradle is an open-source build automation tool that helps software engineers to test, build, and release high-performance software products. In addition, Gradle also supports multi-language development. Currently, the supported languages for Gradle include Java, Kotlin, Groovy, Scala, C/C++, and JavaScript. + +Reference Resource +Gradle Website diff --git a/content/roadmaps/110-java/content/103-java-web-frameworks/102-play-framework.md b/content/roadmaps/110-java/content/103-java-web-frameworks/102-play-framework.md index 0ee890ef6..89dd058d5 100644 --- a/content/roadmaps/110-java/content/103-java-web-frameworks/102-play-framework.md +++ b/content/roadmaps/110-java/content/103-java-web-frameworks/102-play-framework.md @@ -1 +1,6 @@ -# Play framework \ No newline at end of file +# Play Framework + +Play Framework is a high-productivity web application framework that allows the model-view-controller pattern. It is written in Scala but can also be used for other programming languages that are compiled and run on the JVM. e.g.Java. + +Reference Resource +Play Framework Website diff --git a/content/roadmaps/110-java/content/107-testing-java-apps/100-mocking.md b/content/roadmaps/110-java/content/107-testing-java-apps/100-mocking.md index fedca8186..09bc7653b 100644 --- a/content/roadmaps/110-java/content/107-testing-java-apps/100-mocking.md +++ b/content/roadmaps/110-java/content/107-testing-java-apps/100-mocking.md @@ -1 +1,12 @@ -# Mocking \ No newline at end of file +# Mocking + +Mocking removes external dependencies from a unit test to create a sense of an entire controlled environment. The traditional method of mocks involves mocking all other classes that interact with the class we want to test. The common targets for mocking are: + +- Database connections +- Web services +- Slow Classes +- Classes with side effects +- Classes with non-deterministic behavior + +Reference Resource +Mockito - Mocking Framework for Java diff --git a/content/roadmaps/110-java/content/107-testing-java-apps/107-jmeter.md b/content/roadmaps/110-java/content/107-testing-java-apps/107-jmeter.md index 5b0c2728e..20ae4f430 100644 --- a/content/roadmaps/110-java/content/107-testing-java-apps/107-jmeter.md +++ b/content/roadmaps/110-java/content/107-testing-java-apps/107-jmeter.md @@ -1 +1,6 @@ -# Jmeter \ No newline at end of file +# JMeter + +Apache JMeter is an Apache project that can be used as a load testing tool for analyzing and measuring the performance of a variety of services, with a focus on web applications. + +Reference Resource +Apache JMeter Website diff --git a/content/roadmaps/113-qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md b/content/roadmaps/113-qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md index 58e0c2206..399356448 100644 --- a/content/roadmaps/113-qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md +++ b/content/roadmaps/113-qa/content/100-qa-basics/102-testing-approaches/101-gray-box-testing.md @@ -1 +1,6 @@ -# Gray box testing \ No newline at end of file +# Gray Box Testing + +Gray box testing is a software testing technique to test a software product or application with partial knowledge of the internal structure of the application. The purpose of gray box testing is to search and identify the defects due to improper code structure or improper use of applications. + +Free Content +What is Gray Box Testing? Techniques & Example \ No newline at end of file diff --git a/content/roadmaps/113-qa/content/100-qa-basics/106-project-management/readme.md b/content/roadmaps/113-qa/content/100-qa-basics/106-project-management/readme.md index 1955d9ca9..709bc7363 100644 --- a/content/roadmaps/113-qa/content/100-qa-basics/106-project-management/readme.md +++ b/content/roadmaps/113-qa/content/100-qa-basics/106-project-management/readme.md @@ -1 +1,10 @@ -# Project management \ No newline at end of file +# Project Management + +A project is a temporary endeavor to create a unique product, service, or result. A project is temporary because it has a defined beginning and end time, and it is unique because it has a particular set of operations designed to accomplish a goal. + +Project Management is a discipline of planning, organizing, motivating, and controlling the resources to achieve specific project goals. The main objective of project management is to achieve project goals and targets while keeping in mind the project scope, time, quality, and cost. It facilitates the project workflow with team collaboration on a single project. + +Free Content +What are the Main Objectives of Project Management? +Project Management in Software Testing +Project Management Life Cycle Phases: What are the stages? \ No newline at end of file diff --git a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/integration-testing.md b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/integration-testing.md index 30f1d7fbd..2bd99e44c 100644 --- a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/integration-testing.md +++ b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/integration-testing.md @@ -1 +1,6 @@ -# Integration testing \ No newline at end of file +# Integration Testing + +Integration Testing is a type of testing where software modules are integrated logically and tested as a group. A typical software project consists of multiple software modules coded by different programmers. This testing level aims to expose defects in the interaction between these software modules when they are integrated. Integration Testing focuses on checking data communication amongst these modules. + +Free Content +Integration Testing Tutorial diff --git a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/regression-testing.md b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/regression-testing.md index c96c527a6..5a475b5bd 100644 --- a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/regression-testing.md +++ b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/regression-testing.md @@ -1 +1,7 @@ -# Regression testing \ No newline at end of file +# Regression Testing + +Regression Testing is a type of software testing to confirm that a recent program or code change has not adversely affected existing features. Regression testing is a black box testing technique. Test cases are re-executed to check the previous functionality of the application is working fine and that the new changes have not produced any bugs. + +Free Content +Regression Testing +What is Regression Testing with Test Cases diff --git a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md index 94ee45331..c2bd3c9da 100644 --- a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md +++ b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/100-functional-testing/unit-testing.md @@ -1 +1,7 @@ -# Unit testing \ No newline at end of file +# Unit Testing + +Unit testing is where individual __units__ (modules, functions/methods, routines, etc.) of software are tested to ensure their correctness. This low-level testing ensures smaller components are functionally sound while taking the burden off of higher-level tests. Generally, a developer writes these tests during the development process and they are run as automated tests. + +Free Content +Unit Testing Tutorial +What is Unit Testing? diff --git a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md index 4f7b9823a..dc11a364b 100644 --- a/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md +++ b/content/roadmaps/113-qa/content/100-qa-basics/107-testing-techniques/101-non-functional-testing/load-testing.md @@ -1 +1,7 @@ -# Load testing \ No newline at end of file +# Load Testing + +Load Testing is a type of Performance Testing that determines the performance of a system, software product, or software application under real-life-based load conditions. Load testing determines the behavior of the application when multiple users use it at the same time. It is the response of the system measured under varying load conditions. + +Free Content +Software Testing: Load Testing +Load testing and Best Practises diff --git a/content/roadmaps/113-qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/selenium.md b/content/roadmaps/113-qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/selenium.md index 425aeab11..bc92d1e3a 100644 --- a/content/roadmaps/113-qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/selenium.md +++ b/content/roadmaps/113-qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/selenium.md @@ -1 +1,7 @@ # Selenium + +Selenium is an open-source tool that automates web browsers. It provides a single interface that lets you write test scripts in programming languages like Ruby, Java, NodeJS, PHP, Perl, Python, and C#, among others. + +Free Content +Selenium's Official Website +Selenium Tutorial diff --git a/content/roadmaps/114-software-architect/content-paths.json b/content/roadmaps/114-software-architect/content-paths.json new file mode 100644 index 000000000..82225d853 --- /dev/null +++ b/content/roadmaps/114-software-architect/content-paths.json @@ -0,0 +1,110 @@ +{ + "home": "/roadmaps/114-software-architect/content/readme.md", + "patterns-and-design-principles": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/readme.md", + "patterns-and-design-principles:cqrs-eventual-consistency": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/102-cqrs-eventual-consistency.md", + "patterns-and-design-principles:acid-cap-theorem": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md", + "patterns-and-design-principles:tdd": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-tdd.md", + "patterns-and-design-principles:mvc-mvp-mvvm": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/101-mvc-mvp-mvvm.md", + "patterns-and-design-principles:actors": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/103-actors.md", + "patterns-and-design-principles:solid": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/105-solid.md", + "patterns-and-design-principles:ddd": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-ddd.md", + "patterns-and-design-principles:oop": "/roadmaps/114-software-architect/content/105-patterns-and-design-principles/100-oop.md", + "software-architect-basics": "/roadmaps/114-software-architect/content/100-software-architect-basics/readme.md", + "software-architect-basics:what-is-software-architecture": "/roadmaps/114-software-architect/content/100-software-architect-basics/100-what-is-software-architecture.md", + "software-architect-basics:what-is-software-architect": "/roadmaps/114-software-architect/content/100-software-architect-basics/101-what-is-software-architect.md", + "software-architect-basics:levels-of-architecture": "/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/readme.md", + "software-architect-basics:levels-of-architecture:application-architecture": "/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md", + "software-architect-basics:levels-of-architecture:solution-architecture": "/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/101-solution-architecture.md", + "software-architect-basics:levels-of-architecture:enterprise-architecture": "/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/102-enterprise-architecture.md", + "important-skills": "/roadmaps/114-software-architect/content/102-important-skills/readme.md", + "important-skills:design-and-architecture": "/roadmaps/114-software-architect/content/102-important-skills/100-design-and-architecture.md", + "important-skills:decision-making": "/roadmaps/114-software-architect/content/102-important-skills/101-decision-making.md", + "important-skills:simplifying-things": "/roadmaps/114-software-architect/content/102-important-skills/102-simplifying-things.md", + "important-skills:how-to-code": "/roadmaps/114-software-architect/content/102-important-skills/103-how-to-code.md", + "important-skills:documentation": "/roadmaps/114-software-architect/content/102-important-skills/104-documentation.md", + "important-skills:communication": "/roadmaps/114-software-architect/content/102-important-skills/105-communication.md", + "important-skills:estimate-and-evaluate": "/roadmaps/114-software-architect/content/102-important-skills/106-estimate-and-evaluate.md", + "important-skills:balance": "/roadmaps/114-software-architect/content/102-important-skills/107-balance.md", + "important-skills:consult-and-coach": "/roadmaps/114-software-architect/content/102-important-skills/108-consult-and-coach.md", + "important-skills:marketing-skills": "/roadmaps/114-software-architect/content/102-important-skills/109-marketing-skills.md", + "technical-skills": "/roadmaps/114-software-architect/content/103-technical-skills.md", + "programming-languages": "/roadmaps/114-software-architect/content/104-programming-languages/readme.md", + "programming-languages:java-kotlin-scala": "/roadmaps/114-software-architect/content/104-programming-languages/100-java-kotlin-scala.md", + "programming-languages:python": "/roadmaps/114-software-architect/content/104-programming-languages/101-python.md", + "programming-languages:ruby": "/roadmaps/114-software-architect/content/104-programming-languages/102-ruby.md", + "programming-languages:go": "/roadmaps/114-software-architect/content/104-programming-languages/103-go.md", + "programming-languages:javascript-typescript": "/roadmaps/114-software-architect/content/104-programming-languages/104-javascript-typescript.md", + "programming-languages:dotnet-framework": "/roadmaps/114-software-architect/content/104-programming-languages/105-dotnet-framework.md", + "architect-tools": "/roadmaps/114-software-architect/content/106-architect-tools/readme.md", + "architect-tools:git": "/roadmaps/114-software-architect/content/106-architect-tools/100-git.md", + "architect-tools:slack": "/roadmaps/114-software-architect/content/106-architect-tools/101-slack.md", + "architect-tools:trello": "/roadmaps/114-software-architect/content/106-architect-tools/102-trello.md", + "architect-tools:atlassian-tools": "/roadmaps/114-software-architect/content/106-architect-tools/103-atlassian-tools.md", + "architectures": "/roadmaps/114-software-architect/content/107-architectures/readme.md", + "architectures:serverless": "/roadmaps/114-software-architect/content/107-architectures/100-serverless.md", + "architectures:microservices": "/roadmaps/114-software-architect/content/107-architectures/101-microservices.md", + "architectures:client-server-architecture": "/roadmaps/114-software-architect/content/107-architectures/102-client-server-architecture.md", + "architectures:layered-architecture": "/roadmaps/114-software-architect/content/107-architectures/103-layered-architecture.md", + "architectures:distributed-systems": "/roadmaps/114-software-architect/content/107-architectures/104-distributed-systems.md", + "architectures:service-oriented": "/roadmaps/114-software-architect/content/107-architectures/105-service-oriented.md", + "security": "/roadmaps/114-software-architect/content/108-security/readme.md", + "security:hashing-algorithms": "/roadmaps/114-software-architect/content/108-security/100-hashing-algorithms.md", + "security:pki": "/roadmaps/114-software-architect/content/108-security/101-pki.md", + "security:owasp": "/roadmaps/114-software-architect/content/108-security/102-owasp.md", + "security:auth-strategies": "/roadmaps/114-software-architect/content/108-security/103-auth-strategies.md", + "working-with-data": "/roadmaps/114-software-architect/content/109-working-with-data/readme.md", + "working-with-data:hadoop-spark-mapreduce": "/roadmaps/114-software-architect/content/109-working-with-data/100-hadoop-spark-mapreduce.md", + "working-with-data:etl-datawarehouses": "/roadmaps/114-software-architect/content/109-working-with-data/101-etl-datawarehouses.md", + "working-with-data:sql-databases": "/roadmaps/114-software-architect/content/109-working-with-data/102-sql-databases.md", + "working-with-data:nosql-databases": "/roadmaps/114-software-architect/content/109-working-with-data/103-nosql-databases.md", + "working-with-data:analytics": "/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/readme.md", + "working-with-data:analytics:apache-spark": "/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/100-apache-spark.md", + "working-with-data:analytics:hadoop": "/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/101-hadoop.md", + "working-with-data:analytics:datawarehouses-principles": "/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/102-datawarehouses-principles.md", + "apis-and-integrations": "/roadmaps/114-software-architect/content/110-apis-and-integrations/readme.md", + "apis-and-integrations:grpc": "/roadmaps/114-software-architect/content/110-apis-and-integrations/100-grpc.md", + "apis-and-integrations:esb-soap": "/roadmaps/114-software-architect/content/110-apis-and-integrations/101-esb-soap.md", + "apis-and-integrations:graphql": "/roadmaps/114-software-architect/content/110-apis-and-integrations/102-graphql.md", + "apis-and-integrations:rest": "/roadmaps/114-software-architect/content/110-apis-and-integrations/103-rest.md", + "apis-and-integrations:bpm-bpel": "/roadmaps/114-software-architect/content/110-apis-and-integrations/104-bpm-bpel.md", + "apis-and-integrations:messaging-queues": "/roadmaps/114-software-architect/content/110-apis-and-integrations/105-messaging-queues.md", + "web-and-mobile": "/roadmaps/114-software-architect/content/111-web-and-mobile/readme.md", + "web-and-mobile:reactive-functional-programming": "/roadmaps/114-software-architect/content/111-web-and-mobile/100-reactive-functional-programming.md", + "web-and-mobile:react-vue-angular": "/roadmaps/114-software-architect/content/111-web-and-mobile/101-react-vue-angular.md", + "web-and-mobile:spa-ssr-ssg": "/roadmaps/114-software-architect/content/111-web-and-mobile/102-spa-ssr-ssg.md", + "web-and-mobile:pwa": "/roadmaps/114-software-architect/content/111-web-and-mobile/103-pwa.md", + "web-and-mobile:microfrontends": "/roadmaps/114-software-architect/content/111-web-and-mobile/104-microfrontends.md", + "web-and-mobile:w3c-and-whatwg-standards": "/roadmaps/114-software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md", + "architect-frameworks": "/roadmaps/114-software-architect/content/112-architect-frameworks/readme.md", + "architect-frameworks:babok": "/roadmaps/114-software-architect/content/112-architect-frameworks/100-babok.md", + "architect-frameworks:iaf": "/roadmaps/114-software-architect/content/112-architect-frameworks/101-iaf.md", + "architect-frameworks:uml": "/roadmaps/114-software-architect/content/112-architect-frameworks/101-uml.md", + "architect-frameworks:togaf": "/roadmaps/114-software-architect/content/112-architect-frameworks/102-togaf.md", + "management": "/roadmaps/114-software-architect/content/113-management/readme.md", + "management:certifications": "/roadmaps/114-software-architect/content/113-management/100-certifications/readme.md", + "management:certifications:pmi-itil-prince2-rup": "/roadmaps/114-software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md", + "management:agile-scrum": "/roadmaps/114-software-architect/content/113-management/101-agile-scrum/readme.md", + "management:agile-scrum:less": "/roadmaps/114-software-architect/content/113-management/101-agile-scrum/100-less.md", + "management:agile-scrum:safe": "/roadmaps/114-software-architect/content/113-management/101-agile-scrum/101-safe.md", + "networks": "/roadmaps/114-software-architect/content/114-networks/readme.md", + "networks:osi-tcp-ip-model": "/roadmaps/114-software-architect/content/114-networks/100-osi-tcp-ip-model.md", + "networks:http-https": "/roadmaps/114-software-architect/content/114-networks/101-http-https.md", + "networks:proxies": "/roadmaps/114-software-architect/content/114-networks/102-proxies.md", + "networks:firewalls": "/roadmaps/114-software-architect/content/114-networks/103-firewalls.md", + "operations-knowledge": "/roadmaps/114-software-architect/content/115-operations-knowledge/readme.md", + "operations-knowledge:infrastructure-as-code": "/roadmaps/114-software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md", + "operations-knowledge:cloud-providers": "/roadmaps/114-software-architect/content/115-operations-knowledge/101-cloud-providers.md", + "operations-knowledge:serverless-concepts": "/roadmaps/114-software-architect/content/115-operations-knowledge/102-serverless-concepts.md", + "operations-knowledge:linux-unix": "/roadmaps/114-software-architect/content/115-operations-knowledge/103-linux-unix.md", + "operations-knowledge:service-mesh": "/roadmaps/114-software-architect/content/115-operations-knowledge/104-service-mesh.md", + "operations-knowledge:ci-cd": "/roadmaps/114-software-architect/content/115-operations-knowledge/105-ci-cd.md", + "operations-knowledge:containers": "/roadmaps/114-software-architect/content/115-operations-knowledge/106-containers.md", + "operations-knowledge:cloud-design-patterns": "/roadmaps/114-software-architect/content/115-operations-knowledge/107-cloud-design-patterns.md", + "enterprise-software": "/roadmaps/114-software-architect/content/116-enterprise-software/readme.md", + "enterprise-software:ms-dynamics": "/roadmaps/114-software-architect/content/116-enterprise-software/100-ms-dynamics.md", + "enterprise-software:sap-epr-hana-business-objects": "/roadmaps/114-software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md", + "enterprise-software:emc-dms": "/roadmaps/114-software-architect/content/116-enterprise-software/102-emc-dms.md", + "enterprise-software:ibm-bpm": "/roadmaps/114-software-architect/content/116-enterprise-software/103-ibm-bpm.md", + "enterprise-software:salesforce": "/roadmaps/114-software-architect/content/116-enterprise-software/104-salesforce.md", + "architect-responsibilities": "/roadmaps/114-software-architect/content/101-architect-responsibilities.md" +} \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/100-software-architect-basics/100-what-is-software-architecture.md b/content/roadmaps/114-software-architect/content/100-software-architect-basics/100-what-is-software-architecture.md new file mode 100644 index 000000000..168ebd46b --- /dev/null +++ b/content/roadmaps/114-software-architect/content/100-software-architect-basics/100-what-is-software-architecture.md @@ -0,0 +1,8 @@ +# What is Software Architecture? + +Describes how an application is built including its components, how they interact with each other, environment in which they operate and so on. + +Free Content +What is Software Architecture in Software Engineering? +An Introduction to Software Architecture Patterns +Software Architecture: It might not be what you think it is diff --git a/content/roadmaps/114-software-architect/content/100-software-architect-basics/101-what-is-software-architect.md b/content/roadmaps/114-software-architect/content/100-software-architect-basics/101-what-is-software-architect.md new file mode 100644 index 000000000..3fa457bb8 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/100-software-architect-basics/101-what-is-software-architect.md @@ -0,0 +1,3 @@ +# What is Software Architect? + +A software expert who makes high level design choices, including technical standards, tools, design principles, platforms to be used, etc. diff --git a/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md new file mode 100644 index 000000000..27eae786c --- /dev/null +++ b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/100-application-architecture.md @@ -0,0 +1,4 @@ +# 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. + diff --git a/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/101-solution-architecture.md b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/101-solution-architecture.md new file mode 100644 index 000000000..4fcd243e0 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/101-solution-architecture.md @@ -0,0 +1,3 @@ +# 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. diff --git a/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/102-enterprise-architecture.md b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/102-enterprise-architecture.md new file mode 100644 index 000000000..7166b027f --- /dev/null +++ b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/102-enterprise-architecture.md @@ -0,0 +1,3 @@ +# 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. diff --git a/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/readme.md b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/readme.md new file mode 100644 index 000000000..4eaab4fa6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/100-software-architect-basics/102-levels-of-architecture/readme.md @@ -0,0 +1,8 @@ +# Levels of Architecture + +Architecture can be done on several “levels” of abstractions. The level influences the importance of necessary skills. As there are many categorizations possible my favorite segmentation includes these 3 levels: + +* **Application Level:** The lowest level of architecture. Focus on one single application. Very detailed, low level design. Communication is usually within one development team. +* **Solution Level:** The mid-level of architecture. Focus on one or more applications which fulfill a business need (business solution). Some high, but mainly low-level design. Communication is between multiple development teams. +* **Enterprise Level:** The highest level of architecture. Focus on multiple solutions. High level, abstract design, which needs to be detailed out by solution or application architects. Communication is across the organization. + diff --git a/content/roadmaps/114-software-architect/content/100-software-architect-basics/readme.md b/content/roadmaps/114-software-architect/content/100-software-architect-basics/readme.md new file mode 100644 index 000000000..354b1d87e --- /dev/null +++ b/content/roadmaps/114-software-architect/content/100-software-architect-basics/readme.md @@ -0,0 +1,3 @@ +# Software Architect Basics + +Understand different concepts such as what is software architecture, software architect, different types of architects and so on. diff --git a/content/roadmaps/114-software-architect/content/101-architect-responsibilities.md b/content/roadmaps/114-software-architect/content/101-architect-responsibilities.md new file mode 100644 index 000000000..35707d0ae --- /dev/null +++ b/content/roadmaps/114-software-architect/content/101-architect-responsibilities.md @@ -0,0 +1,17 @@ +# Architect Responsibilities + +To understand the necessary skills an architect needs, we first need to understand typical activities. The following list contains from my perspective the most important activities: + +* Define and decide development technology and platform +* Define development standards, e.g., coding standards, tools, review processes, test approach, etc. +* Support identifying and understanding business requirements +* Design systems and take decisions based on requirements +* Document and communicate architectural definitions, design and decisions +* Check and review architecture and code, e.g., check if defined patterns and coding standards are implemented properly +* Collaborate with other architects and stakeholders +* Coach and consult developers +* Make sure that as implementation takes place, the architecture is being adhered to +* Play a key part in reviewing code +* Detail out and refine higher level design into lower level design + +_Note: Architecture is a continuous activity, especially when it is applied in agile software development. Therefore, these activities are done over and over again._ diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/100-design-and-architecture.md b/content/roadmaps/114-software-architect/content/102-important-skills/100-design-and-architecture.md new file mode 100644 index 000000000..523781a6c --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/100-design-and-architecture.md @@ -0,0 +1,11 @@ +# 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/) diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/101-decision-making.md b/content/roadmaps/114-software-architect/content/102-important-skills/101-decision-making.md new file mode 100644 index 000000000..83203c0b5 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/101-decision-making.md @@ -0,0 +1,10 @@ +# 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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/102-simplifying-things.md b/content/roadmaps/114-software-architect/content/102-important-skills/102-simplifying-things.md new file mode 100644 index 000000000..4967ffa4a --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/102-simplifying-things.md @@ -0,0 +1,8 @@ +# 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. + +* **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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/103-how-to-code.md b/content/roadmaps/114-software-architect/content/102-important-skills/103-how-to-code.md new file mode 100644 index 000000000..4ee5c12e8 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/103-how-to-code.md @@ -0,0 +1,14 @@ +# 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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/104-documentation.md b/content/roadmaps/114-software-architect/content/102-important-skills/104-documentation.md new file mode 100644 index 000000000..9d64d2ba6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/104-documentation.md @@ -0,0 +1,8 @@ +# Documentation + +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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/105-communication.md b/content/roadmaps/114-software-architect/content/102-important-skills/105-communication.md new file mode 100644 index 000000000..795342228 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/105-communication.md @@ -0,0 +1,10 @@ +# Communication + +From my observations this is one of the most underestimated skill. If you are brilliant in design but cannot communicate your ideas, your thoughts are likely to have less impact or even fail to succeed. + +* **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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/106-estimate-and-evaluate.md b/content/roadmaps/114-software-architect/content/102-important-skills/106-estimate-and-evaluate.md new file mode 100644 index 000000000..3102593e6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/106-estimate-and-evaluate.md @@ -0,0 +1,8 @@ +# 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? diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/107-balance.md b/content/roadmaps/114-software-architect/content/102-important-skills/107-balance.md new file mode 100644 index 000000000..f20746d66 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/107-balance.md @@ -0,0 +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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/108-consult-and-coach.md b/content/roadmaps/114-software-architect/content/102-important-skills/108-consult-and-coach.md new file mode 100644 index 000000000..d0a6b8981 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/108-consult-and-coach.md @@ -0,0 +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. + +* **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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/109-marketing-skills.md b/content/roadmaps/114-software-architect/content/102-important-skills/109-marketing-skills.md new file mode 100644 index 000000000..12e3f0407 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/109-marketing-skills.md @@ -0,0 +1,10 @@ +# Marketing Skills + +Your ideas are great and you have communicated them well but still nobody wants to follow? Then you probably lack marketing skills. + +* **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. diff --git a/content/roadmaps/114-software-architect/content/102-important-skills/readme.md b/content/roadmaps/114-software-architect/content/102-important-skills/readme.md new file mode 100644 index 000000000..b0c1733ca --- /dev/null +++ b/content/roadmaps/114-software-architect/content/102-important-skills/readme.md @@ -0,0 +1,14 @@ +# Important Skills + +To support the laid-out activities specific skills are required. From my experience, read books and discussions we can boil this down to these ten skills every software architect should have: + +* Design +* Decide +* Simplify +* Code +* Document +* Communicate +* Estimate +* Balance +* Consult +* Market diff --git a/content/roadmaps/114-software-architect/content/103-technical-skills.md b/content/roadmaps/114-software-architect/content/103-technical-skills.md new file mode 100644 index 000000000..6059330c5 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/103-technical-skills.md @@ -0,0 +1 @@ +# Technical skills \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/104-programming-languages/100-java-kotlin-scala.md b/content/roadmaps/114-software-architect/content/104-programming-languages/100-java-kotlin-scala.md new file mode 100644 index 000000000..ee994c5c6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/104-programming-languages/100-java-kotlin-scala.md @@ -0,0 +1 @@ +# Java kotlin scala \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/104-programming-languages/101-python.md b/content/roadmaps/114-software-architect/content/104-programming-languages/101-python.md new file mode 100644 index 000000000..7380e43f0 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/104-programming-languages/101-python.md @@ -0,0 +1,17 @@ + + +# Python + +Python is a multi-paradigm language. Being an interpreted language, code is executed as soon as it is written and the Python syntax allows for writing code in functional, procedural or object-oriented programmatic ways. Python is frequently recommended as the first language new coders should learn, because of its focus on readability, consistency, and ease of use. This comes with some downsides, as the language is not especially performant in most production tasks. + +Free Content +Python Website +Python Getting Started +Automate the Boring Stuff +W3Schools - Python Tutorial +Python Crash Course +Codecademy - Learn Python 3 diff --git a/content/roadmaps/114-software-architect/content/104-programming-languages/102-ruby.md b/content/roadmaps/114-software-architect/content/104-programming-languages/102-ruby.md new file mode 100644 index 000000000..8c8caf6fe --- /dev/null +++ b/content/roadmaps/114-software-architect/content/104-programming-languages/102-ruby.md @@ -0,0 +1,8 @@ +# Ruby + +Ruby is a high-level, interpreted programming language that blends Perl, Smalltalk, Eiffel, Ada, and Lisp. Ruby focuses on simplicity and productivity along with a syntax that reads and writes naturally. Ruby supports procedural, object-oriented and functional programming and is dynamically typed. + +Free Content +Ruby Website +Learn Ruby in 20 minutes +Learn Ruby | Codecademy diff --git a/content/roadmaps/114-software-architect/content/104-programming-languages/103-go.md b/content/roadmaps/114-software-architect/content/104-programming-languages/103-go.md new file mode 100644 index 000000000..62d3e60a8 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/104-programming-languages/103-go.md @@ -0,0 +1,17 @@ + + + +# Go + +Go is an open source programming language supported by Google. Go can be used to write cloud services, CLI tools, used for API development, and much more. + +Free Content +A Tour of Go – Go Basics +Go Reference Documentation +Go by Example - annotated example programs +Learn Go | Codecademy +W3Schools Go Tutorial diff --git a/content/roadmaps/114-software-architect/content/104-programming-languages/104-javascript-typescript.md b/content/roadmaps/114-software-architect/content/104-programming-languages/104-javascript-typescript.md new file mode 100644 index 000000000..eefb15d66 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/104-programming-languages/104-javascript-typescript.md @@ -0,0 +1,32 @@ + + +# 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. + +Free Content + +W3Schools – JavaScript Tutorial +The Modern JavaScript Tutorial +Codecademy - Learn JavaScript +JavaScript Crash Course for Beginners + +Node.js Crash Course +Node.js Tutorial for Beginners + + +# TypeScript + +TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale. + +Free Resources +Official Website +Official Docs for Deep Dives +The TypeScript Handbook +TypeScript Tutorial +Scrimba — TypeScript Basics +TypeScript for Beginners diff --git a/content/roadmaps/114-software-architect/content/104-programming-languages/105-dotnet-framework.md b/content/roadmaps/114-software-architect/content/104-programming-languages/105-dotnet-framework.md new file mode 100644 index 000000000..5b76ea87d --- /dev/null +++ b/content/roadmaps/114-software-architect/content/104-programming-languages/105-dotnet-framework.md @@ -0,0 +1,14 @@ +# .NET Framework + +.NET is an open-source platform with tools and libraries for building web, mobile, desktop, games, IoT, cloud, and microservices. + +Officially supported languages in .NET: C#, F#, Visual Basic. + + +Free Content +.NET Website +What is .NET? +Why Choose .NET? +C# Documentation +F# Documentation +Visual Basic Documentation \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/104-programming-languages/readme.md b/content/roadmaps/114-software-architect/content/104-programming-languages/readme.md new file mode 100644 index 000000000..a14baa504 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/104-programming-languages/readme.md @@ -0,0 +1 @@ +# Programming languages \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/100-oop.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/100-oop.md new file mode 100644 index 000000000..70389d826 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/100-oop.md @@ -0,0 +1 @@ +# Oop \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/101-mvc-mvp-mvvm.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/101-mvc-mvp-mvvm.md new file mode 100644 index 000000000..c32a18950 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/101-mvc-mvp-mvvm.md @@ -0,0 +1 @@ +# Mvc mvp mvvm \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/102-cqrs-eventual-consistency.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/102-cqrs-eventual-consistency.md new file mode 100644 index 000000000..d5b79dfc6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/102-cqrs-eventual-consistency.md @@ -0,0 +1 @@ +# Cqrs eventual consistency \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/103-actors.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/103-actors.md new file mode 100644 index 000000000..bb46869dd --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/103-actors.md @@ -0,0 +1 @@ +# Actors \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md new file mode 100644 index 000000000..27dd36219 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/104-acid-cap-theorem.md @@ -0,0 +1,15 @@ +# ACID & CAP Theorem + +ACID (Atomicity, Consistency, Isolation, Durability) and CAP (Consistency, Availability, Partition Tolerance) are essential concepts in distributed systems. They are often used to explain the trade-offs between consistency and availability. + +CAP is an acronym for Consistency, Availability, and Partition Tolerance. According to the CAP theorem, any distributed system can only guarantee two of the three properties at any time. You can't guarantee all three properties at once. + +ACID is an acronym that stands for Atomicity, Consistency, Isolation, Durability. ACID is a set of properties of database transactions intended to guarantee validity even in the event of errors, power failures, etc. + +Free Content +What is CAP Theorem? +CAP Theorem - Wikipedia +An Illustrated Proof of the CAP Theorem +CAP Theorem and it's applications in NoSQL Databases +What is CAP Theorem? +ACID - Wikipedia \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/105-solid.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/105-solid.md new file mode 100644 index 000000000..7d6790eb1 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/105-solid.md @@ -0,0 +1 @@ +# Solid \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-ddd.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-ddd.md new file mode 100644 index 000000000..ec8ad3400 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-ddd.md @@ -0,0 +1 @@ +# Ddd \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-tdd.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-tdd.md new file mode 100644 index 000000000..713a67dfd --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/106-tdd.md @@ -0,0 +1 @@ +# Tdd \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/readme.md b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/readme.md new file mode 100644 index 000000000..fd26b2cf2 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/105-patterns-and-design-principles/readme.md @@ -0,0 +1 @@ +# Patterns and design principles \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/106-architect-tools/100-git.md b/content/roadmaps/114-software-architect/content/106-architect-tools/100-git.md new file mode 100644 index 000000000..65f57e71e --- /dev/null +++ b/content/roadmaps/114-software-architect/content/106-architect-tools/100-git.md @@ -0,0 +1 @@ +# Git \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/106-architect-tools/101-slack.md b/content/roadmaps/114-software-architect/content/106-architect-tools/101-slack.md new file mode 100644 index 000000000..99dc04f07 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/106-architect-tools/101-slack.md @@ -0,0 +1 @@ +# Slack \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/106-architect-tools/102-trello.md b/content/roadmaps/114-software-architect/content/106-architect-tools/102-trello.md new file mode 100644 index 000000000..7cb47728b --- /dev/null +++ b/content/roadmaps/114-software-architect/content/106-architect-tools/102-trello.md @@ -0,0 +1 @@ +# Trello \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/106-architect-tools/103-atlassian-tools.md b/content/roadmaps/114-software-architect/content/106-architect-tools/103-atlassian-tools.md new file mode 100644 index 000000000..6578a17dd --- /dev/null +++ b/content/roadmaps/114-software-architect/content/106-architect-tools/103-atlassian-tools.md @@ -0,0 +1 @@ +# Atlassian tools \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/106-architect-tools/readme.md b/content/roadmaps/114-software-architect/content/106-architect-tools/readme.md new file mode 100644 index 000000000..38da84032 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/106-architect-tools/readme.md @@ -0,0 +1 @@ +# Architect tools \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/107-architectures/100-serverless.md b/content/roadmaps/114-software-architect/content/107-architectures/100-serverless.md new file mode 100644 index 000000000..0ef70d396 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/107-architectures/100-serverless.md @@ -0,0 +1 @@ +# Serverless \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/107-architectures/101-microservices.md b/content/roadmaps/114-software-architect/content/107-architectures/101-microservices.md new file mode 100644 index 000000000..3ace82ef2 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/107-architectures/101-microservices.md @@ -0,0 +1 @@ +# Microservices \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/107-architectures/102-client-server-architecture.md b/content/roadmaps/114-software-architect/content/107-architectures/102-client-server-architecture.md new file mode 100644 index 000000000..04a26d5a1 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/107-architectures/102-client-server-architecture.md @@ -0,0 +1 @@ +# Client server architecture \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/107-architectures/103-layered-architecture.md b/content/roadmaps/114-software-architect/content/107-architectures/103-layered-architecture.md new file mode 100644 index 000000000..7e390d111 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/107-architectures/103-layered-architecture.md @@ -0,0 +1 @@ +# Layered architecture \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/107-architectures/104-distributed-systems.md b/content/roadmaps/114-software-architect/content/107-architectures/104-distributed-systems.md new file mode 100644 index 000000000..7a855f8c9 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/107-architectures/104-distributed-systems.md @@ -0,0 +1 @@ +# Distributed systems \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/107-architectures/105-service-oriented.md b/content/roadmaps/114-software-architect/content/107-architectures/105-service-oriented.md new file mode 100644 index 000000000..3f8dee4b1 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/107-architectures/105-service-oriented.md @@ -0,0 +1 @@ +# Service oriented \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/107-architectures/readme.md b/content/roadmaps/114-software-architect/content/107-architectures/readme.md new file mode 100644 index 000000000..2b9689138 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/107-architectures/readme.md @@ -0,0 +1 @@ +# Architectures \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/108-security/100-hashing-algorithms.md b/content/roadmaps/114-software-architect/content/108-security/100-hashing-algorithms.md new file mode 100644 index 000000000..1d9e5c8fc --- /dev/null +++ b/content/roadmaps/114-software-architect/content/108-security/100-hashing-algorithms.md @@ -0,0 +1 @@ +# Hashing algorithms \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/108-security/101-pki.md b/content/roadmaps/114-software-architect/content/108-security/101-pki.md new file mode 100644 index 000000000..0860e14a5 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/108-security/101-pki.md @@ -0,0 +1 @@ +# Pki \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/108-security/102-owasp.md b/content/roadmaps/114-software-architect/content/108-security/102-owasp.md new file mode 100644 index 000000000..2c3dd94a4 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/108-security/102-owasp.md @@ -0,0 +1 @@ +# Owasp \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/108-security/103-auth-strategies.md b/content/roadmaps/114-software-architect/content/108-security/103-auth-strategies.md new file mode 100644 index 000000000..ad6fbdb7a --- /dev/null +++ b/content/roadmaps/114-software-architect/content/108-security/103-auth-strategies.md @@ -0,0 +1 @@ +# Auth strategies \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/108-security/readme.md b/content/roadmaps/114-software-architect/content/108-security/readme.md new file mode 100644 index 000000000..f76df344c --- /dev/null +++ b/content/roadmaps/114-software-architect/content/108-security/readme.md @@ -0,0 +1 @@ +# Security \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/100-hadoop-spark-mapreduce.md b/content/roadmaps/114-software-architect/content/109-working-with-data/100-hadoop-spark-mapreduce.md new file mode 100644 index 000000000..f7c6242b7 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/100-hadoop-spark-mapreduce.md @@ -0,0 +1 @@ +# Hadoop spark mapreduce \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/101-etl-datawarehouses.md b/content/roadmaps/114-software-architect/content/109-working-with-data/101-etl-datawarehouses.md new file mode 100644 index 000000000..865f27c33 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/101-etl-datawarehouses.md @@ -0,0 +1 @@ +# Etl datawarehouses \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/102-sql-databases.md b/content/roadmaps/114-software-architect/content/109-working-with-data/102-sql-databases.md new file mode 100644 index 000000000..6dc4a0472 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/102-sql-databases.md @@ -0,0 +1 @@ +# Sql databases \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/100-apache-spark.md b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/100-apache-spark.md new file mode 100644 index 000000000..f2b27accd --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/100-apache-spark.md @@ -0,0 +1 @@ +# Apache spark \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/101-hadoop.md b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/101-hadoop.md new file mode 100644 index 000000000..6d8f2dd9d --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/101-hadoop.md @@ -0,0 +1 @@ +# Hadoop \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/102-datawarehouses-principles.md b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/102-datawarehouses-principles.md new file mode 100644 index 000000000..f9cef0f54 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/102-datawarehouses-principles.md @@ -0,0 +1 @@ +# Datawarehouses principles \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/readme.md b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/readme.md new file mode 100644 index 000000000..eb021f46e --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/103-analytics/readme.md @@ -0,0 +1 @@ +# Analytics \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/103-nosql-databases.md b/content/roadmaps/114-software-architect/content/109-working-with-data/103-nosql-databases.md new file mode 100644 index 000000000..827dc6040 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/103-nosql-databases.md @@ -0,0 +1 @@ +# Nosql databases \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/109-working-with-data/readme.md b/content/roadmaps/114-software-architect/content/109-working-with-data/readme.md new file mode 100644 index 000000000..1eae922a6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/109-working-with-data/readme.md @@ -0,0 +1 @@ +# Working with data \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/110-apis-and-integrations/100-grpc.md b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/100-grpc.md new file mode 100644 index 000000000..3b515115f --- /dev/null +++ b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/100-grpc.md @@ -0,0 +1,13 @@ +# gPRC + +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 + +Free Content +gRPC Website +gRPC Introduction +gRPC Core Concepts +Stephane Maarek - gRPC Introduction \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/110-apis-and-integrations/101-esb-soap.md b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/101-esb-soap.md new file mode 100644 index 000000000..9d7705614 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/101-esb-soap.md @@ -0,0 +1 @@ +# Esb soap \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/110-apis-and-integrations/102-graphql.md b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/102-graphql.md new file mode 100644 index 000000000..92b738b69 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/102-graphql.md @@ -0,0 +1 @@ +# Graphql \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/110-apis-and-integrations/103-rest.md b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/103-rest.md new file mode 100644 index 000000000..5088a865c --- /dev/null +++ b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/103-rest.md @@ -0,0 +1 @@ +# Rest \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/110-apis-and-integrations/104-bpm-bpel.md b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/104-bpm-bpel.md new file mode 100644 index 000000000..75c6d72f5 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/104-bpm-bpel.md @@ -0,0 +1 @@ +# Bpm bpel \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/110-apis-and-integrations/105-messaging-queues.md b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/105-messaging-queues.md new file mode 100644 index 000000000..74d60c3f8 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/105-messaging-queues.md @@ -0,0 +1 @@ +# Messaging queues \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/110-apis-and-integrations/readme.md b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/readme.md new file mode 100644 index 000000000..dc6c06d39 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/110-apis-and-integrations/readme.md @@ -0,0 +1 @@ +# Apis and integrations \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/111-web-and-mobile/100-reactive-functional-programming.md b/content/roadmaps/114-software-architect/content/111-web-and-mobile/100-reactive-functional-programming.md new file mode 100644 index 000000000..4454db813 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/111-web-and-mobile/100-reactive-functional-programming.md @@ -0,0 +1 @@ +# Reactive functional programming \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/111-web-and-mobile/101-react-vue-angular.md b/content/roadmaps/114-software-architect/content/111-web-and-mobile/101-react-vue-angular.md new file mode 100644 index 000000000..bebce6848 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/111-web-and-mobile/101-react-vue-angular.md @@ -0,0 +1 @@ +# React vue angular \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/111-web-and-mobile/102-spa-ssr-ssg.md b/content/roadmaps/114-software-architect/content/111-web-and-mobile/102-spa-ssr-ssg.md new file mode 100644 index 000000000..846ee0c27 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/111-web-and-mobile/102-spa-ssr-ssg.md @@ -0,0 +1 @@ +# Spa ssr ssg \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/111-web-and-mobile/103-pwa.md b/content/roadmaps/114-software-architect/content/111-web-and-mobile/103-pwa.md new file mode 100644 index 000000000..78770c79b --- /dev/null +++ b/content/roadmaps/114-software-architect/content/111-web-and-mobile/103-pwa.md @@ -0,0 +1 @@ +# Pwa \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/111-web-and-mobile/104-microfrontends.md b/content/roadmaps/114-software-architect/content/111-web-and-mobile/104-microfrontends.md new file mode 100644 index 000000000..21afeaa52 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/111-web-and-mobile/104-microfrontends.md @@ -0,0 +1 @@ +# Microfrontends \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md b/content/roadmaps/114-software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md new file mode 100644 index 000000000..e301f6abc --- /dev/null +++ b/content/roadmaps/114-software-architect/content/111-web-and-mobile/105-w3c-and-whatwg-standards.md @@ -0,0 +1 @@ +# W3c and whatwg standards \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/111-web-and-mobile/readme.md b/content/roadmaps/114-software-architect/content/111-web-and-mobile/readme.md new file mode 100644 index 000000000..2b50221a0 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/111-web-and-mobile/readme.md @@ -0,0 +1 @@ +# Web and mobile \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/112-architect-frameworks/100-babok.md b/content/roadmaps/114-software-architect/content/112-architect-frameworks/100-babok.md new file mode 100644 index 000000000..52a8255ad --- /dev/null +++ b/content/roadmaps/114-software-architect/content/112-architect-frameworks/100-babok.md @@ -0,0 +1 @@ +# Babok \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/112-architect-frameworks/101-iaf.md b/content/roadmaps/114-software-architect/content/112-architect-frameworks/101-iaf.md new file mode 100644 index 000000000..850255c0b --- /dev/null +++ b/content/roadmaps/114-software-architect/content/112-architect-frameworks/101-iaf.md @@ -0,0 +1 @@ +# Iaf \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/112-architect-frameworks/101-uml.md b/content/roadmaps/114-software-architect/content/112-architect-frameworks/101-uml.md new file mode 100644 index 000000000..feb4939c4 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/112-architect-frameworks/101-uml.md @@ -0,0 +1 @@ +# Uml \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/112-architect-frameworks/102-togaf.md b/content/roadmaps/114-software-architect/content/112-architect-frameworks/102-togaf.md new file mode 100644 index 000000000..08e0973bb --- /dev/null +++ b/content/roadmaps/114-software-architect/content/112-architect-frameworks/102-togaf.md @@ -0,0 +1 @@ +# Togaf \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/112-architect-frameworks/readme.md b/content/roadmaps/114-software-architect/content/112-architect-frameworks/readme.md new file mode 100644 index 000000000..a76aa9330 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/112-architect-frameworks/readme.md @@ -0,0 +1 @@ +# Architect frameworks \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md b/content/roadmaps/114-software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md new file mode 100644 index 000000000..f54744ee5 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/113-management/100-certifications/100-pmi-itil-prince2-rup.md @@ -0,0 +1 @@ +# Pmi itil prince2 rup \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/113-management/100-certifications/readme.md b/content/roadmaps/114-software-architect/content/113-management/100-certifications/readme.md new file mode 100644 index 000000000..208afdd72 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/113-management/100-certifications/readme.md @@ -0,0 +1 @@ +# Certifications \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/100-less.md b/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/100-less.md new file mode 100644 index 000000000..30afd5ee2 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/100-less.md @@ -0,0 +1 @@ +# Less \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/101-safe.md b/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/101-safe.md new file mode 100644 index 000000000..d9a202895 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/101-safe.md @@ -0,0 +1 @@ +# Safe \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/readme.md b/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/readme.md new file mode 100644 index 000000000..98dcdffe0 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/113-management/101-agile-scrum/readme.md @@ -0,0 +1 @@ +# Agile scrum \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/113-management/readme.md b/content/roadmaps/114-software-architect/content/113-management/readme.md new file mode 100644 index 000000000..669db3f43 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/113-management/readme.md @@ -0,0 +1 @@ +# Management \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/114-networks/100-osi-tcp-ip-model.md b/content/roadmaps/114-software-architect/content/114-networks/100-osi-tcp-ip-model.md new file mode 100644 index 000000000..cb058453d --- /dev/null +++ b/content/roadmaps/114-software-architect/content/114-networks/100-osi-tcp-ip-model.md @@ -0,0 +1 @@ +# Osi tcp ip model \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/114-networks/101-http-https.md b/content/roadmaps/114-software-architect/content/114-networks/101-http-https.md new file mode 100644 index 000000000..6eb375120 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/114-networks/101-http-https.md @@ -0,0 +1 @@ +# Http https \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/114-networks/102-proxies.md b/content/roadmaps/114-software-architect/content/114-networks/102-proxies.md new file mode 100644 index 000000000..c57d63629 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/114-networks/102-proxies.md @@ -0,0 +1 @@ +# Proxies \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/114-networks/103-firewalls.md b/content/roadmaps/114-software-architect/content/114-networks/103-firewalls.md new file mode 100644 index 000000000..892d4c16d --- /dev/null +++ b/content/roadmaps/114-software-architect/content/114-networks/103-firewalls.md @@ -0,0 +1 @@ +# Firewalls \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/114-networks/readme.md b/content/roadmaps/114-software-architect/content/114-networks/readme.md new file mode 100644 index 000000000..f7c7e4a8f --- /dev/null +++ b/content/roadmaps/114-software-architect/content/114-networks/readme.md @@ -0,0 +1 @@ +# Networks \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md new file mode 100644 index 000000000..f22c24885 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/100-infrastructure-as-code.md @@ -0,0 +1 @@ +# Infrastructure as code \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/101-cloud-providers.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/101-cloud-providers.md new file mode 100644 index 000000000..8db4b0a15 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/101-cloud-providers.md @@ -0,0 +1 @@ +# Cloud providers \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/102-serverless-concepts.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/102-serverless-concepts.md new file mode 100644 index 000000000..6d59cc0a2 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/102-serverless-concepts.md @@ -0,0 +1 @@ +# Serverless concepts \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/103-linux-unix.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/103-linux-unix.md new file mode 100644 index 000000000..ae08a6b40 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/103-linux-unix.md @@ -0,0 +1 @@ +# Linux unix \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/104-service-mesh.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/104-service-mesh.md new file mode 100644 index 000000000..113d46fc6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/104-service-mesh.md @@ -0,0 +1,8 @@ +# Service Mesh + +A Service Mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. In layman's terms, it's a tool which helps you to control how different services communicate with each other. + +Free Content +Service Mesh explained in 15 Minutes +Red Hat - What is a Service Mesh? +Kubernetes Service Mesh - Blog Post \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/105-ci-cd.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/105-ci-cd.md new file mode 100644 index 000000000..edee7d737 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/105-ci-cd.md @@ -0,0 +1 @@ +# Ci cd \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/106-containers.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/106-containers.md new file mode 100644 index 000000000..e9190fd9a --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/106-containers.md @@ -0,0 +1 @@ +# Containers \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/107-cloud-design-patterns.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/107-cloud-design-patterns.md new file mode 100644 index 000000000..17c562494 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/107-cloud-design-patterns.md @@ -0,0 +1 @@ +# Cloud design patterns \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/115-operations-knowledge/readme.md b/content/roadmaps/114-software-architect/content/115-operations-knowledge/readme.md new file mode 100644 index 000000000..ce6d5d788 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/115-operations-knowledge/readme.md @@ -0,0 +1 @@ +# Operations knowledge \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/116-enterprise-software/100-ms-dynamics.md b/content/roadmaps/114-software-architect/content/116-enterprise-software/100-ms-dynamics.md new file mode 100644 index 000000000..e3668ba18 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/116-enterprise-software/100-ms-dynamics.md @@ -0,0 +1 @@ +# Ms dynamics \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md b/content/roadmaps/114-software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md new file mode 100644 index 000000000..b3ccebd3a --- /dev/null +++ b/content/roadmaps/114-software-architect/content/116-enterprise-software/101-sap-epr-hana-business-objects.md @@ -0,0 +1 @@ +# Sap epr hana business objects \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/116-enterprise-software/102-emc-dms.md b/content/roadmaps/114-software-architect/content/116-enterprise-software/102-emc-dms.md new file mode 100644 index 000000000..b86f9fbf6 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/116-enterprise-software/102-emc-dms.md @@ -0,0 +1 @@ +# Emc dms \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/116-enterprise-software/103-ibm-bpm.md b/content/roadmaps/114-software-architect/content/116-enterprise-software/103-ibm-bpm.md new file mode 100644 index 000000000..2a6485ea9 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/116-enterprise-software/103-ibm-bpm.md @@ -0,0 +1 @@ +# Ibm bpm \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/116-enterprise-software/104-salesforce.md b/content/roadmaps/114-software-architect/content/116-enterprise-software/104-salesforce.md new file mode 100644 index 000000000..e4dbc26a3 --- /dev/null +++ b/content/roadmaps/114-software-architect/content/116-enterprise-software/104-salesforce.md @@ -0,0 +1 @@ +# Salesforce \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/116-enterprise-software/readme.md b/content/roadmaps/114-software-architect/content/116-enterprise-software/readme.md new file mode 100644 index 000000000..5c0b3723d --- /dev/null +++ b/content/roadmaps/114-software-architect/content/116-enterprise-software/readme.md @@ -0,0 +1 @@ +# Enterprise software \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/content/readme.md b/content/roadmaps/114-software-architect/content/readme.md new file mode 100644 index 000000000..4e768b56d --- /dev/null +++ b/content/roadmaps/114-software-architect/content/readme.md @@ -0,0 +1 @@ +# \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/meta.json b/content/roadmaps/114-software-architect/meta.json new file mode 100644 index 000000000..0c0827050 --- /dev/null +++ b/content/roadmaps/114-software-architect/meta.json @@ -0,0 +1,47 @@ +{ + "seo": { + "title": "Software Architect Roadmap: Learn to become a modern Software Architect", + "description": "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.", + "keywords": [ + "solution architect roadmap", + "enterprise architect roadmap", + "guide to becoming a software architect", + "guide to becoming a Software Architect", + "software architect roadmap", + "db administrator roadmap", + "software architect roadmap", + "software architect skills", + "db administrator skills", + "become software architect", + "modern software architect skills", + "software architect skills test", + "skills for software architect", + "skills for software architect", + "learn software architect", + "what is software architect", + "software architect quiz", + "software architect interview questions" + ] + }, + "title": "Software Architect", + "description": "Step by step guide to becoming a Software Architect in 2022", + "featuredTitle": "Software Architect", + "isNew": true, + "type": "role", + "jsonUrl": "/project/software-architect.json", + "featuredDescription": "Step by step guide to become a Software Architect in 2022", + "isCommunity": false, + "featured": true, + "detailed": false, + "versions": [], + "relatedRoadmaps": [ + "backend", + "python", + "python", + "nodejs", + "golang", + "java", + "devops" + ], + "contentPathsFilePath": "./content-paths.json" +} \ No newline at end of file diff --git a/content/roadmaps/114-software-architect/resources.md b/content/roadmaps/114-software-architect/resources.md new file mode 100644 index 000000000..9ea876887 --- /dev/null +++ b/content/roadmaps/114-software-architect/resources.md @@ -0,0 +1,7 @@ +> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup). + +While we prepare the list, follow this simple advice to learn anything + +> Just **pick a project and start working on it**, you will learn all that you need along the way. + +**→**   [All Roadmaps](/roadmaps)  •  [Programming guides](/guides)  •  [Subscribe](/signup) diff --git a/lib/roadmap.ts b/lib/roadmap.ts index f0d2897d2..ed7b71e3d 100644 --- a/lib/roadmap.ts +++ b/lib/roadmap.ts @@ -49,5 +49,5 @@ export function getFeaturedRoadmaps(): RoadmapType[] { } export function isInteractiveRoadmap(id: string): boolean { - return ['frontend', 'backend', 'devops', 'react', 'vue', 'python', 'java', 'blockchain', 'golang', 'javascript', 'nodejs', 'qa', 'design-system', 'angular'].includes(id); + return ['frontend', 'backend', 'devops', 'react', 'vue', 'python', 'java', 'blockchain', 'golang', 'javascript', 'nodejs', 'qa', 'design-system', 'angular', 'software-architect'].includes(id); } diff --git a/pages/[roadmap]/index.tsx b/pages/[roadmap]/index.tsx index be19e6bef..e374f8919 100644 --- a/pages/[roadmap]/index.tsx +++ b/pages/[roadmap]/index.tsx @@ -14,7 +14,7 @@ import MdRenderer from '../../components/md-renderer'; import Helmet from '../../components/helmet'; import { RoadmapPageHeader } from '../../components/roadmap/roadmap-page-header'; import { InteractiveRoadmapRenderer } from './interactive'; -import { FreeSignUp, SIGNUP_EMAIL_INPUT_NAME, SIGNUP_FORM_ACTION } from '../signup'; +import { SIGNUP_EMAIL_INPUT_NAME, SIGNUP_FORM_ACTION } from '../signup'; import { BellIcon, EmailIcon } from '@chakra-ui/icons'; import { RelatedRoadmaps } from '../../components/related-roadmaps'; @@ -107,6 +107,7 @@ export default function Roadmap(props: RoadmapPageProps) { +