Giter VIP home page Giter VIP logo

kamranahmedse / developer-roadmap Goto Github PK

View Code? Open in Web Editor NEW
275.2K 6.9K 37.0K 2.51 GB

Interactive roadmaps, guides and other educational content to help developers grow in their careers.

Home Page: https://roadmap.sh

License: Other

TypeScript 79.36% JavaScript 5.18% Astro 14.71% CSS 0.67% Shell 0.08%
computer-science roadmap developer-roadmap frontend-roadmap devops-roadmap backend-roadmap react-roadmap angular-roadmap python-roadmap go-roadmap

developer-roadmap's Introduction

Community driven roadmaps, articles and resources for developers

roadmaps best practices videos roadmaps


Roadmaps are now interactive, you can click the nodes to read more about the topics.

Here is the list of available roadmaps with more being actively worked upon.

Have a look at the get started page that might help you pick up a path.

There are also interactive best practices:

..and questions to help you test, rate and improve your knowledge

Share with the community

Please consider sharing a post about roadmap.sh and the value it provides. It really does help!

GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars

Development

Clone the repository, install the dependencies and start the application

git clone [email protected]:kamranahmedse/developer-roadmap.git
npm install
npm run dev

Note: use the depth parameter to reduce the clone size and speed up the clone.

git clone --depth=1 https://github.com/kamranahmedse/developer-roadmap.git

Contribution

Have a look at contribution docs for how to update any of the roadmaps

  • Add content to roadmaps
  • Add new roadmaps
  • Suggest changes to existing roadmaps
  • Discuss ideas in issues
  • Spread the word

Thanks to all contributors ❤

License

Have a look at the license file for details

developer-roadmap's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

developer-roadmap's Issues

Add contribution guide

A contribution guide with an explaination on what is the best way to edit and merge the pictures (or contribute in some other way) would be great.

Thanks

I did not know how else to contact you, so I posted here. First of all, thank you so much for putting this together. Second, is there a way to add technologies needed for developing with and for Social Networking sites regardless of doing this for the Web or Mobile platform; I realize this is more work, but mobile uses a lot of the web technologies and it would be great to know what it takes to be effective in the domain.

PHP

Don't really know why Laravel is more suggested than symfony, symfony should always be on 1st place. Then laravel. Also i really don't like missing phalcon, it's a few times faster than laravel/symfony so it should be there also to mention if someone needs performance.

Missing arrow

In the Backend, the link between PHP7 and PSRs is missing its arrow.

how to convert the json file to picture?

Hi , I found some json files in the dir project-files, I guess you use this json files to generate pictures?
Could you tell me how to generate pictures? Using Any tool?

Functional testing branch

I would suggest a branch to "Functional testing".

Frontend:

  • Chimp;
  • PhantomJS;
  • Nightwatch.js;
  • Zombie.js

Backend:

  • Behat;
  • Cucumber;
  • Behave;

There are many other tools that have the same purpose that can be included in this list.

PHP template engines

Yeah, I know many people dislike PHP, but if somebody decides to learn it, shouldn't they at least know about template engines like blade, smarty, twig, etc.?

Suggesting : What about phonegap ?

Hi !

Might be a stupid suggestion but what about phonegap/cordova, which could be seen as front dev (I personnaly use that with Angular or React for exemple), and that will extent some research over NodeJS (for automatisation, build etc..) and little knowledge of what is an APK for exemple and how to sign it/ship it.

LXC under DevOps Containers

More of a curiosity thing really, but I noticed under devops for containers LXC isn't listed. Any reason it isn't? My employer uses them and I'm other others do, and they are also really easy to use.

JSPM

You could add JSPM as a possibility under Package Manager

experience share for roadmap development

Hi,

I have do the similar work in two years ago in Chinese. And, I came here to share some suggestions.

At the beginning, I build a roadmap like this with Graphviz in https://github.com/phodal/developer

Dot Tree

Then, newbie always like to ask books for read. So, I build a book tree to do something. https://github.com/phodal/booktree

But it's still hard to help they.

So, I build a skill tree like https://github.com/352Media/skilltree with D3.js which is https://github.com/phodal/sherlock, demo in here http://sherlock.phodal.com/.

when people hover the skill on roadmap in skill tree, it will show the related resources, books, articles, like this:

Sherlock D3.js

Finally, the more and more resources add to those projects, like:

So I build a app to do this https://github.com/phodal/growth, which you can the demo in http://web.growth.ren/.


It look like a lot of ads 😆 😆 , don't block me.

Why python only as a leaf?

Python is as important as node or php .

Hope add more roadmap of python .


I am a PHPer, and use python and node as well.

Missing RSCSS

In the Frontend, at methodologies branch are missing the rscss methodology.

Just a bunch of notes

Hi all, someone sent me this repo requesting comments and I wrote up a long response I thought might be useful to you. It also might not be. Yall are doing your own thing and trying to formulate a plan and that's good, I'd just like to submit this and maybe it will be helpful.

Please excuse the ranting tone. It's early in the morning and I've been reading too much political news.


First, I think using the term “map” is problematic since it implies that you can get to or achieve the waypoints. All of these things are more “directions” than destinations.

Next, I don’t like the idea of splitting up “backend” and “frontend”.

I think the standard definitions that people use for this stuff are hugely problematic. If you define HTML/CSS/JS as “front end” where does that leave someone who works on the iOS app for let’s say “simple.com”? Are they not a “web developer” even though they are building something that is equivalent to the website? What about someone who is working in a python templating language that spits out html/css? Where do they fall? I can keep coming up with examples.

Further, I think that exclusively focusing on one over another can be harmful. In terms of job prospects, you’re going to have a lot more problems getting a job at a smaller company if you can’t work the full stack.

Worse, it is harmful for learning. A humongous part of programing on the web is really internalizing how the web/HTTP/etc works. This is the “in between” stuff that you’re only going to learn by studying the whole process simultaneously.

Personally I prefer to talk about things functionally than as tech. “Back-end developer” to indicate how good someone is at understanding system architecture, performance, databases, and security; and “front-end developer” to indicate to what degree someone thinks about human-computer interaction, responsiveness, UI optimization and reusability, browsers, responsiveness, and accessibility. When you formulate definitions this way you start seeing these as two largely orthogonal dimensions of a square, rather than anything mutually exclusive.

Now about specifics. I’ll just work my way down the chart with random comments.

  • Splitting HTML learning from CSS is weird. I’d say learn them at the same time - there’s basically nothing to HTML oherwise (except forms)
  • Javascript is es6, stop drawing a distinction and just read an essay on its history
  • Task runners? Gulp? Why?
  • Don’t bother with Flux
  • React Angular and vue? How many rabbit holes do you want to simultaneously go down? You don’t know angular because you ran through the tutorial. It’s a huge subject
  • Don’t bother with Yarn until you need it
  • Testing should be its own thing. Specifically TDD. If you learn the tool you won’t do testing and you definitely will not do it to its full potential. You need to learn the philosophy.
  • Typescript - whatever, sure, do or do not
  • How is “Responsive Web” different from just CSS?
  • CSS Framework? Don’t waste your time learning bootstrap. Just learn modern CSS - get comfortable with flexbox, understand the underlying concepts and you’ll be fine. There aren’t all that many that you can’t learn them in a week.
  • Preprocessors? Fine, but I feel like LESS is well…less overhead while learning
  • Deep dive CSS3..first of, CSS3 has been out forever, it’s just CSS now. Being aware of the fancy stuff is fine and you can look it up as needed. If you just learn the basics you’ll be able to guess pretty well what features CSS has or doesn’t
  • SVG is cool, d3 isn’t necessary and isn’t really tied to SVG at all, they’re just often used together but either is often used separately.
  • SVG is something you can spend 2 days on, get the basics, and come back to as needed
  • Javascript design patterns. Huh? How do you write your code without designing it? You have to think of that stuff from the outset. Also the Javascript Design Patterns book is bad and I dono’t like it
  • Regex is a core programming concept in general, not just JS. Spend a day on it, learn the type of thing that it does, then learn more as needed

Backend:

  • Just looking at this you can feel the cognitive weirdness as it tries to recommend all the backend platforms at once. This is due to this arbitrary “backend/frontend” breakdown, if the terms are to have any meaning they should be defined functionally as the type of thing you do and focus on, not tech.
  • Minimizing Java and C# is weird since those are the ones with the greatest demand (at least that I’ve seen)
  • How is “Web Server” a separate topic? What does that even mean?
  • What does “Restful APIS” mean?
  • SOLID, YAGNI, KISS are not something to just read up on at some point. YAGNI and KISS are vague guidance that you can just take as a mantra and repeat to yourself every hour. SOLID is an important thing to study that makes sense only after you’ve gotten comfortable with coding and are looking to reach the next level. Its not something that you want to “just pick up at some point”
  • Regular Expressions again! See my previous comments
  • Security/Authentication…I guess this really depends on what exactly you mean by learning it. If you learn how the web works (which a lot of people don’t) you will be learning a lot on this front already
  • Storage - pick one RDBMS and just go with it. There’s plenty to learn there without jumping all over the place. Don’t pick Oracle...or probably MySql.
  • Why the shit does everyone want to focus on MongoDb? Its an oorobooros which is only notable for the fact that it is used which it is only because it is notable.
  • GOF Design Patterns - you’ll want to get to that sometime sooner but also it depends on the language you’re using. They were written for Java and not all apply
  • Architectural patterns…like what exactly? Learn how?
  • “Give DDD a shot” flat out offends me. If that is your attitude you will fail. Let’s say you’re making a calendar app and want to “give DDD a shot” what does that even mean you do?
  • Also, for the love of all that is holy, if you are doing DDD and reading the big DDD book - there are 2 important concepts; ubiquitous language and bounded contexts. For reasons that Eric Evans has since lamented he put the latter on chapter 17 which nobody ever gets to. Read those chapters.
  • Also on DDD. Don’t just think that using Repository pattern means you do DDD. In fact, with modern ORMs, you probably shouldn’t use that pattern.
  • Learn different testing techniques. Yes but waaaay before this point

Add Docker to Backend track

With microservice architectures becoming more and more popular, understanding how to make use of containers with tools like Docker is becoming necessary for the backend development cycle.

Recruiters love to see it on resumes too.

Text editors & CLI tools for DevOps

Unless they are taken for granted under "Linux/Unix", I think DevOps should also include CLI based text editors and different CLI tools such as grep, awk, sed and so on.

PS.
Is (basic) networking and firewalls something that's considered not a DevOps task?

Front-end section about charts and grids

Not sure, but could be really useful.

When you need to do some chart or grid solution it is quite big challenge to choose and learn
right solution. There is variety of varients.
Just d3 is solution only for some basic things.
And datatables is not mention for grid and also is not always the the best one solution.

So here is super list of chart solutions
https://github.com/zingchart/awesome-charting

And list of grid/table solutions
https://github.com/FancyGrid/awesome-grid

Java Web can be expanded

Tools

  • Maven
  • Gradle

Frameworks

  • Spring MVC
  • JSF
  • Grails
  • Struts
  • Hibernate

Testing

  • JTest
  • JUnit
  • TestNG

IDE

  • Netbeans
  • Eclipse
  • IntelliJ IDEA

Above are technologies and tools which I am aware of..There may be more tools and technologies.

DevOps part lack of precision

Hello there, I'm picky but the DevOps part fails at some point.

  1. Cloud > Google App Engine Google Cloud Platform
  2. We probably want to seperate PaaS (Heroku...) and IaaS (AWS, Azure GCP)
  3. The Monitoring part lack of Grafana, Kibana and all tools gravitating around ELK stuff
  4. By containers you mean only the runtime, which is only one part
  5. We can easily add strace, dtrace, systemtap... for system calls debugging in command tools

The list can be long and I don't know how to handle that, can we define a method of suggestion, by categories or something ?

Social skills roadmap missing

Not a recurrent issue but generally can reproduce this bug following these steps:

  • Introduce to the team
  • Start a new project
  • Suggest different tech stacks

Expected result:

  • List of pros and cons of different tech architectures, deeper discussion on what fit best

Actual result:

  • "X is total crap, we'll be going to use Y"
    where X and Y are usually random variables.

After that it's hard to proceed or the application gets unstable, can't debug it either as it crashes way before I launch any debugger.

Dependencies seems to be all in place and I don't get any error usually beforehand.
Is there any workaround for it at the moment?

Put 'start building' at the top!

nice one, but the best way to become a developer is to start by building stuff, even if it's rubbish. If you put 'start building' at the end of all your maps, people may never even lay down a line of code :)

Need project management tools

Pretty good repo. I have some ideas.

Maps need for project management tools. Redmine, Jira, Trello etc.

I think you can split framework for project sizes. Silex and sinatra for small or Symfony/Rails for large environment frameworks.

You can add crystal-lang for ruby side.

System management node will be good. Monitoring ( nagios), profiling, cloud systems ( openstack )...

Take care...

Debugging tools

I consider debugging tools to be essential to development.

For the languages I know:

  • xdebug for PHP
  • browser dev tools for Frontend JS

Sponsorship

Kamran,

We would like to sponsor your efforts.
We wrote you on email but maybe you did not notice.
Could you please connect with us over [email protected] ?

Software licences

I think every developer should have an idea about software licenses.
This subject should be added to the beginning of the list.

memcache vs memcached

Am I missing something? Isn't there only one memcached?
Seems like there are implementations of memcache clients for PHP with the matching names, but where they are on a digram seems to be not the right place.
I propose to remove memcache and only leave memcached.
Other possible option is that you've meant custom in-memory caching implementation, it which case it's just confusing.

java ee

(servlets,hibrenate...) deserve to be listed in the map

Add Race Condition-related Topics Backend

Along with the stacks, developers should also understand about theoritical data processing for distributed system, like thread safety, locking, and how to deal with race condition. This is important since nowdays we deal with multiple servers. But i don't know where to include these topics since this does not belong to any stack in the infographic.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.