Kĩ nghệ phần mềm: cái nhìn của sinh viên
Zhang Kai Min là một trong những sinh viên của tôi đã tốt nghiệp năm 2010 và hiện đang làm việc tại Apple. Tuần trước anh ấy quay lại trường để tuyển sinh viên và đã cho bài nói chuyện cho lớp Kĩ nghệ phần mềm của tôi. Sau đây là câu chuyện của anh ấy:
“Khi tôi tốt nghiệp bằng cử nhân trong Khoa học máy tính (CS) ở Trung Quốc, tôi có kĩ năng là một người lập trình giỏi nhưng khi tôi ghi danh vào Thạc sĩ Khoa học Kĩ nghệ phần mềm (SE) tại Carnegie Mellon, tôi nhận ra rằng tôi vẫn có nhiều điều cần học để là một kĩ sư phần mềm. Trước khi tới CMU, tôi nghĩ CS và SE là như nhau nhưng bây giờ tôi biết rằng chúng không như nhau.
Là một người tốt nghiệp CS, tôi biết cách viết mã và có kĩ năng xây dựng sản phẩm phần mềm. Xem một phần của các dự án nhà trường, tôi đã phát triển ba ứng dụng di động, chúng làm việc tốt và tôi tự hào về công việc của tôi. Khi tôi tới CMU, tôi thấy rẳng phần lớn bạn học của tôi đã xây dựng nhiều app di động phức tạp và phần mềm tinh xảo hơn app di động. Khi tôi chỉ cho họ các app di động của tôi, họ chỉ cho tôi điều họ đã xây dựng như dự án nhà trường và tôi choáng về mức độ phức tạp. Họ bảo tôi: “Học sinh trung học xây dựng app di động; sinh viên đại học phải xây dựng phần mềm lớn và phức tạp.” Điều đó làm cho tôi cảm thấy khó chịu nhưng tôi cũng biết rằng tôi có nhiều điều phải học để đuổi kịp họ.
Tôi học nhanh chóng về khác biệt giữa người lập trình và kĩ sư phần mềm. Người lập trình thường làm việc một mình và xác định chất lượng dựa trên điều người đó nghĩ là tốt. Người kĩ sư phần mềm không bao giờ làm việc một mình mà bao giờ cũng trong tổ và họ xác định chất lượng bằng việc dựa trên người dùng thấy nó thế nào. Người lập trình làm bất kì cái gì người đó thích chừng nào người đó còn làm cho phần mềm làm việc nhưng người kĩ sư phần mềm bao giờ cũng tuân theo qui trình để chắc rằng phần mềm đáp ứng yêu cầu của người dùng. Lớp đầu tiên của tôi là về vòng đời phát triển phần mềm nơi tôi học về qui trình, phương pháp, và khuôn khổ, tất cả đều là mới với tôi. Chỉ thế rồi tôi mới học cách tuân theo qui trình hệ thống của việc hiểu yêu cầu, làm việc với khách hàng, và phát triển giải pháp đáp ứng cho nhu cầu của họ.
Phần lớn các môn học tại CMU đều yêu cầu làm việc tổ; tôi đã học cách làm việc với những người khác và đã học nhiều từ họ. Ở Trung Quốc, sinh viên thường tự học một mình và đôi khi tôi hoang mang và thất vọng nhưng tôi không thể hỏi xin giúp đỡ được. Tại CMU, các bạn trong tổ sẵn sàng giúp đỡ và động viên tôi khi tôi học những điều mới. Ở Trung Quốc, tôi được dạy duy trì tính ganh đua và giữ mọi thứ cho bản thân tôi. Tôi không chia sẻ cái gì với bạn cùng lớp vì tôi sợ rằng họ sẽ giỏi hơn tôi. Chúng tôi đã là bạn bè ở trường nhưng là đối thủ trong kì thi vì mọi người đều muốn là sinh viên hàng đầu. Điều đó là khác ở đây; có bầu không khí cộng tác nơi mọi người chia sẻ mọi thứ một cách cởi mở. Khi tôi gặp khó khăn các bạn cùng lớp sẽ dành hàng giờ thậm chí hàng ngày để giúp tôi mà không ngần ngại gì. Chúng tôi không ganh đua nhưng cộng tác và đó cũng là điều mới nữa.
Tôi phải mất vài tháng để học cách xây dựng phần mềm chất lượng, không chỉ làm việc với phần mềm. Tôi cũng học được rằng chất lượng còn nhiều hơn điều khách hàng đòi hỏi trong yêu cầu nhưng bạn phải suy dẫn ra chúng dựa trên tri thức của bạn vì khách hàng mong đợi chúng. Phần lớn khách hàng sẽ nói cho bạn về yêu cầu chức năng nhưng không nói về chất lượng điều là đặc trưng phi chức năng. Người kĩ sư phần mềm giỏi phải hiểu những thuộc tính chất lượng này như tính dùng được, tính đổi qui mô được, tính bảo trì được, và tính kiểm thử được. Khách hàng có thể không nói cho bạn về hiệu năng nhưng bạn phải chắc hệ thống sẽ thực hiện tương ứng. Khách hàng có thể không nói cho bạn về tính bảo trì được nhưng bạn phải chắc rằng hệ thống được làm tài liệu đúng cho bảo trì tương lai.
Điều quan trọng nhất tôi đã học được từ giáo sư Vũ là không bao giờ dừng việc học. Thầy thường nói rằng công nghệ thay đổi nhanh chóng và là người kĩ sư phần mềm chuyên nghiệp, chúng ta phải giữ việc học bắt kịp với công nghiệp nhịp độ nhanh này. Tôi đã học đặt mục đích về điều tôi muốn học và theo dõi tiến bộ của tôi qua thời gian. Thầy bao giờ cũng nhắc nhở lớp bằng việc hỏi: “Các em có tiến gần hơn tới mục đích của các em không?” Vì thầy nói điều đó thường xuyên tới mức nhiều sinh viên thường đùa: “Ở đây thầy lại nói nữa, lặp lại cùng điều.” Nhưng dưới hướng dẫn của thầy, tất cả chúng tôi đã học được những kĩ năng cần thiết để đạt tới mục đích của chúng tôi.
Điều khác tôi thích là phương pháp học tích cực. Điều này là hoàn toàn mới với tôi vì tôi quen thuộc với việc ghi nhớ thuộc lòng và nhiều lí thuyết hàn lâm. Tôi phải mất nhiều tháng mới thay đổi được thói quen học tập vì tôi phải đọc mọi tài liệu trước khi tới lớp và chuẩn bị tham gia vào thảo luận trong lớp. Là một người nước ngoài với tiếng Anh giới hạn, tôi thường yên tĩnh nhưng tôi bị gọi phải trả lời các câu hỏi mọi lúc. Đầu tiên tôi nghĩ giáo sư không thích tôi nhưng qua thời gian, tôi biết rằng thầy muốn giúp tôi xây dựng kĩ năng tham dự và kĩ năng trao đổi của tôi. Chỉ bằng việc không sợ hãi và không sợ phạm sai lầm, tôi thu được tự tin và bằng việc có kĩ năng kĩ thuật và kĩ năng mềm tốt, tôi không có vấn đề gì với việc có được việc làm tại Apple.
English version
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