Tin tổng hợp
câu chuyện lập trình-3

Học lập trình và trở thành kỹ sư facebook không cần bằng cấp 3

Trong ngành công nghệ, quan niệm cho rằng bằng đại học là tấm vé bắt buộc để bước lên chuyến tàu sự nghiệp, tiếc thay không chỉ phổ biến ở Việt Nam mà còn cả trên thế giới. Nhưng, vẫn còn đó những #unqualified_developer trưởng thành từ quá trình tự học lập trình. Bằng đam mê và nỗ lực làm việc, họ đã đạt được thành tựu không hề kém cạnh các đồng nghiệp được đào tạo chính quy.

Học lập trình bắt đầu như thế nào?

Bằng cách huyền diệu nào mà tôi đã kiếm được việc ở Facebook, dù không bằng cấp?
Nói luôn cho nó vuông: thì miệt mài làm việc suốt nhiều năm, chứ sao!
Tôi thực sự rất, rất thích lập trình. Trong 4 năm trở lại đây, tôi không làm gì khác ngoài công việc ấy. Trước đó, tôi làm việc toàn thời gian 2.5 năm, nhiệm vụ: lập trình phần mềm. Trước đó nữa, gần 6 năm, tôi cũng lập trình liên tục – cho dù không phải để kiếm cơm mà chỉ vì sở thích. Tôi bỏ học đại học, thậm chí bỏ ngang cấp 3 – và dành toàn bộ thời gian cho lập trình. Mới gần đây, tôi nghỉ việc ở Facebook, và bạn thử đoán xem? Đúng vậy, tôi vẫn đang lập trình.

Và đó là câu chuyện của Evan Priestley, một lập trình viên thậm chí không có cả bằng tốt nghiệp phổ thông lẫn đại học, đã đảm nhiệm vị trí kĩ sư phần mềm tại Facebook từ 2007 đến 2011. Evan từng gây tranh cãi khi công khai nhận xét rằng Facebook “là chương trình có nhiều bug nhất trên thế giới”. Anh cũng nổi danh trên Quora (Top Writer 2012) với những đóng góp xuất sắc cho phần nội dung liên quan đến Phabricator – một ứng dụng mã nguồn mở được viết bằng PHP, giúp quản lý dự án phần mềm dễ dàng hơn.

câu chuyên lập trình
Học lập trình đã thay đổi cuộc sống của Evan Priestley
Cục thể về tôi hơn nhé..........

 Lí do tại sao tôi bỏ học ở trường để học lập trình.

Từ nhỏ, tôi đã cực kì hứng thú với máy tính. Năm 8 hay 9 tuổi, tôi học một chút BASIC và đã dùng nó để viết những chương trình như thế này trên chiếc máy tính Apple IIe ở trường.
Cú pháp của chương trình chắc không còn hợp lệ, song nó cũng đã kịp hiện đầy màn hình những con số ngẫu nhiên khiến một thằng nhóc 9 tuổi ngu ngơ phải sửng sốt vì thích thú.

Tôi cũng mê chơi game từ rất sớm, đã bỏ ra không biết bao nhiêu thời gian để cày Escape Velocity. Sau đó, tôi thậm chí còn cùng với một số người chơi khác thiết kế thêm màn chơi cho game này bằng cách chỉnh sửa resources với ResEdit. Chúng tôi đã làm được một màn chơi lớn có tên là “Final Battle” cho game. Năm đó tôi 12 tuổi. Ừ thì việc này không hẳn là lập trình, song nó vẫn liên quan nhiều đến kĩ thuật và giúp cho tôi làm quen với một số khái niệm cơ bản.

Thấy tôi muốn tự viết game quá, nên cũng năm đó tôi bắt đầu tự học lập trình, ba mẹ tặng tôi nhân dịp sinh nhật một CD giới thiệu về lập trình (Metrowerks CodeWarrior IDE), kèm theo một đống sách PDF về các ngôn ngữ lập trình và thư viện khác nhau. Tôi nghiêm túc chìm đắm trong đó suốt một năm ròng. Nhờ vậy, tôi đã học C (ở mức độ căn bản) trong vòng 2 tuần, rồi tiếp tục học về C/C++ và viết chương trình, tiếp đến là OpenGL. Lúc đó là OS9 và tôi nghĩ IIsi là máy tính cá nhân của tôi tại thời điểm này.

câu chuyện lập trình 2
Metrowerks CodeWarrior IDE, chương trình được Evan sử dụng trong những ngày đầu học lập trình

Thế rồi nhiều chuyện liên tiếp xảy ra: chuyển nhà, ba mẹ ly hôn, trường học thì buồn tẻ. Tôi chán nản, và tiếc nuối cho bản thân mình, rất nhiều.

Suốt 5 năm, tôi hầu như không thể tập trung làm việc gì. Dĩ nhiên tôi vẫn phát triển kĩ năng theo hướng trở thành lập trình viên, song mọi chuyện tiến triển vô cùng chậm chạp. Tôi chọn học PHP, và dùng nó để làm một trang gọi là Runica – cho phép tìm kiếm runewords trong game Diablo II. Trang web cũng có một vài thứ hay ho, ví dụ như đạt được 1 triệu lượt truy cập, và mở mắt cho tôi về scale của web. Dầu vậy, cuối cùng tôi vẫn quyết định bỏ học phổ thông.

Vào cuối tháng 9 năm tôi 19 tuổi, một người bạn của tôi kết thúc đợt thực tập. Công ty nhờ anh ấy giới thiệu giúp người thay thế. Anh ấy giới thiệu tôi. Thế là, tháng 9 năm đó, tôi được nhận vào làm ở Portland Webworks.

Cùng thời gian này, tôi đăng kí học ở trường đại học Southern Maine, chuyên ngành Khoa học máy tính (Computer Science – CS), với kì vọng trải nghiệm ở đại học sẽ khá hơn so với thời cấp 3. Tôi chọn 2 hay 3 lớp CS gì đấy. Song, rất tiếc, tôi vẫn cảm thấy những gì mình thu nhận được từ trường lớp là không bõ công (bởi vì, đến lúc đó tôi đã tự học lập trình được 6 năm). Tôi bèn chuyển qua học Hóa Sinh và đăng kí liền tù tì một đống môn học cùng lúc.

Nhưng rồi công việc ở công ty ngày càng bận, tôi ngày càng ít có thời gian đến lớp. Tôi đành chuyển qua học Toán, với kì vọng sẽ gom đủ tín chỉ để được tốt nghiệp. Sau rốt, tôi vẫn không có đủ quyết tâm hoàn thành các môn đọc/viết/nhân văn. Bởi vậy, khi nghỉ làm ở Portland Webworks (sau 2.5 năm), tôi cũng dừng học đại học luôn.

Nguyên nhân, có lẽ là vì tôi mau chán với những điều được giảng dạy, việc phải đến lớp, phải làm các thể loại bài tập, vân vân và mây mây – trong khi lại không thấy rõ được lợi ích của chúng. Tôi không tự phụ là mình thông minh hơn người gì đâu nhé. Nhưng hồi phổ thông, tôi học ở một trường công lập nhỏ ở Maine, và năm lớp 11, chúng tôi đã phải bỏ ra tới 2 tuần để học về hệ thống đo lường! Có thể, đó không phải là lỗi của nhà trường. Chỉ đơn giản, đó là cách mà trường học hoạt động, trong khi thế giới bên ngoài lại được vận hành theo một cách hoàn toàn khác.

Cũng như vậy, trường đại học đối với cá nhân tôi là một trải nghiệm tốt, song có rất nhiều điều đang được phát triển ở xã hội ngoài kia cuốn hút tôi hơn. Thôi thì, chí ít tôi đã rời khỏi trường học với khoản nợ ít hơn 7000usd.

Nhờ học lập trình tôi đã kiếm được việc ở Facebook như thế nào.

Như đã nói ở trên, tôi bắt đầu làm việc cho Portland Webworks năm 19 tuổi. Đó cũng là “công việc thực sự” đầu tiên mà tôi có được.

Công ty nhỏ, nên tôi được quyền tự do làm theo ý muốn. Suốt thời gian 2.5 năm làm việc ở Portland Webworks, công việc chính của tôi là bảo trì toàn bộ code do mình tự viết ra. Nhờ tham gia vào toàn bộ vòng đời của một phần chương trình, tôi cũng học được bài học quan trọng: cần phải cẩn trọng với mọi quyết định khi thiết kế hệ thống – nếu không muốn lãnh chịu nhiều hậu quả đớn đau về sau.

Đến khoảng đầu năm 2007, Portland Webworks bắt đầu lớn mạnh, việc học đại học của tôi cũng vừa dừng lại. Một lần, đang lướt Reddit thì tôi vô tình trông thấy bài toán tuyển dụng của Facebook, bèn gửi lời giải. Ít lâu sau, tôi được nhận và bắt đầu làm việc ở Facebook từ tháng 4/2007.

Tôi đã cày cuốc cực kì chăm chỉ ở Facebook, thậm chí còn cày dữ hơn cả thời làm cho Portland Webworks. Không theo học đại học nữa, thời gian của tôi cũng không còn bị phân mảnh. Có những thời điểm, tôi làm 40 tiếng/tuần, chưa kể cày OT cho đến “kịch trần” tổng số giờ được phép theo luật.

Điều tôi gặt hái được nhiều nhất từ 4 năm làm việc cho Facebook, có lẽ là rèn luyện khả năng đánh giá tốt hơn. Hồi mới đi làm, tôi đã đưa ra rất nhiều quyết định sai lầm khi thiết kế hệ thống. Nhưng khi được thuê vào Facebook, tôi đã tích lũy đủ kinh nghiệm để cân bằng giữa tính đơn giản và sự phức tạp, hoặc chỉ ra được vấn đề mà các hệ thống khác gặp phải. Khả năng này rất khó để rèn luyện, và cũng rất khó để có thể hướng dẫn lại cho người khác – song lại cực kì đáng giá. Cách tốt nhất để có được nó, theo tôi, là phải bảo trì hệ thống do chính mình phát triển trong một khoảng thời gian đủ dài với những yêu cầu liên tục thay đổi.

Cũng chính vì vậy, tôi không tán thành cho lắm khẩu hiệu “Move Fast and Break Things” của Facebook. Dường như Facebook (và dường như hầu hết các doanh nghiệp trong ngành công nghệ phần mềm hiện nay) đều tin (ở một mức độ nào đó) vào sự đánh đổi chất lượng cho tốc độ. Cho nên, mọi người sẵn sàng chọn tốc độ, và không mấy ai cảm thấy khó chịu về chuyện không viết code một cách đúng đắn – vì đó là sự đánh đổi dĩ nhiên.

câu chuyện lập trình-3
Mark Zuckerberg tại hội nghị F8 của Facebook

Tôi thì không nghĩ vậy. Khẩu hiệu đó, diễn giải trắng phớ ra, chẳng phải nghĩa là: “Nếu xây dựng một hệ thống thật tệ hại, chúng ta sẽ có thể triển khai nó thật nhanh. Còn nếu cố xây dựng một hệ thống đủ tốt, chúng ta sẽ không bao giờ có thể triển khai nó?”

Cá nhân tôi cho rằng:

  • Bạn phải hành động nhanh hơn để xây dựng phần mềm có chất lượng. Nếu không, bạn sẽ không thể phản ứng kịp khi mọi thứ, nhất là sự hiểu biết của bạn, thay đổi – và khi phần mềm của bạn không phải là giải pháp tốt cho vấn đề.

  • Nhưng, bạn cũng phải xây dựng phần mềm có chất lượng để hành động nhanh hơn. Nếu không, hạ tầng hệ thống của bạn sẽ luôn có vấn đề, và rốt cuộc, bạn sẽ tốn rất nhiều thời gian để xử lý. Mà, một khi hệ thống đổ vỡ, ý chí của bạn sẽ lung lay theo.

Lời khuyên của tôi dành cho các bạn trẻ muốn học lập trình.

Trước tiên, tôi muốn được chia sẻ một chút về việc nên chọn học ngôn ngữ lập trình nào. Thú thực, ngôn ngữ mạnh nhất của tôi là PHP – thứ ngôn ngữ bị đánh giá là xấu xí, và bị nhiều lập trình viên rẻ rúng. Song, cũng nhờ PHP mà tôi kiếm được việc làm ở Portland Webworks, và sau đó là ở Facebook.

Trong 4 năm làm việc cho Facebook, tôi hay tự miêu tả mình là “kĩ sư phần mềm ít ghét PHP nhất”, và cũng hay được mọi người gọi là “nhà bác học PHP ngu ngốc”. Dù không thực sự là fan của PHP, kiến thức của tôi về nó thực sự sâu sắc. Và nó cũng là động lực để tôi học những thứ khác.

Bởi vậy, tôi nghĩ sự lựa chọn ngôn ngữ không quá quan trọng như mọi người nghĩ. Mà chính ra, tôi thấy những ai hay chê bai PHP, hoặc khóc lóc rên rỉ suốt ngày về tầm quan trọng của việc lựa chọn ngôn ngữ – thì lại thường chả làm được gì ra hồn với chính thứ ngôn ngữ mà họ ca tụng.

Nguồn tin: sưu tầm

Ý kiến bạn đọc

Tham gia thảo luận

Mã an toàn Mã bảo mật   

Những tin mới hơn

Lập trình viên: Ngành luôn nằm trong Top đầu tại Mỹ
Lập trình viên khiếm thị người Việt vinh danh trên báo nước ngoài
6 lý do - 6 kinh nghiệm để bạn chọn ngôn ngữ lập trình PHP
10 lý do bạn nên lựa chọn ngôn ngữ lập trình Java "thần thánh"
Bộ trưởng Bộ Giáo dục:“70% cử nhân công nghệ thông tin phải đào tạo lại”

Những tin cũ hơn

Thừa Thiên Huế đẩy mạnh ứng dụng, phát triển công nghệ thông tin
Tăng cường hợp tác lĩnh vực CNTT Việt Nam – Hàn Quốc
Bài toán 1 triệu nhân sự CNTT: Cần hợp tác giữa DN và nhà trường
PTIT hỗ trợ phát triển nguồn nhân lực CNTT cho Việt Nam
VNPT dẫn đầu ngành CNTT trong thời đại công nghệ số tại Việt Nam
Ưu đãi nhập học Aptech Buôn Ma Thuột tháng 08