Software Design, nó có thật sự quan trọng không ?
Sẽ không lạ gì khi chúng ta đi gặp các engineer, rất ít người quan tâm tới kiến trúc, software design. Đa số họ đều không quan tâm rằng mình đang làm việc trên một code base như thế nào. Với họ công việc engineer chỉ là done các tasks nhàm chán mỗi ngày, fix bug của nhau.
Việc này theo quan điểm cá nhân mình thấy có hai nguyên nhân:
Thứ nhất: chúng ta thường chỉ có xu hướng dùng lib và quan tâm nó chạy nhanh hay chậm, có đáp ứng được nhu cầu không. Còn việc contribute cho lib thì sao ?! Hay thậm chí hiểu lib đó chạy thế nào ?! Gần như là không. Việc này lâu ngày sẽ hình thành một thói quen không tốt, cứ xài và chỉ xài thôi, tới khi gặp vấn đề thì … đi tìm lib khác.
Xem thêm các tin đăng việc làm software developer trên TopDev
Có một điều rất thú vị là những lib tốt, có nhiều star trên Github hầu hết là những lib có thiết kế tốt. Hoặc nếu nó chưa tốt, họ sẽ làm nó tốt lên, không chỉ là fix bugs mà còn thiết kế lại và ngày càng hoàn thiện hơn. Thậm chí họ, những người contribute cho lib còn viết rất kỹ phần documentation, làm cả hướng dẫn contribute. Nên nhớ rằng họ đang làm tất cả những việc đó không lương, không thưởng, không KPI.
Thứ hai là nguyên nhân từ các công ty không phải “engineer first”. Với các công ty này, các engineer và coder hay thậm chí editor cũng không có gì khác biệt. Bạn được tuyển vào để đứng vào một vị trí có sẵn, vận hành guồng máy có sẵn, thao tác y chang như quy trình đề ra, thế là xong. Từ thế hệ này tới thế hệ khác, nhiều người ra vào công ty chỉ để “trả nợ kỹ thuật”, cho tới khi các nhà lãnh đạo nhận ra vòng lặp này không giúp họ tạo ra giá trị công ty nữa… họ sẽ bắt đầu nghĩ tới việc tạo ra vòng lặp khác.
Một điều thật kỳ lạ rằng ở các công ty này luôn rất chú trọng tốc độ phát triển sản phẩm, nhưng lại không nhận ra rằng tốc độ ấy đang chậm hơn từng ngày. Việc tuyển thêm nhiều người vào làm thêm tính năng cũng giống như việc chúng ta cố xây thêm nhiều tầng cho căn nhà lá lụp xụp, rào chỗ này chống chỗ kia, miễn nó không sập là tốt.
Rất nhiều vòng lặp như vậy đã đang và vẫn tồn tại.
Việt Trần – Software Architect at Sendo
- C Clean Architecture – Điều đơn giản với ý tưởng củ hành
- R RxJava – Thời đại lập trình Reactive programming ứng dụng Android đã tới
- T Tại sao thiết kế phần mềm càng đa dụng lại càng phức tạp?
- C Caching là gì? Tổng quan về caching của một ứng dụng
- A AWS là gì? Mọi thứ bạn cần biết về AWS trong 5 phút
- N Nhập môn về các mô hình ngôn ngữ lớn (LLMs)
- L Laravel là gì? Những ứng dụng của Laravel phổ biến nhất
- W WordPress là gì? Tìm hiểu từ A – Z CMS phổ biến nhất thế giới
- T Test plan là gì? 4 bước cần thiết để thực hiện test plan?
- 8 8 lời nói dối của lập trình viên – Khổ tâm ghê!