The roadmap is made for anyone who wants to become a modern back-end developer, focusing on the world of REST and microservice architecture. It covers everything from basic stuff to advanced technology including publicly available sources, topic-related tasks, and projects to have an idea of the full cycle of developing the backend of modern projects.
-
Sources
-
Additions
- Watch CS50 2020 (You can watch other years lectures, later is better)
-
Sources
-
Additions
- Watch CS50 2020 (You can watch other years lectures, later is better)
-
Sources
-
Additions
-
Sources
-
Practices
- Install Linux based OS(Ubuntu is preferred) on your computer.
-
Sources
-
Practices
- Task1: Write a command that searches files of a folder.
- Task2: Write a command that inserts the last 20 commands executed on your terminal into a file(ex:
2022-03-28_12-43-36.txt
) and save it on your Desktop naming it with the current timestamp of the command executed.
-
Sources
-
Practices
- Task1: Write a bash script(
screenshot.sh
) that screenshots your screen every givenn
seconds from terminal input. Name and store each screenshot file(ex:Screen Shot 2022-03-28 at 17.48.06.jpg
) in a folder(ex:2022-03-28
) named based on a timestamp of each screenshot respectively. If a folder does not exist, your script should create it and store it into a folder that is namedscreenshot data
placed next to the script file.
- Task1: Write a bash script(
- Write a bash script(
remove_duplicates.sh
) that removes duplicate files in a folder.
-
Sources
-
Practices
- Open an account on GitLab or you can use your existing account.
- Set Up an
SSH
key on that account to use securely and conveniently. - Create a private group starting with the name
Bootcamp2022
attaching your name to it(Bootcamp2022-{YourName}
, ex:Bootcamp2022-JohnDoe
), then invite your mentors to that group. - Then create a new private project with the name
backend
in that group. - Clone it to a folder(
Bootcamp2022-{YourName}
, ex:Bootcamp2022-JohnDoe
) on your computer. - Write an essay about:
- Tell me about yourself.
- Why did you choose CS?
- Tell us about your plans for the next 1 and 3 years.
- Decorate the
README.md
file as you wish and include your essay in it then commit it with a meaningful message.
- Create folders with names of the Bootcamp topics and include your practical tasks in those folders respectively:
- On the
Terminal Commands
folder: create aREADME.md
including your practical tasks commands with the explanation of it, also include some of the output examples that your command produced. - On the
Shell Scripting
folder: include your scripts file on that folder from the practical tasks and exclude thedata
folder not to be tracked by git by inserting it on the.gitignore
file. - On the
Git
folder: IncludeREADME.md
with your essay in it.
- On the
- And commit each step with meaningful messages and push everything to the
main
branch of your repo.
-
Sources
-
Practices
-
Sources
-
Practices
-
Sources
-
Practices
- Create a node web server that reads files from its own source codes based on the entered URL path variable and displays their contexts to a web browser. The default page should display
index.js
context, other files should be accessed based on the URL path variable. If the file does not exist it should displayThere is no file with a name {path varibale}
.
- Create a node web server that reads files from its own source codes based on the entered URL path variable and displays their contexts to a web browser. The default page should display
-
Sources
-
Practices
- Develop simple in-memory Blogpost CRUD REST APIs using NodeJS+Express.
-
Sources
-
Practices
- Testing Blogpost CRUD REST APIs using postman.
- Create a simple blogpost website using NodeJS as a web server.
-
Sources
-
Practices
- Task1: Swap 2 numbers. In this task, a user is asked to enter two numbers and the program will swap two numbers without using the third variable.
package main import "fmt" func main() { var a, b int = 3, 4 // fmt.Scanf("%d", &a) // fmt.Scanf("%d", &b) fmt.Printf("a = %d, b = %d\n", a, b) // // WRITE YOUR CODE HERE // fmt.Printf("a = %d, b = %d\n", a, b) }
Example:
a = 3, b = 4 a = 4, b = 3
- Task2: isOdd and isEven. Write go functions to check whether a number is even and is odd.
package main import "fmt" func main() { var a, b int = 3, 4 // fmt.Scanf("%d", &a) // fmt.Scanf("%d", &b) fmt.Printf("a = %d, b = %d\n", a, b) // fmt.Println(a, "is odd: ", isOdd(a)) // fmt.Println(b, "is even: ", isEven(b)) } // func isEven(num int) bool { // // // // WRITE YOUR CODE HERE // // // } // func isOdd(num int) bool { // // // // WRITE YOUR CODE HERE // // // }
Example:
a = 3, b = 4 3 is odd: true 4 is even: true
- Task3: Area of a circle inscribed in a square. Find the shaded region by given R(radius of the circle).
package main import ( "fmt" ) func main() { var r float32 = 10.04 // fmt.Scanf("%f", &r) fmt.Println("R =", r) fmt.Printf("Area: %0.2f\n", area(r)) } func area(r float32) (area float32) { // // WRITE YOUR CODE HERE // return area }
Example:
R = 10.04 Area: 86.53
- FizzBuzz
package main func main() { for i := 1; i <= 100; i++ { FizzBuzz() } } func FizzBuzz() { // // WRITE YOUR CODE HERE // }
- Find a weekday from a given date
package main import ( "fmt" "time" ) func main() { dobStr := "20.04.1998" // Replace this date with your birthday givenDate, err := time.Parse("02.01.2006", dobStr) if err != nil { panic(err) } fmt.Printf("%s is %s", givenDate.Format("02-01-2006"), FindWeekday(givenDate)) } func FindWeekday(date time.Time) (weekday string) { // // WRITE YOUR CODE HERE // return }
- Display numbers from 1 to 100 in reverse order using DEFER
package main func main() { DisplayNumberInReverseOrderWithDefer() } func DisplayNumberInReverseOrderWithDefer() { for i := 0; i < 100; i++ { // // WRITE YOUR CODE HERE // } }
- Write a function to calculate square root. Given a positive number n and precision p, find the square root of the number up to p decimal places using binary search.
package main import ( "fmt" ) func main() { fmt.Println(MySquareRoot(10, 12)) } func MySquareRoot(num, precision uint) (result float64) { // DO NOT USE math.Sqrt! // // WRITE YOUR CODE HERE // return }
- Find the Minimum Number. Link: https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number/problem
package main func main() { n := 12 // Read n from input DisplayMinimumNumberFunction(n) } // https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number func DisplayMinimumNumberFunction(n int) { // // WRITE YOUR CODE HERE // }
- Task1: Write a
bigint
package.- func NewInt(num string) (Bigint, error)
- func (z *Bigint) Set(num string) error
- func Add(a, b Bigint) Bigint
- func Sub(a, b Bigint) Bigint
- func Multiply(a, b Bigint) Bigint
- func Mod(a, b Bigint) Bigint
- func (x *Bigint) Abs() Bigint
Example:
a, err :=bigint.NewInt("988847123412385995937737458959") if err != nil { panic(err) } b, err :=bigint.NewInt("21231231231231231231231231233") if err != nil { panic(err) } err = b.Set("1") // b = "1" if err != nil { panic(err) } c:=bigint.Add(a, b) // c = "988847123412385995937737458960" d:=bigint.Sub(a, b) // d = "988847123412385995937737458958" e:=bigint.Multiply(a, b) // e = "988847123412385995937737458959" f:=bigint.Mod(a, b) // f = "0"
- Task2: Write tests on your own
bigint
package.
-
Sources https://github.com/gin-gonic/gin
-
Practices
- Task1: Develop simple in-memory Blogpost CRUD REST APIs using Golang+Gin.
- Task2: Testing Blogpost CRUD REST APIs using Golang+Gin
-
Sources
-
Practices
- Task1: Write SQL queries into a file to create
blogpost
database with neccessary tables such asarticle
,author
. - Task2: Write SQL queries file to fill blogpost database tables with dummy data.
- query all articles using params such as filters, offset, limit, sort and order.
- query all authors using params such as filters, offset, limit, sort and order.
- query author by id with his/her all articles.
- Task1: Write SQL queries into a file to create
-
Sources
-
Practices
- Connect Blogpost project to postgreSQL database using golang and sqlx.
- Add storage to Articles CRUD.
-
Sources
-
Practices
- Write database migrations to the blogpost project.
-
Sources
-
Practices
- Write swagger documentation to the Blogpost CRUD REST APIs using Golang+Gin+Swaggo.
- Develop a simple blogpost REST APIs using Golang + Gin + SQLX(PostgreSQL) + Swaggo (+Include testing).
-
Sources
-
Practices
- Install and Configure Protocol Buffers (protoc).
-
Sources
-
Practices
- Develop article(server) and gateway(client) services. And connect them with gRPC.
- Sources
- Practices
- Dockerize your Go app
- Building A Containerized Microservices for a simple blogpost project.
Fireship | freeCodeCamp.org | TutorialEdge | Traversy Media | CS50 | geeksforgeeks | Coding For Everybody | DoS - Domain of Science | Basics Explained, H3Vtux | LetsCode | Tren Black | OpenCanvas | Neso Academy | Techquickie | DorianDotSlash | Ksk Royal | Linux Tex | Gary Explains | Android and Tech Solutions | Colt Steel | Tech With Tim | Victor Geislinger | devdojo | Programming with Mosh | uidotdev | James Q Quick | JavaScript Mastery | Troy Amelotte | Stephane Maarek | Gopher Guides | Tech and Beyond With Moss | The Linux Foundation | Simplilearn | Amigoscode |
If you have any feedback, please reach out to me at saidamir.botirov@gmail.com
Roadmap by Saidamir Botirov (Inspired by Udevs)
This work is licensed under a Creative Commons Attribution 4.0 International License.