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.
