Skip to content

Useful resources for developers as they progress through their career

License

Notifications You must be signed in to change notification settings

raunakkathuria/developer-resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

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: Structure and Interpretation of Computer Programs SICP Video: MIT Video course for SICP Coursera programming language

Coursera programming language - part B

Coursera programming language - part C
Computer Architecture Computer Systems book: Computer Systems: A Programmer's Perspective Berkeley CS 61C: Berkeley Computer Science Intro to computer system
Algorithms Introduction to Algorithms: Introduction to Algorithms book (The MIT press)
Or
The Algorithm Design Manual: By Steven S Skiena
https://www3.cs.stonybrook.edu/~skiena/373/videos/
Introduction to Data Structures and Algorithms

Or
Analysis of Algorithms Lectures
Or
Coursera Algorithms, Part I combined with Coursera Algorithms, Part II
Operating Systems Operating Systems: Three Easy Pieces book Operating System Videos: By Neso Academy Introduction to Linux: By Linux Foundation
Computer Networking Computer Networking: A Top-Down Approach: By James Kurose (Author), Keith Ross (Author) CS144, Introduction to Computer Networking Computer Networking Hands-on: By Wireshark Labs
Database Architecture of a Database System: By University of California, Berkeley, CS186 Berkeley
Or
Database Systems - Cornell University Course Part 1:
Database Systems - Cornell University Course Part 2
Or
Learn PostgreSQL Tutorial - Full Course for Beginners: 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

Linux Kernel Development
Or
Linux System Programming
Networking All the three books of TCP/IP Illustrated
Design patterns Design Patterns

https://gameprogrammingpatterns.com/
Software concepts and design Software as service
Engineering Software as a Service

Object thinking
Object Thinking Book
Or
Elegant Objects - Volume 1 & Elegant Objects - Volume 2

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

12 factor App
https://12factor.net/
Database PostgreSQL Tutorial

PostgreSQL PL/pgSQL
Coursera SQL and PostgreSQL: The Complete Developer's Guide
Soft skills Team Geek: 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, Cloudflare, Netflix
Thoughtworks

Enterprise architecture patterns: Maybe a little outdated but still a good reference
Software Architecture Fundamentals
Operating System Systems Performance: Enterprise and the Cloud
Scalability Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Microservices Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith

Building Microservices: Designing Fine-Grained Systems
Soft skills Peopleware, HBR Must Reads

Contributing

You are always welcome to contribute, please refer Contributor's Guide for the guidelines on how to contribute.