26/11/2018, 22:16

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 ...

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.

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

0