Opportunities in Open Source
If you don't want to start from scratch, choose some piece of software that you're fascinated by, and see if there's an open source library with similar features. Then try to take it apart, understand what each piece does, and contribute something new to the repository and community.
Github's search engine is a great place to start. Some amazing open source projects that are worth learning from are listed below. Notice the diversity in projects-- this is especially important to get insight into parts of software you might not normally encounter.
- https://github.com/skulpt/skulpt -
Python
to JS Compiler - https://github.com/uber/ludwig - Tensorflow Toolbox without code
- https://github.com/freeCodeCamp/freeCodeCamp - Learning curriculum for JS
- https://github.com/firefox-devtools/debugger - Firefox's debugger (written in React)
- https://github.com/spring-projects/spring-boot - Create stand-alone Spring applications
- https://github.com/elastic/elasticsearch - RESTful search engine
However, it can often be intimidating to do learn just by jumping into complex projects. Additionally, certain people like to learn the theory while simultaneously building things. Combining the two approaches will accelerate your understanding of these concepts.