π€
Every Programmer Should Know A collection of (mostly) technical things every software developer should know.
Highly opinionated π£. Not backed by science.
Comes in no particular order
U like it?
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 welcomed!
Introduction
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
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
Latency
Time
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
Security
π Security Programmingπ Rolling Your Own Cryptoπ Foundations of Security: What Every Programmer Needs to Know- OWASP Top 10
- Web Application Exploits and Defenses
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
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
UX/Usability
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
Soft Skills
- π Difficult Conversations
π Crucial Conversationsπ How to Win Friends and Influence People
Papers on Programming
Free Books on Programming
β‘
Services
Licenses
Where To Look For Further Info
β‘
Coding Practice Sites π CodeForcesπ CodeChefπ CodinGameπ Cs Academyπ HackerRankπ Spoj- π HackerEarth
π TopCoder- π Codewars
π Exercism- π CodeFights
π Project Eulerπ LeetCodeπ InterviewBit