Every Programmer Should Know
Github
A collection of (mostly) technical things every software developer should know.
☝️ These are resources I can recommend to every programmer regardless of their skill level or tech stack
Highly opinionated 𐂣. Not backed by science. Comes in no particular order ♻️
U like it? ⭐️ it and share with a friendly developer! U don't like it? Watch the doggo 𐀶
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! 𐂪
P.P.S. Contributions are welcome!
Introduction
𐎥 Map of Computer Science
𐎥 40 Key Computer Science Concepts Explained In Layman’s Terms
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
𐃖 Grokking Algorithms
Algorithms Visualization
Data Structures
𐎥 UC Berkeley, Data Structures Course
Foundations of Data Structures - EDX
Data Structures - Coursera
Mathematics for Computer Science - Eric Lehman
Numbers
𐃖 How to Count
𐃄 Floating Point Guide
𐃄 What Every Computer Scientist Should Know About Floating-Point Arithmetic
𐃄 Basic Number Theory Every Programmer Should Know...
Strings
𐃄 Unicode and Character Sets
Homoglyphs
Unicode Common Locale Data Repository
𐎥 ASCII 𐎥 UTF-8
Latency
Interactive Latency Infographics
𐃄 Latency Numbers Every Programmer Should Know
Time
𐃄 Some notes about time
Memory
𐃄 What every Programmer should know about memory
Distributed Systems
𐃖 Designing Data-Intensive Applications
𐃜 Designs, Lessons and Advice from Building Large Distributed Systems
𐃜 Time, Clocks and the Ordering of Events in a Distributed System
𐃄 There is No Now
𐃄 Jepsen: how different databases behave under partition
𐃜 Fallacies of Distributed Computing Explained
RegExp
RegexHQ
Learn regex the easy way Security
𐃖 Security Programming
𐃄 Rolling Your Own Crypto
𐃄 Cryptographic Right Answers
𐃄 An Open Letter to Developers Everywhere (About Cryptography)
𐃖 Foundations of Security: What Every Programmer Needs to Know
OWASP Top 10
Web Application Exploits and Defenses
SEO
𐃄 What Every Programmer Should Know About SEO
Architecture
𐃜 A Field Guide to Boxology
𐃜 Out of the Tar Pit
𐃜 No Silver Bullet — Essence and Accidents of Software Engineering
𐎥 Growing a Language
𐎥 CQRS and Event Sourcing
𐃖 Practical Object Oriented Design in Ruby
𐎥 Evolutionary Software Architectures
System Design: A Primer
𐃄 How JavaScript works: part-1, 2, 3, 4
Practices
𐃖 Working Effectively with Legacy Code 𐃖 Clean Code: A Handbook of Agile Software Craftsmanship
𐃖 Test Driven Development: By Example
✅ Going To Production Checklist
𐃖 Release It!
𐃖 Professor Frisby's Mostly Adequate Guide to Functional Programming
𐃖 SICP: Structure and Interpretation of Computer Programs
𐃄 Thirteen Ways of Looking at a Turtle
𐃜 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. 𐃄 Pomodoro for Programmers
Career
𐃄 10 Things Every Programmer Should Know For Their First Job
𐃄 How Much Do Software Engineers Really Make in Each City?
𐃄 Software Engineers Tenure in San Francisco
Software Engineering 101
𐃖 The Passionate Programmer
𐃖 Soft Skills: The software developer's life manual
𐃖 The Complete Software Developer's Career Guide
𐃖 Programming Beyond Practices: Be More Than Just a Code Monkey
A list of European Investors
𐃄 Ten Rules for Negotiating a Job Offer
𐃄 How To Interview As a Developer Candidate
𐃖 How To Be A STAR Engineer
𐃄 TL;DR; Stock Options
𐃄 Equity 101 for Startup Employees 𐃖 Cracking the Coding Interview: 189 Programming Questions and Solutions
𐄥 Everything you need to know to get the job
𐃖 Tech Interview Handbook
𐃄 Teach Yourself Programming in Ten Years
𐃄 What you should know as a founder of a software company
UX/Usability
𐃖 Don't Make Me Think: A Common Sense Approach to Web Usability
𐎥 Inventing on Principle
Open Source
𐌐 An Intro to Git and GitHub for Beginners
Remote Work
𐌐 Remote Work List for Developers
⚡️ NomadList
𐃖 The Ultimate Guide to Remote Work
Awesome Remote Job
Engineering Philosophy
𐎥 Simple Made Easy
𐃄 Speed In Software Development
𐎥 The Myth of the Genius Programmer
𐎥 Making Badass Developers
𐃄 The Ten Rules of a Zen Programmer
𐃄 The mythical 10x programmer 𐃄 The Debugging Mindset
𐎥 The Future of Programming
Problem Solving
𐃖 The Art and Craft of Problem Solving
𐃖 How to Solve It: A New Aspect of Mathematical Method
Soft Skills
𐃖 Difficult Conversations
𐃖 Crucial Conversations
𐃖 How to Win Friends and Influence People
Papers on Programming
❤️ Papers We Love
𐃰 The Morning Paper
𐃜 What Every Programmer Should Know About Memory
𐃜 Go To Statement Considered Harmful
Free Books on Programming
𐃚 Free Programming Books
Services ⚡️
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
Where To Look For Further Info
freeCodeCamp Guide
GeeksForGeeks
Dev.To
Stack Overflow
Dzone
Coding Practice Sites ⚡️
𐄗 CodeForces
𐄗 CodeChef
𐄗 Coderbyte
𐄗 CodinGame
𐄗 Cs Academy
𐄗 HackerRank
𐄗 Spoj
𐄗 HackerEarth
𐄗 TopCoder
𐄗 Codewars
𐄗 Exercism 𐄗 CodeFights
𐄗 Project Euler
𐄗 LeetCode
𐄗 InterviewBit
𐄗 uCoder
𐄗 LintCode
𐄗 CodeCombat
Revision #2 Created 3 years ago by Thomas Morton
Updated 3 years ago by Thomas Morton