Người kĩ sư phần mềm giỏi nhất

Bạn tôi hỏi tôi: Làm sao anh biết người kĩ sư phần mềm giỏi nhất so với người trung bình? Sau đây là ý kiến cá nhân của tôi:

Người kĩ sư phần mềm giỏi nhất là người rất cẩn thận khi viết mã bằng việc tập trung vào chất lượng chứ không số lượng. Người kĩ sư phần mềm trung bình thích viết mã, họ dường như ngồi lì trước máy tính hầu hết thời gian để sinh ra hàng đống mã nhưng chương trình của họ có thể hay không thể làm việc được nên họ phải sửa chúng lặp đi lặp lại. Việc “viết mã và sửa” này làm phí hoài nhiều nỗ lực và chẳng bao giờ đạt tới chất lượng như khách hàng mong đợi. Mã tốt được tạo ra bởi người kĩ sư phần mềm có kỉ luật, họ biết từng vấn đề phải mất bao lâu, và lập kế hoạch cẩn thận về cách tiếp cận của mình để đảm bảo rằng họ hoàn thành nhiệm vụ tương ứng. Là người quản lí, tôi đã thấy cả hai kiểu kĩ sư phần mềm này, khi tôi bảo họ “Tôi cần nhiệm vụ này được hoàn thành trước thứ sáu” rồi trước thứ sáu, ai đó tới và cho tôi biết rằng họ đã kiểm thử mã của họ và nó đã sẵn sàng cho kiểm thử tích hợp. Với những người này tôi có thể cảm thấy rằng sẽ có rất ít, nếu không nói là không có lỗi được tìm ra bởi tổ kiểm thử. Tuy nhiên, có những người bảo tôi “Tôi vẫn còn đang viết mã nhưng nó sẽ xong vào cuối ngày thứ sáu hay đầu ngày thứ hai” vậy thì với họ, tôi có thể chắc chắn rằng họ có thể đã bỏ qua một số kiểm thử để đáp ứng hạn chót và hầu hết thời gian mã của họ đầy những lỗi. Vì sao? Bởi vì người kĩ sư phần mềm tốt biết công việc cần bao nhiêu thời gian và lập kế hoạch công việc cẩn thận và sẽ cho tôi biết liệu họ có thể đáp ứng hạn chót hay không trong khi người kĩ sư phần mềm trung bình thà ngồi viết mã trước rồi mới hỏi câu hỏi đó sau.

Với mọi vấn đề đều có nhiều cách giải quyết nó nhưng người kĩ sư phần mềm giỏi nhất sẽ cố gắng hiểu vấn đề trước khi làm bất kì cái gì. Bằng việc hiểu vấn đề, người đó sẽ nghĩ cẩn thận về cách giải quyết nó và thảo luận nó với tổ của mình về giải pháp tốt nhất. Người đó biết rằng có nhiều tuỳ chọn và điều người đó đề nghị có thể không phải là tốt nhất cho nên người đó tìm kiếm lời khuyên từ những người khác và đi tới cách tiếp cận logic và tốt hơn. Bằng việc nhìn vào vấn đề, hình dung ra kết quả cần phải là gì, người đó sẽ hình dung mình cần giải quyết nó trong bao lâu, và loại phẩm chất nào được mong đợi trước khi người đó thậm chí bắt đầu làm việc trên giải pháp. Ngược lại, người kĩ sư phần mềm trung bình sẽ ngay lập tức bắt đầu viết mã trước mà không nghĩ gì mấy rồi sửa nó nếu nó không đáp ứng yêu cầu. Kiểu “viết mã và sửa” rồi “sửa rồi viết mã” này sẽ chẳng bao giờ tạo ra phần mềm chất lượng được bởi vì họ càng sửa nó, họ càng đưa thêm nhiều lỗi vào trong giải pháp.

Người kĩ sư phần mềm giỏi nhất bao giờ cũng chia sẻ mọi điều với tổ và học lẫn nhau. Họ biết rằng bằng việc chia sẻ, họ học nhiều hơn cho nên khi họ học điều mới, công nghệ mới, họ sẽ thảo luận với tổ về cái gì có tác dụng và cái gì không tác dụng cho nên mọi người có thể tránh phạm phải sai lầm. Họ trở nên tốt hơn bằng việc làm cho người khác tốt hơn. Họ bao giờ cũng tìm kiếm lời khuyên từ những người thâm niên bởi vì những người này có kinh nghiệm, đã trải qua nhiều dự án và biết theo bản năng để ra quyết định đúng. Người kĩ sư phần mềm trung bình có thể rất giỏi trong điều họ làm nhưng họ giống như một anh hùng, được người khác thừa nhận cho nên họ không thích chia sẻ và giữ thông tin cho riêng mình, trong trường hợp này họ đánh mất giá trị của mình bởi vì công việc phần mềm là công việc tổ và tổ mà có quá nhiều anh hùng chung cuộc sẽ không có anh hùng nào cả bởi vì mọi người sẽ thất bại. Cho dù họ giỏi và có thể kết thúc công việc của mình đúng hạn nhưng nếu tổ không làm thì dự án vẫn thất bại. Khi dự án thất bại, chả thành vấn đề ai hoàn thành công việc trước và ai có thể làm công việc tốt, đó là thất bại của tổ bởi vì mục đích toàn thể không thể được đạt tới.

Một trong những kĩ năng có thể đem mọi thứ vào trong dự án là kĩ năng tổ chức. Người kĩ sư phần mềm trung bình rất giỏi về kĩ thuật nhưng nếu họ không được tổ chức, họ sẽ không có khả năng làm cho mọi thứ được thực hiện và cuối cùng sẽ bị tràn ngập bởi sức ép dự án. Người kĩ sư phần mềm giỏi nhất bao giờ cũng giữ kế hoạch dự án với các nhiệm vụ hàng ngày chi tiết và có khả năng sắp ưu tiên chúng một cách tương ứng. Họ biết cái nhìn hàng ngày về các cuộc họp và nhiệm vụ và cập nhật mọi thứ mà họ phải đạt tới vào ngày đó để cho mọi sự sẽ không bị trì hoãn sang ngày sau. Họ giữ dấu vết của tất cả công việc của mình và có thể lập tức chèo lái dự án, báo cáo cho cuộc họp, và cung cấp các chi tiết khác khi được yêu cầu. Bằng việc làm cho mọi sự được thực hiện từng ngày họ biết lịch biểu và các mong đợi và có khả năng điều chỉnh chúng để đáp ứng cho các mục đích dự án. Ngược lại, người kĩ sư phần mềm trung bình không nghĩ xa trước mà chỉ làm việc tương ứng với điều người quản lí bảo họ và điều lịch biểu ấn định mỗi ngày. Khi mọi sự thay đổi, họ không biết phải ưu tiên cái gì và không có kế hoạch hoàn thành chúng mà dựa vào người quản lí dự án phân công cho họ việc tương ứng. Người kĩ sư phần mềm giỏi nhất không chỉ nghĩ về mục đích dự án, mà còn hình dung nó và hiểu làm sao hoàn thành nó bởi vì họ có thể thấy đích xác điều họ phải làm từng ngày, từng tuần, từng tháng để đáp ứng mong đợi.

Người kĩ sư phần mềm giỏi nhất sẽ thường xuyên cải tiến kĩ năng của họ. Họ bao giờ cũng tìm kiếm tri thức mới và thường không đợi người quản lí yêu cầu họ nhận việc huấn luyện thêm. Họ học điều mới theo cách riêng của họ bởi vì họ muốn là người giỏi nhất. Họ thấy các lớp huấn luyện mới mà họ muốn đi học và yêu cầu người quản lí cho phép tham dự để cho họ có thể học cái gì đó mới và đóng góp thêm cho tổ chức. Người kĩ sư phần mềm trung bình không thích học cái mới nhiều bởi vì họ tin rằng họ đã tốt nghiệp đại học, đã có bằng cấp và biết “đủ để làm việc của mình”. Họ bằng lòng với điều họ biết nhưng họ không hiểu sự kiện là công nghệ bao giờ cũng thay đổi cho nên sau vài năm làm việc họ sẽ lo lắng về nghề nghiệp của mình bởi vì họ có thể không có kĩ năng mà công ti cần và có thể không có khả năng giữ được việc. Phần mềm là lĩnh vực rất năng động và nếu người ta không giữ cùng nhịp với thay đổi công nghệ, họ có thể bị loại.

Có nhiều kĩ sư phần mềm trung bình trong công nghiệp ngày nay nhưng có rất ít “kĩ sư phần mềm giỏi nhất”. Lí do thật đơn giản: ngày nay rất ít trường dạy về trao đổi và công việc tổ trong chương trình kĩ sư phần mềm. Kĩ sư phần mềm trung bình có thể giỏi về kĩ thuật nhưng lại nghèo nàn về trao đổi và công việc tổ. Họ không biết cách thảo luận mọi sự qua email, đặc biệt trong các cuộc họp SCRUM, chia sẻ “Thực hành giỏi nhất: trong kiểm điểm kĩ thuật, trình bày cho khách hàng về giải pháp kĩ thuật và quảng cáo cho hàng trăm người về sản phẩm phần mềm trong chiến dịch tiếp thị. Năng lực trao đổi rõ ràng và hiệu quả là rất mấu chốt cho mọi kĩ sư phần mềm. Kĩ năng trao đổi của bạn càng tốt, bạn sẽ càng đi xa hơn bởi vì người kĩ sư phần mềm giỏi nhất dành hầu hết thời gian vào trao đổi, giải thích về mục đích của công ti, thu hút kinh doanh của khách hàng, giải quyết vấn đề, cho hướng dẫn, động viên công nhân khác v.v..

Tất nhiên một số trong các bạn có thể nghĩ rằng tôi là người lí tưởng thế về kĩ nghệ phần mềm nhưng tôi đã từng ở trong kinh doanh phần mềm trong hơn 35 năm và đã thấy nhiều kĩ sư phần mềm giỏi cũng như kĩ sư trung bình. Tôi có thể tự tin mà nói rằng bạn càng cải tiến kĩ năng phần mềm của mình tốt hơn, càng làm cho bản thân mình dự ứng trong học tập, chia sẻ, cải tiến thì bạn sẽ càng có cơ hội tốt hơn để trở thành một trong những kĩ sư phần mềm giỏi nhất mà bạn đã từng hình dung. Nếu bạn chọn nghĩ về bản thân mình như “đủ tốt”, và chẳng có gì hơn để học, bạn bao giờ cũng sẽ ở nơi bạn đã đã ở đó qua thời gian, bạn sẽ bắt đầu lo nghĩ bởi vì nếu bạn không tiến lên, bạn thậm chí không đứng yên đâu mà thực tế bạn đang đi lùi bởi vì thế giới đang đi nhanh lên trước.

Là người kĩ sư phần mềm và một giáo sư, lời khuyên cuối cùng của tôi với bạn là bạn phải có đam mê về điều bạn làm. Không có đam mê, bạn sẽ không là người kĩ sư phần mềm lớn được, hay không lớn về bất kì cái gì. Thiếu đam mê là lí do số một cho nên nhiều kĩ sư phần mềm chưa bao giờ trở thành giỏi trong điều họ làm và điều đó cũng là lí do số một mà nhiều người không thành công trong nghề nghiệp của mình. Bằng việc tuân theo những lời khuyên này, bạn có thể có được vị trí bạn muốn, cải thiện điều bạn đã chờ đợi, và bạn sẽ hạnh phúc hơn với nghề của mình bởi vì công nghiệp phần mềm bao giờ cũng đời hỏi người kĩ sư giỏi nhất và điều tuyệt vời là biết rằng bạn là một trong số họ.

Tác phẩm, tác giả, nguồn

  • Tác phẩm: Kĩ nghệ phần mềm
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
  • Wiki hóa: https://kipkis.com