Saturday, November 19, 2011

Lớp học mật mã miễn phí ở Stanford

Cập nhật: Lớp an toàn máy tính cũng sẽ được dạy miễn phí vào học kỳ mùa đông 2012! Lớp này là phiên bản mở của lớp CS155. Hai mảng đề tài thú vị mà lớp này sẽ giới thiệu là khai thác – phòng chống các lỗ hổng hư bộ nhớ và an toàn web. Nhóm nghiên cứu an toàn web của Stanford là những người tiên phong trong lĩnh vực này. Tôi nghĩ nếu không có thời gian thì chỉ nên học lớp mật mã, rồi sau đó xem dần bài giảng của lớp CS155 cũng được.

Chúng ta đang sống trong một thời đại rất thú vị ;-). Stanford vừa thông báo họ sẽ mở lớp dạy mật mã miễn phí do giáo sư Dan Boneh đứng lớp. Đây là phiên bản mở của lớp CS255 mà tôi học hồi năm ngoái. Loạt bài mật mã hiện đại mà tôi đang viết cũng là dựa trên nội dung của CS255.

Dan Boneh là chuyên gia hàng đầu thế giới về mật mã ứng dụng và cũng là giáo sư tuyệt vời nhất mà tôi từng được học. Không chỉ dạy cho bạn tất cả những gì bạn cần phải biết về mật mã ứng dụng, mà Dan còn sẽ truyền cho bạn niềm đam mê mật mã nói riêng và học thuật nói chung.

Đây là một cơ hội không thể bỏ qua! Tôi sẽ đã đăng ký (tự nguyện) làm trợ giảng và hi vọng là tôi sẽ hỗ trợ được cho các bạn chưa sử dụng tốt tiếng Anh theo đuổi lớp học này.

Tự dưng thấy vui quá ;-).

Tuesday, November 8, 2011

Kinh nghiệm tìm việc làm ở Silicon Valley

0. Bạn nào đọc blog này thường xuyên thì chắc hẳn cũng biết là tôi mới từ Việt Nam chuyển sang sống và làm việc ở Silicon Valley gần một năm nay. Bây giờ tôi đang làm việc ở Google. Hôm nay tôi muốn chia sẻ một số kinh nghiệm tìm việc làm ở Silicon Valley (SV) [1].
 
Đa số những người Việt đang sống và làm việc ở SV mà tôi có dịp gặp đều là du học sinh, học đại học hoặc là nghiên cứu sinh tiến sĩ ở các trường đại học của Mỹ hoặc các nước, rồi chọn SV để làm việc và định cư lâu dài. Nhiều anh chị ngạc nhiên khi biết tôi không phải là du học sinh. Thú thật là tôi cũng ngạc nhiên, khi thấy có rất ít người từ VN qua đây như tôi.

Tôi tin là nhiều kỹ sư ở VN đủ khả năng và có mong muốn tìm được một việc làm ở SV. Nhưng có lẽ ít người có thông tin về các việc làm ở SV cũng như đường đi nước bước. Tôi cũng đang hỗ trợ một vài người bạn tìm việc, nên sẵn tiện viết lại đây một số suy nghĩ.

--

1. Đầu tiên bạn phải tự tin bạn đủ khả năng làm việc ở SV. Trước khi vào Google, tôi làm việc ở một công ty tư vấn nên tôi có dịp gặp gỡ, làm việc với khá nhiều kỹ sư của các hãng phần mềm lớn. Tôi nghĩ phần lớn trong số đó, nhất là những kỹ sư Ấn Độ và Trung Quốc, không giỏi hơn những kỹ sư ở VN mà tôi đã làm việc hoặc học chung trước đây.

Hồi tôi mới nhận được email từ Google, tôi cũng nghĩ tôi không đủ tiêu chuẩn và nhận lời phỏng vấn chỉ vì tò mò. Rồi tôi thấy hóa ra phỏng vấn ở Google không quá khó như tôi đã nghĩ. Tất cả các câu hỏi đều xoay quanh những việc tôi đã làm hàng ngày trong nhiều năm. Nói cách khác, nếu bạn làm việc chăm chỉ và kỷ luật, bạn có thể tìm được một công việc tốt ở bất kỳ công ty nào trên thế giới.

Vùng SV thu hút tài năng từ khắp nơi trên thế giới. Các công ty lớn như Google mỗi năm nhận được vài triệu hồ sơ ứng viên. Dẫu vậy hầu hết các công ty đều luôn ở trong tình trạng cần người và lúc nào cũng có vị trí trống. Do đó nếu có một chiến lược tìm việc hiệu quả, bạn sẽ có một việc làm tốt. Đây cũng là ý tiếp theo mà tôi muốn chia sẻ.

--

2. Tôi thấy chiến lược hiệu quả nhất để tìm việc có thể gói gọn trong câu thành ngữ: nhất cự ly, nhì tốc độ. Công ty thường tuyển người thông qua giới thiệu nội bộ và ưu tiên phỏng vấn các ứng viên do nhân viên cử tuyển. Ví dụ như khi cần tìm người Việt phụ trách thị trường VN, nơi đầu tiên mà công ty tìm kiếm ứng viên chính là đội ngũ nhân viên người Việt của họ. Vì vậy bạn cần phải tiếp cận với công ty từ nhiều hướng, càng gần càng tốt, càng nhanh càng tốt. Ví dụ như:

* Tiếp cận với HR thông qua các mạng xã hội như LinkedIn. Với một hồ sơ LinkedIn "bắt mắt", bạn có thể sẽ nhận được nhiều lời mời hấp dẫn. Tôi nhận được email đầu tiên của Google là qua LinkedIn.

* Tiếp cận với nhân viên hiện tại thông qua các dự án nguồn mở của công ty. Cơ hội được tuyển dụng của bạn sẽ tăng lên 2000% nếu như bạn được một nhân viên của công ty cử tuyển. Rất nhiều công ty có các dự án nguồn mở và sẽ rất khó để họ làm ngơ bạn một khi bạn có những đóng góp đáng kể vào các dự án đó.

* Tiếp cận với nhóm người Việt đang làm việc ở công ty đó. Tương tự như ý vừa rồi, đây cũng là một cách để hồ sơ của bạn được gửi trực tiếp đến những nơi cần đến mà không phải qua vòng sơ loại.

* Tham gia các cuộc thi và sự kiện do công ty tổ chức. Các công ty tổ chức thi thố cũng là để tìm kiếm tài năng, nên mỗi cuộc thi là một cơ hội cho bạn thể hiện với nhà tuyển dụng.

* Tiếp cận công nghệ bằng cách trở thành chuyên gia của một lĩnh vực mà công ty rất cần. Đây là cách tiếp cận khó nhất nhưng cũng là cách hiệu quả nhất.

* Tiếp cận địa lý bằng cách chuyển đến SV hoặc các khu vực khác ở Mỹ. Tôi thấy các công ty thường ưu tiên các ứng viên đang ở SV (vì chi phí tuyển dụng sẽ rẻ hơn), nên nếu bạn có cơ hội, bạn hãy chuyển đến SV.

* Tiếp cận với các công ty gia công có trụ sở tại VN. Tôi có hai người bạn trước đây được TMA gửi sang SV làm gia công cho một số hãng, rồi nhân cơ hội đó tìm việc làm và ở lại SV làm việc lâu dài luôn.

* Nếu bạn là sinh viên thì hãy ứng tuyển làm thực tập sinh. Điều kiện tuyển thực tập sinh thường dễ hơn nhân viên chính thức nên cơ hội của bạn sẽ cao hơn. Làm thực tập sinh cũng là con đường ngắn nhất để trở thành nhân viên chính thức.

--

3. Hai phần tôi vừa đưa ra là những ý quan trọng nhất quyết định phần lớn sự thành bại trong quá trình tìm việc của bạn. Phần tiếp theo tôi sẽ bàn sơ qua về việc thực hiện những ý này như thế nào.

Chuẩn bị

Bạn hãy tự hỏi thế này: bạn sẽ làm gì để chuẩn bị cho buổi phỏng vấn của bạn ở Facebook? Tôi nghĩ danh sách sẽ dài và rất may là bạn còn nhiều thời gian. Dẫu vậy, đừng chần chờ, mà hãy bắt tay vào ngay hôm nay. Bạn không thể biết cơ hội sẽ đến lúc nào, nên cách tốt nhất là phải chuẩn bị tốt.

Rõ ràng bạn cần phải chuẩn bị là tiếng Anh. Nếu bạn không thể sử dụng thành thạo tiếng Anh thì hãy dừng lại hết mọi việc để tập trung học tiếng Anh, cho đến khi nào bạn có thể giao tiếp bằng tiếng Anh qua điện thoại.

Chuẩn bị về nghề nghiệp chuyên môn thì phụ thuộc vào công việc mà bạn muốn làm. Đa số công việc ở SV là kỹ sư phần mềm. Với vị trí này, bạn có thể tham khao bài viết này của Steve Yegge để biết nên có những kiến thức nào. Tôi sẽ viết một bài dành riêng cho những bạn muốn làm kỹ sư an ninh ứng dụng.

Ngoài ra, bạn nên tìm đọc những cuốn sách cần đọc khi học khoa học máy tính và theo học các lớp học miễn phí của các đại học lớn như Stanford và MIT. Nếu bạn đạt được kết quả tốt trong các môn học này thì đó sẽ là một điểm rất sáng trong hồ sơ của bạn.

Giỏi tiếng Anh và giỏi chuyên môn sẽ giúp bạn thực hiện những chiến thuật tiếp cận mà tôi liệt kê ở trên. Tiếp cận càng gần và càng nhanh thì bạn sẽ càng có nhiều cơ hội. Để nắm bắt các cơ hội thì bạn cần phải có một hồ sơ cá nhân "đẹp" và kỹ năng phỏng vấn tốt.

Làm hồ sơ cá nhân (resumè)

Bạn cần hai hồ sơ khác nhau. Một hồ sơ trên LinkedIn để thu hút các cơ hội nghề nghiệp từ HR và những nguồn khác. Hồ sơ thứ hai là hồ sơ mà bạn gửi cho những nhà tuyển dụng khi họ yêu cầu.

Với hồ sơ LinkedIn, bạn nên tập trung vào các mảng kỹ năng chuyên môn, trình độ học vấn và các giải thưởng nếu có. Sự thật là những tay "săn đầu người" thường đánh giá ứng viên thông qua các từ khóa ;-), nên đây là nơi mà bạn càng có nhiều từ khóa nổi bật càng tốt. Đó là lý do tôi khuyên bạn nên tìm học các lớp học miễn phí của Stanford, bởi nếu bạn đạt được điểm tốt, thì bạn có thể có được từ khóa Stanford rất nặng ký trong hồ sơ của bạn.

Với hồ sơ mà bạn gửi cho nhà tuyển dụng, bạn phải khiêm tốn. Càng khiêm tốn càng tốt. Với người có ít hơn 10 năm kinh nghiệm làm việc, tôi nghĩ 1 trang A4 là đủ. Hồ sơ nên làm bằng LaTex, xuất ra tệp PDF với các đề mục chính như thông tin liên lạc, học vấn, kinh nghiệm làm việc, kỹ năng chuyên môn và giải thưởng nếu có. Nếu bạn có làm phần mềm hoặc có làm nghiên cứu thì có thể liệt kê những công trình nổi bật nhất.

Bạn cần phải cẩn trọng khi liệt kê các kỹ năng của bạn, bởi người phỏng vấn sẽ dựa vào đó mà đặt câu hỏi. Chỉ liệt kê những gì mà bạn thật sự "rành sáu câu". Tuyệt đối không liệt kê những mảng công việc mà bạn chỉ làm qua loa hoặc đã làm quá lâu nên bây giờ bạn không còn nhớ. Tuyệt đối không liệt kê quá nhiều từ khóa cùng một lúc, nếu không thì chính bạn sẽ là nạn nhân. Bạn nên hiểu rằng người phỏng vấn bạn rất có thể là những người tiên phong và là chuyên gia hàng đầu về các kỹ năng mà bạn ghi trong hồ sơ.

Sau khi làm hồ sơ, bạn nên gửi cho bạn bè hoặc đồng nghiệp đánh giá và phê bình. Bạn cũng có thể gửi cho tôi nếu bạn muốn.

Phỏng vấn

Một cách chuẩn bị cho buổi phỏng vấn là thử sức với các câu hỏi phỏng vấn trên mạng. Tôi nghĩ có hẳn vài cuốn sách viết về các câu hỏi này. Blog KHMT cũng có một bộ câu hỏi phỏng vấn rất thú vị. Tôi chưa từng gặp các câu hỏi kiểu như "Làm sao để dời một ngọn núi?", nên tôi nghĩ bạn cũng không cần phải bỏ nhiều thời gian cho dạng câu hỏi đó.

Bạn cũng nên thử phỏng vấn với bạn bè và đồng nghiệp. Nếu có cơ hội, thử phỏng vấn với các công ty khác nhau, bất kể bạn có muốn làm việc cho họ hay không. Việc phỏng vấn sẽ giúp bạn nhận ra những điểm yếu trong kiến thức cũng như kỹ năng phỏng vấn, để có thể khắc phục kịp thời trước khi phỏng vấn với công ty mà bạn yêu thích.

Thông thường thì bạn sẽ được phỏng vấn qua điện thoại trước. Cuộc phỏng vấn ngắn đầu tiên là của HR, sau đó sẽ có trung bình 2 cuộc phỏng vấn kỹ thuật khác. Bạn nên sử dụng điện thoại bàn có loa lớn, không nên trả lời phỏng vấn qua điện thoại di động. Nếu được thì yêu cầu họ phỏng vấn qua Skype hoặc Google+ Hangout, để lỡ như bạn không nghe kịp, thì bạn có thể hỏi họ lại qua cửa sổ chat ;-). Trước khi trả lời, bạn nên nhắc lại câu hỏi và cũng đừng ngại hỏi lại câu hỏi nếu bạn không nghe kịp hoặc không hiểu.

Nếu vượt qua được các cuộc phỏng vấn qua điện thoại (chúc mừng!), bạn sẽ được mời đến trụ sở của công ty để phỏng vấn. Thông thường bạn sẽ phỏng vấn liên tục với nhiều người trong một ngày. Như tôi đã nói ở trên, thực tế các buổi phỏng vấn không khó. Các câu hỏi chỉ xoay quanh những kỹ năng mà bạn liệt kê trong hồ sơ, nên hãy an tâm nếu bạn đã có quá trình làm việc chăm chỉ. Chúc thành công!

Vượt qua được vòng phỏng vấn rồi thì 90% là bạn sẽ được tuyển dụng. Lúc này một bước quan trọng là thỏa thuận lương bổng, điều kiện làm việc.

Thỏa thuận lương bổng

Lưu ý là mọi thỏa thuận lương bổng ở SV đều là trước thuế và có rất nhiều loại thuế bạn phải đóng. Ví dụ tôi phải nộp gần 40% thu nhập cho thuế.

Hiện giờ thì mức thu nhập trung bình của kỹ sư phần mềm mới ra trường ở SV tôi nghĩ là ở mức 80.000 USD/năm. Mỗi năm kinh nghiệm bạn có thể tính thêm 10%. Trong quá trình đàm phán lương bổng, có thể HR sẽ hỏi mức lương ở công ty cũ của bạn. Bạn không phải và không nên trả lời câu hỏi này, bởi có thể HR đang tìm lý do để hạ lương bạn xuống ;-).

Thường các công ty sẽ gửi cho bạn một thư đề nghị (offer letter), trong đó ngoài con số lương chính thức, còn có thể có:

* Số ngày nghỉ phép ăn lương. Thông thường là từ 10 ngày đến 15 ngày.

* Mức thưởng hàng năm. Đa số các công ty đều có quy định một mức cụ thể và bạn có thể được hơn nếu làm tốt.

* Cổ phần của công ty. Cái này thì có quá nhiều dạng nên tôi không bàn ở đây.

* Các loại bảo hiểm, bao gồm bảo hiểm sức khỏe, mắt, răng và bảo hiểm nhân thọ. Thông thường các công ty sẽ trả một phần và bạn sẽ trả một phần. Không có bảo hiểm thì khó mà sống sót được ở Mỹ, nên bạn phải coi kỹ các loại bảo hiểm mà công ty tài trợ.

* Tiền thưởng ký hợp đồng. Công ty sẽ gửi cho bạn một khoản "lót tay" nếu bạn đồng ý làm việc cho họ.

* Tiền chuyển địa điểm. Công ty sẽ tài trợ vé máy bay cũng như các khoản phí khác để bạn chuyển từ VN sang SV.

* Hưu trí và các lợi ích khác.

Đừng bao giờ vội vàng chấp nhận offer. Đây là một cuộc thương lượng và không có lý do gì bạn phải đồng ý với đề nghị đầu tiên của đối phương. Có những thứ mà bạn có thể thương lượng: tiền lương, cổ phần, tiền thưởng ký hợp đồng và tiền chuyển địa điểm. Rất có thể chỉ sau một vài email mà bạn sẽ có vài chục ngàn Mỹ kim ;-).

Chúc may mắn!

--

[1]: Về mặt địa lý thì các công ty công nghệ không còn chỉ tập trung ở khu vực Silicon Valley nữa, mà đã lan rộng ra khắp vùng vịnh San Francisco. Tôi gọi chung là Silicon Valley vì địa danh này quen thuộc với nhiều người.

Thursday, November 3, 2011

Tìm Lỗ Lấy Tiền

Trước giờ tôi ít khi kiểm tra hộp thư rác, thế mà tự dưng sáng nay vô coi thì phát hiện ra lá thư này do Mozilla gửi từ vài ngày trước:
We would like to thank you for your help on:

Bug 665814 - (CVE-2011-3389) Rizzo/Duong chosen plaintext attack (BEAST) on SSL/TLS 1.0 (facilitated by websockets -76)

While this doesn't qualify for a full $3000 bug bounty under our guidelines and no shipping version of Firefox was directly vulnerable to this attack (the vulnerable websockets version was disabled by default), your work did prompt us to strengthen our TLS implementation and push hard on Sun to get a fixed Java implementation to protect our users.

If you send me an address we can send each of you a check for $1000.00 USD or we can do a wire transfer. For the wire transfer we will need.

Bank Name:
Bank address:
SWIFT/IBAN Code:
Account number:
Name on account:
Your Home address:
[...]
Nội dung "nhìn" quá giống một tác phẩm của những nhà văn Nigeria từng đoạt giải Ig Nobel văn học 2005, hèn gì mà Gmail nhận nhầm. Hên quá ;-).

Tiện đây tôi cũng giới thiệu một chút về những chương trình Tìm Lỗ Lấy Tiền ;-) của các công ty phần mềm trên thế giới, mà tiêu biểu là Google, Mozilla và mới đây là Facebook.

Một trong những đề tài tranh cãi ưa thích của đám làm an toàn thông tin là cách thức công bố lỗ hổng. Trước đây nếu bạn tìm ra một lỗ hổng an ninh mới (gọi là 0-day vulnerability) trong một phần mềm quan trọng thì bạn có một số lựa chọn sau đây:

  1. Giữ riêng để sử dụng khi cần.
  2. Tìm cách bán ra chợ trời hoặc các "đầu nậu" mờ ám.
  3. Bán cho các "đầu nậu" hợp pháp, vốn sẽ cung cấp lại cho nhà sản xuất phần mềm.
  4. Thông báo miễn phí cho nhà sản xuất.
  5. Công bố rộng rãi.

Đương nhiên bạn sẽ im lặng nếu chọn phương án 1 hoặc 2. Phương án số 3 cũng giống phương án số 4, chỉ khác là bạn sẽ được thưởng tiền và không cần phải làm việc trực tiếp với nhà sản xuất. Phương án số 4 và số 5 chính là đề tài của các cuộc cãi vã triền miên.

Nếu bạn chọn số 5 thì nhà sản xuất và nhiều người khác sẽ quy kết bạn là kẻ vô trách nhiệm (và có thể  là háo danh nếu bạn là người mới), bởi thông tin về lỗ hổng có thể gây nguy hại cho người khác. Dẫu vậy vẫn có nhiều chuyên gia chọn phương án này, bởi vì họ cho rằng đây là cách tốt nhất khiến cho nhà sản xuất nhanh chóng sửa lỗi, vốn có thể đã bị phát hiện trước đó bởi những người chọn phương án số 1 và 2.

Phương án số 4 là lựa chọn phổ biến nhất, vì nó là một cách an toàn để tạo dựng uy tín cũng như tìm kiếm cơ hội nghề nghiệp. Khi chọn cách này, bạn sẽ làm việc với nhà sản xuất để giúp họ sửa lỗi. Khi lỗi được sửa, đa số nhà sản xuất sẽ ghi nhận sự đóng góp của bạn trên trang nhà của họ. Đôi khi họ cũng tặng quà hoặc gửi vé mời tham dự các hội thảo và các buổi tiệc mà họ tài trợ. Nhiều người chọn phương án này. Dẫu vậy nhìn chung là bạn phải làm việc không công cho nhà sản xuất. Kế hoạch công bố lỗi hay nghiên cứu của bạn sẽ phụ thuộc vào kế hoạch sửa lỗi của nhà sản xuất, mà có khi kéo dài vài năm. Cũng có trường hợp người thông báo lỗi bị nhà sản xuất đe dọa, thưa kiệnbị bỏ tù. Đây cũng là nguyên nhân chính khiến cho một số chuyên gia tên tuổi khởi xướng chiến dịch No More Free Bugs.

Từ hơn một năm nay thì các hãng phần mềm, đi đầu là Google, bắt đầu xây dựng các chương trình Tìm Lỗ Lấy Tiền kết hợp các điểm hay của phương án số 3, 4 và 5. Dẫu có thể khác nhau về chi tiết, nhưng tất cả các chương trình đều có luật chơi giống nhau: thưởng tiền (và hiện vật) cho những người săn lùng và thông báo lỗ hổng an ninh cho nhà sản xuất. Ví dụ như nếu bạn tìm được một lỗ hổng trong trình duyệt Firefox thì Mozilla sẽ thưởng cho bạn một số tiền. Hay nếu như bạn tìm được một lỗ hổng của Gmail thì Google cũng sẽ thưởng tiền cho bạn và còn trân trọng ghi tên bạn vào Google Security Hall of Fame. Thực sự tôi không có chủ ý thông báo nghiên cứu của mình cho họ để kiếm tiền thưởng, nhưng Mozilla cũng chủ động đề nghị.

Tôi nghĩ đây là một dạng "thú vui" mà những ai thích an ninh ứng dụng nên thử, những khi "nông nhàn" chẳng hạn. Nếu phát hiện lỗ hổng nguy hiểm, bạn vừa được thưởng tiền, vừa được ghi nhận, vừa thêm cơ hội nghề nghiệp. Tôi nghĩ trong năm vừa rồi, Sergey Glazunov, một tay tìm lỗ lấy tiền chuyên nghiệp, có thể đã bỏ túi vài chục ngàn đến cả trăm ngàn Mỹ kim. Ở VN hồi năm 2010 có anh Bùi Quang Minh cũng được Google thưởng một ngàn Mỹ kim cho lỗ hổng trong trình duyệt Chrome. Ngoài ra tham gia vào các chương trình này cũng là một cách tự giới thiệu hiệu quả, nếu như bạn muốn làm việc ở các hãng phần mềm lớn.

Thử xem ;-).