Phần mềm và nhạc rock

Tôi đã nhận được một bức thư bất thường từ một sinh viên cũ mà tôi muốn chia sẻ cùng các bạn, một số trong các bạn có thể thấy nó thú vị

Thưa giáo sư,

Thầy đã đề nghị em chia sẻ kinh nghiệm làm việc của em với các sinh viên hiện thời. Kinh nghiệm của em có thể là bất thường bởi vì bên cạnh làm việc như người phát triển phần mềm, em cũng là một nhạc sĩ trong nhóm nhạc rock. Chúng em du hành dọc bờ biển California nơi em và cả nhóm dựng lên sân khấu và biểu diễn cho hàng nghìn người, người khác trả tiền để xem biểu diễn của chúng em.

Tôi thích phần mềm nhưng đam mê của tôi là trong âm nhạc. Có việc làm tốt giúp tôi theo đuổi mối quan tâm của tôi trong âm nhạc. Với thu nhập từ việc làm phần mềm, tôi có thể mua được nhạc cụ tốt nhất, hệ thống âm thanh tốt nhất cho nhóm rock của tôi. Tôi để các bài hát của chúng tôi lên YouTube và đã có nhiều ghé thăm ở đó. Chúng tôi đã có CD đầu tiên của mình được bán hàng trăm nghìn bản và trên một triệu tải xuống rồi chúng tôi trở nên nổi tiếng. Bây giờ tôi có việc làm tốt nhất ở cả hai thế giới: Người phát triển phần mềm ban ngày và ngôi sao nhạc rock ban đêm.

Trong cách tiếp cận Agile, tổ phát triển phải tự tổ chức để thiết kế, viết mã, kiểm thử và đưa ra phần mềm cứ mỗi bốn tuần (Sprint). Người dùng có chức năng mới mọi lúc chúng ta đưa ra phần mềm. Nếu họ thích nó, họ để chúng ta biết. Nếu họ không thích nó, chúng ta cũng biết điều đó. Cùng điều đó cũng xảy ra trong âm nhạc. Ban nhạc của tôi cũng là nhóm tự tổ chức nơi chúng tôi tạo ra bài hát mới, các tiết mục mới cứ mỗi mười hay hai mươi tuần rồi biểu diễn cho thính giả. Chúng tôi lấy phản hồi rất nhanh chóng. Nếu họ thích nó, chúng tôi được hoan hô lâu. Nếu không, họ la hét chúng tôi.

Với hoà nhạc rock, âm nhạc là không đủ. Nó cũng phải có cả ánh sáng tốt và âm thanh tốt. Ánh sáng laser càng nhiều càng tốt. Hệ thống âm thanh phải to nữa. Chúng tôi thuê những người hỗ trợ để quản lí các hệ thống âm thanh và ánh sáng này. Mọi người tham gia vào buổi hoà nhạc rock đều phải là chuyên gia. Từ người kĩ thuật âm thanh cho tới người vận hành ánh sáng, cần một nhóm chuyên gia để dựng buổi diễn lớn. Không có họ, mọi người sẽ không trả tiền để xem chúng tôi.

Phát triển phần mềm cũng giống như điều đó nữa. Nếu bạn là người phát triển giỏi, bạn muốn có ai đó cũng giỏi như bạn hay còn giỏi hơn ở trong tổ của bạn. Tổ phần mềm cần những người hỗ trợ như người kiểm thử, chuyên viên đảm bảo chất lượng, chuyên viên quản lí cấu hình. Điều tồi tệ nhất là có ai đó với kĩ năng giới hạn người làm chậm tổ lại. Mọi người tham gia vào phát triển phần mềm đều phải là chuyên gia. Cần một nhóm chuyên gia để tạo ra phần mềm tốt. Không có họ, mọi người sẽ không mua phần mềm.

Nhiều sinh viên đại học tin rằng lập trình là mọi thứ. Điều này không đúng. Lập trình chỉ là điều nhỏ trong phát triển phần mềm. Bạn cần biết vòng đời phát triển, phương pháp phần mềm cũng như công cụ phần mềm để dùng. Một số trong những điều này không được dạy ở trường cho nên bạn phải học chúng khi bạn làm việc trong công nghiệp nhưng bạn phải học nhanh. Mọi người trong tổ sẽ không chờ đợi bạn vì bạn có thể làm chậm họ. Điều này có nghĩa là bạn phải không chỉ là người lập trình giỏi mà còn là người học nhanh nữa. Chẳng mấy chốc bạn sẽ nhận ra rằng chính khái niệm cơ bản mà bạn đã học ở trường sẽ giúp bạn học nhanh. Chỉ khi làm việc trong công nghiệp, bạn sẽ nhận ra rằng lớp học về cấu trúc dữ liệu hay "lớp chán" về phân tích yêu cầu bây giờ là quan trọng. Không có những tri thức này, bạn sẽ đánh vật đấy. Đây là lí do tại sao các sinh viên lấy "lối tắt", các sinh viên học "mách nước và thủ thuật" qua được kì thi sẽ không bao giờ sống sót được trong công nghiệp. Không có nền tảng mạnh, họ không bao giờ biết áp dụng tri thức và cách biến đổi chúng thành kĩ năng.

Nhiều người tin rằng kĩ năng ghi ta tốt là mọi thứ. Điều đó không đúng. Chơi ghi ta chỉ là một phần trong nhóm nhạc rock. Bạn cần biết về xu hướng âm nhạc, việc sản xuất chương trình radio và TV cũng như nhạc cụ để dùng. Một số trong những điều này là không có sẵn cho nên bạn học chúng khi bạn làm việc trong công nghiệp nhưng bạn phải học nhanh. Thị trường rất cạnh tranh và thính giả sẽ không đợi bạn. Nếu bạn không có bài hát mới, tiết mục mới thì họ sẽ bỏ bạn. Điều này nghĩa là bạn phải không chỉ là nhạc sĩ giỏi mà còn là người học nhanh nữa. Đây là chỗ tôi nghĩ phần mềm và nhạc rock có nhiều điểm chung. Âm nhạc là ngành công nghiệp đầy những bất ngờ cho nên để sống còn bạn phải học nhanh. Đột nhiên bạn nhận ra rằng có đam mê là không đủ mà bạn phải có "hiểu biết doanh nghiệp" nữa. Không có nó, bạn sẽ đánh vật vì điều đó là rất cạnh tranh với "phía tối" mà hầu hết mọi người không biết. Đây là lí do tại sao nhạc sĩ ngây thơ bị khai thác và những người có thái độ hồn nhiên sẽ không bao giờ tồn tại trong ngành công nghiệp này.

Với mọi vai trò trong tổ phần mềm, có tập các kĩ năng cần được học. Nhưng trong khi bạn học những kĩ năng này, bạn phải có tri thức nào đó về những kĩ năng của các vai trò khác nữa. Là một tổ, bạn phải học về cách tổ vận hành, cách nó làm việc cùng nhau để tạo ra phần mềm. Nhiều sinh viên chỉ hội tụ vào ngôn ngữ lập trình nhưng không vào đảm bảo chất lượng, quản lí cấu hình hay quản lí yêu cầu. Một sai lầm lớn là dự án phần mềm phần nhiều bị coi chỉ là viết mã. Chẳng hạn, là người kiểm thử bạn phải biết mã tốt so với mã kém. Việc của bạn bị ảnh hưởng trực tiếp bởi chất lượng của mã, cho nên điều mấu chốt với bạn là làm việc với người phát triển để loại bỏ các lỗi trước khi nó sang pha kiểm thử. Là người phát triển, điều quan trọng cần biết cái gì đó về quản lí dự án. Khác biệt giữa quản lí giỏi và quản lí kém là khác biệt giữa dự án thành công và dự án thất bại. Nhân tiện, khi dự án thất bại, người chủ đuổi người quản lí, chứ không đuổi người phát triển.

Cùng điều đó cũng xảy ra cho ban nhạc rock. Điều bản chất cho nhạc sĩ là biết về kĩ năng và vai trò của nhau. Người đánh trống chắc chắn biết khi anh ta phải dừng để cho người chơi ghi ta "độc tấu". Người chơi đàn bass có thể gợi ý hợp âm nào đó cho người chơi ghi ta để họ có thể hài hoà âm nhạc. Kĩ sư âm thanh, chuyên gia ánh sáng phải lắng nghe cẩn thận chăm chú mọi thứ sẽ diễn ra trong buổi hoà nhạc, và làm những điều chỉnh tương ứng. Tất cả những người này đều làm việc dưới việc quản lí của đạo diễn sân khấu có kĩ năng và kinh nghiệm. Là nhạc sĩ, hiệu năng của bạn là tốt như âm thanh từ nhạc cụ của bạn. Cho nên điều mấu chốt cho nhạc sĩ là làm việc với những người hỗ trợ để đảm bảo ánh sáng đúng, âm thanh đúng trước từng buổi diễn. Khác biệt giữa buổi hoà nhạc rock tốt và buổi hoà nhạc kém là khác biệt giữa biểu diễn thành công và biểu diễn thất bại. Nhân tiện, khi buổi biểu diễn thất bại, người quản lí ban nhạc đuổi đạo diễn sân khấu, không đuổi nhóm hỗ trợ.

Không nhạc sĩ nghiêm chỉnh nào chơi nhạc cụ kém. Nhạc sĩ thành công chú ý và có nhạc cụ thích hợp cho việc làm này. Họ phải chuẩn bị các bài ca mà họ sẽ chơi, họ phải biết tiết mục của họ, vai trò của họ. Khi biểu diễn, nhạc sĩ không chỉ giỏi với nhạc cụ của họ mà họ phải biết giới hạn của hệ thống âm thanh, điều có nghĩa là họ phải biết mọi thứ về nhạc cụ và khi nào dùng chúng để có được âm thanh tốt hơn.

Cùng điều đó cũng áp dụng cho phần mềm. Trước khi bạn viết ra một dòng mã, bạn cần biết về yêu cầu, thiết kế, giao diện người dùng, và công cụ kiểm thử. Khi kiểm thử, không chỉ bạn phải giỏi tìm ra lỗi, mà còn phải có khả năng viết kế hoạch kiểm thử, trường hợp kiểm thử, và phát triển kiểm thử tự động. Bạn phải làm điều đó theo cách rõ ràng và chính xác nhất. Nếu bạn làm việc với người dùng, bạn cần hiểu qui trình doanh nghiệp của họ để cho bạn có thể viết chúng ra thành câu chuyện người dùng, trường hợp người dùng để chúng có thể được viết mã và kiểm thử mà không nhập nhằng. Chỉ thế bạn mới nhận ra rằng lớp học về yêu cầu về trường hợp sử dụng, về UML, về câu chuyện của người dùng là có nhiều ý nghĩa hơn cho bạn. Là sinh viên, bạn có thể nghĩ rằng các lớp này toàn về lí thuyết, không quan trọng. Xin đừng đánh giá thấp chúng. Chúng có đó là có chủ định cả đấy.

Không nhạc sĩ nào ra sân khấu mà không có chuẩn bị, không phần mềm nào được viết mã mà không có hiểu về thiết kế. Đây là khái niệm khó cho nhiều người phát triển phần mềm, nhiều người chỉ muốn viết mã mà không tư duy một cách cẩn thận. Nếu họ viết mã kém, họ viết lại chúng, nếu chúng có lỗi, họ sửa chúng sau. Không nhạc sĩ nào có thể lặp lại cùng bài hát nếu họ phạm sai lầm. Thính giả sẽ la hét họ và mắng mỏ họ. Họ không bao giờ có cơ may thứ hai cho nên trong trường hợp này tôi nghĩ nhạc rock là tốt hơn phát triển phần mềm.

Khi buổi hoà nhạc kết thúc, người quản lí sẽ triệu tập cả ban nhạc lại và bảo họ cái gì có tác dụng và cái gì không tác dụng. Khi dự án phần mềm hoàn thành, bao nhiêu người quản lí dự án sẽ triệu tập tổ và nói cho họ cái gì có tác dụng và cái gì không có tác dụng? Phần lớn những người quản lí dự án sẽ vui mừng rằng dự án đã xong và phần mềm được chuyển giao cho khách hàng rồi họ lo nghĩ về sửa lỗi sau. Bao nhiêu người phát triển sẽ suy nghĩ cẩn thận về hiệu năng của họ? Bao nhiêu người trong số họ sẽ biết về số lỗi của họ. Đây là chỗ tôi nghĩ nhạc rock tốt hơn phát triển phần mềm nhiều.

Đấy là ý nghĩ của tôi và kinh nghiệm của tôi, tôi ước là sinh viên hiện thời của chúng ta có nhiều thành công. Nhân tiện, có nhiều việc phần mềm ở California. Dường như là mọi công ty đều đang thuê người phát triển phần mềm và sẵn lòng trả nhiều tiền cho họ. Tôi ước cùng điều đó có thể xảy ra trong nhạc rock.

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

  • Tác phẩm: Lời khuyên cho sinh viên
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
  • Wiki hóa: https://kipkis.com

Có thể bạn muốn xem