Every Programmer Should Know
A collection of (mostly) technical things every software developer should know.
Comes in no particular order
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!
- 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.
🎥UC Berkeley, Data Structures Course
- Foundations of Data Structures - EDX
- Data Structures - Coursera
- Mathematics for Computer Science - Eric Lehman
📖How to Count 📄Floating Point Guide 📄What Every Computer Scientist Should Know About Floating-Point Arithmetic 📄Basic Number Theory Every Programmer Should Know...
📖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
📖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
📄Hashing, Encryption and Encoding
📜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
📖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.
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 📖Site Reliability Engineering
📄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
🌐Remote Work List for Developers ⚡️NomadList 📖The Ultimate Guide to Remote Work 🏠Awesome Remote Job
🎥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 📄The Good Software Development Manifesto
Papers on Programming
❤️Papers We Love 📰The Morning Paper 📜What Every Programmer Should Know About Memory 📜Go To Statement Considered Harmful