Join our community for professional Software Developers and get more control over your life and career!
π€
Every Programmer Should Know A collection of (mostly) technical things every software developer should know.
Highly opinionated
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 welcome!
Introduction
π₯ Map of Computer Scienceπ₯ 40 Key Computer Science Concepts Explained In Laymanβs Termsπ 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
π Computer Science Distilledπ Grokking Algorithmsπ Introduction to Algorithms- Algorithms Visualization
- Algorithms for Competitive Programming
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
Time
Memory
Distributed Systems
π Understanding 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π 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
UX/Usability
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π₯ Entity-Component-System Architecture with Unity by example
Code Design
Engineering Philosophy
π₯ Category Theory in Lifeπ₯ Simple Made Easyπ Speed In Software Developmentπ₯ #NoEstimatesπ₯ 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π₯ All the Little Thingsπ Teach Yourself Programming in Ten Years
Practices
π Working Effectively with Legacy Codeπ The Art of Readable Code: Simple and Practical Techniques for Writing Better Codeπ Code Completeπ 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π Site Reliability Engineering
Career
π° Levels FYI
Salary stats for various tech companies. Better than Glassdoor.π 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 Get a Tech Job Abroad Fasterπ 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π₯ Code Interview Prep & Programming Questions | Prampπ 97 things every programmer should knowπ₯ A Philosophy of Software Design | John Ousterhout | Talks at Google
Fine-tune Your Resume
π¨ CV Compiler
Open Source
Remote Work
π Remotive.io: Startups hiring remotelyπ Remote Work List for Developersβ‘ NomadListπ The Ultimate Guide to Remote Workπ Awesome Remote Job
Problem Solving
Soft Skills
π Difficult Conversationsπ Crucial Conversationsπ 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
β€οΈ Papers We Loveπ° The Morning Paperπ What Every Programmer Should Know About Memoryπ Go To Statement Considered Harmfulπ° Arxivπ° Sci-hub
Free Books on Programming
β‘
Services π€ 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 π CodeForcesπ CodeChefπ Coderbyteπ CodinGameπ Cs Academyπ HackerRankπ Spojπ HackerEarthπ TopCoderπ Codewarsπ Exercismπ CodeSignalπ Project Eulerπ LeetCodeπ Firecode.ioπ InterviewBitπ uCoderπ LintCodeπ CodeCombatπ InterviewCakeπ At Coderπ Codilityπ ICPC Problem Archive