To Read List
Collections
- https://github.com/mtdvio/every-programmer-should-know
- https://github.com/dexteryy/spellbook-of-modern-webdev
- https://github.com/donnemartin/system-design-primer
- https://mbeaudru.github.io/modern-js-cheatsheet/
- https://itnext.io/frontend-interview-cheatsheet-that-helped-me-to-get-offer-on-amazon-and-linkedin-cba9584e33c7
- How a Kalman filter works, in pictures
- Neural Networks from Scratch
- DevIQ
- Catalog of Refactoring
- https://overlayfactsheet.com/
- https://principles.dev/
- https://js1024.fun/demos/2020/27
- https://blog.lawrencejones.dev/working-too-hard/
- https://acko.net/blog/climbing-mt-effect/
- Scaling React Server-Side Rendering
- 19 Web Security Interview Questions for Front End Developers
- https://cuddly-octo-palm-tree.com/tags/monad-tutorial/
- How to build a second brain as a software developer
- https://www.kalzumeus.com/2012/01/23/salary-negotiation/
- https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/
- https://mishnit.github.io/System_Design.html
- Engineering management - A collection of inspiring resources related to engineering management and tech leadership
- Books for Software Engineers in 2023
- Introduction to Statistical Learning
- What Is ChatGPT Doing … and Why Does It Work?
- https://interviewing.io/guides/system-design-interview
- https://slatestarcodex.com/2014/07/30/meditations-on-moloch/
- The Little Book of Deep Learning
- Introduction to Modern Statistics
- The Art of HPC - Textbooks by Victor Eijkhout of TACC
- Hacker News Books
- Read This Twice
- BUTTERICK’S PRACTICAL TYPOGRAPHY
- Structure and Interpretation of Computer Programs
- wikipeida of The Elements of Programming Style
PL
- Inverting back the inversion of control or, Continuations versus page-centric programming
- https://cuddly-octo-palm-tree.com/posts/2021-04-11-monads-0/
- Composing Software: An Introduction
- 15-150: Principles of Functional Programming
Web
- RenderingNG
- Overview of the RenderingNG architecture
- The web browser I'm dreaming of
- History of the Web: Part 1
- Top 10 performance pitfalls - HTTP 203
- Advanced Web Application Architecture
- Inside look at modern web browser (part 1)
- The Anatomy of a Frame
- How browsers work
- How browsers work - Behind the scenes of modern web browsers
- Web Browser Engineering
- https://www.stefanjudis.com/today-i-learned/
HTML
CSS
Javascript
- Enhance your frontend state management with view models
- Client-Side Routing In Next.js
- Frontend Developer Resources 2022
- Practical React Query by TkDodo
TypeScript
React
- React - The Missing Parts
- Token authentication with React and Apollo Client— a custom hook example
- React as a UI Runtime
- React Refs: The Complete Story
- Fundamentals of React Hooks in 7 minutes
Web security
Etc
- Study shows how taking short breaks may help our brains learn new skills
- Everything I know
- Machine Learning Cohorts
Tools
- PlantUML
- Getting Started with Tmux [Beginner's Guide]
- https://httptoolkit.tech/
- https://github.com/httpie/httpie
Long Term
- https://sre.google/books/
- https://abseil.io/resources/swe-book
- https://github.com/mhadidg/software-architecture-books
- https://teachyourselfcs.com/
- https://www.manning.com/books/the-programmers-brain
- Awesome Interviews
- Front End Interview Handbook
- Front-end Developer Interview Questions
- https://github.com/leonardomso/33-js-concepts
- https://github.com/vasanthk/web-security-basics
- https://people.scs.carleton.ca/~paulv/toolsjewels.html
- Software Engineering at Google #bookshelf
- WebGPU Unleashed: A Practical Tutorial
Networking
Recommends
books developers should read
Effective Python: 90 Specific Ways to Write Better Python
If you're a Python developer wanting to improve your craft you should read this. Good Python starts with a deep understanding of the standard library and language.
High Performance Browser Networking
If your code is triggered by a desktop or mobile browser you should read this. It is a thorough high level introduction to mobile networks, browser network protocols, and fundementals of networking.
Designing Data-Intensive Applications
If your databases and APIs are a bottleneck you should read this. A solid introduction to distributed computing, data transfer, indexing, etc.
Site Reliability Engineering: How Google Runs Production Services
If you are responsible for services in production you should read this. It's Google specific but is an excellent background on practices for monitoring and maintaining production environments.
That's it!
Generic software books conspicuously not on this list for me:
- Clean Code
- JavaScript the Good Parts
- Design Patterns/Gang of Four
- Structure and Interpretation of Computer Programs
- A Philosophy of Software Design
They're not all bad but give nowhere near as much return for the investment of your time.
Awesome CTO
- CTO Position
- Hiring
- People management
- Career growth
- Project management
- Handbooks
- Development process
- Architecture
- Technologies
- Startups
- Due Diligence
- Money / Finance
- Related stuff
- Product
- Marketing
- Books
- More links
5 Computer Science Papers That Changed How I Write Code
‘No Silver Bullet – Essence and Accident in Software Engineering’ by Fred Brooks
This is a famous and widely discussed paper by Fred Brooks, who also happens to be the author of The Mythical Man-Month.
This paper attempts to explain the limitations of software development, which he splits into two categories: essential complexities, which are inherent to the nature of the problem the software is trying to solve. And accidental complexities, which arise from complex programming languages and infrastructure.
‘Out of the Tar Pit’ by Ben Moseley and Peter Marks
“Out of the Tar Pit” is an interesting philosophical paper. It’s a long read, but it’s still approachable and covers many exciting topics. Ben Mosely and Peter Marks build upon Brooks’ complexity definitions in “No Silver Bullet,” “but disagree with his premise that most complexity remaining in contemporary systems is essential.”
‘A Plea for Lean Software’ by Niklaus Wirth
This paper was published in 1995, but it’s still as relevant today. It provides another perspective on the subject of software complexity.
According to Niklaus Wirth, software projects are getting out of control. On the one hand, it’s because the hardware is getting faster; in fact, he notes that, “Software is getting slower more rapidly than hardware becomes faster.
‘Ironies of Automation’ by Lisanne Bainbridge
‘How Do Committees Invent?’ by Melvin E. Conway
In this paper written in 1968, Melvin E. Conway observed that the design of a system reflects the structure of the organization doing the design — an idea later popularized by Fred Brooks in The Mythical Man-Month and now called Conway’s Law.
Resources
- RailsConf 2014 - Keynote: Writing Software by David Heinemeier Hansson
- Building for Your Next Billion Users (Google I/O '17)
- “The 737Max and Why Software Engineers Might Want to Pay Attention”
- “The Troubles of Automating ‘All the Things’” by J. Paul Reed
- “How Do Committees Invent?”
- Don’t Forget Conway’s Law, Sarah Novotny Keynote
How I became a better CTO using these 8 resources
- Google Developers: Machine Learning Crash Course
- The SaaS CTO Security Checklist
- AI-based Database Expert for PostgreSQL/MySQL
- Amazon Web Services In Plain English
- NoSQL Databases: a Survey and Decision Guidance
- JavaScript - The Right Way
- Comparing Git Workflows: What You Should Know
- A reference guide for fintech & small-data engineering
- What Is DevOps?
- Evolutionary Database Design
- Awesome CTO repository on GitHub
Children