Đạo lập trình

Để bắt đầu cho những chủ đề mình muốn chia sẻ với các bạn – mình muốn đi từ một xuất phát điểm về nền tảng: “Đạo” trong lập trình. Nếu không xác lập “Đạo” – bạn sẽ dễ dàng lạc lối và trở thành một người bị đánh mất những giá trị Chân – Thiện – Mỹ trên con đường mình đang đi, dễ rơi vào cái xấu và trở thành một người bị bài xích trong cộng đồng.
Vậy Đạo là gì?
Đạo, theo chữ Hán nghĩa đen là con đường hay đường đi, nghĩa bóng mang khái niệm trừu tượng về con đường, phương hướng, đường lối dẫn dắt con người đi đến mục tiêu hay lý tưởng nào đó. Có rất nhiều lý tưởng, phương hướng và nguyên tắc khác nhau về Đạo, thí dụ Thiên đạo, Nhơn đạo, Trí đạo, Tâm đạo. Tuy vậy, tất cả những con đường Đạo khác nhau đó có cùng chung một nền tảng cơ bản là dựa trên cái Thiện, cái Đẹp, Tự Nhiên trong sáng lành mạnh và Chân Chính để mưu cầu Hạnh Phúc và An Bình cho con người. (theo Wikipedia).
Đạo trong lập trình
Là một lập trình viên hay ở bất cứ ngành nghề nào – trước tiên phải xác lập một số nguyên tắc đễ dẫn đường cho bạn trong tất cả mọi hành xử và những giá trị cao đẹp mình muốn hướng tới. Đây là một chủ đề rộng và rất dễ làm bạn lan man. Thậm chí cũng có rất nhiều quan điểm khác nhau. Tuy nhiên, xuất phát từ quan điểm cá nhân của mình, đạo trong lập trình cần được xác lập dựa trên các nguyên tắc sau:
- Nguyên tắc về chất lượng trên những giá trị mình cung cấp.
- Nguyên tắc về cách hành xử với bạn bè, đồng nghiệp và công ty
- Nguyên tắc về cách hành xử với khách hàng
- Nguyên tắc về cách hành xử với cộng đồng
Sau đây mình sẽ viết chi tiết hơn về những nguyên tắc giá trị này.
Nguyên tắc về đảm bảo chất lượng sản phẩm
Mỗi chúng ta giống như một thương nhân khi đặt chân vào bất kì ngành nghề nào. Nếu ta không hài lòng với cái ta làm ra – thì làm sao ta bán được cho khách hàng. Trong lập trình, giá trị bản thân ta được phản ánh trên mỗi dòng code ta viết. Nếu ta viết code cẩu thả, thì ta là con người cẩu thả. Nếu ta không quan tâm đến việc hướng đến viết những dòng code đẹp, hiệu quả – thì bản thân ta cũng không có bất cứ động lực nào để phát triển. Mình hay nói với các bạn đồng nghiệp: code thế nào thì người thế ấy.
Một người lập trình viên tốt sẽ hướng đến trau chuốt những gì mình làm ra, giống như một nghệ nhân. Họ biết tìm tòi những nguyên lý về code refactoring, beautiful code, design patterns để vận dụng và làm cho thiết kế sản phẩm trở nên hoàn mỹ. Hãy đặt bạn vào tâm lý của một khách hàng. Bạn có tôn trọng một người bán hàng bán cho bạn một sản phẩm đầy khiếm khuyết ?
Có bạn hỏi tôi rằng: làm sao em viết ra code tốt trong khi dự án em đang làm bị dzí deadline trối chết?
Câu trả lời của tôi là: em hãy làm điều em cảm thấy không thẹn với lương tâm. Code tốt là code mà em tự hào khi release với một thiết kế đáp ứng tốt nhất mà em có thể đưa ra với những ràng buộc về thời gian, kinh phí ở thời điểm ấy. Nó thể hiện tính chuyên nghiệp của em trong công việc.
Câu này thực ra mình trích dẫn của Robert C Martin:
Good code is code that you are proud to release. Code that you know you have done your best on. Code that you “know” works, and that you have given the best design you can think of in the time available. This is not perfection, it is diligence; it is professionalism.
Robert C. Martin
Nguyên tắc về cách hành xử với đồng nghiệp và công ty
Đối với mình nguyên tắc này dựa trên 4 từ: trách nhiệm, chân thành, tôn trọng và chia sẻ.
Trách nhiệm: hãy chịu trách nhiệm trên những gì mình làm. Thừa nhận khuyết điểm nếu mình sai. Tìm cách làm tốt hơn những vai trò mà trách nhiệm mình đang gánh vác. Chia sẻ trách nhiệm công việc với những đồng nghiệp để tạo điều kiện cho họ phát triển.
Chân thành: đối xử với đồng nghiệp như anh em. Giúp đỡ và san sẻ những kiến thức, kinh nghiệm mình có. Tiếp thu góp ý, phê bình. Thẳng thắn nói lên quan điểm để đóng góp ý kiến cho tập thể phát triển.
Tôn trọng:
- Đối với đồng nghiệp: tôn trọng quan điểm của họ. Tôn trọng những người đã truyền cho mình kiến thức, kinh nghiệm. Đặt mình vào vị trí của một người để hiểu tại sao họ hành xử như vậy trước khi trách cứ hay quyết định kĩ luật (nếu bạn là sếp). Suy nghĩ về nhân viên, đồng nghiệp như những con người có vui buồn, cảm xúc chứ không phải chỉ là những resource trong một nhà máy công nghiệp.
- Đối với công ty: Không bao giờ làm mất mặt hình ảnh của công ty. Không nói xấu, không chia sẻ những bức bối trong công việc hay công ty ra bên ngoài. Không lôi kéo người khác hay vì lợi ích cá nhân mà làm điều gì ảnh hưởng đến cty hay tập thể mình đang làm chung. Nghĩ về tập thể mình đang làm như một phần máu thịt mình đang có.
Chia sẻ: Hãy san sẻ cái mình biết – đừng giấu diếm. Chia sẻ từ kinh nghiệm hay trách nhiệm công việc để giúp đỡ mọi người và tạo động lực cho những bạn trẻ có cơ hội phát huy/trải nghiệm để trưởng thành hơn.
Nguyên tắc về hành xử với khách hàng
Mình làm việc trực tiếp với rất nhiều khách hàng ở nhiều quốc gia – từ cung cấp giải pháp, tư vấn và tham gia vào development. Một số nguyên tắc mình đã áp dụng và cảm thấy đến giờ vẫn còn hợp lý:
Tôn trọng: hãy đối xử với khách hàng như cách một thương gia đối xử với khách hàng. Đặt mình vào vị trí của họ để hiểu họ muốn gì. Họ chính là người trả tiền cho những đồng tiền bạn đang được nhận trong mỗi tháng lương.
Giữ chữ Tín và cam kết: đừng bao giờ đánh mất những gì mình đã hứa. Khi đã cam kết thì phải thực hiện đúng.
Chân thành: chia sẻ cái gì bạn làm được, không làm được – đừng bốc phét và cố gắng muốn ôm hết mọi cơ hội khi bạn không thể làm được. Chia sẻ và thảo luận những vấn đề bạn vướng mắc và cần sự giúp đỡ. Hãy nghĩ về sản phẩm và giải pháp bạn cung cấp như chính bạn là chủ sở hữu nó.
Mình từng làm việc với một bạn Digital Producer ở Úc. Có một lần bạn ấy nhờ tư vấn để xử lý một issue critical trong dự án bạn ấy làm với một team khác. Thậm chí bạn ấy muốn cắt luôn team development kia để đưa dự án cho bên mình làm. Mình chỉ đưa ra giải pháp và tư vấn – nhưng nói là hiện giờ mình không có người để giúp bạn xử lý gấp được. Cách tốt nhất là bạn ấy nên chia sẻ giải pháp cho team hiện tại để xử lý thử vì thời gian deadline không cho phép. Bạn ấy nói là: tao thích mày vì mày chân thành chứ không như những team khác cứ cố gắng ôm vào rồi cuối cùng bị failed. Mình chỉ nói với bạn ấy: we say what we can do. We do what we say. (Chúng tôi nói những gì chúng tôi có thể làm được. Chúng tôi làm đúng những gì chúng tôi nói). Sau này bạn ấy rất thân với mình và có dự án, bạn ấy lại share với công ty mình.
Nguyên tắc về cách hành xử với cộng đồng
Tôn trọng
Tôn trọng những gì mình sử dụng từ cộng đồng và tìm cách đóng góp cho nó: Bạn đã bao nhiêu lần report bug cho một phần mềm hay thư viện bạn đang sử dụng? Bạn có bao giờ chia sẻ những feature bạn muốn sản phẩm đó được nâng cấp lên? Khi bạn sử dụng những thư viện mã nguồn mở – bạn có tham khảo license họ đang áp dụng xem mình có vi phạm bản quyền không?
Tôn trọng quan điểm cá nhân của mọi người: không đạp đổ, bài xích những gì người khác chia sẻ. Bạn có thể đóng góp ý kiến. Tuy nhiên đừng nặng nề chuyện đúng sai và tranh luận gay gắt để người khác phải theo ý mình. Mỗi lời bạn nói ra trên bất cứ kênh truyền thông nào (forum, mạng xã hội) thể hiện văn hoá và đạo đức của bạn. Vì vậy, hãy cẩn thận với những gì mình viết và nói.
Đóng góp
Nếu bạn thấy mình có thể làm được gì cho cộng đồng – làm đi. Hãy bắt đầu từ những điều nhỏ nhất:
- Viết blog chia sẻ
- Report bug của sản phẩm nếu bạn đang dùng nó – để làm sản phẩm đó tốt hơn.
- Tham gia phát triển những thư viện mã nguồn mở, nếu bạn hứng thú. Đây là cách rất tốt để bạn học – từ kĩ thuật đến phương pháp/tư duy về phát triển sản phẩm.
Đạo – trong quan điểm của mình là chuẩn mực đạo đức hướng đến những cái hay, cái đẹp. Không có một định nghĩa hoàn hảo cho Đạo. Tuy nhiên, Đạo sẽ giúp bạn trở thành một người hoàn hảo, sống có lý tưởng và không thẹn với những gì mình đã – đang và sẽ làm.
Trân trọng.
Tôi có tham khảo một số bài viết cho chủ đề này, mà tôi nghĩ rằng bạn cũng có thể thấy thú vị khi đọc nên cũng liệt kê ra dưới đây: