6

Sự khác biêt của lập trình viên tốt và lập trình viên tuyệt vời

đăng cách đây 8 tháng
good and great programmersgood and great programmers

Nếu việc viết code là một nghệ thuật, thì người viết code là một nghệ sĩ.

Bài viết gốc của tác giả Ravi Shankar Rajan được đăng trên medium. Bạn có thể xem bài viết gốc theo link dưới đây.

✧ ✧ ✧

Và giống như nghệ thuật, mỗi lập trình viên sẽ có một nhận thức khác nhau, kết quả khác nhau trên cùng một vấn đề. Có người thì phải thảo luận, tranh luận với team để có được một giải pháp tốt,  có người sau khi nhận được bài toán thì ngồi xuống giải quyết một cách hết sức bình thản, như kiểu bài toán 1+1=2.

Steve McConnell, một trong những chuyên gia trong ngành kĩ thuật phần mềm bàn luận về một nghiên cứu được thực hiện vào năm 1960 bởi Sackman, Erikson, và Grant. Họ đã nghiên cứu các lập trình viên với kinh nghiệm trung bình 7 năm và nhận thấy rằng thời gian viết code ban đầu của lập trình viên giỏi nhất và tệ nhất là 20/1, tốc độ thực hiện chương trình là 10/1. Và họ không tìm được mối quan hệ nào giữa lập trình viên có kinh nghiệm với chất lượng code.

Nói một cách đơn giản, viết code tốt không phải là nguyên tố duy nhất để phân biệt được một lập trình viên tốt và một lập trình viên tuyệt vời.

Bài viết gốc sử dụng good programmers và great programmers, trong phạm vi bài viết này mình sẽ dịch lại là lập trình viên tốt và lập trình viên tuyệt vời.

✧ ✧ ✧

Vậy bắt đầu với lập trình viên tốt trước. Như thế nào là lập trình viên tốt?

  • Họ có kĩ thuật tốt, clean code, neat code
  • Năm vũng những nguyên lí, patterns trong việc phát triển phần mềm, problem resolving.
  • Họ hiểu về programming best practices. Khi nào cần sử dụng những practices đó.
  • Họ có đam mê, có tinh thần trách nhiệm, cống hiến cho team.
  • Họ được ngưỡng mộ bởi những thành viên trong team

Nếu bạn có tất cả những yếu tố trên thì xin chúc mừng bạn, bạn là một lập trình viên tốt. Hãy tự hào về điều đó.

Bây giờ thử tìm hiểu xem một lập trình viên tuyệt vời có gì nhé.

  • Họ rất hiếm
  • Năng suất làm việc của họ gấp 3 lần lập trình viên tốt và gâp 10 lần lập trình viên không tốt.
  • Họ thuộc top 1% những người không chỉ viết code mà còn có những đặc điểm riêng mà những người khác không có.

Tóm lược lại, Lập trình viên tuyệt vời = Lập trình viên tốt + có chất riêng

Nó không dễ để đạt được, trừ khi bạn có đủ tinh thần, đam mê và nhiệt huyết. Dưới đây là một vài đặc điểm nằm trong cái chất riêng mà 1% những lập trình viên tuyệt vời có. Việc bạn nhận thức được nó sẽ giúp được bạn chuyển mình từ một lập trình viên tốt thành lập trình viên tuyệt vời.

✧ ✧ ✧

Khả năng học rất nhanh

Họ có đầu óc nhạy bén để học một cái gì đó mới rất nhanh và không bị sợ hãi khi phải tiếp cận bất kì công nghệ mới nào.

Họ có khả năng tiếp cận thông tin và xử lý một cách nhanh chóng.  Các lập trình viên tuyệt vời sẽ tìm kiếm tài liệu ở các nguồn khác nhau, nói chuyện và biết cách hỏi, hỏi đúng người để tìm ra giải pháp.

Kỹ năng tốt nhất mà bất cứ ai cũng sở hữu được đó là khả năng tự học, và những lập trình viên tuyệt vời là những người rất thành thạo về kỹ năng tự học.

Họ sẽ không để cái tôi của mình xen vào công việc hay quá trình học tập. Nếu họ cần biết điều gì đó, họ sẽ tiếp cận bất cứ ai để có được câu trả lời.

Cân bằng giữa việc thực dụng và  sự cầu toàn

John Allspaw, Chieft Technology Officers tại công ty Etsy đã đưa ra quan điểm trong bài blog "On being a senior engineer".  Những lập trình viên top đầu có xu hướng đặt những câu hỏi cho bản thân và trả những câu hỏi đó trong lúc họ đang làm việc.

"Mình có thể sẽ bị thiếu gì đó ở đây"

"Sẽ như thế nào nếu trường hợp này fail"

"Bạn cứ liệt kê tất cả những gì bạn nghĩ để optimize trong trường hợp này"

Đằng sau những câu hỏi này chứng tỏ họ đã hiểu rất rõ vấn đề và những thành phần xung quanh nó, giúp họ có thể đưa ra những solution, lựa chọn pattern tốt để implement. Vì vậy họ mong chờ một lời đánh giá không tốt về cái họ đang làm. Một lập trình viên tuyệt vời chỉ tin tưởng những phương án đã được kiểm chứng là hiệu quả.

Và để có được những ý kiến như vậy, bước đầu họ sẽ đưa ra sản phẩm thật nhanh để thăm dò thị trường. Bên cạnh đó vẫn sẽ có những cách hack để có thể quay trở lại improve nó sau dựa vào những ý kiến phản hồi sớm.

Số ít những lập trình viên thì lại thiếu sự phân tích, cẩu thả trong những công việc hàng ngày, số còn lại thì lại quá chú ý vào sự cầu toàn dẫn đến bị kẹt trong sự cầu toàn này nếu bạn không thể đạt được. Và những người lập trình viên tuyệt vời sẽ biết cách cân bằng giữa thực dụng và cầu toàn.

Trực giác nhạy bén

Trong quyển sách The Nicomachean Ethics của tác giả Aristotle, một nhà triết học nổi tiếng đã chỉ ra một trong năm khả năng mà con người cần có để để đạt được những kiến thức và trở nên thành công đó là: Trực giác.

Trực giác là cách mà chúng ta bắt đầu tìm hiểu hay bắt đầu làm một cái gì đó. Những ý kiến có được từ trực giác không dựa trên một thông tin, hay không thể giải thích bằng những định nghĩa. Thay vào đó chúng ta đánh giá vấn đề dựa vào cảm tính của bản thân.

Từ Steve Jobs, Rechard Branson đến Warren Buffet, những người có trực giác tốt bởi vì họ có thể nhìn thấy mọi thứ rõ ràng và tìm ra được giải pháp nhanh hơn những người khác.

Những người lập trình viên tuyệt vời thường có trực giác hiểu biết về thuật toán, công nghệ và kiến trúc phần mềm dựa trên những kinh nghiệm của bản thân. Họ có khả năng tìm ra phương án để giải quyết vấn đề chỉ trong nháy mắt.  Không chỉ những vấn đề technical mà còn nhiều vấn đề khác xảy ra xung quanh.

Rất giỏi trong việc giao tiếp

Khi có ý tường, cần làm cho nó đơn giản và nói về nó một cách đơn giản nhất có thể. Sự thiếu rõ ràng là nguyên nhân gốc rễ dẫn đến mọi rắc rối trong công việc.

Lập trình viên tuyệt vời luôn luôn xác nhận lại thông tin sau cuộc thảo luận, các khái niệm một cách nhanh chóng hoặc đặt các câu hỏi đúng trọng tâm, và trên hết, họ không cần phải viết bất cứ gì vào trong tài liệu.

Vì vậy nếu bạn muốn trở thành một anh chàng lập trình viên tuyệt vời, bạn cần phải có một kĩ năng giao tiếp hiệu quả với team. Điều này cho thấy sự cam kết của bạn với sản phẩm, quan tâm và đầu tư tới chất lượng của sản phẩm.

✧ ✧ ✧

Lời kết

Bạn thấy đó, để trở thành những người giỏi nhất trong lĩnh vực của mình, bạn không cần bất kì bằng cấp hay tiền để đầu tư vào.

Tất cả những gì bạn cần là một thái độ học hỏi nghiêm túc, sự tò mò điên cuồng và một trực giác nhạy bén để kết nối mọi thứ dựa trên kiến thức, kinh nghiệm của bản thân.

Ngoài ra cần tích cực hơn, từ bỏ cái tôi, khoan dung hơn, chấp nhận cái sai của mình, nhận phản hồi để phát triển bản thân. Một khi bạn làm được những điều này, mình chắc chắn rằng bạn sẽ là một lập trình viên tuyệt vời.

Sự vĩ đại của một người đàn ông không nằm ở việc anh ta có bao nhiêu của cải, mà là sự chính trực và khả năng ảnh hưởng tích cực đến những người xung quanh - Bob Marley

#programming#productive
6
0
...