---
# System prepended metadata

title: Roadmap

---

# Roadmap

![](https://hackmd.io/_uploads/B12t6_aGp.png)

## Timeline

Industrial experience like internships and placements are mostly done after completing the 3rd year (during summer breaks). Before applying, students should be well versed in concepts and skills like:
- Data Structure
- Algorithms (solve Leetcode questions)
- Computer science fundamentals
- Web development (Full stack like MERN)
- Extra skills (see below)
- Blockchain (niche specific, can also be AI/ML/Android/others)

### 1st Internship
  - When: At the end of 3rd year (summer vacation before the start of 4th year: May-July)
  - Duration: 2-3 months
  - Searching: Start applying during the last semester of 3rd year (Jan-April)
  - Aim: Try to get pre-placement offer or internship for next year

### 2nd Internship (until Graduation)
  - When: Last semester of college i.e second semester of 4th year (Jan-July)
  - Duration: 5-6 months
  - Searching: Start applying during the first semester of 4th year (Aug-Dec)
  - Aim: Try to get placement offer

### Placement
- By the end of 2nd internship, students usually get placed.

**NOTE**: When searching for 2nd internship, also start applying for **placements**

## Skills

### Programming Languages

These are all the programming languages that you would be learning, if you are following this roadmap.

- Java
- Javascript/Typescript
- Golang
- Bash
- Solidity
- SQL

### Extra Skills (must haves)

These extra skills are earned throughout the college life and overall career. Try to get to a decent level of proficiency in each of these before the start of **3rd year**. The key to grasp these skills is:
- Learn very basic on how to use them
- Start using them in day-to-day life
- Once gets comfortable, learn their advanced form like their complex use cases, how they work internally etc.
- Keep using them regularly (if can't use, then just go through questions on that topic)

**Skills**:
- Command line interface (CLI) fluency - using Terminal
- Bash scripting (programming language)
- Linux (using Ubuntu)
- Git and Github
- How internet works - web protocols, networking, DNS, URL etc.
- Simple web hosting solutions - Github pages, Cloudflare, Heroku
- Complex cloud computing (AWS or GCP) - Hard and optional
- 10 fingers typing (very much underrated)

### Web Development - Full Stack

Acquiring web development skills is essential for any developer and forms a fundamental part of their toolkit. It is advisable to begin learning these skills as early as the **2nd semester** of your **1st year** and aim to grasp the basics of developing full stack applications by the start of the second year.

While mastering this skill may take several years, focus on establishing a strong foundation and gaining a solid understanding of its basics as a starting point.

- Learn very simple and basic HTML, CSS, Javascript (Javascript for beginner)
- Use *scrimba.com* for learning frontend like [HTML and CSS](https://scrimba.com/learn/htmlandcss), [Javascript](https://scrimba.com/learn/learnjavascript) etc.
- Learn medium Javascript (see [Namastey Javascript by Akshay Saini](https://www.youtube.com/playlist?list=PLlasXeu85E9cQ32gLCvAvr9vNaUccPVNP))
- Learn about servers, clients, IP addresses, port-forwarding, etc.
- Learn NodeJS (follow some YouTube tutorials)
- Build and serve full-stack website using NodeJS and vanilla frontend
- Learn about REST APIs
- Add database like MongoDB to your node application
- Build chat applications with basic Frontend using web-sockets (socket.io)
- Use *scrimba.com* for the below Frontend:
    - Learn ReactJS (upgrade Frontend to use ReactJS library instead of simple JS)
    - Learn Frontend state managements like Redux, Context APIs etc.
- Build full stack applications (clone or some useful tools)
- Interview questions on MERN stack (MongoDB, ExpressJS, ReactJS, NodeJS)

**BONUS**: Learn chrome debugging (other chrome developer tools), testing frameworks, etc.

### Data Structures

### Algorithms

### Leetcode

### Computer Science Fundamentals

Mastering computer science fundamentals like OOPS, DBMS, OS, and Computer Networks is a long-term endeavor. These skills are essential, evolving areas in technology. Remember, learning is continuous; take thorough notes and retain this knowledge throughout your academic and professional journey. These foundational skills are vital for a successful career in computer science.

- Object Oriented Programming System (OOPS)
- Database Management System (DBMS)
- Operating System
- Computer Networks

### Blockchain

Prior to entering the professional world, it's crucial to choose your specific field of interest, such as Frontend, Backend, Blockchain, AI/ML, or Android Development. Since Web development is a recommended skill for everyone, making Backend or Frontend development a popular and accessible choice for many developers.

Here's a quick list of topics that you may choose in your Blockchain development journey:

  - Blockchain basics and high level knowledge
  - Decentrallized Application (DApp) Development
      - Smart contracts and Solidity (learn from [CryptoZombies](https://cryptozombies.io/en/solidity))
      - Integrate smart contract with frontend
      - Build sample full-stack DApps (from YouTube or blogs)
      - Build some useful full-stack DApp for the community
  - Protocal Development
      - Learn one of programming language: Golang (easy) or Rust (hard)
      - Virtual Machines
      - Cryptography (hard)
      - Computer Networks (hard)
      - Distributed Systems (hard)
