6.9 KiB
6.9 KiB
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.
Must read books
I've found these books incredibly inspiring:
- The Pragmatic Programmer: From Journeyman to Master: hands-on the most inspiring and useful book I've read about programming.
- Code Complete: A Practical Handbook of Software Construction: a nice addition to The Programatic Programmer, gives you the necessary framework to talk about code.
- Release It!: this books goes beyond code and gives you best practices for building production-ready software. It will give you about 3 years worth of real-world experience.
- Scalability Rules: 50 Principles for Scaling Web Sites
- The Linux Programming Interface: A Linux and UNIX System Programming Handbook: outside of teaching you almost everything you need to know about Linux, this book will give you insights into how software evolves, and the value of having simple & elegant interfaces.
Must-read articles
- Practical Advice for New Software Engineers
- On Being A Senior Engineer
- Lessons Learned in Software Development: one of those articles that give you years of hard-earned lessons, all in one short article. Must read.
Things to do
Coding
Managing the database
- Safe Operations For High Volume PostgreSQL (this is for PostgreSQL but works great for other db as well).
- Zero downtime database migrations (code examples are using Rails but this works great for any programming language)
Testing
- Testing Strategies in a Microservices Architecture (Martin Fowler) is an awesome resources explaining how to test a service properly.
Things to know
Know your editor
Know your dev environment
Tools
- Glances: An eye on your system
- HTTPie: a CLI, cURL-like tool for humans
- jq: command-line JSON processor
- tmux: terminal multiplexer
- htop: an interactive process viewer for Linux
Know your shell
Resources
Know your dotfiles
Articles
Know your git
Know how to debug
Know how to architect systems
- High Scalability: great blog about system architecture, its weekly review article are packed with numerous insights and interesting technology reviews.
- 6 Rules of thumb to build blazing fast web server applications
Know your language
This is language-specific, for instance, checkout my professional Python education doc.
Know your design patterns and anti-patterns
Here's a list of good books:
- Design Patterns: Elements of Reusable Object-Oriented Software: dubbed "the gang of four", this is almost a required reading for any developer. A lot of those are a bit overkill for Python (because everything is an object, and dynamic typing), but the main idea (composition is better than inheritance) definitely is a good philosophy.
- Patterns of Enterprise Application Architecture: learn about how database are used in real world applications. Mike Bayer's SQLAlchemy has been heavily influenced by this book.
- SourceMaking's Design Patterns seems to be a good web resource too.
- O'Reilly's How to make mistakes in Python
I maintain a list of antipatterns on another repo. This is a highly recommended read.