Những cuốn sách mà Developer nên đọc – Phần 2

Bài viết được sự cho phép của tác giả Edward Thien Hoang

Phần trước mình đã điểm qua 1 số mặt sách dành cho các bạn developer mới vào nghề nhằm khuyến khích niềm đam mê và kỹ năng code sạch từ sớm. Phần này mình sẽ điểm qua các cuốn sách mà các bạn senior và tech lead nên đọc để nâng cao kỹ năng thiết kế và quản lý các team ở quy mô nhỏ.

REFACTORING: IMPROVING THE DESIGN OF EXISTING CODE

Các bạn senior, technical lead nên đọc, để có thể review code của các bạn junior và đưa ra lời khuyên. Làm sao để biến những đoạn code không theo pattern để sử dụng các pattern thích hợp. Khi đó bạn sẽ thấy chất lượng và cấu trúc mã nguồn sẽ trở nên dễ đoán và dễ bảo trì hơn.

Review sách Refactoring to Patterns

refactoring to patterns book
Refactoring to Patterns: Kerievsky, Joshua

WORKING EFFECTIVELY WITH LEGACY CODE

Code đẹp ngay từ đầu là một chuyện tốt, tuy nhiên đa số các bạn sẽ được tham gia vào dự án đã và đang chạy. Codebase có thể lên tới hàng chục năm tuổi với hằng hà technical debt. Working Effectively with Legacy Code cung cấp nhiều hướng dẫn để các bạn có thể cải thiện chất lượng của mã nguồn “legacy”.

Working Effectively with Legacy Code
Working Effectively with Legacy Code: Feathers, Michael

97 THINGS EVERY PROGRAMMER SHOULD KNOW

Tập hợp các lời khuyên hữu ích cho tất cả các bạn lập trình viên.

97 Things Every Programmer Should Know
97 Things Every Programmer Should Know: Collective Wisdom

TALKING WITH TECH LEADS: FROM NOVICES TO PRACTITIONERS

Một cuốn sách không thể không đọc để có thể trở thành 1 tech lead thực thụ. Ngoài công việc coding, các bạn tech lead sẽ bắt đầu được giao nhiệm vụ quản lý một nhóm nhỏ hoặc đưa ra các giải pháp thiết kế, đề xuất về mặt kỹ thuật nhiều hơn.

Review sách Talking with Tech Leads

Talking with Tech Leads: From Novices to Practitioners
Talking with Tech Leads: From Novices to Practitioners

DOMAIN-DRIVEN DESIGN: TACKLING COMPLEXITY IN THE HEART OF SOFTWARE

Một cuốn sách để giúp hình thành các suy nghĩ về cách thiết kế các hệ thống phức tạp. Có rất nhiều phương pháp thiết kế “driven” ví dụ như Event Driven, Domain Driven, Data Driven, nhưng mình thích cách tiếp cận từ Domain (nghiệp vụ), phân tách nghiệp vụ thành các sub-module, sub-system sẽ giúp bạn có một cái nhìn tổng thể nhất về các thành phần trong hệ thống mà mình đang xây dựng

Tản mạn về Domain Driven Design

Domain-Driven Design: Tackling Complexity in the Heart of Software
Domain-Driven Design: Tackling Complexity in the Heart of Software

SYSTEM DESIGN INTERVIEW – AN INSIDER’S GUIDE

Một bước tạo đà nữa để giúp các bạn làm quen với các thuật ngữ và kỹ thuật thường dùng trong thiết kế hệ thống, đặc biệt là các hệ thống large-scale, distributed với rất nhiều ví dụ từ các hệ thống thực tế (được đơn giản hóa)

Series về System Design

System Design Interview – An insider’s guide, Second Edition
System Design Interview – An insider’s guide, Second Edition

Bonus 3: https://github.com/donnemartin/system-design-primer Tác giả của page này cũng đã đưa ra được 1 mô hình kiến trúc điển hình cho các hệ thống mà chúng ta sẽ build.

Bài viết gốc được đăng tải tại edwardthienhoang.wordpress.com

Xem thêm:

Đừng bỏ lỡ tin tuyển dụng IT mọi cấp độ trên TopDev