Những điều đã khiến tôi đổi ý: trước đây từng phản đối, giờ thì đã tin
- Trong các nhóm gồm những người có mức độ kinh nghiệm khác nhau, ngôn ngữ typed tốt hơn
- Họp standup hữu ích để quan sát những người mới
- Sprint retrospective có phần hữu ích và cũng có phần không tốt (agile/scrum master làm lãng phí thời gian của mọi người)
- Kiến trúc phần mềm quan trọng hơn bất cứ thứ gì khác. Việc triển khai tệ của một abstraction tốt không làm hại codebase. Chính abstraction tệ hoặc các layer bị thiếu mới khiến mọi thứ trở nên tồi tệ
- Java không phải là một ngôn ngữ tệ đến thế
- Code quá khéo léo thường không phải là code tốt. Sự rõ ràng quan trọng hơn tất cả
- Có thể viết code sai trong bất kỳ paradigm nào
- "Best practice" thay đổi theo từng tình huống và không thể áp dụng cho mọi thứ. Mù quáng làm theo thì thành ngốc
- Nếu thiết kế một hệ thống có thể mở rộng khi không cần thiết, bạn là một kỹ sư tồi
- Phân tích tĩnh rất hữu ích
- DRY là để tránh một vấn đề cụ thể, không phải mục tiêu cuối cùng
- Nhìn chung RDBMS > NoSQL
- Lập trình hàm không phải thuốc chữa bách bệnh mà chỉ là một công cụ khác
Những ý kiến tôi chọn thêm giữa chừng:
- YAGNI > SOLID > DRY : theo đúng thứ tự này
→ You Aren't Gonna Need It : một trong các nguyên tắc của XP
→ SOLID : 5 nguyên tắc thiết kế hướng đối tượng
Single responsibility
Open-close
Liskov substitution
Interface segregation
Dependency inversion
→ DRY : Don't Repeat Yourself - Bút chì và giấy là công cụ lập trình tuyệt vời nhưng ít được dùng tới
- Đánh đổi sự thuần khiết để lấy tính thực dụng nhìn chung là một lựa chọn tốt
- Thêm nhiều công nghệ hơn không phải là một lựa chọn hay
- Nói chuyện trực tiếp với khách hàng giúp hiểu vấn đề nhiều hơn, chính xác hơn và trong ít thời gian hơn
- Từ "Scalable" có một sức mạnh huyền bí và đáng kinh ngạc trong tâm trí các kỹ sư phần mềm. Chỉ cần khẽ nhắc ra cũng đủ khiến họ rơi vào cơn cuồng loạn sa đọa. Bằng cách dùng từ này, những hành động tàn nhẫn được hợp thức hóa
- Dù được gọi là "kỹ sư", phần lớn quyết định vẫn là cargo cult, không có phân tích, dữ liệu hay con số nào hỗ trợ
→ Cargo cult: tập tục chờ đợi ai đó tiên tiến hơn về công nghệ (xã hội/tổ tiên) mang hàng hóa đặc biệt đến bằng tàu hoặc máy bay - 90%, có lẽ là 93%, các quản lý dự án có thể biến mất ngay ngày mai mà không có lợi ích nào về mặt hiệu quả hay năng suất
- Sau 100 cuộc phỏng vấn, tôi nhận ra cách phỏng vấn đã hỏng hoàn toàn. Bản thân tôi cũng không biết cách cải thiện nó
Những quan điểm cũ vẫn không thay đổi:
- Những người quá nhấn mạnh code style, quy tắc linting và các chuyện vặt vãnh khác là những kẻ lập dị điên rồ
- Code coverage hoàn toàn không liên quan tới chất lượng code
- Monolith khá tốt trong phần lớn tình huống
- Những người theo chủ nghĩa thuần túy TDD là tệ nhất. Tâm trí mong manh bé nhỏ của họ không thể chấp nhận rằng còn có những workflow khác tồn tại
- Tôi sẽ xem đến khi tròn 10 năm thì còn điều gì thay đổi hoặc đảo ngược nữa không
9 bình luận
Mỗi câu đều khiến mình đồng cảm. Có lẽ đó là sự chuyển biến từ chủ nghĩa lý tưởng rằng mọi thứ đều có thể hoàn hảo sang chủ nghĩa thực dụng.
Khi nhận ra tầm quan trọng của TDD, từ lúc đó lập trình viên ...
Có vẻ như ý kiến cho rằng quy trình phỏng vấn đang bị hỏng vẫn tiếp tục xuất hiện. Bản thân tôi nếu bị bảo làm bài test coding thì cũng không tự tin lắm (...)
Cũng có bài viết như thế này nữa. Nghe nói đây là nội dung xuất hiện trong cuốn sách 『HARD CODE』.
https://johngrib.github.io/wiki/better-interview/
Mới 6 năm mà đã ngộ ra những điều này rồi à? Haha, ghê thật đấy.
Sau 6 năm mới giác ngộ rồi thành Phật nhỉ!
Trên Hacker News, các nhà phát triển khác và cả những kỹ sư có hơn 20 năm kinh nghiệm cũng đang vào viết thêm bình luận.
https://news.ycombinator.com/item?id=25887373
Ngay từ bình luận đầu tiên đã khá gắt rồi haha. Nếu xét từng ý một thì chắc cũng sẽ có những tình huống ngoại lệ, nên có lẽ việc trở nên mù quáng tin vào bất cứ điều gì cũng đều nguy hiểm.
Có khá nhiều lỗi có thể được giải quyết chỉ bằng kiểm tra kiểu, nên có lẽ đây sẽ là một vấn đề tiếp tục được nêu ra. Các phương pháp xử lý kiểu một cách an toàn cũng đang không ngừng được cải thiện.
(Nhưng TypeScript thì đúng là hơi khó thật T_T.)