Tư duy kỹ sư & Thiết kếĐộ khó: N1 / Nâng cao⏱ 6 phút đọc

Ghi chép để không vô thức cụ thể hóa quá sớm khi đang suy nghĩ những vấn đề trừu tượng (抽象的なことを考える時、無意識に具体化しないためのメモ)

概Điểm nhấn trọng tâm của bài viết (Overview)

Bài viết dạng suy ngẫm (ポエム) sâu sắc về tư duy thiết kế phần mềm, phân tích nghiệp vụ (Domain Modeling / DDD) và đặt câu hỏi 'Why'.

Ghi chép để không vô thức cụ thể hóa quá sớm khi đang suy nghĩ những vấn đề trừu tượng (抽象的なことを考える時、無意識に具体化しないためのメモ)

✍️ Tác giả gốc: J-T_ky2g (JISOU | プログラミングコーチング) trên diễn đàn công nghệ Qiita Nhật Bản
🔗 Tiêu đề gốc có Furigana: 抽象的ちゅうしょうてきなことを考かんがえる時とき、無意識むいしきに具体化ぐたいかしないためのメモ
🌐 Liên kết bài gốc: 抽象的なことを考える時、無意識に具体化しないためのメモ

📌 Điểm nhấn cốt lõi (Key Takeaways)

  • Bài viết dạng suy ngẫm (ポエム) sâu sắc về tư duy thiết kế phần mềm, phân tích nghiệp vụ (Domain Modeling / DDD) và đặt câu hỏi ‘Why’.
  • Cảnh báo thói quen của kỹ sư: đang hỏi ‘Why’ nhưng lại vô thức nhảy sang nghĩ về cách cài đặt (How), bảng DB hay tính khả thi quá sớm.
  • Phân tích giá trị của tri thức ngầm (暗黙知 - Tacit Knowledge) và lý do vì sao trong thời đại LLM viết được code, con người vẫn cần trực tiếp viết code để tích lũy trải nghiệm.

Mở đầu (はじめに)

Có những lúc tôi cứ ngỡ mình đang đặt câu hỏi “Tại sao (Why)”, nhưng chẳng biết từ lúc nào lại trượt sang suy nghĩ về những chi tiết cụ thể, nên tôi ghi chép lại những điều cần lưu ý.

Khi nắm trúng cốt lõi thì mọi thứ trở nên nhẹ nhàng (芯しんをくっていると楽らく)

  • Khi phần có độ trừu tượng cao không bị lệch hướng thì làm việc rất nhàn.
  • Những thứ như mẹo tắt sự nghiệp (career hack), SEO mũ đen hay lách vùng xám không làm tăng giá trị bản chất, mà chỉ tính toán tỉ mỉ tiểu tiết cụ thể để thực thi nên không được phép sai sót dù chỉ một chút — vì thế rất mệt mỏi.
  • Vì vậy, không cần thiết phải suy nghĩ những thứ phức tạp một cách vô ích.
  • Việc phải hiện thực hóa (code) trên một bản thiết kế sai lầm vất vả thế nào cũng giống hệt như vậy. Khi lý do “Why” đã rõ ràng, dù không tính trước từng chi tiết vụn vặt thì về sau vẫn hoàn toàn giải thích được.

Điều nằm ở phía trước cả việc tối ưu hiệu suất (効率化こうりつかよりも前まえのこと)

  • “Tối ưu hóa hiệu suất” là một tín hiệu nguy hiểm. Có thể đó chỉ là bạn đang làm theo những gì được bảo mà thôi.
  • Trong bối cảnh kinh doanh sử dụng phần mềm, nếu không chỉ dừng ở việc tối ưu hóa hay hiện thực hóa tính năng, mà chú trọng vào việc nâng cao doanh thu của khách hàng thì tầm nhìn (thị tọa) sẽ được nâng lên tới tầng “Why”.
  • Khâu lập kế hoạch và xác định bài toán nằm ở rất xa phía trước việc tối ưu hóa hiệu suất. Một việc vốn chẳng quan trọng thì có tối ưu hóa nó cũng vẫn chẳng có ý nghĩa gì. Khi lập kế hoạch hay đề xuất, tốt nhất là hãy động não (brainstorm) bung ra trước rồi mới gọt giũa bớt sau.

Đặt trọng tâm ở mức “Trân trọng con người” có lẽ là cân bằng nhất / Càng vội tìm đáp án càng dễ bó hẹp tư duy (人ひとを大切たいせつにくらいがバランスが良よいかも / 答こたえを求もとめると小ちいさくまとまる)

  • Ắt hẳn vẫn có những tầng trừu tượng cao hơn nữa, nhưng để sống giữa xã hội loài người hiện đại mang tính văn hóa và kinh tế tư bản chủ nghĩa, hãy nghĩ về con người. Hãy dành sự quan tâm cho con người, giữ một tâm thế hơi nhiệt huyết kiểu “Hãy cùng sống một cuộc đời thật tốt nhé”, và tin tưởng vào tiềm năng của con người.
  • Hãy tiếp tục đặt câu hỏi không ngừng. Nhặt ra những gợn băn khoăn nhỏ nhất hay từng lời nói thoáng qua. Mỗi người lại nắm giữ những thông tin khác nhau.
  • Khi vội tìm kiếm đáp án thì suy nghĩ sẽ bị bó hẹp lại: Hãy giữ cảm giác hào hứng, thậm chí là tưởng tượng bay bổng cũng được. Chưa ra đáp án ngay không phải là điều xấu. Giống như vấn đáp Thiền (Thiền vấn đáp), hãy cứ hỏi “Tại sao” liên tục. Chính suy nghĩ cho rằng “chẳng có ý nghĩa gì” mới là thứ vô nghĩa.

Vứt bỏ tư duy của người lập trình thực thi / Nghĩ quá xa về bước sau sẽ làm bó hẹp hiện tại (実装者じっそうしゃの考かんがえを捨すてる / 今いまのことより先さきを考かんがえると小ちいさくまとまる)

  • Vứt bỏ tư duy của người code: Đừng đọc/nghe nghiệp vụ theo kiểu ánh xạ (mapping) giữa code và tài liệu đặc tả giao diện (I/F). Tuyệt đối không được nghĩ tới việc cài đặt, đặc biệt là việc lưu trữ dữ liệu bền vững (data persistence) xuống Database ở giai đoạn này.
  • Đừng vừa đọc vừa trích lược hay ghi chép vụn vặt. Hãy chỉ專 tâm lắng nghe. Nếu thấy khó, hãy hình dung ra khung cảnh thực tế, đặc biệt là những điểm mà cảm xúc của người trong cuộc rung động mạnh mẽ. Hãy tự nhủ “chỉ có lúc này mới nghe được thôi” để kiên nhẫn lắng nghe trọn vẹn.
  • Đừng nghĩ về tính khả thi (feasibility); đó là giai đoạn sau. Đừng biến nó thành công thức kiểu tính thực tế khi bàn giao (delivery) hay “lấy A và B làm thành C” — ngay khoảnh khắc làm vậy, nó đã biến thành “How (Làm thế nào)” mất rồi. Hiểu DDD (Domain-Driven Design) chỉ là làm cho code khớp với tài liệu thiết kế thì quá hẹp; hiểu DDD là “xử lý sự phức tạp” thì mới đạt độ trừu tượng cao.

Chuyên gia (Người sành sỏi) và Người ngoại đạo (Tay mơ) (玄人くろうとと素人しろうと)

  • Sự phán đoán chủ quan của người không chuyên là nguyên nhân gây ra lỗi (bao gồm cả ngoài hệ thống), nhưng câu hỏi ngây thơ của người không chuyên lại là chìa khóa giải quyết vấn đề. Chuyên gia (玄人 - Pro) là người sở hữu chất lượng và khối lượng “tri thức ngầm (暗黙知)” vượt trội hơn.
  • Nhờ những kỹ sư là “người ngoại đạo” về miền nghiệp vụ (domain) nhưng lại giàu kinh nghiệm về mặt cụ thể hóa hệ thống, tri thức ngầm (暗黙知) của chuyên gia nghiệp vụ được ngôn ngữ hóa và chuyển thành tri thức hiện (形式知) một cách chuẩn xác. Giá trị của phần mềm nằm ở chỗ phổ thông hóa (commodity hóa) những phần có thể phổ thông hóa. Hãy dựa vào tri thức ngầm của chuyên gia và truyền tải nó tới người dùng.
  • Con người lĩnh hội tri thức ngầm thông qua trải nghiệm thực hành của cơ thể. Khi chuyển sang ngôn ngữ thì một phần thông tin đã bị rơi rụng, nên đây là mảng có vẻ khó đối với LLM. Để tích lũy được tri thức ngầm, ngay cả trong thời đại LLM đã viết được code, việc tự tay viết code vẫn vô cùng quan trọng.

📚 Bảng thuật ngữ IT & Hán Việt trong bài (重要IT用語集)

Thuật ngữ (Kanji) Furigana / Romaji Âm Hán Việt Ý nghĩa tiếng Việt Cấp độ
抽象的ちゅうしょうてき ちゅうしょうてき TRỪU TƯỢNG ĐÍCH Mang tính trừu tượng, khái quát N2
無意識むいしき むいしき VÔ Ý THỨC Vô thức, không chủ ý N2
芯をくうしんをくう しんをくう TÂM Đánh trúng cốt lõi, nắm trúng bản chất N1
抽象度ちゅうしょうど ちゅうしょうど TRỪU TƯỢNG ĐỘ Mức độ trừu tượng (Level of abstraction) Technical
本質的ほんしつてき ほんしつてき BẢN CHẤT ĐÍCH Mang tính bản chất, cốt lõi N2
緻密ちみつ ちみつ TRÍ MẬT Tỉ mỉ, chi tiết, chặt chẽ N1
設計せっけい せっけい THIẾT KẾ Thiết kế (hệ thống/kiến trúc) N3
実装じっそう じっそう THỰC TRANG Hiện thực hóa, cài đặt, viết code (Implementation) Technical
危険信号きけんしんごう きけんしんごう NGUY HIỂM TÍN HIỆU Tín hiệu nguy hiểm, dấu hiệu cảnh báo N2
文脈ぶんみゃく ぶんみゃく VĂN MẠCH Ngữ cảnh, bối cảnh (Context) N2
着目ちゃくもく ちゃくもく TRƯỚC MỤC Chú trọng, đặt sự chú ý vào N2
視座しざ しざ THỊ TỌA Tầm nhìn, vị thế góc nhìn (Vantage point / Perspective) N1
削るけずる けずる TƯỚC Gọt bớt, cắt giảm, lược bỏ N3
暑苦しいあつくるしい あつくるしい THỬ KHỔ Nồng nhiệt quá mức (nghĩa bóng); oi bức ngột ngạt (nghĩa đen) N2
違和感いわかん いわかん VI HÒA CẢM Cảm giác lệch lạc, gợn băn khoăn, thấy có gì đó sai sai N2
拾い上げるひろいあげる ひろいあげる THẬP THƯỢNG Nhặt ra, gom lấy, lắng nghe và nắm bắt N2
妄想もうそう もうそう VỌNG TƯỞNG Tưởng tượng bay bổng, vọng tưởng N1
禅問答ぜんもんどう ぜんもんどう THIỀN VẤN ĐÁP Vấn đáp Thiền (hỏi đáp triết lý sâu xa chưa có câu trả lời ngay) N1
永続化えいぞくか えいぞくか VĨNH TỤC HÓA Lưu trữ bền vững (Data Persistence) Technical
抜粋ばっすい ばっすい BẠT TÚY Trích lược, trích đoạn N1
ひたすらひたすら ひたすら CHỈ QUẢN Một lòng một dạ, chỉ chuyên tâm vào một việc N2
実現可能性じつげんかのうせい じつげんかのうせい THỰC HIỆN KHẢ NĂNG TÍNH Tính khả thi (Feasibility) N1
玄人くろうと くろうと HUYỀN NHÂN Chuyên gia, người sành sỏi trong nghề N1
暗黙知あんもくち あんもくち ÁM MẶC TRI Tri thức ngầm, tri thức ẩn (Tacit knowledge) N1
形式知けいしきち けいしきち HÌNH THỨC TRI Tri thức hiện (Explicit knowledge) N1
獲得かくとく かくとく HOẠCH ĐẮC Đạt được, thu nhận, lĩnh hội N2

📐 Ngữ pháp tiếng Nhật IT bổ trợ (文法解説)

  • 〜つもりで (N3): Cứ đinh ninh là…, có ý định là…
    • Cấu trúc: V-る / V-ている + つもりで
    • Sắc thái sử dụng: Diễn tả sự lệch pha giữa ý định chủ quan (nghĩ là đang hỏi Why) và hành động thực tế (đang nghĩ về cái cụ thể).
  • いつの間にか (N3): Chẳng biết từ lúc nào…
    • Cấu trúc: いつの間にか + Mệnh đề
    • Sắc thái sử dụng: Diễn tả sự chuyển biến diễn ra trong vô thức.
  • 〜ず(に) (N3): Không làm A mà…
    • Cấu trúc: V-ない (bỏ ない) + ず
    • Sắc thái sử dụng: 本質的な価値をあげず = Không làm tăng giá trị bản chất.
  • 〜において(は) (N2): Trong (bối cảnh / lĩnh vực / phạm vi)…
    • Cấu trúc: Danh từ + において(は)
    • Sắc thái sử dụng: ビジネスという文脈においては = Xét trong bối cảnh kinh doanh.
  • もはや〜でも (N2): Thậm chí đến mức…, giờ đây…
    • Cấu trúc: もはや + Danh từ / Mệnh đề
    • Sắc thái sử dụng: もはや妄想でもいい = Thậm chí cứ tưởng tượng bay bổng luôn cũng được.
  • 〜てはいけない (N4): Không được phép…
    • Cấu trúc: V-て + はいけない
    • Sắc thái sử dụng: データ永続化のことは考えてはいけない = Không được nghĩ tới việc lưu DB ở bước này.
  • 〜た時点で (N2): Ngay tại thời điểm…
    • Cấu trúc: V-た + 時点で
    • Sắc thái sử dụng: した時点でhowになる = Ngay khoảnh khắc làm vậy thì nó đã biến thành How.
Quay lại danh sách bài viết
架
Ban biên tập BrSE.vnKỹ sư Cầu nối & Chuyên gia Dự án Nhật - Việt

Đội ngũ biên tập BrSE.vn gồm các Bridge Software Engineer (BrSE) và Solution Architect với hơn 10 năm kinh nghiệm thực chiến trong các dự án hợp tác công nghệ Việt - Nhật. Chia sẻ kiến thức về kỹ thuật làm rõ yêu cầu (要件定義), tài liệu đặc tả hệ thống, lược dịch chuyên sâu từ Qiita và kỹ năng cầu nối song hành công nghệ - nghiệp vụ.