Đọc bài phỏng vấn của blog Vinacode với anh Vũ Nhật Minh, là một developer hiện đang làm việc trong ngành IT Nhật Bản. Anh là tác giả của một sản phẩm Opensource 1000+ star trên Github, sản phẩm này từng xuất hiện trên trang chủ của Hacker News và trở thành trending trên Github, đồng thời anh cũng nằm trong nhóm biên tập của blog Kỹ thuật máy tính (http://ktmt.github.io/) và nhóm phát triển platform chia sẻ kiến thức kỹ thuật Kipalog (http://kipalog.com/); để nghe anh chia sẻ về:
- Cách thức xây dựng một sản phẩm mã nguồn mở và giới thiệu sản phẩm đó đến cộng đồng một cách hiệu quả.
- Những tiêu chí để trở thành một biên tập viên cho blog Kỹ thuật máy tính (http://ktmt.github.io/)
- So sánh về cách nghĩ và văn hóa làm việc giữa lập trình viên Việt Nam và đồng nghiệp Nhật Bản.
- Những cơ hội mà một lập trình viên thông thạo tiếng Nhật có thể có được.
- Lý do anh và các cộng sự xây dựng nên platform chia sẻ kiến thức kỹ thuật Kipalog (http://kipalog.com/)
Chào anh Nhật Minh, anh có thể giới thiệu với độc giả blog Vinacode đôi chút về background IT của mình?
Mình là một coder trong quá khứ và là một happy programmer, một engineer trong hiện tại. Về mặt ý nghĩa thì mình nghĩ coder khác biệt với programmer hay engineer khá nhiều. Để trở thành một engineer như hiện tại, mình đã trải qua khoảng 9 năm nghề, 4 năm mài đũng quần trong trường đại học Việt Nam rồi Nhật Bản, theo sau là 5 năm đi làm để thay đổi và hoàn thiện bản thân. Cái cuốn hút và đam mê của nghề lập trình đến khi lần đầu tiên đọc được mẩu chuyện về master foo, khi cảm thấy lập trình như là “đạo” và khao khát trở thành master trong cái “đạo” ấy. Thật may mắn là mình vẫn giữ được ngọn lửa đam mê ấy cho đến bây giờ.
Về cơ bản mình là một full-stack web developer. Trong công việc mình chuyên làm phát triển cơ sở dữ liệu (Oracle/MySQL) hay backend bằng PHP, tuy nhiên đam mê hoàn toàn nghiêng về Python / Flask / Ruby / Rails hay front-end stack như AngularJS, thậm chí là Less và Sass. Công nghệ web chưa bao giờ thay đổi nhanh chóng và mạnh mẽ như một đến hai năm gần đây, và mình cảm thấy nắm bắt được đã là một thử thách, áp dụng được lại là một thành công không nhỏ.
Được biết anh có viết ra một sản phẩm Opensource 1000+ star trên Github, sản phẩm này từng xuất hiện trên trang chủ của Hacker News và trở thành trending trên Github. Anh có thể chia sẻ một vài thông tin về dự án thú vị này? Và cách thức để có thể giới thiệu sản phẩm đến cộng đồng một cách hiệu quả?
Rainbow Stream là một sản phẩm mà bản thân mình cũng rất thích dùng. Quay về cách đây 1-2 năm, hồi ấy mình rất thích những công cụ hay chương trình xây dựng trực tiếp trên terminal (giao diện dòng lệnh của hệ điều hành Mac/Linux). Editor thì dùng vim, git thì dùng git command, IRC chat thì irssi. Khi ấy mọi thứ đều được cố gắng sử dụng trên terminal cho đến khi có thể bỏ hoàn toàn được giao diện đồ hoạ trong cuộc sống sử dụng máy tính. Khi động đến Twitter mình có thử một vài sản phẩm opensource (mã nguồn mở) có sẵn bằng ruby nhưng không cảm thấy thoả mãn, vì vậy đã quyết định tự xây dựng sản phẩm opensource riêng.
Rainbow Stream về cơ bản là một client của Twitter trên terminal, viết bằng Python và chạy được trên Mac/Linux. Tính năng hay nhất và được cộng đồng tán thưởng nhất có lẽ là khả năng hiển thị ảnh trực tiếp trên terminal. Mình opensource hoàn toàn sản phẩm và hiện tại trên Github có hơn 1000 star :).
Nói về Opensource một chút. Khi các bạn phát triển sản phẩm cho công ty hay đơn giản là làm side project cá nhân thôi thì chắc hẳn cũng đã dùng đến các thư viện opensource rất nhiều. Mặc dù opensource luôn là miễn phí, nhưng đã “nhận” từ cộng đồng thì việc có một suy nghĩ “cho” để đóng góp ngược trở lại là điều nên có, và hơn thế nữa, làm opensource sẽ khiến bạn học được rất nhiều từ ý kiến phản hồi của chính cộng đồng trong quá trình xây dựng, được nhiều người biết đến hơn một chút, và gặp được nhiều cơ hội mà trước nay ít nghĩ tới.
Nếu tò mò hơn về Rainbow Stream, các bạn có thể đọc thêm chi tiết ở bài viết Tôi đã Xây Dựng Một Phần Mềm Mã Nguồn Mở Như Thế Nào và Đem Sản Phẩm đến Với Thế Giới Hacker trên blog KTMT.
Theo ý kiến cá nhân mình thì phần nói về cách giới thiệu sản phẩm, làm thế nào để lên được Hacker News cũng khá thú vị.
Hiện tại anh là một thành viên trong nhóm biên tập của blog Kỹ thuật máy tính (KTMT) (http://ktmt.github.io/), và gần đây KTMT đã trở thành một blog nguồn mở. Vậy nếu một bạn trẻ muốn tham gia viết bài trên blog này thì nội dung bài viết cần phải đảm bảo những tiêu chí gì thưa anh? Và mục tiêu của blog kỹ thuật máy tính là gì?
Mình tiếp xúc với văn hoá Nhật cũng đã khá lâu, và thấy rằng có một đặc điểm rất thú vị của người Nhật là họ “rất thích viết”. Hầu hết các cuốn sách nổi tiếng của Oreilly đều được dịch sang tiếng Nhật, hay dịch vụ blog dành cho dân kỹ thuật là Hatena cũng cực kì phát triển. Blog KTMT ra đời cũng nhờ một phần ảnh hưởng của nền văn hoá này.
Được thành lập từ đầu năm 2013, blog kỹ thuật máy tính ban đầu ra đời chỉ đơn giản là chỗ để các thành viên chia sẻ cho những thành viên khác những điều mình học được. Tuy nhiên việc viết lại thành bài không chỉ là chia sẻ, mà còn giúp chính người viết nhìn nhận lại kiến thức của bản thân, bởi viết ra những điều mình tưởng là mình biết cũng giúp nhận ra có nhiều chỗ chưa thực sự biết như mình tưởng. Sau khi đưa bài lên blog, bọn mình dần nhận ra rằng không chỉ các thành viên mà rất nhiều các bạn đọc khác cũng đọc và góp ý. Kiến thức đóng góp được cho cộng đồng, và cộng đồng cũng cho lại kiến thức rất nhiều.
Về kỹ thuật thì blog KTMT chỉ đơn giản sử dụng phần mềm mã nguồn mở là octopress, giúp dịch từ các bài viết ngôn ngữ markdown sang HTML. Hiện tại đóng góp bài viết vào KTMT có 7 thành viên, trong đó có 4 thành viên thường xuyên, hàng tháng KTMT có trung bình 5000 đến 10000 lượt truy cập. Thành quả đầu tiên mà bọn mình đạt được chính là việc giúp các thành viên thân với nhau hơn 🙂 , và thành quả quan trọng nhất là đã giúp các bạn đọc thấy được sự thú vị của nghề lập trình, cũng như cập nhật được các kỹ thuật mới mà chưa nhiều người nghe đến.
Lý do bọn mình quyết định mở KTMT thì đầu tiên là nhận được đề nghị của một số bạn đọc về đóng góp bài viết, và một điểm nữa là bọn mình nhận ra rằng “viết” cũng là một nhu cầu. Để viết trên blog KTMT thì lúc đầu bọn mình đặt ra yêu cầu khá đơn giản mà cũng không hề dễ dàng là: chia sẻ những thứ mình học được hàng ngày, nhưng phải viết dựa trên trải nghiệm cá nhân. Nhóm thành viên có rất nhiều người làm ở những mảng khác nhau, người làm backend, người làm Ruby, Python, người làm iOS, người làm Infra, có cả những thành viên đang làm tiến sĩ ở Mỹ. Do đó mà mảng kiến thức viết được là rất rộng, khiến cho những thứ bọn mình có thể học lẫn nhau là rất nhiều.
Sau khi quyết định biến KTMT thành blog nguồn mở, thì bọn mình quyết định tiến một bước xa hơn, là xây dựng nền tảng Kipalog, mà mình sẽ giới thiệu kỹ hơn ở dưới.
Từng có cơ hội học tập và làm việc tại cả ở Việt Nam và Nhật Bản, vậy anh có thể so sánh một chút về cách nghĩ và văn hóa làm việc giữa lập trình viên Việt Nam và đồng nghiệp Nhật Bản?
Như mình đã nói ở trên, thì lập trình viên Nhật Bản họ rất thích “viết lách”, hay một cách rộng hơn là họ thích chia sẻ kiến thức của mình. Chính vì thế mà các cộng đồng kỹ thuật của Nhật cực kì phát triển.
Với mỗi ngôn ngữ hay mảng kiến thức, họ đều có các meetup (gặp gỡ hàng tuần hoặc hàng tháng), tổ chức các hội thảo lớn (Angular Japan, Pycon, Ruby conference, Scala matsuri…) một cách đều đặn. Cách nghĩ “thích chia sẻ” đó khiến cho kỹ thuật của họ đã tốt lại ngày càng tốt hơn, các công nghệ mới cũng được cập nhật một cách dễ dàng.
Lập trình viên Nhật cũng có những người thích làm kỹ thuật mãi và có những người không, nhưng tỉ lệ những người thích làm lập trình viên thay vì quản lý thì nhiều hơn hẳn Việt Nam, có lẽ một phần là do đãi ngộ của lập trình viên với quản lý ở Nhật không hề chênh lệch nhiều, ngược lại nhiều lập trình viên tốt còn có mức đãi ngộ cao hơn hẳn so với quản lý. Tuy nhiên lý do lớn nhất có lẽ là ở việc họ đam mê với cái họ làm, luôn muốn phát triển bản thân trong các cộng đồng về kỹ thuật, dẫn đến mặt bằng trình độ chung mình thấy khá cao. Lập trình viên ở Nhật thường được gọi là engineer hơn là programmer, theo ý nghĩa họ là những người tạo ra sản phẩm và được tôn trọng dựa trên giá trị và văn hoá của bản thân.
Hiện nay thì phong trào làm startup ở Nhật rất mạnh (thực tế thì cũng đã mạnh từ 4 đến 5 năm về trước, nên ở Nhật hiện nay đã xuất hiện rất nhiều ông lớn là các venture, tức là xuất thân từ startup đi lên). Vì thế làn sóng lập trình viên chuyển việc, nhảy từ startup này sang startup khác hay đi từ venture này sang venture khác là khá lớn. Tuy nhiên để được trọng dụng trong những môi trường đó, họ luôn nỗ lực không ngừng để nâng cao trình độ bản thân, và như đã nói ở trên, chia sẻ và học hỏi, tham gia vào các cộng đồng kỹ thuật.
Hiện nay các bạn trẻ đang băn khoăn chưa biết liệu theo học tiếng Nhật hay tiếng Anh thì sẽ thuận lợi hơn trong các cơ hội nghề nghiệp lập trình sau này. Với kinh nghiệm và góc nhìn của mình, anh hãy chia sẻ về những cơ hội mà một lập trình viên thông thạo tiếng Nhật có thể có được? Và một vài bí quyết để có thể học giỏi tiếng Nhật?
Hôm trước cũng có một người bạn hỏi mình một câu hỏi tương tự. Đứng ở góc độ cá nhân, thì mình nghĩ tiếng Anh là một thứ bắt buộc trong nghề lập trình hiện tại rồi, nên sẽ khó để so sánh tiếng Nhật hay tiếng Anh tốt hơn. Tuy nhiên các công ty Nhật đang vào Việt Nam rất nhiều, nên có tiếng Nhật sẽ cho bạn một chút “lợi thế” khi xin việc. Thế nhưng nếu được hỏi lời khuyên về nên học tiếng gì, thì mình sẽ khuyên nên học tốt tiếng Anh và chuyên sâu kỹ thuật. Lý do thì rất đơn giản, giỏi kỹ thuật bạn sẽ không thể chết đói, nếu chỉ giỏi tiếng Nhật thì khi bong bóng các công ty Nhật ồ ạt vào Việt Nam tan đi, bạn sẽ tự hỏi là lúc đó trong tay mình có cái gì.
Tuy vậy nói đi cũng phải nói lại, với lợi thế là biết tiếng Nhật thì mình có thể “truy cập” vào một lượng thông tin kỹ thuật bằng tiếng Nhật cực kì phong phú, mà trong đó có những kiến thức chỉ có người Nhật mới có thôi (ví dụ như các thông tin về Ruby là ngôn ngữ lập trình do người Nhật tạo ra).
Anh cũng là một thành viên trong nhóm phát triển platform chia sẻ kiến thức kỹ thuật Kipalog (http://kipalog.com/), tại sao các anh lại xây dựng Kipalog cho cộng đồng? Vậy Kipalog có điểm gì khác so với các nền tảng blog thông thường? Mục tiêu phát triển Kipalog trong tương lai là gì thưa anh?
Platform chia sẻ kiến thức kỹ thuật Kipalog
Lý do lớn nhất bọn mình tạo ra Kipalog
là vì nhận thấy nhu cầu chia sẻ kiến thức của các lập trình viên là rất
cao, và hiện tại chưa có một chỗ nào giúp cho việc chia sẻ đó một cách
dễ dàng. Bạn hãy hình dung xem nhé, hàng ngày các bạn làm việc, chắc chắn sẽ phải “google” để tìm lời giải không hề ít đúng không 🙂 (ví dụ đơn cử như cách thiết lập server apache, hay những đoạn code khó của java…). Vậy những lúc tìm được lời giải các bạn sẽ làm gì, note vào vở, ghi vào word, hay là cho vào evernote? Vậy những kiến thức đó nhỡ sai thì sao, mà nhỡ có cách làm tốt hơn thì sao?
Kipalog sinh ra chính là nhằm cho mục đích: “lưu giữ và chia sẻ các kiến thức cá nhân một cách dễ dàng nhất”. Lưu giữ là để cho mình, nhưng chia sẻ không chỉ là cho mình (giúp đính chính lại các kiến thức sai, chưa đủ), mà còn giúp cho người khác nữa. Các bạn hãy nhìn các lập trình viên nổi tiếng cả trong nước (thaidn ở Google, anh Trung trưởng nhóm RubyVN, bác Ngô Quang Hưng giáo sư ở Mỹ ), lẫn ở nước ngoài (Jeff Atwood…), ai trong số họ cũng đều có kỹ năng viết lách rất tốt. Chính vì thế có thể khẳng định được: “không viết được == không biết”. Các bạn hãy thử viết về một thứ gì đó mà các bạn tự tin là mình biết rõ một cách thật dễ hiểu xem, mình tin là không hề dễ :).
Mô hình Q&A giống như StackOverflow, hay mô hình forum thì đã có không ít (và hiện tại cũng chưa có một forum hay Q&A site nào khiến mình thấy thoả mãn), nhưng mô hình như Kipalog thì hoàn toàn chưa có. Bạn có thể hiểu Kipalog giống như một cái “kho” kiến thức vậy, bạn học được gì sẽ ghi hết vào đó, sau 1 năm bạn nhìn lại bạn sẽ thấy mình tiến bộ đến đâu, lúc cần “lục lại” kiến thức cũng sẽ dễ dàng hơn. Mục tiêu bọn mình là muốn tất cả các lập trình viên Việt Nam có một nơi chất lượng để chia sẻ kiến thức về kỹ thuật với nhau, và khuyến khích việc “viết ra”, là một kỹ năng đang thiếu đối với cộng đồng lập trình viên của chúng ta.
Một thời gian trước nhóm KTMT có làm một bản điều tra về thói quen hiện tại của các lập trình viên ở Việt Nam. Trong bản điều tra này có một số điểm thú vị là 61% bạn ngại viết blog bởi vì cảm thấy “năng lực chưa đủ”. Bởi thế nhóm mình có một lời khuyên cho những bạn cảm thấy “năng lực chưa đủ” rằng đó chỉ là một giới hạn do bản thân bạn tự đặt ra mà thôi. Cùng một người nếu viết ra những gì mình biết, nhận lại những feedback từ cộng đồng thì sẽ tiến bộ hơn rất nhiều so với người đó cứ “lo sợ” bị chê kém và không biết mình kém ở đâu. Chính vì vậy các bạn hãy tự tin mà ghi chép lại kiến thức vào Kipalog, nhóm mình tin là các bạn sẽ tiến bộ lên rất nhiều.
Nếu được đưa ra một lời khuyên cho các bạn trẻ đang theo đuổi ngành CNTT thì anh sẽ nói gì?
Mình khuyên các bạn trẻ đang theo đuổi CNTT là hãy thấy “hạnh phúc” vì mình đang là một lập trình viên, vì có khả năng cũng như điều kiện để tạo ra những sản phẩm thay đổi cuộc sống của con người.
Một lời khuyên nữa là hãy tích cực “output”. Output ở đây có nghĩa rất rộng: bạn có thể viết, có thể lập trình sản phẩm có thể phát biểu trước đám đông. Đừng dừng lại ở việc đọc hay học, hãy output ra những kiến thức hay sản phẩm có ích, bạn sẽ có thêm động lực để tiếp tục con đường nghề nghiệp và theo đuổi đam mê một cách lâu dài.
Cảm ơn anh đã tham gia phỏng vấn và cung cấp rất nhiều thông tin bổ ích cho độc giả của VinaCode. Chúc anh thành công với các kế hoạch sắp tới.
Cảm ơn VinaCode.
No comments:
Post a Comment