Add roadmap meta generation script

pull/1331/head
Kamran Ahmed 3 years ago
parent 810cea40b3
commit 7c3c552ff1
  1. 6
      components/content-page-header.tsx
  2. 2
      components/global-header.tsx
  3. 267
      content/roadmaps.json
  4. 0
      content/roadmaps/.gitkeep
  5. 39
      content/roadmaps/1-frontend/meta.json
  6. 76
      content/roadmaps/1-frontend/resources.md
  7. 39
      content/roadmaps/2-backend/meta.json
  8. 7
      content/roadmaps/2-backend/resources.md
  9. 38
      content/roadmaps/3-devops/meta.json
  10. 7
      content/roadmaps/3-devops/resources.md
  11. 82
      content/roadmaps/4-android/landscape.md
  12. 36
      content/roadmaps/4-android/meta.json
  13. 7
      content/roadmaps/4-android/resources.md
  14. 180
      content/roadmaps/5-postgresql-dba/landscape.md
  15. 40
      content/roadmaps/5-postgresql-dba/meta.json
  16. 7
      content/roadmaps/5-postgresql-dba/resources.md
  17. 10
      content/roadmaps/6-react/landscape.md
  18. 36
      content/roadmaps/6-react/meta.json
  19. 7
      content/roadmaps/6-react/resources.md
  20. 2
      content/roadmaps/7-qa/landscape.md
  21. 30
      content/roadmaps/7-qa/meta.json
  22. 7
      content/roadmaps/7-qa/resources.md
  23. 2
      content/videos/system-design-101.md
  24. 12281
      package-lock.json
  25. 3
      package.json
  26. BIN
      public/roadmaps/android/build-an-application.png
  27. BIN
      public/roadmaps/android/git-github.png
  28. BIN
      public/roadmaps/android/pick-language.png
  29. 49
      public/roadmaps/android/pick-language.svg
  30. BIN
      public/roadmaps/android/roadmap.png
  31. 559
      public/roadmaps/android/roadmap.svg
  32. BIN
      public/roadmaps/android/the-fundamentals.png
  33. BIN
      public/roadmaps/backend.png
  34. BIN
      public/roadmaps/devops.png
  35. BIN
      public/roadmaps/intro.png
  36. BIN
      public/roadmaps/react.png
  37. 48
      scripts/roadmaps-meta.js

@ -13,11 +13,13 @@ export function ContentPageHeader(props: GuideHeaderProps) {
<Box pt={['35px', '35px', '70px']} pb={['35px', '35px', '55px']} borderBottomWidth={1} mb='30px'>
<Container maxW='container.md' position='relative' textAlign={['left', 'left', 'center']}>
<Flex alignItems='center' justifyContent={['flex-start', 'flex-start', 'center']} fontSize={['12px', '12px', '14px']}>
<Link href='#' d='flex' alignItems='center' fontWeight={600} color='gray.500'>
<Link d={['none', 'flex', 'flex']} href='#' alignItems='center' fontWeight={600} color='gray.500'>
<Image mr='7px' w='22px' src='https://github.com/kamranahmedse.png' />
Kamran Ahmed
</Link>
<Text mx='7px' color='gray.500' as='span'>&middot;</Text>
<Text d={['none', 'inline', 'inline']} mx='7px' color='gray.500' as='span'>&middot;</Text>
<Text color='gray.500' as='span'>Monday, May 4, 2021</Text>
<Text d={['none', 'none', 'inline']} mx='7px' color='gray.500' as='span'>&middot;</Text>
<Link d={['none', 'none', 'inline']} color='blue.500' fontWeight={500} href='#'>Improve this Guide</Link>

@ -86,7 +86,7 @@ export function GlobalHeader() {
_hover={{ textDecoration: 'none' }}
fontSize='18px'>
<Image h='30px' w='30px' src='/logo.svg' mr='10px' />
<Text d={['none', 'none', 'block']} as='span'>roadmap.sh</Text>
<Text d={['block', 'block', 'block']} as='span'>roadmap.sh</Text>
</Link>
</Box>
<DesktopMenuLinks />

@ -0,0 +1,267 @@
[
{
"seo": {
"title": "Learn to become a modern frontend developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development. Learn to become a modern frontend developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a developer",
"guide to becoming a frontend developer",
"frontend developer",
"frontend engineer",
"frontend skills",
"frontend development",
"javascript developer",
"frontend development skills",
"frontend development skills test",
"frontend engineer roadmap",
"frontend developer roadmap",
"become a frontend developer",
"frontend developer career path",
"javascript developer",
"modern javascript developer",
"node developer",
"skills for frontend development",
"learn frontend development",
"what is frontend development",
"frontend developer quiz",
"frontend developer interview questions"
]
},
"title": "Frontend Developer",
"description": "Step by step guide to becoming a modern frontend developer",
"featuredDescription": "Step by step guide to becoming a modern frontend developer in 2021",
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
},
"featured": true,
"imagePath": "/roadmaps/frontend.png",
"resourcesPath": "/roadmaps/1-frontend/resources.md",
"url": "/frontend"
},
{
"seo": {
"title": "Learn to become a modern backend developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for modern backend development. Learn to become a modern backend developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a developer",
"guide to becoming a backend developer",
"backend developer",
"backend engineer",
"backend skills",
"backend development",
"javascript developer",
"backend development skills",
"backend development skills test",
"backend engineer roadmap",
"backend developer roadmap",
"become a backend developer",
"backend developer career path",
"javascript developer",
"modern javascript developer",
"node developer",
"skills for backend development",
"learn backend development",
"what is backend development",
"backend developer quiz",
"backend developer interview questions"
]
},
"title": "Backend Developer",
"description": "Step by step guide to becoming a modern backend developer",
"featuredDescription": "Step by step guide to becoming a modern backend developer in 2021",
"featured": true,
"imagePath": "/roadmaps/backend.png",
"resourcesPath": "/roadmaps/2-backend/resources.md",
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
},
"url": "/backend"
},
{
"seo": {
"title": "DevOps Roadmap: Learn to become a DevOps Engineer or SRE",
"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": [
"guide to becoming a devops enginer",
"devops roadmap",
"sre roadmap",
"site reliability engineer roadmap",
"operations roles",
"become devops",
"devops skills",
"modern devops skills",
"devops skills test",
"skills for devops",
"learn devops",
"what is devops",
"what is sre",
"devops quiz",
"devops interview questions"
]
},
"title": "DevOps Roadmap",
"description": "Step by step guide for DevOps or any other Operations Role",
"featuredDescription": "Step by step guide to become an SRE or for any operations role in 2021",
"featured": true,
"imagePath": "/roadmaps/devops.png",
"resourcesPath": "/roadmaps/3-devops/resources.md",
"versions": [
"latest",
"2018",
"2017"
],
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
},
"url": "/devops"
},
{
"seo": {
"title": "Android Developer Roadmap: Learn to become an Android developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming an android developer",
"android developer roadmap",
"android roadmap",
"become android developer",
"android developer skills",
"android skills test",
"skills for android development",
"learn android development",
"what is android",
"android quiz",
"android interview questions"
]
},
"title": "Android Developer",
"description": "Step by step guide to becoming an Android developer",
"featuredDescription": "Step by step guide to becoming a modern Android Developer in 2021",
"isTextHeavy": true,
"communityResource": true,
"featured": true,
"contentPath": "/roadmaps/4-android/landscape.md",
"resourcesPath": "/roadmaps/4-android/resources.md",
"versions": [
"latest",
"2018",
"2017"
],
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
},
"url": "/android"
},
{
"seo": {
"title": "DBA Roadmap: Learn to become a database administrator with PostgreSQL",
"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": [
"guide to becoming a database administrator",
"guide to becoming a DBA",
"dba roadmap",
"db administrator roadmap",
"database administrator roadmap",
"postgresql roadmap",
"dba skills",
"db administrator skills",
"become dba",
"postgresql skills",
"modern dba skills",
"dba skills test",
"skills for dba",
"skills for database administrator",
"learn dba",
"what is dba",
"database administrator quiz",
"dba interview questions"
]
},
"title": "PostgreSQL DBA",
"description": "Step by step guide to becoming a modern PostgreSQL DBA",
"featuredDescription": "Step by step guide to becoming a modern PostgreSQL DBA in 2021",
"contentPath": "/roadmaps/5-postgresql-dba/landscape.md",
"resourcesPath": "/roadmaps/5-postgresql-dba/resources.md",
"author": {
"name": "Alexey Lesovsky",
"url": "https://github.com/lesovsky"
},
"communityResource": true,
"isTextHeavy": true,
"featured": false,
"detailed": false,
"versions": [],
"url": "/postgresql-dba"
},
{
"seo": {
"title": "React Developer Roadmap: Learn to become a React developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a react developer",
"react developer roadmap",
"react roadmap",
"become react developer",
"react developer skills",
"react skills test",
"skills for react development",
"learn react development",
"what is react",
"react quiz",
"react interview questions"
]
},
"title": "React Developer",
"description": "Everything that is there to learn about React and the ecosystem in 2021.",
"featuredDescription": "Everything that is there to learn about React and the ecosystem in 2021.",
"isTextHeavy": false,
"communityResource": false,
"featured": true,
"contentPath": "/roadmaps/6-react/landscape.md",
"resourcesPath": "/roadmaps/6-react/resources.md",
"versions": [
"latest",
"2018",
"2017"
],
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
},
"url": "/react"
},
{
"seo": {
"title": "QA Roadmap: Learn to become a modern QA engineer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for modern QA development. Learn to become a modern QA engineer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a QA engineer",
"QA engineer",
"QA skills",
"QA development skills",
"QA development skills test",
"QA engineer roadmap",
"become a QA engineer",
"QA engineer career path",
"skills for QA development",
"what is QA engineer",
"QA engineer quiz",
"QA engineer interview questions"
]
},
"title": "QA Engineer",
"description": "Steps to follow in order to become a modern QA Engineer in 2021",
"featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2021",
"upcoming": true,
"contentPath": "/roadmaps/7-qa/landscape.md",
"resourcesPath": "/roadmaps/7-qa/resources.md",
"author": {
"name": "Anas Fitiani",
"url": "https://github.com/anas-qa"
},
"url": "/qa"
}
]

@ -0,0 +1,39 @@
{
"seo": {
"title": "Learn to become a modern frontend developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development. Learn to become a modern frontend developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a developer",
"guide to becoming a frontend developer",
"frontend developer",
"frontend engineer",
"frontend skills",
"frontend development",
"javascript developer",
"frontend development skills",
"frontend development skills test",
"frontend engineer roadmap",
"frontend developer roadmap",
"become a frontend developer",
"frontend developer career path",
"javascript developer",
"modern javascript developer",
"node developer",
"skills for frontend development",
"learn frontend development",
"what is frontend development",
"frontend developer quiz",
"frontend developer interview questions"
]
},
"title": "Frontend Developer",
"description": "Step by step guide to becoming a modern frontend developer",
"featuredDescription": "Step by step guide to becoming a modern frontend developer in 2021",
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
},
"featured": true,
"imagePath": "/roadmaps/frontend.png",
"resourcesPath": "./resources.md"
}

@ -0,0 +1,76 @@
<div className='alert alert-primary' style={{ marginBottom: '-10px'}}>
This page is incomplete and is being worked upon. Please check back later or <a href='/signup'>subscribe</a> / <a href='https://twitter.com/kamranahmedse'>follow me on twitter</a> to get notified. Also, feel free to contribute by suggesting the resources in <a href='https://github.com/kamranahmedse/developer-roadmap'>the issues</a>.
</div>
# Become a Frontend Developer
Before I go ahead and list down the resources, please know that the roadmap and the list below is exhaustive and you don't need to know it all from the get go. For frontend development, all you need to get started with is learn some basic HTML, CSS and JavaScript and start working on projects; everything else you will learn along the way.
## Internet and how it works?
Get the basic understanding of internet, browsers, networks and other relevant knowledge.
* <BadgeLink badgeText='Read' href='/guides/what-is-internet'>What is Internet?</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=7_LPdttKXPc'>How the internet works in 5 minutes</BadgeLink>
* <BadgeLink badgeText='Read' href='https://kamranahmed.info/blog/2016/08/13/http-in-depth/'>What is HTTP and how it evolved?</BadgeLink>
* <BadgeLink badgeText='Read' href='https://blog.cloudflare.com/http3-the-past-present-and-future/'>HTTP/3: the past, the present, and the future</BadgeLink>
* <BadgeLink badgeText='Read' href='https://kinsta.com/blog/http3/'>What Is HTTP/3 – Lowdown on the Fast New UDP-Based Protocol</BadgeLink>
* <BadgeLink badgeText='Read' href='https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/'>How Browsers Work: Behind the scenes of modern web browsers</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=Rck3BALhI5c'>DNS as Fast As Possible</BadgeLink>
* <BadgeLink badgeText='Read' href='https://howdns.works/'>How DNS works?</BadgeLink>
* <BadgeLink badgeText='Read' href='/guides/dns-in-one-picture'>DNS in One Picture</BadgeLink>
## Learn HTML
HTML provides the skeleton of a webpage. Learn the basics of HTML; learn the basic tags, learn how to write semantic HTML, understand basic SEO, learn how to divide your pages into sections that will help you style them.
Please know that I have put multiple links for each resource. While you may pick something new while going through each, you don't need to go through all of them - if you feel like you have understood the concepts and are just repeating what you learnt, you may skip the resource and move to exercises section.
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=UB1O30fR-EE'>HTML Crash Course For Absolute Beginners</BadgeLink>
* <BadgeLink badgeText='Read' href='https://www.w3schools.com/html/default.asp'>W3Schools – HTML Tutorial</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=pQN-pnXPaVg'>HTML Full Course - Build a Website Tutorial</BadgeLink>
* <BadgeLink badgeText='Read' href='https://hacks.mozilla.org/2016/08/a-few-html-tips/'>A few HTML tips</BadgeLink>
* <BadgeLink badgeText='Read' href='https://hackernoon.com/six-tips-to-set-up-a-better-html-document-ud1033z3z'>Six tips to set up a better HTML document</BadgeLink>
* <BadgeLink badgeText='Read' href='https://www.w3schools.com/html/html5_semantic_elements.asp'>HTML Semantic Elements</BadgeLink>
* <BadgeLink badgeText='Read' href='https://developer.mozilla.org/en-US/docs/Web/HTML/Element'>HTML elements reference</BadgeLink>
## Style your pages with CSS
With the help of HTML, you create structure for your pages. CSS allows you to style your pages and make them pretty. If you take the analogy of human body, the skeleton would be the HTML, skin would be the CSS and muscles that help us move would be JavaScript - we will learn more about JavaScript in the coming sections.
* <BadgeLink badgeText='Read' href='https://www.w3schools.com/css/'>W3Schools – CSS Tutorial</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=yfoY53QXEnI'>CSS Crash Course For Absolute Beginners</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=Wm6CUkswsNw'>Build An HTML5 Website With A Responsive Layout</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://youtu.be/JJSoEo8JSnc?t=46'>Flexbox CSS In 20 Minutes</BadgeLink>
## Basics of 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. In this section, you will learn the basics of JavaScript.
* <BadgeLink badgeText='Read' href='https://www.w3schools.com/js/'>W3Schools – JavaScript Tutorial</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://youtu.be/hdI2bqOjy3c?t=2'>JavaScript Crash Course for Beginners</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://youtu.be/P7t13SGytRk?t=22'>Build a Netflix Landing Page Clone with HTML, CSS & JS</BadgeLink>
## Version Control Systems and Git
Version control systems allow you to track changes to your codebase/files over time. They allow you to go back to some previous version of the codebase without any issues. Also, they help in collaborating with people working on the same code – if you’ve ever collaborated with other people on a project, you might already know the frustration of copying and merging the changes from someone else into your codebase; version control systems allow you to get rid of this issue.
In this section, you will learn what version control systems are and understand how to use Git which is the de facto VCS.
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=zbKdDsNNOhg'>Version Control System Introduction</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=SWYqp7iY_Tc'>Git & GitHub Crash Course For Beginners</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://youtu.be/Y9XZQO1n_7c?t=21'>Learn Git in 20 Minutes</BadgeLink>
Now that you know what git is go ahead and create an account on [GitHub](https://github.com) and push everything that you do from now on to GitHub so that you can get the practice and get it reviewed from the other people in the community.
## Modern JavaScript
In this section you will learn how to use package managers and get started with the "modern JavaScript".
* <BadgeLink badgeText='Read' href='https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70'>Modern JavaScript for Dinosaurs (Don't worry if you don't understand some parts of it)</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=8Rmj5UY5mJk'>What is NPM and how to use it</BadgeLink>
* <BadgeLink variant='primary' badgeText='Watch' href='https://www.youtube.com/watch?v=jHDhaSSKmB0'>NPM Crash Course</BadgeLink>
<br />
<br />
<br />
<br />
<br />
<br />

@ -0,0 +1,39 @@
{
"seo": {
"title": "Learn to become a modern backend developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for modern backend development. Learn to become a modern backend developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a developer",
"guide to becoming a backend developer",
"backend developer",
"backend engineer",
"backend skills",
"backend development",
"javascript developer",
"backend development skills",
"backend development skills test",
"backend engineer roadmap",
"backend developer roadmap",
"become a backend developer",
"backend developer career path",
"javascript developer",
"modern javascript developer",
"node developer",
"skills for backend development",
"learn backend development",
"what is backend development",
"backend developer quiz",
"backend developer interview questions"
]
},
"title": "Backend Developer",
"description": "Step by step guide to becoming a modern backend developer",
"featuredDescription": "Step by step guide to becoming a modern backend developer in 2021",
"featured": true,
"imagePath": "/roadmaps/backend.png",
"resourcesPath": "./resources.md",
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
}
}

@ -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.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -0,0 +1,38 @@
{
"seo": {
"title": "DevOps Roadmap: Learn to become a DevOps Engineer or SRE",
"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": [
"guide to becoming a devops enginer",
"devops roadmap",
"sre roadmap",
"site reliability engineer roadmap",
"operations roles",
"become devops",
"devops skills",
"modern devops skills",
"devops skills test",
"skills for devops",
"learn devops",
"what is devops",
"what is sre",
"devops quiz",
"devops interview questions"
]
},
"title": "DevOps Roadmap",
"description": "Step by step guide for DevOps or any other Operations Role",
"featuredDescription": "Step by step guide to become an SRE or for any operations role in 2021",
"featured": true,
"imagePath": "/roadmaps/devops.png",
"resourcesPath": "./resources.md",
"versions": [
"latest",
"2018",
"2017"
],
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
}
}

@ -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.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -0,0 +1,82 @@
The intent of this guide is to give you an idea about the Android development landscape and to help guide your learning if you are confused. Before we start, please note that the roadmap is opinionated, and you might have different opinions than those of the author. Having said that, [we would love to hear your opinions](https://github.com/kamranahmedse/roadmap.sh/issues/new) and incorporate them in the roadmap if suitable.
There are multiple ways to develop applications for the android; you can go down the path of hybrid application development where [flutter](https://flutter.dev/), [react-native](https://reactnative.dev/), or [NativeScript](https://www.nativescript.org/) are the most common contenders. Flutter uses Dart, whereas React Native and Native Script rely on JavaScript. Answering the question of hybrid vs native is out of the scope of this roadmap. This roadmap is focused on the native Android apps development but if you are interested in learning any hybrid framework, my personal preference is [react-native](https://reactnative.dev) and I would recommend you to checkout the [Frontend Developer Roadmap](/frontend).
## Complete Roadmap
Here is the full version of the roadmap in a single image and after that we have the broken down version with the resources and links to learn more about each of the boxes.
[![](/roadmaps/android/roadmap.svg)](/roadmaps/android/roadmap.png)
## Broken Down Version
Below is the broken down version of the roadmap with links and resources to learn more about each of the items listed in the complete roadmap above.
## Pick a Language
For the languages, you can develop android apps either by using Kotlin or Java.
[![](/roadmaps/android/pick-language.svg)](/roadmaps/android/pick-language.svg)
Although, you can use both [Kotlin](https://en.wikipedia.org/wiki/Kotlin_(programming_language)) and [Java](https://en.wikipedia.org/wiki/Java_(programming_language)) to develop native android apps, [Google announced in 2019](https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html) to make Kotlin the preferred way of developing android applications. If you were to start learning android development today, Kotlin should be your language of choice.
## The Fundamentals
Install the [Android Studio](https://developer.android.com/studio) and learn the basics of Kotlin to get started.
[![](/roadmaps/android/the-fundamentals.png)](/roadmaps/android/the-fundamentals.png)
We have also listed down some free resources which you can use for the items listed in the image above. If you have some better ones, please do suggest. Also, you don't need to go through all of them, just go through them and pick what you like.
* [Learn the basics of Kotlin](https://blog.teamtreehouse.com/absolute-beginners-guide-kotlin)
* [Kotlin Docs](https://kotlinlang.org/docs/reference/basic-syntax.html) and [Official Kotlin Tutorials](https://kotlinlang.org/docs/tutorials/)
* [Data Structures and Algorithms](https://www.studytonight.com/data-structures/introduction-to-data-structures). Also [check this](https://www.tutorialspoint.com/data_structures_algorithms/index.htm).
* [Kotlin DataStructures](https://kotlinlang.org/docs/reference/collections-overview.html)
* [Algorithms and DataStructures in Kotlin](https://github.com/bmaslakov/kotlin-algorithm-club)
## Version Control Systems
Version control systems record your changes to the codebase and allow you to recall specific versions later. There are multiple Version Control Systems available but [Git](https://git-scm.com/) is the most common one these days.
[![](/roadmaps/android/git-github.png)](/roadmaps/android/git-github.png)
Here are some of the resources to get you started. Feel free to google and find something else that you find easier.
* [Udacity — Version Control with Git](https://www.udacity.com/course/version-control-with-git--ud123)
* [GitHub Hello World](https://guides.github.com/activities/hello-world/)
## Building an Application
Here is the list of items that you are going to need when developing Android applications. Please note that, this is an exhaustive list, and you don't need to know it all from the get-go. Get an idea of the items listed, and just start building some apps and keep the items listed in the back of your mind and have a deep dive when using them.
[![](/roadmaps/android/build-an-application.png)](/roadmaps/android/build-an-application.png)
To learn more about the items listed in the image above, here are the links to the relevant docs
* [Using Activities and Activity Life Cycles](https://developer.android.com/guide/components/activities/intro-activities)
* Building Flexible Interfaces using [Fragments](https://developer.android.com/guide/components/fragments)
* [Debugging using Android Studio Debugger](https://developer.android.com/studio/debug)
* [Handling App Configurations](https://developer.android.com/work/managed-configurations)
* [Using Intents and Intent Filters](https://developer.android.com/guide/components/intents-filters)
* [Understand Context](https://guides.codepath.com/android/Using-Context)
* [Learn about Multithreading](https://developer.android.com/training/multiple-threads)
* [Data Privacy](https://www.raywenderlich.com/6901838-data-privacy-for-android)
* [Securing Network Data](https://www.raywenderlich.com/5634-securing-network-data-tutorial-for-android)
* [Dependency Injection](https://developer.android.com/training/dependency-injection)
* [Content Providers](https://developer.android.com/guide/topics/providers/content-providers)
* [Glide](https://github.com/bumptech/glide), [Retrofit](https://square.github.io/retrofit/), [Crashlytics](https://firebase.google.com/docs/crashlytics/get-started), [GSON](https://github.com/google/gson)
* [Room](https://developer.android.com/topic/libraries/architecture/room), [Navigation](https://developer.android.com/guide/navigation/navigation-getting-started), [Work Manager](https://developer.android.com/topic/libraries/architecture/workmanager), [LiveData](https://developer.android.com/topic/libraries/architecture/livedata), [Data Binding](https://developer.android.com/topic/libraries/data-binding)
* [RxJava](https://github.com/ReactiveX/RxJava), [RxKotlin](https://github.com/ReactiveX/RxKotlin)
* [Memory Management Overview](https://developer.android.com/topic/performance/memory-overview)
* [Diving deeper into context-oriented programming in Kotlin](https://proandroiddev.com/diving-deeper-into-context-oriented-programming-in-kotlin-3ecb4ec38814)
I would highly recommend watching [this free course](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012) from google on Developing Android Apps with Kotlin. Also, here are some of the resources to learn more about the topics listed above.
* [Developing Android Apps with Kotlin](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012)
* [Android Developer Guides](https://developer.android.com/guide)
* [Raywenderlich](https://www.raywenderlich.com)
## Wrap Up
That wraps it up for the android developer roadmap. Again, remember to not be exhausted by the list; just learn the basics and start working on some project, rest of the learnings will come along the way. Good luck!
For any suggestions, improvements and feedback, feel free to [submit an issue](https://github.com/kamranahmedse/roadmap.sh) or reach out to me on twitter [@kamranahmedse](https://twitter.com/kamranahmedse).
<!-- @fixme add padding to the container -->
<br /><br /><br />

@ -0,0 +1,36 @@
{
"seo": {
"title": "Android Developer Roadmap: Learn to become an Android developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming an android developer",
"android developer roadmap",
"android roadmap",
"become android developer",
"android developer skills",
"android skills test",
"skills for android development",
"learn android development",
"what is android",
"android quiz",
"android interview questions"
]
},
"title": "Android Developer",
"description": "Step by step guide to becoming an Android developer",
"featuredDescription": "Step by step guide to becoming a modern Android Developer in 2021",
"isTextHeavy": true,
"communityResource": true,
"featured": true,
"contentPath": "./landscape.md",
"resourcesPath": "./resources.md",
"versions": [
"latest",
"2018",
"2017"
],
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
}
}

@ -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.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -0,0 +1,180 @@
The intent of this guide is to give you an idea about the DBA landscape and to help guide your learning if you are confused. The roadmap is highly opinionated — neither, knowing everything listed in the roadmap, nor the order of items given in the roadmap is required to be followed in order to be a DBA.
## Learn basic RDBMS terms and concepts
Get basic understanding of Postgres key terms and basic RDBMS concepts.
- **Object model**: data types, columns, rows, tables, schemas, databases, queries.
- **Relational model**: domains, attributes, tuples, relations, constraints, NULL.
- **Databases high-level concepts**: ACID, MVCC, transactions, write-ahead log, query processing.
- **Links**:
- [Postgres Glossary](https://www.postgresql.org/docs/13/glossary.html)
- SQL and Relational Theory - Christopher J. Date, 2009
- Database Design and Relational Theory - Christopher J. Date, 2012
## Learn how to install and run PostgreSQL
Get practical skills of how to set up and run Postgres to get a working environment for further learning.
- Using package managers (APT, YUM, etc.)
- Using `docker`.
- Managing Postgres service using `systemd` (start, stop, restart, reload).
- Managing Postgres service using `pg_ctl`, or OS-specific tools (like `pg_ctlcluster`).
- Connect to Postgres using `psql`.
- Deploy database service in cloud environment (AWS, GCE, Azure, Heroku, DigitalOcean, etc...).
- **Links**:
- [Official download and install instructions](https://www.postgresql.org/download/)
- [Official Docker images](https://hub.docker.com/_/postgres)
## Learn SQL concepts
Get practical skills of how to create and manipulate database objects and how to execute queries using `psql` client.
- Understand basic data types.
- **DML queries**: querying data, modifying data, filtering data, joining tables.
- **Advanced topics**: transactions, CTE, subqueries, lateral join, grouping, set operations.
- **DDL queries**: managing tables and schemas (create, alter, drop).
- Import and export data using `COPY`.
- **Links**:
- [DB Fiddle](https://www.db-fiddle.com/)
- [PostgreSQL Tutorial](https://www.postgresqltutorial.com/)
- [PostgreSQL SQL Getting Started](https://www.postgresql.org/docs/current/tutorial-sql.html)
- [The SQL Language](https://www.postgresql.org/docs/current/sql.html)
## Learn how to configure Postgres
Get understanding of the main aspects of how Postgres could be configured. Deep understanding of Postgres internals is not yet necessary here.
- postgresql.conf:
- Resources usage
- Write-ahead Log
- Checkpoints and Background Writer
- Cost-based vacuum and auto-vacuum
- Replication
- Query planner
- Reporting, logging and statistics
- Adding extra extensions
- ...keep exploring other configuration options
- **Links**:
- [Postgresqlco.nf](http://postgresqlco.nf/)
## Learn Postgres security concepts
Get understanding about basic security concepts and common ways of how to deploy secure configurations.
- Authentication models, roles, pg_hba.conf, SSL settings.
- **Objects privileges**: grant/revoke, default privileges.
- **Advanced topics** - row-level security, selinux.
- **Links**:
- [Client authentication](https://www.postgresql.org/docs/current/client-authentication.html)
- [Roles and users managements](https://www.postgresql.org/docs/current/user-manag.html)
## Develop infrastructure DBA skills
Get practical skills of how to deploy, extend, maintain and support Postgres installations and 3rd-party Postgres ecosystem software.
- **Replication**: streaming replication, logical replication
- **Backup/recovery tools**:
- Built-in: `pg_dump`, `pg_dumpall`, `pg_restore`, `pg_basebackup`
- 3rd-party: `barman`, `pgbackrest`, `pg_probackup`, `WAL-G`
- Backup validation procedures
- **Upgrading procedures**
- Minor and major upgrades using `pg_upgrade`
- Upgrades using logical replication
- **Connection pooling**:
- `Pgbouncer`
- Alternatives: `Pgpool-II`, `Odyssey`, `Pgagroal`
- **Infrastructure monitoring**: `Prometheus`, `Zabbix`, other favourite monitoring solution
- **High availability and cluster management tools**:
- `Patroni`
- **Alternatives**: `Repmgr`, `Stolon`, `pg_auto_failover`, `PAF`
- **Applications Load Balancing and Service Discovery**: `Haproxy`, `Keepalived`, `Consul`, `Etcd`
- **Deploy Postgres on `Kubernetes`**: Simple `StatefulSet` setup, `HELM`, operators
- Resource usage and provisioning, capacity planning
## Learn how to automate routines
Get practical skills, learn automation tools and automate existing routine tasks.
- Automation using shell scripts or any other favourite language (`Bash`, `Python`, `Perl`, etc)
- Configuration management: `Ansible`, `Salt`, `Chef`, `Puppet`
## Develop application DBA skills
Learn theory and get practical skills of how applications should work with Postgres
- **Migrations**:
- practical patterns and antipatterns
- tools: `liquibase`, `sqitch`, language-specific tools
- Data import/export, bulk loading and processing
- **Queues**:
- practical patterns and anti-patterns
- `Skytools PGQ`
- Data partitioning and sharding patterns.
- Database normalization and normal forms.
- Books:
- The Art of PostgreSQL - Dimitri Fontaine, 2020
## Learn Postgres advanced topics
Here is important to continuously extend and develop existing knowledge about Postgres.
- **Low level internals**:
- Processes and memory architecture
- Vacuum processing
- Buffer management
- Lock management
- [Physical storage and file layout](https://www.postgresql.org/docs/current/storage.html)
- [System catalog](https://www.postgresql.org/docs/current/catalogs.html)
- **Fine-grained tuning**:
- Per-user, per-database settings
- [Storage parameters](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS)
- Workload-dependant tuning: OLTP, OLAP, HTAP
- **Advanced SQL topics**:
- PL/pgSQL, procedures and functions, triggers
- Aggregate and window functions
- Recursive CTE
- **Links**:
- [The Internals of PostgreSQL](http://www.interdb.jp/pg/index.html) for database administrators and system developers
- [PL/pgSQL Guide](https://www.postgresql.org/docs/current/plpgsql.html)
## Learn Postgres troubleshooting techniques
Get basic understanding about troubleshooting tools and get practical skills of how to detect and resolve problems.
- **Operating system tools**
- `top` (`htop`, `atop`)
- `sysstat`
- `iotop`
- **Postgres system views**
- `pg_stat_activity`
- `pg_stat_statements`
- **Postgres tools**
- `pgcenter` - *personal recommendation*
- **Query analyzing**:
- [EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html)
- [Depesz](https://explain.depesz.com/) online EXPLAIN visualization tool
- [PEV](https://tatiyants.com/pev/#/plans) online EXPLAIN visualization tool
- [Tensor](https://explain.tensor.ru/) online EXPLAIN visualization tool, RU language only
- **Log analyzing**:
- `pgBadger`
- Ad-hoc analyzing using `grep`, `awk`, `sed`, etc.
- **External tracing/profiling tools**: `gdb`, `strace`, `perf-tools`, `ebpf`, core dumps
- **Troubleshooting methods**: USE, RED, Golden signals
- **Links**:
- [Linux Performance](http://www.brendangregg.com/linuxperf.html) by Brendan Gregg
- [USE Method](http://www.brendangregg.com/usemethod.html)
## Learn SQL optimization technics
Get understanding and practical skills of how to optimize SQL queries.
- **Indexes, and their use cases**: B-tree, Hash, GiST, SP-GiST, GIN, BRIN
- SQL queries patterns and anti-patterns
- SQL schema design patterns and anti-patterns
- **Links**:
- [Use the Index, Luke](https://use-the-index-luke.com/) - a Guide to Database Performance for Developers
- **Books**:
- SQL Antipatterns: Avoiding the Pitfalls of Database Programming - Bill Karwin, 2010
## Develop architect skills
Get deeper understanding of Postgres use cases and where Postgres is suitable and where is not.
- **Postgres forks and extensions**: `Greenplum`, `Timescaledb`, `Citus`, `Postgres-XL`, etc.
- RDBMS in general, benefits and limitations
- Differences between Postgres and other RDBMS and NoSQL databases
## Develop Postgres hacker skills
Get involved to Postgres community and contribute to Postgres; be a useful member of Postgres, and the open source community; use personal experience to help other people.
- Daily reading and answering in [mailing lists](https://www.postgresql.org/list/)
- pgsql-general
- pgsql-admin
- pgsql-performance
- pgsql-hackers
- pgsql-bugs
- Reviewing patches
- Writing patches, attending in [Commitfests](https://commitfest.postgresql.org/)
<br />
<br />
<br />

@ -0,0 +1,40 @@
{
"seo": {
"title": "DBA Roadmap: Learn to become a database administrator with PostgreSQL",
"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": [
"guide to becoming a database administrator",
"guide to becoming a DBA",
"dba roadmap",
"db administrator roadmap",
"database administrator roadmap",
"postgresql roadmap",
"dba skills",
"db administrator skills",
"become dba",
"postgresql skills",
"modern dba skills",
"dba skills test",
"skills for dba",
"skills for database administrator",
"learn dba",
"what is dba",
"database administrator quiz",
"dba interview questions"
]
},
"title": "PostgreSQL DBA",
"description": "Step by step guide to becoming a modern PostgreSQL DBA",
"featuredDescription": "Step by step guide to becoming a modern PostgreSQL DBA in 2021",
"contentPath": "./landscape.md",
"resourcesPath": "./resources.md",
"author": {
"name": "Alexey Lesovsky",
"url": "https://github.com/lesovsky"
},
"communityResource": true,
"isTextHeavy": true,
"featured": false,
"detailed": false,
"versions": []
}

@ -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.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -0,0 +1,10 @@
The intent of this guide is to give you an idea about the React ecosystem and to help guide your learning if you are confused. We have another [roadmap on the Frontend Development](/frontend) that focuses on the frontend development if you are interested in that.
Also, please note that the list below is exhaustive, and the items are listed in no particular order. You don't need to learn everything listed in the picture, however knowing what you don't know is as important as knowing things.
![](/roadmaps/react.png)
Please note that the list is opinionated, and you might have different opinions than those of the author. Having said that, [we would love to hear your opinions](https://github.com/kamranahmedse/roadmap.sh/issues/new) and incorporate them in the picture if suitable.
<!-- @fixme add padding to the container -->
<br /><br /><br />

@ -0,0 +1,36 @@
{
"seo": {
"title": "React Developer Roadmap: Learn to become a React developer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a react developer",
"react developer roadmap",
"react roadmap",
"become react developer",
"react developer skills",
"react skills test",
"skills for react development",
"learn react development",
"what is react",
"react quiz",
"react interview questions"
]
},
"title": "React Developer",
"description": "Everything that is there to learn about React and the ecosystem in 2021.",
"featuredDescription": "Everything that is there to learn about React and the ecosystem in 2021.",
"isTextHeavy": false,
"communityResource": false,
"featured": true,
"contentPath": "./landscape.md",
"resourcesPath": "./resources.md",
"versions": [
"latest",
"2018",
"2017"
],
"author": {
"name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse"
}
}

@ -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.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -0,0 +1,2 @@
## QA Roadmap
Roadmap to becoming a QA Engineer

@ -0,0 +1,30 @@
{
"seo": {
"title": "QA Roadmap: Learn to become a modern QA engineer",
"description": "Community driven, articles, resources, guides, interview questions, quizzes for modern QA development. Learn to become a modern QA engineer by following the steps, skills, resources and guides listed in this roadmap.",
"keywords": [
"guide to becoming a QA engineer",
"QA engineer",
"QA skills",
"QA development skills",
"QA development skills test",
"QA engineer roadmap",
"become a QA engineer",
"QA engineer career path",
"skills for QA development",
"what is QA engineer",
"QA engineer quiz",
"QA engineer interview questions"
]
},
"title": "QA Engineer",
"description": "Steps to follow in order to become a modern QA Engineer in 2021",
"featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2021",
"upcoming": true,
"contentPath": "./landscape.md",
"resourcesPath": "./resources.md",
"author": {
"name": "Anas Fitiani",
"url": "https://github.com/anas-qa"
}
}

@ -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.
**&rarr;** &nbsp; [All Roadmaps](/roadmaps) &nbsp;&bull;&nbsp; [Programming guides](/guides) &nbsp;&bull;&nbsp; [Subscribe](/signup)

@ -2,7 +2,7 @@ System Design is a broad topic. In this video, we discuss all the bits and piece
in depth of each of the topic but this is to give you a high level overview of all the pieces involved. The topics
covered in this video include:
<PremiumBlock
<PremiumBlock
title='Premium Video'
description='This content is available only for the paid members.'
/>

12281
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -6,7 +6,8 @@
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
"lint": "next lint",
"meta:roadmaps": "node ./scripts/roadmaps-meta.js"
},
"dependencies": {
"@chakra-ui/icons": "^1.0.14",

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@ -0,0 +1,48 @@
const fs = require('fs');
const path = require('path');
const STORAGE_PATH = path.join(__dirname, '../content');
const ROADMAPS_PATH = path.join(__dirname, '../content/roadmaps');
const META_FILE_PATH = path.join(__dirname, '../content/roadmaps.json');
const roadmapDirs = fs.readdirSync(ROADMAPS_PATH);
console.log(`[x] ${roadmapDirs.length} roadmaps found`);
const roadmapsMeta = roadmapDirs.reduce((metaAcc, roadmapDirName) => {
const roadmapSlug = roadmapDirName.replace(/^\d+-/, '');
const roadmapDir = path.join(ROADMAPS_PATH, roadmapDirName);
const roadmapMeta = require(path.join(roadmapDir, 'meta.json'));
// We can't use the absolute path in the build e.g. ~/Users/user/where-build-is-running/content
// So, we remove it and use the path relative to content directory
let contentPath = roadmapMeta.contentPath;
if (contentPath) {
contentPath = path.join(roadmapDir.replace(STORAGE_PATH, ''), roadmapMeta.contentPath);
}
let resourcesPath = roadmapMeta.resourcesPath;
if (resourcesPath) {
resourcesPath = path.join(roadmapDir.replace(STORAGE_PATH, ''), roadmapMeta.resourcesPath);
}
console.log(`----------------------------`);
console.log(`[#] Roadmap: ${roadmapMeta.title}`);
console.log(`[x] Generating sidebar`);
return [
...metaAcc,
{
...roadmapMeta,
url: `/${roadmapSlug}`,
contentPath: contentPath,
resourcesPath: resourcesPath
}
];
}, []);
console.log(`----------------------------`);
console.log(`[x] Meta generated for ${roadmapsMeta.length} roadmaps`);
console.log(`[x] Writing file ${META_FILE_PATH}`);
fs.writeFileSync(META_FILE_PATH, JSON.stringify(roadmapsMeta, null, 2));
console.log(`[x] Wrote file with content`);
console.log(JSON.stringify(roadmapsMeta, null, 2));
Loading…
Cancel
Save