π€
Every Programmer Should Know A collection of (mostly) technical things every software developer should know.
Highly opinionated
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
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π 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
Remote Work
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
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