laithshadeed / professional-programming

A collection of full-stack resources for programmers.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Table of Contents

Professional Programming

Give me six hours to chop down a tree and I will spend the first four sharpening the axe. (Abraham Lincoln)

A collection of full-stack resources for programmers.

The goal of this page is to make you a more proficient developer. You'll find only resources that I've found truly inspiring, or that have been become timeless classics.

Must read books

I've found these books incredibly inspiring:

There are some free books available, including:

Must-read articles

Other general material and list of resources

Topics

Algorithm and data structures

Let's be honest: algo can be a pretty dry topic. This quora question lists some funnier learning alternative, including:

Attitude, habits, mindset

Automation

Biases

Biases don't only apply to hiring. For instance, the fundamental attribution bias also applies when criticizing somebody's code written a long time ago, in a totally different context.

Career growth

Characters sets

Coding & code quality

Computer science

Databases

Data science

Debugging

Design (visual, UX, UI)

I highly recommend reading The Non-Designer's Design Book. This is a pretty short book that will give you some very actionable design advices.

Design (OO modeling, architecture, patterns, anti-patterns, etc.)

Here's a list of good books:

Articles:

I maintain a list of antipatterns on another repo. This is a highly recommended read.

Quotes:

  • "You can use an eraser on the drafting table or a sledge hammer on the construction site.", Frank Lloyd Wright

Design: simplicity

  • Simple Made Easy 🎞, Rich Hickey. This is an incredibly inspiring talk redefining simplicity, ease and complexity, and showing that solutions that look easy may actually harm your design.

Dev environment & tools

Tools

Diversity & inclusion

Checkout my list of management resources.

Documentation

Dotfiles

Articles

Editors & IDE

Engineering management

Checkout my list of management resources.

Incident response (alerting, outages, firefighting)

Internet

Interviewing

Note: this is about you as an interviewee, not as an interviewer. To check out my list of resources for interviewers, go to my engineering-management repository.

Learning

Learn how to learn!

Project management

See Project management section on my engineering-management list of resources.

Programming languages

I would recommend learning:

  • JavaScript and may be one other interpreted language (Python, Ruby, etc.). Interpreted languages are useful for quick one-off automation scripts, and fastest to write for interviews.
  • A compiled language (Java, C, C++...).
  • A more recent language to see where the industry is going (as of writing, Go, Swift, Rust, Elixir...).
  • A language that has first-class support for functional programming (Haskell, Scala, Clojure...).

A bit more reading:

Python

For Python feel free to checkout my professional Python education repository.

JavaScript

JavaScript is such a pervasive language that it's almost required learning.

FP vs. OOP

Over-engineering

β€œA complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over, beginning with a working simple system.”

John Gall, General systemantics, an essay on how systems work, and especially how they fail..., 1975 (this quote is sometime referred as "Galls' law")

Reading

  • Papers we love: papers from the computer science community to read and discuss. Can be a good source of inspiration of solving your design problems.
  • The morning paper: one CS research paper explained every morning.

Releasing & deploying

Security

Shell

Resources

System architecture

Scalability

  • I already mentioned the book Scalability rules above, but there's also a presentation about it.

Stability

  • I already mentioned the book Release it! above. There's also a presentation from the author.

Resiliency

Site Reliability Engineering (SRE)

Testing

Tools

Version control (Git)

Work ethics & work/life balance

Web development

Writing for performance

Concepts

Glossary

About

A collection of full-stack resources for programmers.

License:MIT License


Languages

Language:Shell 100.0%