If you're seeing this message, it means we're having trouble loading external resources on our website.

Nếu bạn đang sử dụng bộ lọc web, vui lòng kiểm tra lại xem bộ lọc có chặn hai tên miền *.kastatic.org*.kasandbox.org hay không.

Nội dung chính

Bill Mills - Nhà vật lí học và lập trình viên liên ngành

Xin chào, tôi là Bill Mills!

Bạn đang làm việc trong lĩnh vực nào?

Hiện tại, công việc của tôi chủ yếu xoay quanh việc tìm ra những phương thức lập trình hiệu quả, cải thiện giao diện người dùng và trải nghiệm sử dụng để phục vụ cho các công việc nghiên cứu khoa học. Tôi đang làm việc tại TRIUMF, phòng thí nghiệm quốc gia về vật lý hạt nhân của Canada, với vai trò là chuyên gia công nghệ web và quản lý dự án phần mềm cho thí nghiệm xây dựng máy GRIFFIN. GRIFFIN là một loại máy quang phổ tia gamma tiên tiến, được sử dụng để ghi lại dữ liệu về các hạt phóng xạ một cách hiệu quả hơn và với tốc độ cao hơn rất nhiều so với các sản phẩm trước đây. Loại máy này sẽ giúp chúng ta có được cái nhìn chi tiết về hạt nhân nguyên tử hơn bao giờ hết.
Với dự án GRIFFIN, công việc của tôi tập trung vào việc hiện đại hoá cách các nhà khoa học tương tác và xử lý thông tin về thí nghiệm của họ. Trong các thí nghiệm trước đây, tôi phải sử dụng các màn hình hiển thị rất thô sơ để thông báo cho các nhà khoa học về tiến trình của thí nghiệm, ví dụ như gửi cho họ một danh sách dài toàn là các con số nằm trong các bảng lồng nhau, được lưu trữ rải rác ở khắp nơi. Cách đây nhiều thập kỷ thì cách làm đó còn khả thi, vì khi ấy ta có thể thực hiện các thí nghiệm chỉ với một số thiết bị đơn giản. Nhưng ngày nay, những thí nghiệm hiện đại có thể cần đến hàng nghìn bộ cảm biến và luồng dữ liệu (chỉ riêng GRIFFIN đã có đến 200 TB dữ liệu mỗi tuần) cũng như nhiều cơ sở hạ tầng hỗ trợ đồ sộ khác nữa.
Như vậy, giao diện thiếu tính tổ chức và các báo cáo đơn giản không còn khả năng quản lý tốt các thí nghiệm lớn và phức tạp được nữa. Trong khi đó, ngày càng có nhiều nhóm nhà khoa học sử dụng GRIFFIN nhưng họ lại không có đủ điều kiện để học và làm quen với giao diện người dùng quá phức tạp do họ còn phải dành thời gian để làm thí nghiệm. Vì vậy, GRIFFIN phải có giao diện người dùng trực quan và dễ sử dụng nhất có thể, mà không làm giảm tính chi tiết và hiệu quả vốn có của thiết bị. Do đó trong năm vừa qua, tôi đã phải tận dụng tất cả những ý tưởng và công nghệ hay nhất mà cộng đồng JavaScript đã tạo ra để xây dựng một giao diện người dùng hiệu quả, cho phép các nhà khoa học thực hiện công tác chuẩn bị và tiến hành thí nghiệm nhanh nhất có thể ngay khi họ đến phòng thí nghiệm.
Phiên bản cập nhật của bảng điều khiển GRIFFIN mà tôi đã xây dựng, cải tiến từ thử nghiệm trực tuyến đầu tiên bằng cảm biến SPICE.
Bộ tính toán hiệu suất cảm biến của GRIFFIN và các cảm biến tương tự trên web, thay thế cho việc tính toán thủ công trên giấy.
Ngoài các công việc thiết kế giao diện người dùng, tôi cũng đang hỗ trợ các nhà khoa học nâng cao khả năng lập trình chính bằng các công cụ mà các lập trình viên phần mềm thường sử dụng. Kiến thức về khoa học máy tính, trong đó có lập trình, đã trở nên vô cùng quan trọng đối với lĩnh vực vật lý. Nhưng cho đến nay, cộng đồng các nhà vật lý học vẫn chưa bắt kịp với các kỹ thuật và kiến thức về máy tính. Hầu hết các nhà vật lý học chỉ lập trình bằng cách đoán và thử các dòng mã, cho đến khi nào mã họ viết ra có vẻ là hoạt động được. Hiện nay, các nhà lập trình đã phát triển các chiến lược như kiểm soát phiên bản và kết hợp phần mềm có mã nguồn mở để tối ưu hóa quá trình phát triển phần mềm hoặc ứng dụng. Nếu các nhà khoa học có thể học hỏi kinh nghiệm từ những chiến lược này, họ không những có thể cải tiến quá trình nghiên cứu khoa học mà còn có thể biến các công trình khoa học thành các nguồn dữ liệu mở và tái sử dụng trọng tương lai. Các phòng thí nghiệm ở mọi lĩnh vực đều cần những người có khả năng đưa ra những ý tưởng mới mẻ để các kỹ thuật khoa học có thể tiếp tục phát triển, đây cũng chính là những điều tôi đang cố gắng thực hiện để kết hợp lĩnh vực vật lý và điện toán ngày nay.

Bạn đã học lập trình như thế nào?

Tôi bắt đầu lập trình khi là nghiên cứu sinh tham gia dự án thí nghiệm ATLAS trên LHC tại CERN và đó là một khoảng thời gian đầy bất ổn! Trước đó, tôi chỉ học duy nhất một lớp lập trình khi còn là sinh viên nhưng tôi lại trượt đúng học phần đó. Vậy nên tôi hoàn toàn không biết gì về việc lập trình và cứ nghĩ rằng mình sẽ không thể lập trình được. Nhưng sau đó, khi làm nghiên cứu sinh, tôi lại phải làm quen với việc lập trình toàn thời gian. Trong suốt 5 năm, tôi loay hoay để viết ra một chương trình phân tích phức tạp phục vụ cho luận án của mình và phải sau đó tôi mới thực sự học lập trình một cách bài bản. Từ quãng thời gian đó, tôi nhận ra rằng cộng đồng các nhà khoa học đang chưa có đủ sự hướng dẫn để hình thành văn hóa ứng dụng khoa học máy tính trong nghiên cứu. Do đó, nếu các nhà khoa học có thể học được cách lập trình chính xác và hiệu quả, chúng ta sẽ đạt được bước tiến lớn trong nghiên cứu khoa học.
Sau khi trở thành Tiến sĩ, tôi mới thực sự bắt đầu học lập trình. Khi đó, các công việc trong lĩnh vực khoa học khá khan hiếm và nhiều nhà học giả chuyên nghiệp khác cũng gặp khó khăn giống tôi khi tìm việc. Trong lúc đó, một người bạn của tôi là lập trình viên trang web nổi tiếng ở Vancouver đã khuyên tôi nên thử học JavaScript và tham gia các nhóm trao đổi về phát triển phần mềm quanh thành phố để học hỏi. Đây quả là một lời khuyên hữu ích vì nhờ đó mà tôi phát hiện ra Vancouver đã và đang có sẵn những cơ hội tốt để khởi nghiệp về mảng phần mềm, kể cả với những người mới như tôi. Tôi đã được hỗ trợ rất nhiều trong quá trình bắt đầu tìm hiểu những kiến thức cơ bản về thiết kế và lập trình trang web. Nhờ việc tương tác với cộng đồng lập trình viên tại Vancouver, tôi có cơ hội tiếp xúc với nền văn hóa rất phong phú không chỉ về công nghệ tính toán mà còn về cả kỹ thuật lập trình. Tôi nhận ra điều mà cộng đồng nghên cứu khoa học đang thiếu vắng chính là các kỹ thuật lập trình này, nên từ đó tôi đã cố gắng kết hợp hai lĩnh vực này lại với nhau.

Bạn thường làm gì vào thời gian rảnh rỗi?

Nếu không bận lập trình cho các dự án thì tôi cũng sẽ dạy lập trình! Tôi đang làm cố vấn cho Ladies Learning Code - một chương trình giáo dục tiếp cận cộng đồng giúp phá bỏ các rào cản đối với việc học lập trình cho phụ nữ. Tôi cũng rất vui vì tôi sắp có chứng chỉ để dạy lập trình cho Software Carpentry - một chương trình hội thảo dạy lập trình cho các nhà khoa học.
Hiện tại, tôi cũng đang xây dựng một dịch vụ miễn phí giúp kết nối các lập trình viên tình nguyện với các nhà khoa học đang mong muốn tìm cố vấn về lập trình. Tôi cũng tìm cách để đưa phong trào tự chế tạo (maker movement) đến với các phòng thí nghiệm bằng cách hỗ trợ các đồng nghiệp trong lĩnh vực sinh thái và nông nghiệp tìm hiểu về nguyên mẫu điện tử Arduino và các tùy chọn phần cứng mở khác giúp hiện đại hóa thí nghiệm của họ.
Tôi cũng đang cố gắng tham dự nhiều hội nghị nhất có thể để mời các lập trình viên cùng hợp tác trong việc thúc đẩy khoa học ngày một tiến bộ hơn. Dưới đây là video của tôi cùng với cô Angelina Fabbro tại hội nghị LXJS ở Lisbon, Bồ Đào Nha vào năm 2013, trình bày về chủ đề hợp tác giữa các nhà khoa học và lập trình viên:
Video wrapper của Khan Academy
Khi không phải làm các công việc liên quan đến máy tính, tôi thường dành thời gian tham gia các hoạt động tình nguyện về môi trường. Tôi rất thích những hoạt động liên quan đến việc cân bằng mối quan hệ giữa con người với tự nhiên. Trước đây, tôi cũng từng viết nội dung và làm nghiên cứu cho SPEC ở Vancouver.

Bạn có lời khuyên gì cho những lập trình viên mới vào nghề?

Không có kỹ năng nào mới sinh ra mà đã có cả. Mọi kỹ năng đều phải khổ luyện mới có được thành quả, vậy nên bạn đừng chỉ nhìn những lập trình viên tài giỏi mà nghĩ rằng bản thân mình không bao giờ có thể trở thành những người như vậy. Tôi rất may mắn khi có cơ hội được làm việc với những lập trình viên trang web giỏi nhất hiện nay. Họ đều có điểm chung là từng không tự tin vào chính những thành tựu họ đã đạt được. Có thể chúng ta đều cảm thấy họ làm được những điều phi thường một cách dễ dàng, nhưng thực chất, họ cũng gặp rất nhiều khó khăn khi mới bắt đầu. Cho nên chỉ cần bạn cố gắng và viết được một dòng mã thì bạn cũng đã bước từng bước như một lập trình viên. Và nếu tiếp tục học hỏi và luyện tập nhiều hơn nữa thì chắc chắn một ngày nào đó bạn sẽ làm chủ được việc lập trình.

Tham gia cuộc thảo luận?

Chưa có bài đăng nào.
Bạn có hiểu Tiếng Anh không? Bấm vào đây để thấy thêm các thảo luận trên trang Khan Academy Tiếng Anh.