- vừa được xem lúc

[Software Architect][Đơn giản hoá vấn đề] Những kĩ năng cần học (Bài viết #3)

0 0 14

Người đăng: Nguyễn Trí Tài

Theo Viblo Asia

Nội dung bài viết được dịch từ https://roadmap.sh/, ở khía cạnh của một người đang làm Frontend Developer, đang học để trở thành Software Architect, mỗi vài viết là 1 kĩ năng. Vào vấn đề, ...

Để trở thành một software architect, bạn cần có các kĩ năng sau:

  • Thiết kế và Kiến trúc
  • Ra quyết định
  • Đơn giản hoá vấn đề
  • Biết code
  • Viết tài liệu
  • Giao tiếp
  • Ước lượng và đánh giá
  • Cân bằng
  • Tư vấn và hướng dẫn
  • Kĩ năng marketing

Sau đây là kĩ năng số 3, Đơn giản hoá vấn đề.

Đơn giản hoá vấn đề

Hãy nhớ đến nguyên tắc giải quyết vấn đề của Occam’s Razor, nguyên tắc này khuyên chúng ta nên ưu tiên sự đơn giản. Tôi hiểu nguyên tắc này như sau: Nếu bạn có quá nhiều giả định/giả sử/giả thuyết về vấn đề cần giải quyết, giải pháp của bạn có thể sẽ sai hoặc dẫn đến một giải pháp phức tạp không cần thiết. Các giả định nên được giảm bớt (đơn giản hóa) để đưa ra một giải pháp tốt.

Lắc giải pháp:

Để đơn giản hóa các giải pháp, việc "lắc" giải pháp và xem xét chúng từ các góc độ khác nhau thường rất hữu ích. Giống như bạn muốn nghiên cứu một vật, hãy cầm nó lên, và lắc thử nó, xem cách nó phản ứng như thế nào. Hoặc khi cái cây của bạn quá nhiều lá, để thấy được trái, bạn cần lắc cái cây, những lá già sẽ rụng xuống. Hãy cố gắng hình thành giải pháp bằng cách suy nghĩ từ trên xuống và ngược lại từ dưới lên. Nếu bạn có một dòng dữ liệu hoặc quy trình, hãy suy nghĩ từ trái sang phải và ngược lại từ phải sang trái. Đặt các câu hỏi như: "Điều gì sẽ xảy ra với giải pháp của bạn trong một thế giới hoàn hảo?" Hoặc: "Công ty / người X sẽ làm gì?" (Trong đó X có thể không phải là đối thủ cạnh tranh của bạn, mà là một trong những công ty GAFA (Google, Apple, Facebook, & Amazon)). Cả hai câu hỏi này đều buộc bạn phải giảm bớt giả định như Occam’s Razor đã đề xuất.

Lùi lại một bước:

Sau những cuộc thảo luận dài và căng thẳng, kết quả thường là những bản phác thảo phức tạp. Bạn không bao giờ nên coi đây là kết quả cuối cùng. Hãy lùi lại một bước: Nhìn lại bức tranh lớn một lần nữa (ở cấp độ trừu tượng). Nó có còn hợp lý không? Sau đó, xem xét lại nó ở cấp độ trừu tượng và tái cấu trúc. Đôi khi việc dừng cuộc thảo luận và tiếp tục vào ngày hôm sau sẽ có ích. Ít nhất là bộ não của bạn cần thời gian để xử lý và đưa ra những giải pháp tốt hơn, tinh tế hơn và đơn giản hơn. Có thể là nên đi ăn một món gì đó thiệt ngon!!!

Chia để trị:

Đơn giản hóa vấn đề bằng cách chia nó thành những phần nhỏ hơn. Sau đó giải quyết chúng một cách độc lập. Sau đó, xác nhận xem các phần nhỏ có phù hợp với nhau không. Hãy lùi lại một bước để nhìn vào bức tranh tổng thể.

Tái cấu trúc không phải là xấu:

Hoàn toàn ổn để bắt đầu với một giải pháp phức tạp hơn nếu không tìm thấy ý tưởng tốt hơn. Nếu giải pháp gặp rắc rối, bạn có thể sau này suy nghĩ lại về giải pháp và áp dụng những gì bạn đã học được. Tái cấu trúc không phải là xấu. Nhưng trước khi bạn bắt đầu tái cấu trúc, hãy nhớ rằng bạn phải:

  • (1) có đủ các bài kiểm tra tự động để đảm bảo chức năng thích hợp của hệ thống
  • (2) sự đồng thuận từ các bên liên quan.

Để tìm hiểu thêm về tái cấu trúc, tôi gợi ý bạn đọc cuốn “Refactoring. Improving the Design of Existing Code” của Martin Fowler.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Nguyên tắc thứ ba trong SOLID: Liskov Substitution Principle

Năm 1988, Barbara Liskov đã phát biểu những điều sau như một cách để định nghĩa các subtype:. .

0 0 35

- vừa được xem lúc

Nguyên tắc thứ hai trong SOLID: Open-Closed Principle

Đây là bài tiếp theo của Nguyên tắc thứ nhất trong SOLID: Single Responsibility Principle. . Open-Closed Principle (OCP) được đặt ra năm 1988 bởi Bertrand Meyer. Nguyên tắc này nói rằng:.

0 0 47

- vừa được xem lúc

Nguyên tắc thứ nhất trong SOLID: Single Responsibility Principle

Trước tiên cho ai chưa biết SOLID là gì thì đây là bộ gồm 5 nguyên tắc trong thiết kế nói chung (không chỉ trong thiết kế phần mềm đâu nhé) với mỗi chữ cái đầu trong từ S-O-L-I-D thể hiện một nguyên tắc. Không sai, đúng là có một nguyên tắc như vậy.

0 0 31

- vừa được xem lúc

Nguyên tắc thứ tư trong SOLID: Interface Segregation Principle

Câu chuyện về cái tên Interfact Segregation Principle (ISP) có thể kể bắt đầu từ cái đồ thị dưới đây:. .

0 0 36

- vừa được xem lúc

Nguyên tắc thứ năm trong SOLID: The Dependency Inversion Principle

The Dependency Inversion Principle (DIP) nói rằng những hệ thống có tính mềm dẻo là khi source code dependency của nó chỉ trỏ tới các thành phần trừu tượng (abstraction), chứ không phải là các thành p

0 0 92

- vừa được xem lúc

Hexagonal Architecture là gì và ứng dụng của nó

I. Tổng quan về kiến trúc phần mềm. . Application without architecture (nguồn: Internet).

0 0 42