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