An open API service indexing awesome lists of open source software.

https://github.com/raunakkathuria/developer-resources

Useful resources for developers as they progress through their career
https://github.com/raunakkathuria/developer-resources

architecture computer-science database engineering microservice networking operating-system programming scalability

Last synced: 2 days ago
JSON representation

Useful resources for developers as they progress through their career

Awesome Lists containing this project

README

          

# Useful resources for a developer career path

A list of useful resources for developers as they progress through their careers.

Each topic has resource(s) listed as per what is the best-though opinionated-reading materials, related course, or corresponding video for each topic.

The resources listed here are language and technology-agnostic, except the database topic, where PostgreSQL is listed. Refer to https://roadmap.sh/ for a roadmap specific to your career path.

For more computer science topics, or if you are starting as a computer science graduate, I highly recommend referring to https://teachyourselfcs.com/. They have structured the content well, and most of the references are inspired by that site.

> Note: As with any software-related topic, some references may be debatable. This is to provide a good reference for use, may not be the best reference out there.

## Developer

If you are starting as a developer, it's very important to have a strong base to start your career. The resources listed below will help you develop that base.

Study all the topics below, in roughly the presented order, using either the suggested reading, video or course materials.

| Topic | Reading | Video | Course |
| --------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Programming | [SICP Book](https://web.mit.edu/6.001/6.037/sicp.pdf): Structure and Interpretation of Computer Programs | [SICP Video](https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video_galleries/video-lectures/): MIT Video course for SICP | [Coursera programming language](https://www.coursera.org/learn/programming-languages)

[Coursera programming language - part B](https://www.coursera.org/learn/programming-languages-part-b)

[Coursera programming language - part C](https://www.coursera.org/learn/programming-languages-part-c) |
| Computer Architecture | [Computer Systems book](https://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X): Computer Systems: A Programmer's Perspective | [Berkeley CS 61C](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_): Berkeley Computer Science | [Intro to computer system](https://courses.grainger.illinois.edu/cs240) |
| Algorithms | [Introduction to Algorithms](https://www.amazon.com/dp/0262033844): Introduction to Algorithms book (The MIT press)
Or
[The Algorithm Design Manual](https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693): By Steven S Skiena | https://www3.cs.stonybrook.edu/~skiena/373/videos/ |
[Introduction to Data Structures and Algorithms](https://courses.engr.illinois.edu/cs225)

Or
[Analysis of Algorithms Lectures](https://www.coursera.org/specializations/algorithms)
Or
[Coursera Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1) combined with [Coursera Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2) |
| Operating Systems | [Operating Systems: Three Easy Pieces book](https://pages.cs.wisc.edu/~remzi/OSTEP/) | [Operating System Videos](https://www.youtube.com/playlist?list=PLBlnK6fEyqRiVhbXDGLXDk_OQAeuVcp2O): By Neso Academy | [Introduction to Linux](https://training.linuxfoundation.org/training/introduction-to-linux/): By Linux Foundation |
| Computer Networking | [Computer Networking: A Top-Down Approach](https://www.amazon.com/Computer-Networking-Top-Down-Approach-7th/dp/0133594149/?pldnSite=1): By James Kurose (Author), Keith Ross (Author) | [CS144, Introduction to Computer Networking](https://www.youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS) | [Computer Networking Hands-on](https://gaia.cs.umass.edu/kurose_ross/wireshark.php): By Wireshark Labs |
| Database | [Architecture of a Database System](https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf): By University of California, Berkeley, | [CS186 Berkeley](https://www.youtube.com/user/CS186Berkeley/playlists)
Or
[Database Systems - Cornell University Course Part 1](https://www.youtube.com/watch?v=4cWkVbC2bNE):
[Database Systems - Cornell University Course Part 2](https://www.youtube.com/watch?v=lxEdaElkQhQ&t=0s)
Or
[Learn PostgreSQL Tutorial - Full Course for Beginners](https://www.youtube.com/watch?v=qw--VYLpxG4): PostgreSQL specific but still useful | |

## Senior Developer

Once you have developed a strong base, it's time to develop your expertise. As a senior developer, you should be versed in topics under the `Developer` section and below resources will help you with developing the expertise.

As a senior developer, you are required to coach and train mentors. Soft skills also play a vital role for a senior developer, a corresponding reference is added for it.

| Topic | Reading | Video | Course |
|------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------|--------------------------------------------------|
| Operating system | [Advanced Programming in the UNIX Environment](https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739)

[Linux Kernel Development](https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468)
Or
[Linux System Programming](https://www.amazon.com/Linux-System-Programming-Talking-Directly/dp/1449339530) | | |
| Networking | All the three books of [TCP/IP Illustrated](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) | | |
| Design patterns | [Design Patterns](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612)

https://gameprogrammingpatterns.com/ | | |
| Software concepts and design | Software as service
[Engineering Software as a Service](https://www.amazon.com/Engineering-Software-Service-Approach-Computing/dp/0984881247)

Object thinking
[Object Thinking Book](https://www.amazon.com/Object-Thinking-Developer-Reference-David/dp/0735619654)
Or
[Elegant Objects - Volume 1](https://www.amazon.com/Elegant-Objects-1-Yegor-Bugayenko/dp/1519166915) & [Elegant Objects - Volume 2](https://www.amazon.com/Elegant-Objects-2-Yegor-Bugayenko/dp/1534908307)

SOLID Principles
https://en.wikipedia.org/wiki/SOLID

12 factor App
https://12factor.net/ | | |
| Database | [PostgreSQL Tutorial](https://www.postgresqltutorial.com/)

[PostgreSQL PL/pgSQL](https://www.postgresqltutorial.com/postgresql-plpgsql/) | | [Coursera SQL and PostgreSQL](https://www.udemy.com/course/sql-and-postgresql/): The Complete Developer's Guide |
| Soft skills | [Team Geek](https://www.amazon.com/Team-Geek-Software-Developers-Working/dp/1449302440): A Software Developer's Guide to Working Well with Others | | |

## Tech Lead/Principal Engineer/Architect

As you gain more experience, having system design and system architecture knowledge becomes valuable. It's good to understand the basics of it so that you can find out common system patterns and design the system better.

| Topic | Readings | Video | Course |
|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|--------|
| Software Architecture | Follow tech blogs like
[Amazon](https://aws.amazon.com/architecture/), [Cloudflare](https://blog.cloudflare.com/), [Netflix](https://netflixtechblog.com/)
[Thoughtworks](https://www.thoughtworks.com/insights/technology)

[Enterprise architecture patterns](https://www.amazon.com/gp/product/0321127420): Maybe a little outdated but still a good reference | [Software Architecture Fundamentals](https://www.oreilly.com/library/view/software-architecture-fundamentals/9781491998991/) | |
| Operating System| [Systems Performance](https://www.amazon.com/Systems-Performance-Brendan-Gregg-dp-0136820158/dp/0136820158): Enterprise and the Cloud | | |
| Scalability | [Designing Data-Intensive Applications](https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321): The Big Ideas Behind Reliable, Scalable, and Maintainable Systems | | |
| Microservices | [Monolith to Microservices](https://www.amazon.com/Monolith-Microservices-Evolutionary-Patterns-Transform/dp/1492047848/): Evolutionary Patterns to Transform Your Monolith

[Building Microservices](https://www.amazon.com/Building-Microservices-Designing-Fine-Grained-Systems/dp/1492034029/): Designing Fine-Grained Systems | | |
| Soft skills | [Peopleware](https://www.amazon.com/gp/product/0321934113), [HBR Must Reads](https://store.hbr.org/product/hbr-s-10-must-reads-on-leadership-vol-2-paperback-ebook/1097BN) | | |

## Contributing

You are always welcome to contribute, please refer [**Contributor's Guide**](./CONTRIBUTING.md) for the guidelines on how to contribute.