Dev & Góc nhìn kiến trúc

Mình không chia sẻ với bạn con đường trở thành một coder giỏi vì mình không biết con đường đó nhưng có một con đường để trở thành một coder tốt.

Một số techniques nằm ở khắp mọi nơi của bài viết, phần đầu này mình muốn hướng các bạn đến một quan điểm chung về Chất Lượng (một thứ khó mà đong đếm)
Phần mềm sẽ được sẽ được xây dựng bởi nhiều người tùy vào độ lớn của nó, vậy muốn có chất lượng tốt thì điều đầu tiên chúng ta phải làm cho mọi người hiểu và ý thức được tầm quan trọng của phần mềm đó. Việc làm này giống như tất cả chúng ta sẽ cùng đi qua một cánh cổng chứ không phải mỗi người một lối.

Xây dựng phần mềm cũng giống như việc xây dựng một ngôi nhà vậy, đầu tiên bạn quan tâm tới bề ngoài của nó làm sao hợp với quang cảnh xung quanh và bên trong của nó ấm cúng và tiện nghi.

Đối với một hệ thống phần mềm thì nó cũng giống như việc bạn quy hoạch một khu đô thị, bạn sẽ không thể nào đoán trước được 50 hay 100 năm nữa đô thị trông sẽ như thế nào? Lượng dân cư ra sao? Ngoại cảnh tác động đến đô thị của bạn như thế nào, kiến trúc mới liệu có phá vỡ kiến trúc cũ hay không? … rất nhiều những băn khoăn và chăn trở như vậy.

Chắc chắn bạn không muốn hệ thống phần mềm của mình trông giống như việc quy hoạch hiện nay của HCM hay Hà Nội? Đây là điều mà tất cả chúng ta đều nhận ra, và cảm thấy không gian sống chật chội, ngày nào cũng bị tra tấn vì tắc đường và khói bụi.

Vậy trong quy hoạch kiến trúc phần mềm và đô thị có mối tương quan gì ở đây? Chistopher Alexander ông là một giáo sư và một nhà kiến trúc lừng danh. Ông có những luận điểm kiến trúc thiên tài về việc quy hoạch. 2 trong số đó là ngôn ngữ Kiểu Mẫu và ngôn ngữ Hình Thức. 
Hình thức giống như việc bạn tạo ra một bảng chữ cái để cho bọn trẻ học ghép vần ABC và khi trưởng thành chúng có thể viết ra những bài văn, tiểu thuyết hay bất kỳ thứ gì chúng muốn viết.

Trong phần mềm, nó giống như việc người ta thiết kế xây dựng ra ngôn ngữ lập trình. Từ những cú pháp (syntax) đó chúng ta lắp ghép xây dựng thành những thư viện, components và hệ thống. Nó như là một thứ gì đó ở mức độ mộc mạc nhất , từ sự mộc mạc đó về sau này những người mới sẽ xây đắp thêm nếu họ muốn. Khi chúng ta sử dụng một thiết kế có sẵn (ý là việc dùng một số thư viện, component, framework) mà chúng ta không thể tùy biến được thì hãy tìm tới nơi mộc mạc nhất của nó và tiếp cận…

Để tiếp cận một thứ mộc mạc thì cả hai phải cùng mộc mạc. ví dụ: KeangNam mà được xây ở giữa phố cổ Hội An thì trông nó sẽ lạc lõng như thế nào?

Kiểu mẫu được dùng để xây dựng thứ nội tại ở phía bên trong của nó, trong phần mềm có thể hiểu kiểu mẫu là các patterns, việc dùng nó phụ thuộc vào những yêu cầu nội tại nơi nó được xây dựng, và nó còn liên quan đến việc phát triển ở bên trong nội tại. Giống như việc bạn quy hoạch đô thị với 10 triệu dân nhưng 10 năm sau có thể đã là 15 triệu dân rồi, làm sao để không bị phá vỡ kiến trúc?
Ví dụ ban đầu bạn xây căn nhà chỉ có 2 phòng cho 2 vợ chồng và 2 đứa con nghĩ thế là quá rộng rãi rồi, nhưng đến một ngày thêm bà giúp việc, thêm họ hàng anh em đến chơi, hay con bạn lớn và chưa đủ điều kiện kinh tế mua nhà riêng… bạn phải thay đổi kiến trúc bên trong nội tại ngôi nhà bạn. Đó là sự thay đổi từ trong nội tại không được ảnh hưởng tới bên ngoài, làm sao thay đổi để nhanh nhất, tiết kiệm nhất và tiện nghi nhất? Điều này cũng không hề dễ dàng giải thích trừ khi chúng ta thật sự nếm trái đắng sau khi áp dụng nó vào thực tiễn.

Nhưng quan trọng chúng ta ý thức được việc nó sẽ xảy ra những thay đổi bởi những tác động xung quanh hay nội tại. Để làm một thứ nho nhỏ thì ai cũng làm được, nhưng kết quả của chúng làm ra thì lại khác nhau nó phụ thuộc vào cách chúng ta nhìn nhận.

Trong phần mềm cũng vậy chúng ta phải ý thức được từ việc bé, nó là một mắt xích đi cùng với một chuỗi các mắt xích khác, nếu mắt nào hư thì hệ thống đứt đoạn.
Yêu cầu làm phần mềm ngày nay khắt khe hơn xưa rất nhiều, với những hệ thống thương mại điện tử hay hệ thống kết nối cộng đồng thì việc có thêm 10.000 hay 20.000 khách hàng truy cập chi phí phần mềm chỉ được phép tăng thêm 50 hay 100usd/ tháng mà thôi (một bài viết khác mình sẽ chia sẻ với các bạn về phần này)

Phần lớn các hệ thống phần mềm lớn của Việt Nam chúng ta đều gặp phải những vấn đề khi muốn go Global. Tôi tin là các bạn Đại Việt, Topica, Tiki, … đều hiểu vấn đề này hơn ai hết. Đó là khi hệ thống mở rộng nó đòi hỏi một chi phí quá cao, nào là cải tổ, nào là đập đi xây lại… tuy nhiên thì đứng giữa 2 lựa chọn một là chi phí 2 là chết thì chúng ta chọn cái nào? Đó là khi nguồn lực IT của chúng ta còn quá ưu ái về giá, chứ cứ hơn 100k usd/năm như các ông lớn trả cho kỹ sư thì chắc phải yêu cầu khác ngay. Hihi.
Thời buổi khó khăn và còn nhiều hạn chế về mặt kỹ thuật và nhiều yếu tố khác buộc phần lớn anh em chúng ta phải outsource kiếm cơm. Nhưng để có bước đi cho 10 hay 15 năm nữa thì chúng ta phải nhìn nhận lại. Niềm tự hào nhất của anh em IT là nhìn thấy sản phẩm của mình hoạt động và ngày một phát triển, chứ ko muốn khách hàng kêu la vì không thể mở rộng doanh nghiệp do hệ thống không ổn định, lượng người dùng lớn, quá tải triền miên, phải đập đi xây lại….

Tôi chứng kiến 1 hệ thống dở khóc dở cười là dự án triển khai cho một khách hàng ở Anh. Một khách hàng chuyên về các công nghệ in, đó là việc xây dựng một ứng dụng điều khiển máy in doanh nghiệp, toàn thể team đó đều code rất tốt và họ cũng chỉ nghĩ là phục vụ cho duy nhất cái máy in đó thôi và không chú trọng tới cái gì khác ngoài cái máy in. Một ngày đẹp trời cái phòng kinh doanh lại bán được vô số máy, phải đem con máy đó tích hợp với dây truyền của các khách hàng, điều đầu tiên là phải tích hợp được, rồi phải simulate được rồi rất nhiều vấn đề khác. Thông thường con máy chạy độc lập, ông người dùng phải bấm vào cái nút Print thì mới in mà giờ ổng yêu cầu Print qua network, do một ứng dụng ra lệnh, rồi thì máy in phải in theo chương trình từ một ứng dụng khác …. Sếp? chúng mày giết anh rồi, làm sao bây giờ? Dạ đập đi xây lại anh ạ, mọi thứ chồng chéo không tách được anh(Tighly couple), uhm 🙁

Đó câu chuyện về ý thức và cách mà chúng ta nhìn nhận và những luận điểm thiên tài thì bỏ xó. Đừng google các bạn ạ mà hãy thay đổi cách nhìn nhận ngay từ bây giờ nếu các bạn muốn hệ thống của mình có thể mở rộng được.

Các bạn chờ phần tiếp theo nhé, nhớ Like và comment quan điểm của mình nhé!

Thanks you!

Y Hoang

Please follow and like us:

Leave a Reply

Your email address will not be published. Required fields are marked *