19/09/2018, 13:57

Nợ kỹ thuật là gì? Và tại sao hầu như các startup đều có nó?

Bài viết của tác giả CungMinh đăng trên https://namphut.vn/ Nợ kỹ thuật (hay còn gọi là technical debt) là bất kỳ mã hay đoạn code được thêm vào thời điểm hiện tại mà có thể làm mất nhiều công sức và thời gian để sửa chữa một thời gian sau – điển hình với mục đích đạt được những ...

Bài viết của tác giả CungMinh đăng trên https://namphut.vn/

Nợ kỹ thuật (hay còn gọi là technical debt) là bất kỳ mã hay đoạn code được thêm vào thời điểm hiện tại mà có thể làm mất nhiều công sức và thời gian để sửa chữa một thời gian sau – điển hình với mục đích đạt được những lợi ích nhanh chóng.

Nhưng điều đó có nghĩa gì?

Nợ kỹ thuật giống như bất kỳ loại nợ khác. Hãy so sánh nó với việc mua một căn nhà. Hầu hết mọi người không có hàng trăm ngàn đô la trong ngân hàng để mua một ngôi nhà. Vì vậy, mọi người đưa ra một thế chấp. Người mua phải trả nợ trong vòng 15 đến 30 năm tới với lãi suất bổ sung. Nếu người mua không trả tiền vay đúng hạn, thì họ mất nhà cửa.

Nợ kỹ thuật không khác là bao. Nó cho phép các công ty tạo ra phần mềm nhanh chóng hơn, với sự hiểu biết rằng họ có thể làm chậm sự phát triển phần mềm trong tương lai. Các công ty cuối cùng buộc phải dành nhiều thời gian để sửa khoản nợ hơn là thời gian họ phải đưa ra giải pháp tốt nhất ngay từ đầu.

Các giải pháp tối ưu cho bất kỳ vấn đề kỹ thuật phần mềm thường đòi hỏi một khoản đầu tư lớn. Phải mất nhiều thời gian hơn để viết mã mà không nhận được kết quả ngay tức thì.

Nợ công nghệ có thể tạo ra một trải nghiệm khó khăn cho các nhà phát triển phần mềm và hạn chế khả năng mở rộng sản phẩm theo định hướng dài hạn. Nhưng gần như tất cả các công ty mới thành lập đều phải chịu nợ kỹ thuật. Nhiều người sử dụng nó như một chất xúc tác cho sự tăng trưởng ngắn hạn.

Vì vậy, nợ kỹ thuật không phải luôn luôn là một điều xấu.


Photo by Luca Bravo on Unsplash

Làm thế nào bạn có thể phát hiện ra nợ kỹ thuật

Khoản nợ kỹ thuật không chỉ là một khái niệm trừu tượng. Nó có thể được giải thích theo các thuật ngữ cụ thể và mô tả bằng hình vẽ. Một phép so sánh tuyệt vời là độ phức tạp thuật toán – Big O Notation. Khi kích thước của một cơ sở mã tăng lên, chúng ta có thể đo được nỗ lực cần thiết để thêm các tính năng mới.

Bất cứ điều gì trên đường O (n) tuyến tính màu xanh là nợ kỹ thuật, và bất cứ điều gì dưới nó không. Điều này có nghĩa là nợ kỹ thuật làm cho việc viết mã trở nên khó khăn hơn vì mã được thêm vào.

Các giải pháp có thể mở rộng dưới đường màu xanh thường là sự trừu tượng hoá đoạn code. Thư viện và công cụ cũng thường được sử dụng, làm cho phần mềm xây dựng dễ dàng hơn. Ví dụ về việc này có thể bao gồm xây dựng các tính năng cụ thể của ứng dụng như bảng điều khiển nội bộ để sử dụng thư viện và các công cụ như React hoặc Docker (hãy tưởng tượng làm thế nào để xây dựng lại chúng cho từng dự án). Các công cụ, thư viện và sự trừu tượng hoá vấn đề có thể tác động tích cực, trong khi nợ kỹ thuật có tác động xấu.

Như biểu đồ mô tả, nợ kỹ thuật ban đầu có thể là con đường tối ưu, nhưng nó cần phải được sắp xếp lại một cách nhanh chóng nếu tính năng ứng dụng thành công. Điều này hỗ trợ khái niệm khởi động của việc đưa ra các ý tưởng nhanh chóng như là một MVP, và sau đó nhanh chóng lặp lại và cải tiến chúng.

Đầu tiên bạn cần tìm ra ý tưởng nào đạt được sự ưu thích, và sau đó lặp đi lặp lại việc xây dựng chúng theo cách mà sản phẩm/ý tưởng có thể trở nên có thể mở rộng.

Một tính năng có thể khởi chạy bằng cách áp dụng phức tạp O (n²) trên cơ sở mã (nợ kỹ thuật), nhưng có thể được sắp xếp lại thành O (n) và O (log n) theo thời gian. Các O (log n) cho phép một người hoặc một nhóm nhỏ của người dân để sản xuất sản lượng tương tự như một đội lớn hơn.

Khi nợ công nghệ được chấp nhận?

Khách hàng không quan tâm đến mã của bạn như thế nào.

Họ chỉ muốn sản phẩm của bạn. Một tính năng hoàn hảo duy nhất mà không bao giờ được phát hành và thất bại là không có gì đáng giá so với một startup có một số các tính năng hữu dụng mà người dùng thích.

Sự khởi đầu mạnh mẽ này sau đó có thể lặp lại các tính năng thu được và trau dồi chúng trở nên có thể mở rộng hơn. Một khi sự khởi đầu, có thể chưa hoàn hảo, tìm thấy thành công, họ có thể xây dựng nhóm kỹ thuật của họ và trả nợ kỹ thuật. Điều này sẽ đặt họ vào thành công trong tương lai.

Việc hoàn vốn từ khoản nợ kỹ thuật phải cao hơn khoản nợ. Đó là, bất kể bạn có thể đạt được điều gì bằng việc mua nợ, nó phải có tác động lớn hơn chính khoản nợ.

Khoản nợ kỹ thuật không phải là cái cớ để lười biếng.

Nó nên được sử dụng chiến lược với một tầm nhìn dài hạn trong tâm trí. Khởi nghiệp startup nên di chuyển nhanh chóng và thử nghiệm các ý tưởng của họ trên thị trường. Nên hiểu rằng quản lý nó chính xác có thể là một chất xúc tác mạnh mẽ cho sự tăng trưởng. Nhiều khi, nợ kỹ thuật là con đường tốt nhất. Cho đến khi nó không còn như vậy.

Ví dụ đời thường

– Học cách khởi đầu không hoàn hảo của Facebook, Amazon – NamPhut

– Khởi nghiệp: Sản phẩm hay là Marketing? Cái nào quan trọng hơn – NamPhut

0