Tư duy kiến trúc là gì?
Tư duy kiến trúc có thể được hiểu là cách chúng ta suy nhĩ về một vấn đề nào đó theo kiểu kiến trúc, hoặc kiến trúc hoá nó.
Tham khảo thêm: https://en.wikipedia.org/wiki/Architectural_theory
Đây là một kỹ năng được yêu cầu trong nhiều lĩnh vực, từ xây dựng đến hội hoạ, nhiếp ảnh và cũng như lập trình.
Xem thêm: Web/System Architecture 101 – Kiến trúc web/hệ thống cơ bản cho người mới
Với lập trình, khi bạn đã ở một level nhất định, thường là Junior muốn tiến lên Senior hoặc các vị trí Architect, đều sẽ phải quan tâm tới kiến trúc. Khi đó ứng dụng / chương trình chúng ta xây dựng không những chạy tốt mà còn phải có kiến trúc tốt.
Một chương trình được hiểu là có kiến trúc tốt là chúng sẽ được thiết kế ngay từ ban đầu với mục tiêu dễ tái sử dụng, dễ bảo trì (dễ test và debug) và dễ mở rộng.
Những trò chơi “ẩn giấu” tư duy kiến trúc
Những ai đã từng chơi game Sim City hoặc các thể loại xây dựng, hãy thử dành 1 phút để thử nghĩ rằng:
Bạn bắt đầu với một mảng đất trống trơn. Bạn sẽ kéo đường, chia khu vực trước hay đặt các công trình vào rồi tạo đường để kết nối chúng sau?
Nữa nha,
Với những anh em nào từng chơi qua các game thủ trụ (Tower Defend), hoặc các thể loại game xây dựng và đánh cướp (VD: Clash of Clan). Các anh em có hay đi tìm kiếm “Best practice” hay cách xây để được hiệu quả nhất không?
Mình dám chắc rằng ngoài những bạn thiên tài về thể loại game này và đô la thần chưởng (Pay to Win), ai cũng sẽ đôi lần đi tham khảo tìm cách xây sao cho đẹp và hiệu quả. Ở đây hiệu quả được hiểu là khai thác được tối đa công năng của các công trình.
Tới đây nếu ai chưa chơi bất kì một game nào về các thể loại trên… thì hy vọng cuối cùng chắc chắn ai cũng biết game xếp hình Teris huyền thoại. Một số bản mod của game này thêm mấy khối lạ lạ, đặc biệt là nó to hơn là dễ thua. Tại sao vậy nhỉ?!
Tất cả những điều trên là “hiện thân” của tư duy kiến trúc.
Đầu tiên nếu bạn chơi Sim City mà xây dựng đường đi trước thì chúc mừng bạn nhé. Bạn có “tố chất” của một nhà hoạch định và kiến trúc sẵn rồi. Đơn cử chúng ta thấy ở ngoài đời thật, khi phát triển đô thị, các kiến trúc sư trưởng sẽ vẽ đường trước. Các khu vực được phân chia từ trước, mặt dù công trình chưa có cái nào.
Nếu bạn xây công trình trước, trong ngành phần mềm, giống như bạn đặt tay vào code một tính năng và tập trung vào nó nhiều hơn là tương lai nó phát triển và thay đổi như thế nào.
Ở các thể loại game thủ trụ và đánh cướp, tuỳ vào tính cách, chiến thuật mà chúng ta linh động. Link vào ngành IT thì nó giống như “tuỳ nghiệp vụ”. Việc cố gắng tìm kiếm best practice chỉ là một lựa chọn tham khảo, tránh xài một cách vô tội vạ, tiền mất tật mang.
Thực ra với ngành IT, kiến trúc cụ thể trong một phần mềm luôn có sự thay đổi theo thời gian. Cái chúng ta nhìn vào thực ra là cả một quá trình phát triển rồi. Họ chỉ có thể cho ta xem, nhưng không thể lý giải hết tại sao nó lại như thế. Đó mới là thứ quan trọng nhất bị ẩn giấu.
Mặt khác khi chúng ta nhìn vào code implement của một kiến trúc nào đó, nó không khác gì nhìn vào một thành phố nguy nga tráng lệ đã được hình thành và phát triển qua bao thế hệ. Lúc này việc cần làm là khả năng nhìn vào các phần chính. Như bao công trình ngoài kia, cái cấu trúc chịu lực chính nó nằm ở đâu, mấy cái còn lại chỉ là trang trí.
Cuối cùng cục Teris lớn hơn hay cục Lego lớn hơn chơi dễ thua và mau chán thì chắc các anh em quá hiểu rồi. Khối càng nhỏ thì khả năng tuỳ biến cao, khối càng lớn thì chỉ ghép lại được vài kiểu thôi nên mau chán.
Tóm lại:
Đừng để chơi game chỉ là việc giải trí, nó là một cách luyện tập rất tự nhiên và mạnh mẽ nhé các bạn.
Việt Trần
Yêu thích tìm hiểu các công nghệ cốt lõi, kỹ thuật lập trình và thích chia sẻ chúng tới cộng đồng
follow me :
Bài viết liên quan
Nguyên lý hoạt động của Blockchain và Cryptocurrency
Jul 10, 2021 • 11 min read
Kiểu dữ liệu là gì? Static, Dynamic, Strong & Weak?
Jul 08, 2021 • 12 min read