🌱 Định luật Murphy trong Coding

🌱 Định luật Murphy trong Coding

    Lâu rồi mới có một bài viết không liên quan đến Technical nhân dịp năm mới. Bài viết nói về định luật Murphy, và tất nhiên rồi, bài viết sẽ bàn về việc áp dụng nó vào trong cuộc sống và công việc như thế nào!

    👉 Định luật Murphy là gì?

    Định luật Murphy là một định luật khá nổi tiếng, nội dung của định luật này có thể tóm tắt như sau: "Nếu một việc xấu có thể xảy ra, thì chắc chắn nó sẽ xảy ra, và thường xảy ra theo cách tồi tệ nhất"

    Nghe có vẻ không hoàn toàn chính xác, nhưng chúng ta có thể đã và đang trải qua những sự kiện tương tự như nội dung định luật Murphy trong cuộc sống. Chẳng hạn:

  • Khi bạn đứng đợi xe bus, nó sẽ luôn tới muộn; khi bạn quyết định không đợi nữa thì hết chiếc xe này đến chiếc xe khác lướt ngang qua.
  • Khi bạn không tập trung làm việc, bạn cứ nghĩ bản thân sẽ không bị sếp phát hiện, kết quả lại luôn bị sếp nhìn thấy.
  • Khi một miếng bánh mì phết kem bị rơi, nó có xu hướng rơi mặt phết kem xuống đất.

Murphy

    Định luật Murphy nhắc nhở chúng ta rằng, sai lầm là một phần của thế giới này. Dù cho chúng ta đã cố gắng để tránh khỏi những sai lầm, song trong thực tế vẫn không thể thoát khỏi việc mắc sai lầm. Dù là người giỏi giang nhiều kinh nghiệm đến đâu cũng có những lúc mắc lỗi. Có một thực tế là đa số mọi người thường mắc sai lầm theo kiểu "Tự cho mình là đúng"

    ➤ Ví dụ

  • Tăng ca ngày đêm vì muốn thăng chức tăng lương, kết quả người được thăng chức lại là người đồng nghiệp không hề tăng ca.
  • Khi viết code chúng ta thường có xu hướng nghĩ rằng code của mình đúng, đặc biệt sau một số case cơ bản chạy đúng. Nhưng thực tế khi người khác nhìn vào hoặc viết test thì ngay lập tức phát hiện ra bug. Chính vì vậy trong ngành lập trình thường có 2 vai trò riêng biệt là developer và tester.

    👉 Định luật Murphy ứng dụng gì vào trong cuộc sống?

    Lúc mới nghe nội dung của định luật Murphy thì có vẻ nó mang tính xác suất và không thực tế. Tuy nhiên, ứng dụng của nó vào trong cuộc sống và công việc lại vô cùng to lớn. Nó không chỉ là một định luật liên quan đến xác suất hay may mắn, nó còn có ý nghĩa về mặt tâm lý học, mặt này các bạn có thể tham khảo thêm trên các tài liệu khoa học liên quan nếu có hứng thú. Trong quá trình học tập và làm việc, mình đã rút ra một số bài học kinh nghiệm từ định luật Murphy:

    💬 Code và Test nên cover tất cả các trường hợp có thể

    Đối với bản thân mình, mình luôn ghi nhớ và áp dụng định luật Murphy cho nhiều tình huống trong cuộc sống. Chẳng hạn trong công việc lập trình, dù ở role dev hay test, mình cũng luôn có suy nghĩ: 

"Nếu một phần mềm có thể tồn tại bug, thì chắc chắn bug đó sẽ xảy ra, và thường thì nó sẽ xảy ra trong tình huống tồi tệ nhất 😅"

    Tất nhiên rồi, tình huống tồi tệ đó chính là khi khách hàng sử dụng sản phẩm phần mềm của chúng ta 😝 Và lúc đó thì vừa mất tiền vừa mất uy tín. Điều này tất nhiên chẳng dựa trên cơ sở khoa học nào cả, vì chẳng ai đảm bảo cho việc phần mềm sẽ có bug khi mà khách hàng sử dụng, mặc dù bug đó vẫn đang tồn tại. Nhưng, hoàn toàn nó có thể xảy ra đúng không?

    Chính vì vậy khi coding hay testing, không bao giờ mình nghĩ một tính năng hay một trường hợp mà khách hàng sẽ không sử dụng. Tất cả mọi trường hợp có thể xảy ra, đặc biệt là những phần mềm liên quan đến an toàn, bảo mật, ví dụ như Automotive hay IOT, ...

    💬 Chỉnh chu với Documents

    Với trường hợp code của chúng ta ở điều kiện lý tưởng - tức là không còn tiềm ẩn bug, thì vẫn còn những khả năng xấu có thể xảy ra, đó là người dùng không biết các sử dụng, hoặc lỗi có thể xảy ra khi maintain, ...

    Rất nhiều developer thường bỏ qua những thói quen tốt như comments chi tiết vào code, làm design và user manual. Việc làm tốt User Manual, note những limitation, ... sẽ giúp người dùng dễ dàng tiếp cận với sản phẩm hơn và tránh khỏi những sai sót khi sử dụng, tiết kiệm thời gian phải liên lạc để hỏi lại. Tương tự, việc làm tốt design và comment code sẽ giúp tiết kiệm thời gian maintain và tránh được những sai xót.

    💬 Lỗi có thể phát sinh từ bất cứ đâu

    Đối với ngành mình đang làm việc là Embedded System thì lỗi xảy ra hoàn toàn có thể do nhiều nguyên nhân ngoài phần mềm. 

  • Có trường hợp phần mềm viết rất chuẩn theo Reference Manual, nhưng khi chạy lại chạy không mong muốn, thì chúng ta có thể nghĩ đến lỗi do phần cứng gây ra. Trong thực tế, những lỗi hay limitation của phần cứng cũng xuất hiện khá nhiều.
  • Trường hợp trên còn tồn tại một khả năng gây lỗi nữa, đó là phần mềm viết rất chuẩn theo Reference Manual, phần cứng hoạt động đúng theo phần mềm. Nhưng kết quả đầu ra không mong muốn có thể xảy ra do Reference Manual viết sai.
  • Khi làm việc với driver chip, cũng có rất nhiều trường hợp code của một module hoạt động sai nhưng không phải do driver module đó, mà có thể do driver của module phụ thuộc. Ví dụ sử dụng UART thì lỗi còn có thể tiềm ẩn ở Clock, GPIO, chứ không phải chỉ có ở phần mềm của UART. 

    Nhìn chung, ngoài công việc, bạn cũng nên tìm hiểu các hiện tượng tâm lý, các định luật tự nhiên mà ngày thường không để ý đến. Những lý thuyết này nhiều khi nhìn vào khá tầm thường nhưng lại ảnh hưởng rất lớn đến cuộc sống của chúng ta. Các bạn có thể tìm hiểu nhiều hơn về định luật Murphy trong cuốn sách khá hay này:

Định luật Murphy – Mọi bí mật tâm lý thao túng cuộc đời bạn

Murphy

>>>= Follow ngay =<<<

💚 Kênh Youtube Lập trình - Điện tử 💚

Để nhận được những bài học miễn phí mới nhất nhé 😊

        Chúc các bạn học tập tốt 😊

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn