GitHub

Every Programmer Should Know

What is the project about?

It's a curated collection of resources (articles, books, videos, websites) covering a wide range of technical and soft skills relevant to software developers. It's opinionated but aims to be useful regardless of a programmer's experience level or chosen technology stack.

What problem does it solve?

It provides a centralized, organized starting point for programmers to learn about fundamental concepts, best practices, and career advice. It helps developers identify areas where they can improve and provides links to high-quality learning materials. It addresses the overwhelming amount of information available by filtering and recommending valuable resources.

What are the features of the project?

  • Categorized resources: Topics include algorithms, data structures, distributed systems, security, UX, architecture, career advice, remote work, and more.
  • Links to external resources: The README acts as a directory, pointing to articles, books, videos, and interactive tools.
  • Emphasis on fundamentals: Focuses on core concepts that are broadly applicable.
  • Open for contributions.

What are the technologies used in the project?

The project itself is primarily a Markdown document (README.md) and doesn't use specific programming technologies. However, the resources it links to cover a vast range of technologies, including:

  • Programming Languages (implied, through resources like "Learn X in Y Minutes")
  • Databases (implied, through resources on distributed systems and Jepsen)
  • Operating Systems (implied, through resources on memory and latency)
  • Networking (implied, through resources on distributed systems)
  • Web Development (implied, through resources on SEO, UX, and security)
  • Cryptography (explicitly mentioned)

What are the benefits of the project?

  • Improved knowledge: Helps developers broaden and deepen their understanding of computer science and software engineering.
  • Better coding practices: Provides resources on code design, readability, and testing.
  • Career advancement: Offers guidance on job searching, negotiation, and career development.
  • Lifelong learning: Encourages continuous learning and exploration of new topics.
  • Community Resource: It is open to contributions.

What are the use cases of the project?

  • Self-learning: Programmers can use it as a roadmap for self-improvement.
  • Onboarding: New developers can use it to get up to speed on essential concepts.
  • Mentoring: Experienced developers can use it to guide junior developers.
  • Interview preparation: Provides resources relevant to technical interviews.
  • Reference: A quick way to find information on a specific topic.
every-programmer-should-know screenshot