Tự chuyện của một lập trình viên mù

Dịch từ tài liệu “An Autobiography of a Blind Programmer“. Đây là tự chuyện của một lập trình người Iran tên là Parham Doustdar. Anh bị mù hoàn toàn nhưng đã vượt khó để học lập trình từ năm 14 tuổi.

Một câu hỏi tôi được hỏi rất nhiều là “làm thế nào để tôi lập trình trong hoàn cảnh bị mù hoàn toàn?” Tôi đã trả lời câu hỏi này ở một vài nơi. Ví dụ, tôi đã trả lời câu hỏi “lập trình viên khiếm thị lập trình như thế nào?” trên trang Quora. Tôi cũng đã nói chuyện về chủ để này trong phần 1phần 2 của cuộc phỏng vấn trên trang LiveCoding.tv. Tuy nhiên, bài viết này là một cái nhìn sâu hơn về cuộc đời của tôi, và là những sự kiện đã định hình nên sự nghiệp hiện tại và những lựa chọn của tôi. Đây là những phần bổ sung thêm của một tự chuyện. Vì thế, nếu bạn quan tâm, hãy để tôi nắm tay bạn, và cho phép người mù này hướng dẫn một người sáng mắt.

Câu chuyện đã bắt đầu như thế nào?

Tôi sinh vào ngày 7/2/1990. Tôi là con út trong số ba anh chị em, và tôi sống ở Tehran, Iran. Tôi bị mù hoàn toàn từ khi mới sinh ra, và chỉ có khả năng cảm nhận ánh sáng, và tất nhiên cả việc cảm nhận khi không có ánh sáng.

Con đường đến với thế giới lập trình của tôi bắt đầu khi tôi 14 tuổi.

Đã có những người cố gắng trong vòng 7 năm để thu âm những cuốn sách lập trình cho người mù. Vì làm ra những bản sao của cuốn sách bằng chữ nổi tốn nhiều tiền và thời gian hơn, thử nghiệm đó đã được thực hiện với giọng nói được thu âm chứ không phải chữ nổi.

Tôi không nhớ tác giả của cuốn sách là ai. Tuy nhiên, tôi nhớ tên cuốn sách là “Visual Basic 6.0”.

Một số bạn đọc có thể không biết. Thời đó, Visual Basic là một trong những ngôn ngữ đơn giản nhất để bắt đầu học lập trình, và một trong những điểm hấp dẫn chính của nó, bên cạnh việc nó là sản phẩm của Microsoft và bạn có thể viết các ứng dụng cho Windows với nó; và bạn có thể dễ dàng tạo ra các giao diện đồ hoạ người dùng (GUI). Vì thế, như các bạn có thể tưởng tượng, cuốn sách xoay quanh việc tạo ra một giao diện người dùng có thể tương tác với đầu vào của người dùng, ví dụ như một vài các ô nhập liệu (text boxes) và một dấu cộng ở giữa chúng. Khi bạn kích chuột vào nút “Add!”, nó sẽ hiển thị kết quả của phép cộng giữa hai số trong hai ô nhập liệu. Khá khéo léo, đúng không?

Ngoại trừ rằng, nó không thực sự đánh trúng sở thích của tôi.

Tôi muốn vài thứ hơn thế, và cuốn sách đã không thể đem lại cho tôi.

Tôi đã muốn tạo ra…một trò chơi điện tử. Một trò chơi mà những người mù có thể chơi. Một trò chơi đem lại cho họ trải nghiệm âm thanh ba chiều. Một thứ tuyệt diệu, giống như những trò chơi điện tử xuất sắc mà các anh em của tôi có thể chơi trên máy PlayStation.

Nó không phải là một ý tưởng mới mẻ gì cả. Thực tế, tôi đã có ý tưởng đó sau khi chơi một số game âm thanh (audio game) của Jim Kitchen. Trải nghiệm đó thực sự độc đáo. Đó là những thứ được xây dựng chuyên biệt dành cho người mù, cho tôi một trải nghiệm khác biệt. Tất nhiên, tôi luôn phản đối giải pháp làm các game đơn giản hơn dành riêng cho người khuyết tật thay vì làm các sản phẩm chính trên thị trường dễ chơi hơn. Tuy nhiên, vì hầu hết các games đều thừa hưởng đặc tính phụ thuộc vào thị lực của người chơi, tôi thấy mong đợi của mình có phần thái quá.

Tiếp đó, tôi đã tạo ra một game mà tôi gọi là “Swimming”. Cách của game rất đơn giản: bơi liên tục với tốc độ mà bạn có thể thao tác (với phím mũi tên đi lên), và rẽ trái hay rẽ phải (dùng các phím mũi tên trái/phải), tuỳ vào tai nào bạn nghe thấy tiếng kêu “beep”. Ví dụ, nếu bạn nghe thấy tiếng “beep” từ bên trái, bạn phải rẽ trái, và nếu bạn nghe thấy âm thanh từ bên phải, hãy rẽ phải. Nếu bạn không rẽ đúng, bạn sẽ đâm vào cạnh của bể bơi, và sẽ “bất tỉnh” trong vài giây.

Mặc dầu vậy, đó đã không phải là một câu chuyện thành công.

Một lý do là tôi đã không có tài sản gì đáng kể. Tôi lúc đó đang sống ở Iran, và tôi không có nguồn thu nhập, vì thế thậm chí nếu không có điều luật nào ngăn cản tôi mua cái gì đó, tôi cũng không thể nhờ bố mẹ tôi làm điều đó. Đó không phải là việc tôi muốn làm.

Sau đó, đã có một vấn đề trong trải nghiệm thực tế: việc đọc một cuốn sách dạy cách tạo GUI với một IDE cho phép bạn kéo thả các điều khiển và sinh ra mã chương trình cho bạn bên dưới không dạy cho bạn cách lập trình. Tôi nhớ là trò game “swimming” của tôi có 3 chức năng, và các chức năng đó đều do Visual Basic 6.0 IDE tạo ra cho tôi. Sau đó, khi tôi tham gia cùng với một vài người bạn để thành lập Lighttech Interactive, câu đầu tiên tôi nghe từ bạn tôi Robert Osztolykan là “này anh bạn, làm sao anh đọc được mã chương trình của anh viết?”.

Vì thế, cuối cùng dự án đó đã thất bại. Tuy nhiên, nó đã chỉ cho tôi thấy một điều rất, rất quan trọng: tôi yêu công việc lập trình. Nó giúp tôi cảm thấy vui vẻ khi có thể khiến máy tính làm những việc tôi mong muốn. Để giúp cho người khác.

Tôi đã học như thế nào?

Trải nghiệm trên là động lực để tôi chọn ngành phần mềm là ngành tôi muốn học ở trường đại học. Quyết định này ngay bản thân nó cũng có vấn đề: không có cuốn sách nào dành cho tôi ở trường trung học, và không có cuốn sách nào cho các khoá học tôi phải tham gia ở trường đại học. Tôi đã phải dựa vào kiến thức của bản thân mình hoặc tìm cách nhờ ai đó đọc các cuốn sách cho tôi. Tuy nhiên, vì tôi ghét học trong những tài liệu đã được xác định trước cho các kỳ thi, nên hầu hết tôi đã làm theo cách thứ nhất. Tôi dựa vào hiểu biết của bản thân trong việc “chắp vá” các kiến thức với các ngôn ngữ lập trình khác nhau. Tôi đạt điểm A+ trong tất cả các môn lập trình: cơ sở dữ liệu, và tất  cả các khoá học có yêu cầu lập trình thực tế.

Đối với các môn toán học và các môn lý thuyết như lưu trữ và truy xuất dữ liệu, hệ điều hành, thống kê, và các môn dựa trên việc trình bày…, tôi đã học không tốt lắm, tôi đã không có cách nào để học tốt các môn đó.

Cuối cùng, những trải nghiệm đó đã giúp tôi kiếm được bằng đại học loại A, và sự “căm ghét” đối với các phương pháp giảng dạy bắt đầu với lý thuyết hay các minh hoạ bằng hình ảnh.

Tôi đã chán ngán việc cố gắng để thích nghi với các hệ thống giáo dục. Tôi tiếp tục mày mò học thêm các công nghệ khác nhau. Trong khi học đại học, tôi nhận ra rằng PHP và Web là những công nghệ tôi muốn theo đuổi, và tôi đã thử làm việc với các framework khác nhau.

Tôi đã làm việc như thế nào?

Tôi đã gặp Howard Chang trong kênh #yii trên trang FreeNode. Tôi tình cờ đến đó khi anh ấy hỏi một vài câu hỏi và đã gây được ấn tượng tốt với anh ấy khi anh đọc các thông tin do tôi cung cấp.

Lần gặp gỡ đó đã giúp tôi có công việc đầu tiên liên quan đến PHP. Tất nhiên, đó là công việc đầu tiên của tôi, và mặc dù các kỹ năng về kỹ thuật của tôi ở mức ngang bằng với các thành viên còn lại trong đội, các kỹ năng mềm của tôi không tốt như thế. Điều đó cuối cùng đã khiến cho tôi ở về phía đối lập với người quản lý, và như hầu hết các bạn có thể đoán (và có thể bạn đang tức điên lên khi đọc những dòng này), và rất nhiều những sự việc quá đáng đã xảy ra. Tôi đã luôn tự hỏi mình, “Mày đã làm gì vậy nhỉ? Tại sao hắn lại hét vào mặt mày?” Vâng, gã đó vẫn còn ghét tính ương bướng của tôi. Đối với tôi, tôi luôn nhớ chỉ có một câu anh ta nói. Đó là một câu khiến cho những người khác cảm thấy sốc trong vài giây. Nó đại loại như là “Tao sẽ không để cho một kẻ mù phá hỏng công việc của tao! Mày hiểu chứ?”

Vì thế, tôi đã bỏ việc. Tôi đã chỉ gửi một lá thư vào một ngày và nói rằng tôi sẽ không đến văn phòng nữa. Kỹ năng mềm của tôi thật thảm hại.

Chỗ làm việc tiếp theo của tôi là một công ty start-up rất xuất sắc. Nhà sáng lập là một ăn nói rất lịch sự, một người mang hai dòng máu Canada và Iran. Anh ta có một ý tưởng xuất sắc: BusinessX.

Tôi được nhận vào làm và là một trong những nhân viên đầu tiên của công ty. Con đường phía trước đã rất sáng. Các nhân viên tràn đầy năng lượng. Sự nhiệt thành là điều có thể nhận thấy rõ ràng. Chúng tôi đã đang thay đổi cách các doanh nghiệp nhỏ tương tác và mô tả chính họ.

Ngoại trừ, điều đó đã không bao giờ xảy ra.

Chỉ có một số ít phẩm chất của bản thân mà tôi tự thấy ngưỡng mộ, và tôi chắc là các bạn cũng như vậy. Vì một vài lý do nào đó, chúng ta có xu hướng làm cho những thành quả của mình đạt được có vẻ nhỏ bé và ít ý nghĩa, và cho rằng tính cách, kỹ năng, phẩm chất của bản thân có đầy những sai lầm. Đồng thời, chúng ta cũng mong muốn những người khác ngưỡng mộ, nhìn nhận mình, xác minh lại việc chúng ta tuyệt vời như thế nào để cho chúng ta có thể bay bổng trong những ảo tưởng về sự hoàn hảo.

Tôi đang lạc đề.

Một trong những phẩm chất mà tôi ngưỡng mộ về bản thân là nhu cầu học tập. Tôi quan sát, xử lý, và học ở một tốc độ rất nhanh. Khi BusinessX đang trải qua vòng quay của doanh nghiệp nhỏ (thơ ấu, thanh niên, và quay lại thời thơ ấu), tôi đã quan sát và học hỏi. Các bài học tôi đã rút ra cùng với bài viết của James Altucher đăng trên trang LinkedIn có tên “10 lý do tại sao bạn phải bỏ việc trong năm nay” đã dẫn tới quyết định bỏ việc để tìm thêm các cơ hội thành công của mình.

Nhưng tôi đã không bắt đầu kinh doanh riêng, và lại gia nhập một doanh nghiệp khác.

Bởi lý do tôi bị mù hoàn toàn, tôi đã bị hấp dẫn ngày càng nhiều vào công việc phát triển Web ở mức back-end. Tôi chưa từng viết một dòng code nào về “view code” (!?), và đó là lý do tại sao chỗ làm việc mới của tôi (nơi tôi phụ trách các API back-end của hệ thống Asterisk system – một hệ thống cung cấp một vài dịch vụ cho khách hàng) thật đáng kinh ngạc. Bây giờ, tôi có thể thực hiện tất cả những công việc tôi muốn làm: test-driven development, ứng dụng thực tế của của design patterns, refactoring, etc. Và tôi đã làm được.

Tôi bắt đầu Blog này như thế nào?

Khi đang làm công việc hiện tại, tôi tìm được cuốn sách có tên Soft Skills. Thời gian đó, không có bản sách lậu nào của cuốn sách này (tôi xin lỗi, John Sonmez). Tuy nhiên, sau khi đọc hết cuốn sách The Clean Coder của Uncle Bob, tôi đã khá mừng vì đã đọc được một cuốn sách với chủ đề tương tự như cuốn Soft Skills. Theo thiển ý của tôi, các lập trình viên là một lý do quan trọng giải thích vì sao những nỗ lực phát triển trong giai đoạn đầu của BusinessX đã không thành công. Sự kiên nhẫn của tôi đã được đền đáp, và vào một ngày kia tôi đã kiếm được một bản copy của cuốn sách (Soft Skills) trôi nổi trên mạng, và đã đọc nó một cách ngấu nghiến. Từ cuốn sách đó, tôi đã nhận ra sức mạnh của việc chia sẻ bản thân qua việc viết blog.

Có một điều nữa. Từ khi tôi 13 tuổi, tôi đã đọc rất nhiều sách. Sở hữu một phần mềm đọc màn hình có thể đọc khoảng 520 từ mỗi phút là một diễm phúc khi bạn đang tích luỹ kiến thức. Sau đó, tôi đã quyết định sẽ chia sẻ những gì tôi học và những gì tôi đã học, vừa để thể hiện bản thân mình vừa để chia sẻ, thảo luận, nhận những góp ý, sửa chữa, và kiểm tra lại những gì mình học. Các ví dụ bao gồm các trang cá nhân của tôi trên SitePoint, Quora và tất nhiên là cả trang blog này.

Vì thế, bên cạnh những bài viết cũ, tôi đã nghĩ rằng một cách hoàn hảo để bắt đầu trang blog  là kể một chút về mình với các bạn (một cách chính thức). Tôi hy vọng các bạn thích câu chuyện này của tôi.

Các bạn nghĩ gì về tự chuyện này? Nó đã giải đáp các câu hỏi của bạn? Nó có gợi cho các bạn những câu hỏi mới không? Nếu bạn có bất kỳ câu hỏi nào hoặc bạn muốn để lại phản hồi về bài viết này, hãy để lại bình luận dưới đây và tôi rất vui lòng đọc các bình luận đó.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: