Awesome
Join our community for professional Software Developers and get more control over your life and career!
Every Programmer Should Know :thinking:
A collection of (mostly) technical things every software developer should know.
:point_up: These are resources I can recommend to every programmer regardless of their skill level or tech stack
Highly opinionated :bomb:. Not backed by science. Comes in no particular order :recycle:
U like it? :star: it and share with a friendly developer! U don't like it? Watch the doggo :dog:
P.S. You don't need to know all of that by heart to be a programmer. But knowing the stuff will help you become better! :muscle:
P.P.S. Contributions are welcome!
Introduction
- :movie_camera: Map of Computer Science
- :movie_camera: 40 Key Computer Science Concepts Explained In Laymanβs Terms
- :page_facing_up: Computer Science Roadmap
Falsehoods
- Awesome Falsehoods π Curated list of falsehoods programmers believe in. Check for things you do not know about Strings, Addresses, Names, Numbers, Emails, Timezones and Dates and more.
Algorithms
- Big O Cheatsheet
- :book: Computer Science Distilled
- :book: Grokking Algorithms
- :book: Introduction to Algorithms
- Algorithms Visualization
- Algorithms for Competitive Programming
Data Structures
- :movie_camera: UC Berkeley, Data Structures Course
- Foundations of Data Structures - EDX
- Data Structures - Coursera
- Mathematics for Computer Science - Eric Lehman
Numbers
- :book: How to Count
- :page_facing_up: Floating Point Guide
- :page_facing_up: What Every Computer Scientist Should Know About Floating-Point Arithmetic
- :page_facing_up: Basic Number Theory Every Programmer Should Know...
Strings
- :page_facing_up: Unicode and Character Sets
- Homoglyphs
- Unicode Common Locale Data Repository
- :movie_camera: ASCII
- :movie_camera: UTF-8
Latency
Time
- :page_facing_up: Some notes about time
- :movie_camera: The Problem with Timezones
Memory
- :page_facing_up: What every Programmer should know about memory
Distributed Systems
- :book: Understanding Distributed Systems
- :book: Designing Data-Intensive Applications
- :scroll: Designs, Lessons and Advice from Building Large Distributed Systems
- :scroll: Time, Clocks and the Ordering of Events in a Distributed System
- :page_facing_up: There is No Now
- :page_facing_up: Jepsen: how different databases behave under partition
- :scroll: Fallacies of Distributed Computing Explained
RegExp
Security
- :book: Security Programming
- :page_facing_up: Rolling Your Own Crypto
- :page_facing_up: Cryptographic Right Answers
- :page_facing_up: An Open Letter to Developers Everywhere (About Cryptography)
- :book: Foundations of Security: What Every Programmer Needs to Know
- OWASP Top 10
- Web Application Exploits and Defenses
- :page_facing_up: Hashing, Encryption and Encoding
UX/Usability
- :book: Don't Make Me Think: A Common Sense Approach to Web Usability
- :movie_camera: Inventing on Principle
SEO
- :page_facing_up: What Every Programmer Should Know About SEO
Architecture
- :scroll: A Field Guide to Boxology
- :scroll: Out of the Tar Pit
- :scroll: No Silver Bullet β Essence and Accidents of Software Engineering
- :movie_camera: Growing a Language
- :movie_camera: CQRS and Event Sourcing
- :book: Practical Object Oriented Design in Ruby
- :movie_camera: Evolutionary Software Architectures
- System Design: A Primer
- :page_facing_up: How JavaScript works: part-1, 2, 3, 4
- :movie_camera: Entity-Component-System Architecture with Unity by example
Code Design
- :page_facing_up: Programming Principles Wiki
Engineering Philosophy
- :movie_camera: Category Theory in Life
- :movie_camera: Simple Made Easy
- :page_facing_up: Speed In Software Development
- :movie_camera: #NoEstimates
- :movie_camera: The Myth of the Genius Programmer
- :movie_camera: Making Badass Developers
- :page_facing_up: The Ten Rules of a Zen Programmer
- :page_facing_up: The mythical 10x programmer
- :page_facing_up: The Debugging Mindset
- :movie_camera: The Future of Programming
- :page_facing_up: The Good Software Development Manifesto
- :movie_camera: All the Little Things
- :page_facing_up: Teach Yourself Programming in Ten Years
Practices
- :book: Working Effectively with Legacy Code
- :book: The Art of Readable Code: Simple and Practical Techniques for Writing Better Code
- :book: Code Complete
- :book: Clean Code: A Handbook of Agile Software Craftsmanship
- :book: Test Driven Development: By Example
- :white_check_mark: Going To Production Checklist
- :book: Release It!
- :book: Professor Frisby's Mostly Adequate Guide to Functional Programming
- :book: SICP: Structure and Interpretation of Computer Programs
- :page_facing_up: Thirteen Ways of Looking at a Turtle
- :scroll: Programming Paradigms for Dummies: What Every Programmer Should Know
- Learn X in Y Minutes Learn the basics of a language in a highly condensed way.
- Hyperpolyglot Compare commonly used features of more or less similar languages side-by-side. Helps you to jump Python<->Ruby, Ocaml<->Haskell, etc.
- :page_facing_up: Pomodoro for Programmers
- :book: Site Reliability Engineering
Career
- :moneybag: Levels FYI
Salary stats for various tech companies. Better than Glassdoor. - :page_facing_up: 10 Things Every Programmer Should Know For Their First Job
- :page_facing_up: How Much Do Software Engineers Really Make in Each City?
- :page_facing_up: Software Engineers Tenure in San Francisco
- Software Engineering 101
- :book: The Passionate Programmer
- :book: Soft Skills: The software developer's life manual
- :book: The Complete Software Developer's Career Guide
- :book: Programming Beyond Practices: Be More Than Just a Code Monkey
- A list of European Investors
- :page_facing_up: Ten Rules for Negotiating a Job Offer
- :page_facing_up: How To Interview As a Developer Candidate
- :page_facing_up: How To Get a Tech Job Abroad Faster
- :book: How To Be A STAR Engineer
- :page_facing_up: TL;DR; Stock Options
- :page_facing_up: Equity 101 for Startup Employees
- :book: Cracking the Coding Interview: 189 Programming Questions and Solutions
- :fire: Everything you need to know to get the job
- :book: Tech Interview Handbook
- :page_facing_up: Teach Yourself Programming in Ten Years
- :page_facing_up: What you should know as a founder of a software company
- :movie_camera: Code Interview Prep & Programming Questions | Pramp
- :book: 97 things every programmer should know
- :movie_camera: A Philosophy of Software Design | John Ousterhout | Talks at Google
Fine-tune Your Resume
- :hammer: CV Compiler
Open Source
- :globe_with_meridians: Learn how to use Git and GitHub
Remote Work
- :globe_with_meridians: Remotive.io: Startups hiring remotely
- :globe_with_meridians: Remote Work List for Developers
- :zap: NomadList
- :book: The Ultimate Guide to Remote Work
- :house: Awesome Remote Job
Problem Solving
- :book: The Art and Craft of Problem Solving
- :book: How to Solve It: A New Aspect of Mathematical Method
Soft Skills
- :book: Difficult Conversations
- :book: Crucial Conversations
- :book: How to Win Friends and Influence People
Mental Health
- Awesome Mental Health
A curated list of awesome articles, websites and resources about mental health in the software industry.
Papers on Programming
- :heart: Papers We Love
- :newspaper: The Morning Paper
- π What Every Programmer Should Know About Memory
- π Go To Statement Considered Harmful
- :newspaper: Arxiv
- :newspaper: Sci-hub
Free Books on Programming
- :books: Free Programming Books
Services :zap:
- π€ Abstract API's
- Free For Dev
- Public APIs
- The Noun Project
- Without Coding
- Simpleicons
- Learn Anything
- repl.it
Licenses
- Choose An Open Source License
- Well-explained Software licenses in TLDR version
- How open source licenses work and how to add them to your projects
Where To Look For Further Info
Coding Practice Sites :zap:
- :link: CodeForces
- :link: CodeChef
- :link: Coderbyte
- :link: CodinGame
- :link: Cs Academy
- :link: HackerRank
- :link: Spoj
- :link: HackerEarth
- :link: TopCoder
- :link: Codewars
- :link: Exercism
- :link: CodeSignal
- :link: Project Euler
- :link: LeetCode
- :link: Firecode.io
- :link: InterviewBit
- :link: uCoder
- :link: LintCode
- :link: CodeCombat
- :link: InterviewCake
- :link: At Coder
- :link: Codility
- :link: ICPC Problem Archive
- :link: Codemia