[Part1] Pragmatic programmer - thế nào là lập trình viên thực thụ?

Chào các bạn,

Hôm nay mình sẽ bắt đầu seri về cuốn sáchđược khuyên đọc cho lập trình viên - Pragmatic programmer (tạm dịch lập trình viên thực thụ) của 2 tác giả Dave Thomas và Andy Hunt. Bài viết này tóm tắt những ý chính của 2 chương đầu tiên của cuốn sách

1. Giới thiệu chung

Khi bạn hỏi một lập trình viên thế nào là nghề lập trình thì hầu hết sẽ chỉ trả lời ngắn gọn rằng đó là 1 nghề viết ra những dòng code bằng ngôn ngữ lập trình. Thực tế, đây là 1 nghề khó mà giải thích ngắn gọn để có thể hiểu. Bởi vì nghề này tương đối phức tạp với nhiều điều chi tiết. Để viết ra những dòng code đó lập trình viên cần phải tập trung vào những đó để có thể có thể viết ra những dòng code. Và nghề này cũng không chỉ là gõ những câu lệnh cho máy tính chạy. Qua cuốn sách này, 2 tác giả sẽ giúp chúng ta biết rõ về nghề lập trình và chỉ ra con đường mà mọi lập trình viên có thể đi theo để trở thành 1 lập trình viên thực thụ. Đó không chỉ là việc tập trung vào những công việc chi tiết của việc lập trình như những lập trình viên khác mà câu trả lời là: hãy tập trung vào cái bạn đang làm trong khi bạn đang làm và cố gắng làm điều đó tốt hơn.

Ví dụ, khi bạn ở trong một cuộc họp kéo dài đằng đẵng không biết bao giờ kết thúc. Bạn có thể chỉ mong thoát khỏi cuộc họp và trở về với chiếc PC thân yêu và viết tiếp những dòng code dang dở. Dave và Andy thì không như vậy. Họ sẽ nghĩ lý do vì sao họ phải có mặt trong cuộc họp này và tự hỏi liệu có thể làm cái gì khác để thay thế cuộc họp hay có gì có thể được tự động hoá cho các cuộc họp trong tương lai hay không. Rồi họ sẽ làm điều đó.

Đó là cách là một lập trình viên nên tư duy, nên làm chứ không phải là chỉ viết code. Cách suy nghĩ đó chính là cách lập trình và cách trau rồi năng lực lập trình. Và mẹo ở đây là : Think about your work - nghĩ về công việc của bạn.

Cuốn sách này chứa những mẹo được đúc rút từ kinh nghiệm thực tế qua nhiều năm làm việc của tác giả. Chúng là những lời khuyên thiết thực được hệ thống hoá mà mọi lập trình viên có thể học hỏi và áp dụng ngay trong công việc của mình

2. Mở đầu

Cuốn sách này chỉ ra cho chúng ta cách để trở thành một lập trình viên tốt hơn trong vai trò cá nhân hay là khi làm việc trong một nhóm, một tổ chức.

Cuốn sách này không mang tính lý thuyết mà tập trung vào các chủ đề thực tế, giúp chúng ta sử dụng kinh nghiệm thực tế của mình để đưa ra quyết định sáng suốt hơn.

Tôi tạm dịch pragmatic programmerlập trình viên thực thụ. Từ pragmatic bắt nguồn từ tiếng La-tinh pgacmaticus - "skilled in business" - có nguồn gốc từ tiếng Hy Lạp, có nghĩa là "to do". Đây là một cuốn sách để thực hành.

Lập trình là 1 việc thủ công. Dễ hiểu thì bạn cần làm cho máy tính làm những điều bạn hoặc người dùng mong muốn. Là một lập trình viên, bạn vừa phải là một người lắng nghe, cố vấn viên , thông dịch viên và có chút độc tài nữa. Bạn cần nắm bắt các yêu cầu và tìm cách khiến máy tính hiểu và thực thi. Bạn cũng cần phải thiết kế công việc để người khác có thể làm theo, tạo tài liệu về công việc để người khác có thể hiểu. Bạn cố gắng làm tất cả việc đó chính xác theo lịch trình dự án. Bạn làm nên những điều kì diệu bé nhỏ mỗi ngày.

Đây là một công việc khó.

Có rất nhiều sự giúp đỡ dành cho bạn. Các công cụ để tăng hiệu quả công việc, các phương pháp/ giải pháp từ chuyên gia giúp bạn giải quyết vấn đề dễ dàng hơn. Các ngôn ngữ lập trình được cho là tốt nhất và các hệ thống vận hành tưởng như giải quyết được mọi vấn đề. Tuy nhiên, không có điều gì ở trên là đúng. Không có câu trả lời dễ dàng. Không có giải pháp tốt nhất dưới dạng công cụ, ngôn ngữ lập trình hay hệ thống nào cả. Ở đây chỉ có giải pháp hợp lý nhất- là hệ thống thích hợp với những điều kiện trong một hoàn cảnh cụ thể. Và đây là nơi mà chủ nghĩa thực dụng (pragmatism) xuất hiện. Bạn không nên bị phụ thuộc vào công cụ cụ thể nào mà hãy lựa chọn giải pháp dựa trên kinh nghiệm và nền tảng kiến thức của chính mình. Nền tảng này đến từ hiểu biết về nguyên lý cơ bản của khoa học máy tính và kinh nghiệm từ những dự án thực tế. Lý thuyết và thực hành kết hợp lại sẽ tạo nên sức mạnh của bạn.

Bạn nên điều chỉnh hướng tiếp cận để phù hợp với hàng cảnh và môi trường hiện tại. Đánh giá tầm quan trọng của các yếu tố ảnh hưởng tới dự án và sử dụng kinh nghiệm để đưa ra giải pháp phù hợp. Và khi bạn thực thi việc này như một quy trình  làm việc  thì đó là lúc bạn đã làm như một lập trình viên thực thụ.

Vậy điều gì làm nên một lập trình viên thực thụ?

Tác giả nhận thấy rằng mỗi developer là cá thể duy nhất, có điểm mạnh và điểm yếu riêng, sở thích và không thích cũng khác nhau. Theo thời gian, mỗi người sẽ tự tạo ra môi trường cá nhân. Môi trường đó sẽ phản ánh tính cá nhân cũng mạnh mẽ như sở thích, quần áo hoặc kiểu tóc của người đó. Tuy nhiên, nếu  là một lập trình viên thực thụ, họ sẽ chia sẻ nhiều các đặc điểm chung sau:

  • Thích nghi sớm/ thích nghi nhanh: bản năng về công nghệ và kỹ thuật và thích thử mọi thứ. Nắm bắt mọi thứ nhanh chóng và tích hợp nó với phần kiến thức còn lại. Sự tự tin được sinh ra từ kinh ghiệm
  • Ham học hỏi: có xu hướng đặt câu hỏi,
  • Tư duy phản biện: không chấp nhận mọi thứ được đưa cho mà không hiểu được sự thật, bản chất của vấn đề
  • Thực tế: cố gắng hiểu bản chấp cơ bản của mỗi vấn đề phải đối mặt. Chủ nghĩa hiện thực này cho bạn cảm giác về việc đó khó như nào và mất bao lâu để thực hiện. Tự hiểu sẽ cần quá trình và cần kiên trì để thực hiện nó
  • Có thể làm nhiều việc khác nhau: vần phải tiếp cận và học nhiều công nghệ và môi trường, bắt kịp những công nghệ mới. Có thể là chuyên gia của lĩnh vực hiện tại nhưng có thể thể chuyển sang một lĩnh vực mới với thử thách mới

Tác giả tóm tắt các đặc điểm trên qua 2 tips:

  • Tip1: Care about your craft
  • Tip2: Think!About your work

Hẹn gặp lại các bạn trong những chương tiếp theo!