Để trở thành một lập trình viên giỏi thì mỗi người nên có các project cá nhân - Phỏng vấn bạn Ngô Anh Hoàng

  • 19/12/2015

Cùng đọc bài phỏng vấn của TechMaster với bạn Ngô Anh Hoàng, hiện đang là một lập trình viên iOS tại công ty RikkeiSoft nhưng đồng thời Hoàng cũng là tác giả của nhiều ứng dụng rất hữu ích như 6jars và WPReaders; để nghe Hoàng chia sẻ về:

  • Cơ duyên nào mà Hoàng lại gắn bó với công nghệ lập trình iOS
  • So sánh về mô hình đào tạo của 2 trung tâm Aptech và TechMaster
  • Những kinh nghiệm khi xây dựng các ứng dụng 6jars và WPReaders
  • Đôi nét về thị trường tuyển dụng cho công việc lập trình iOS nói riêng và mobile nói chung tại Việt Nam
  • Tầm quan trọng của project cá nhân trong việc phát triển nghề nghiệp

Chào Anh Hoàng, bạn có thể giới thiệu với độc giả đôi chút về bản thân?

Lập trình viên iOS Ngô Anh Hoàng
Ngô Anh Hoàng tác giả ứng dụng WPReaders

Chào các bạn độc giả TechMaster, mình là Ngô Anh Hoàng, hiện tại đang làm lập trình viên iOS ở công ty RikkeiSoft.

Mình chỉ là “tay ngang” khi đến với lập trình. Năm 2008, sau 1 năm học ĐH Hà Nội, cảm thấy không còn hứng thú, không thấy tương lai với ngành học ở đại học nữa, mình quyết định nghỉ học, chuyển sang học lập trình ở Hà Nội Aptech. Năm 2011 mình có tham gia một khóa học lập trình iOS tại TechMaster và theo đuổi công việc phát triển ứng dụng iOS đến bây giờ.

Công việc hiện nay của mình đa phần liên quan đến bảo trì các dự án của khách hàng Nhật Bản (công ty mình làm việc chủ yếu với thị trường Nhật Bản), ngoài thời gian làm việc trên công ty, mình thích viết những ứng dụng nhỏ phục vụ nhu cầu của cá nhân và bạn bè, một vài trong số đó cũng đã được mình đẩy lên App Store.

Hiện tại Hoàng đang là một lập trình viên iOS. Bạn có thể chia sẻ với độc giả cơ duyên nào bạn lại gắn bó với công nghệ này?

Năm 2011, công ty đầu tiên của mình giải thể, lúc này mình nhận ra xu thế lập trình ứng dụng đang có bước chuyển mạnh mẽ nên quyết định theo đuổi con đường lập trình mobile. Lúc đó mình rất phân vân giữa việc nên theo lập trình Windows Phone hay lập trình iOS, qua thông tin bạn bè giới thiệu nên mình tìm đến trung tâm TechMaster, và được các giảng viên ở đây tư vấn nên chọn lập trình iOS. 

Lúc chọn iOS làm hướng đi chính mình đã cân nhắc qua rất nhiều yếu tố như: tỉ lệ phân mảng hệ điều hành, kích thước màn hình, hệ sinh thái phát triển, khả năng kiếm tiền trên chợ ứng dụng, v.v… mình thấy iOS đang có lợi thế hơn so với Android và Windows Phone nên quyết định chọn iOS.

Mình tham gia học lập trình iOS khoá 12 tại TechMaster nhưng thật ra học đến buổi thứ 15 mình đã “bỏ học” để đi xin việc. Tuy mang tiếng là bỏ học giữa chừng nhưng nếu có vấn đề gì khó khăn cần liên lạc với các giảng viên cũ ở TechMaster thì mình đều được các anh hỗ trợ rất nhiệt tình. 

Được biết trước đây Hoàng có học lập trình ở trung tâm Aptech. Cách dạy và học tại Techmaster có gì khác biệt với ở Aptech?

Bản thân mình đã từng trải nghiệm cả 2 mô hình đào tạo Aptech và TechMaster nên cảm nhận rất rõ những lợi ích thiết thực mà mỗi mô hình mang lại. Điểm hay nhất là ở chỗ cả 2 trung tâm đều hướng đến mục tiêu đào tạo ra “thợ lành nghề” làm được việc luôn, đáp ứng được nhu cầu của thị trường chứ không nặng về lý thuyết như đào tạo đại học ở Việt Nam nên mình không thấy có sự khác nhau về mục tiêu đào tạo của 2 đơn vị. 

TechMaster chú trọng vào yêu cầu cụ thể của thị trường, các khoá học có thời gian ngắn, công nghệ cập nhật. Lợi thế của TechMaster là hệ thống đào tạo nhỏ nên có thể cập nhật, đổi mới giáo trình liên tục để đáp ứng nhu cầu thị trường, với một hệ thống lớn như Aptech thì điều này là không thể linh hoạt được như TechMaster.

Về sự nhiệt tình của giảng viên, mình đánh giá Aptech và TechMaster tương đương, lẽ đơn giản vì cả 2 trung tâm đều được học viên nuôi sống nên việc nhiệt tình hỗ trợ học viên là điều phải làm nếu muốn tiếp tục tồn tại và phát triển. 

Hoàng có thể chia sẻ về một vài dự án hoặc bài tập mà bạn cảm thấy tâm đắc nhất khi học lập trình iOS tại TechMaster?

Trong thời gian học ở TechMaster, điều mình thích nhất là luôn có những Code Camp ngắn để học viên vận dụng được những điều đã học để viết thành một sản phẩm hoàn chỉnh. Mình cũng tham gia được một code camp của TechMaster và may mắn có giải. (cười)

Được biết ngoài công việc ở công ty thì Hoàng còn làm một số project cá nhân là các ứng dụng 6jars và WPReaders. Bạn có thể giới thiệu với độc giả về những sản phẩm thú vị này?

Giao diện ứng dụng 6jars
Giao diện ứng dụng 6jars

Ứng dụng 6jars của mình lấy ý tưởng từ mô hình quản lý tiền tệ “sáu chiếc hũ” của T.Harv Eker. Khác với những app quản lý tiền tệ MoneyLover, Budget Expense, Expense Tracker… đơn thuần là chi tiêu rồi mới ghi lại, quản lý ở mức thụ động, app của mình chia tiền vào 6 hũ với mục đích cụ thể, mỗi khi bắt đầu tiêu một món tiền gì, bạn sẽ biết mình đang tiêu đúng mục đích hay không, từ đó rèn luyện thói quen tiêu tiền thông minh, tránh vung tay quá trán. 

Mục đích ứng dụng 6jars là tốt, nhưng thành quả lại không được như ý cho lắm, hay nói thẳng ra là thất bại với mình, nhưng qua đây mình cũng học được nhiều điều như: 

  • Đây là app đầu tiên mình tự làm từ A-Z, tìm kiếm ý tưởng, thiết kế, code, public lên store (lần đầu chưa quen, bị reject 2, 3 lần vì thiếu cái nọ cái kia)… nhờ app này mà mình biết được hết các khâu để đưa một app từ ý tưởng lên thành sản phẩm trên store. Nếu chỉ đi làm ở công ty, bạn hầu như sẽ chỉ làm một vài khâu và chỉ biết vài khâu đó, vậy nên mình khuyên các bạn nên thử sức tự làm một app rồi tự trải nghiệm cảm giác “chăm sóc” đứa con tinh thần của mình từng bước, rất thú vị đấy!
  • Khi nghiên cứu ý tưởng, mình chưa tính đến việc tìm kiếm thị trường dẫn đến khi app đưa lên ít có người sử dụng. Thêm vào đó app khá khó dùng, mình không lường trước được nên không tập trung educate người dùng để mở rộng thị trường. 
  • Khi app đưa lên được gần 1 năm thì mình gặp vấn đề về bản quyền: Do mình không xin phép tác giả mà đã sử dụng ý tưởng để phát triển app nên đã nhận khiếu nại bản quyền từ tác giả và buộc phải gỡ app xuống. Đây cũng là một bài học đáng nhớ cho mình khi làm việc với thị trường nước ngoài, cần rất thận trọng với vấn đề bản quyền.
  • Tuy nhiên khi phát triển app này mình cũng có được những động lực thú vị: lúc đầu app chỉ có tiếng Anh và tiếng Việt, sau đó mình nhận được lời đề nghị dịch sang tiếng Ý của một người dùng app. Điều này tuy nhỏ nhưng thật sự có ý nghĩa với mình, bởi mình biết app mình viết ra có ích cho ai đó ngoài kia. 

Thế còn ứng dụng WPReaders? Ý tưởng về app này xuất phát từ đâu, và bạn đã mất bao nhiêu thời gian để hoàn thành nó? Bạn có định xây dựng phiên bản trên nền tảng Android?

Giao diện ứng dụng WPReaders
Giao diện ứng dụng WPReaders

Ứng dụng WPReaders như cái tên của nó là dùng để đọc các trang web trên nền tảng WordPress. Mục đích chính của ứng dụng này chỉ là để thoả mãn nhu cầu cá nhân vì thấy app gốc quá khó dùng, và mình còn muốn mang đến cho người dùng một app dễ sử dụng nhất. Đây là tôn chỉ mình luôn tuân theo khi phát triển app, lấy trải nghiệm đọc của người dùng làm gốc. Mình chia bài post theo từng site riêng biệt để tiện cho người dùng theo dõi, tìm kiếm, cộng thêm chức năng đọc offline nữa. 

Mình xây dựng WPReaders trong khoảng 3-4 tháng từ thời điểm bắt đầu thiết kế đến khi ra được MVP lên store, trong khi chờ app được duyệt mình vẫn tiếp tục đẩy thêm chức năng vào app. Phần hiển thị data của app mình đang dùng thư viện DTCoreText (app Webtretho cũng dùng thư viện này), kế hoạch tương lai của mình là xây dựng 1 app framework đóng gói phần hiển thị data html từ thư viện này rồi chào bán tới các forum có nhu cầu phát triển app native trên iOS.

Khi bắt tay vào làm app, ngoài vấn đề khó khăn về kĩ thuật thì vấn đề marketing app luôn khiến mình đau đầu, thất bại thảm hại của app đầu tay khiến mình thực sự phải có cái nhìn khác về vấn đề marketing app. Mình cũng đang tính đến phiên bản cho Android nhưng hiện tại vẫn đang vướng ở bước tìm kiếm thư viện để hiển thị data HTML, nếu tìm được thư viện thích hợp chắc chắn mình sẽ làm phiên bản cho nền tảng này.

Bạn đánh giá thế nào về thị trường tuyển dụng cho công việc lập trình iOS nói riêng và Mobile nói chung tại Việt Nam? Trong lĩnh vực iOS thì học ngôn ngữ Objective-C hay Swift sẽ có nhiều cơ hội việc làm hơn?

Theo quan sát của mình thì thị trường việc làm cho mảng iOS nói riêng và mobile nói chung hiện nay đang rất “nóng”. Do yêu cầu ban đầu về chi phí học iOS nên lập trình viên iOS đa phần nhận được nhiều ưu đãi hơn so với lập trình viên Android và Windows Phone. Tuy nhiên để nâng giá bản thân thì mình nghĩ lập trình viên iOS nói riêng và LTV mobile nói chung cần học thêm kiến thức về nền tảng web: web service, cloud database, CMS… 

Qua kinh nghiệm đi làm hơn 2 năm, mình thấy hiện tại Objective-C vẫn được các công ty xác định là ngôn ngữ chính khi tuyển dụng lập trình viên iOS. Swift vẫn còn đang trong giai đoạn phát triển nên không nhiều công ty dám đặt tất cả trứng vào giỏ này. Thêm vào đó Objective-C là ngôn ngữ lâu đời hơn với lượng thư viện đồ sộ, lượng câu hỏi trên StackOverflow đủ để giải đáp hầu hết thắc mắc của các bạn về lập trình iOS. Khi đã vững Objective-C thì việc học thêm Swift không có gì phức tạp, tư tưởng giống nhau, chỉ khác nhau cách thể hiện bằng ngôn ngữ thôi mà. 

Lập trình viên iOS Ngô Anh Hoàng trong một chuyến dã ngoại cùng bạn bè
Ngô Anh Hoàng (bên phải) trong một chuyến dã ngoại cùng bạn bè.

Có ý kiến cho rằng để trở thành một lập trình viên giỏi thì mỗi người nên có các project cá nhân. Từ kinh nghiệm của chính mình thì bạn thấy ý kiến này có đúng không? Làm sao để tìm ra những ý tưởng về các project đó?

Mình đồng ý với quan điểm này, project cá nhân ngoài việc là nơi trui rèn một số kĩ năng bạn không được làm/ít làm ở công ty thì đây còn là nguồn “giữ lửa” lập trình cho bạn. Có thời gian nhìn lại mình tự nhiên thấy ghét công việc hiện tại: ngày ngày mài mông 8 tiếng ở công ty, phát triển những sản phẩm “thành công” cho khách hàng, nhưng chẳng đem lại chút hứng thú nào cho mình. Chính những project cá nhân đã giúp mình cân bằng lại, việc đứng ở vai trò phục vụ khách hàng sẽ cho bạn thái độ làm việc cẩn trọng và biết lắng nghe nhiều hơn chứ không giống như việc chăm chăm code cho xong chức năng như khi làm việc ở công ty. 

Thêm vào đó, việc phát triển sản phẩm mang lại nhiều niềm vui và động lực để học tập và phát triển cho bản thân mình. Việc phát triển một ý tưởng thành app không hề khó, việc bạn nên băn khoăn khi bắt tay vào viết một app là “app này có giải quyết được vấn đề khó khăn gì cho người dùng không?”, nếu câu trả lời là có thì bạn nên bắt tay vào làm. Cứ cố gắng trước, phần còn lại để sản phẩm của bạn lên tiếng.

Cảm ơn Hoàng đã tham gia phỏng vấn và cung cấp rất nhiều thông tin bổ ích cho độc giả của TechMaster. Chúc bạn nhiều sức khỏe và thành công trong cuộc sống.

Cảm ơn TechMaster.

Bạn là người đam mê lập trình nhưng hiện tại đang học, làm việc trái ngành yêu thích và muốn đổi nghề? Bạn đang tìm kiếm một trung tâm lập trình chất lượng mà có thể học từ xa qua mạng? Hay bạn đang băn khoăn không biết nên theo công nghệ nào để dễ xin được việc làm? Hãy chia sẻ quan điểm của mình trong phần bình luận phía dưới nhé!

Từ ông chủ shop bán giầy online trở thành lập trình viên iOS chuyên nghiệp - Phỏng vấn bạn Đức Quý Từ ông chủ shop bán giầy online trở thành lập... Phỏng vấn Đại học không phải là con đường duy nhất để lập nghiệp - Phỏng vấn bạn Phan Quân Đại học không phải là con đường duy nhất để lập...