Search…

Hành Trình vào Đại Học Cho Đến Khi Tốt Nghiệp Trở Thành iOS Developer

08/03/202113 min read
Sau gần 2 năm không viết bài hướng dẫn về lập trình, hôm nay hoài niệm về cuộc sống sinh viên, về đam mê viết blog chia sẻ kiến thức, tôi dành chút thời gian để viết bài, nó không phải là bài hướng dẫn lập trình như mọi khi mà về cuộc sống của tôi từ khi bắt đầu đại học cho đến khi tốt nghiệp, trở thành 1 Software Developer.

Vì sao tôi chọn ngành công nghệ thông tin?

Thực sự tôi tiếp xúc với máy tính rất muộn, phải đến năm lớp 7 tôi mới biết dùng máy tính ở quán net để nghe nhạc, xem phim, lướt web, Yahoo. Mãi đến năm lớp 12 tôi mới được sở hữu máy tính cá nhân để phục vụ ôn và giải đề đại học, từ lúc có laptop, tôi thành thạo việc sử dụng máy tính hơn, thậm chí việc cài win đối với tôi dễ như trở bàn tay.

Trong những năm cấp 3 tôi được tiếp xúc với những chiếc điện thoại Nokia N72, N73, N95, 5530, 5800, ... (là những chiếc điện thoại xịn chạy Symbian S60 hồi đó, và đó cũng là thời huy hoàng của Nokia). Tôi mày mò trên các diễn đàn như gocmobile, vnzoom để cài đặt các phần mềm, game, tool trên đó, thậm chí là mò mẫn chạy lại phần mềm trên các điện thoại đó. Hồi đó tôi cũng từng đọc qua Python nhưng chưa biết gì về lập trình nên cảm thấy mọi thứ như nước đổ lá khoai.

Trên tay Nokia N72 huyền thoại

Cuộc sống 4 năm Đại học như thế nào?

3 năm cấp 3 trôi qua 1 cách nhanh chóng với nhiều kỷ niệm thời học sinh, sống cùng gia đình, được lo lắng mọi thứ ngoại trừ việc học, thích ơi là thích. Nhưng tôi lại tốt nghiệp cấp 3 với xếp loại trung bình, thật đáng buồn.

Chợt nhớ ra thời gian ôn thi đại học, chúng tôi có 1 team học online trên hocmai.vn và moon.vn chứ tôi không đi học thêm. Tôi ôn toán, vật lý với thầy Đặng Việt Hùng và tiếng Anh với cô Vũ Mai Phương trên moon.vn, trước ngày thi 1 tháng tôi đã làm khoảng 10 đề toán và khoảng 10 đề vật lý. Kết quả, tôi thi tròn 21 điểm và đủ vào đại học Công Nghệ Thông Tin.

Vừa vào đại học, tôi cứ nghĩ sống xa nhà sẽ không chịu sự quản lý của gia đình nên rất thoải mái và tự do làm những gì mình thích, ai ngờ lại lạ lẫm với môi trường, con người, rồi có những ngày nhớ nhà kinh khủng. Nói chung là 1 cuộc sống mới hoàn toàn và đầy thử thách.

4 năm học đại học tôi đều ở ký túc xá Đại Học Quốc Gia. Trong 4 năm đó, tôi đã gặp rất nhiều anh chị, bạn bè, trong đó có những người đã làm tôi thay đổi cách suy nghĩ rất nhiều và tôi cảm thấy rất biết ơn. 4 năm thời sinh viên để lại rất nhiều dấu ấn và kỷ niệm đẹp đối với tôi.

Buổi chiều dưới sân KTX khu B (Hướng nhìn từ toàn nhà B1).
Buổi chiều dưới sân KTX khu B (hướng nhìn từ toà nhà B1)

Năm nhất vào đại học, tôi may mắn có 1 nhóm bạn học rất đoàn kết và giúp đỡ lẫn nhau từ ăn ngủ đến cùng nhau cày đồ án suốt 4 năm. Ngoài ra, ở ký túc xá tôi cũng quen khá nhiều bạn từ các trường khác và hầu như ngày nào cũng hẹn gặp nhau đi uống nước A12, ăn vặt chợ đêm, đá cầu, câu lông, guitar dưới sân A19, A20, ... Nói chung là vui chơi quên việc học, bỏ bê rất nhiều, 1 phần cũng chưa định hướng được sẽ làm gì và chuyện sau khi ra trường lại càng chưa nghĩ tới. Kết quả kỳ 1 năm nhất tôi và đám bạn đứa nào cũng rớt môn. Kỳ 1 tôi tổng kết 5.7/10 rồi kỳ 2 vẫn chẳng khá hơn chút nào 5.9/10 và tôi rớt 2 môn. Cảm giác rớt môn nó khó tả lắm, vừa sợ, có lỗi với ba mẹ, vừa thấy hài hước. Tôi đã kết thúc năm nhất với kết quả tệ hại như thế đó, nhưng thực ra tôi cảm thấy không có gì đáng buồn vì quen được nhiều bạn, quen với môi trường đại học và học được nhiều thứ hay ho. Xong năm nhất, vẫn biết đôi chút về lập trình căn bản như C/C++, thuật toán, cấu trúc dữ liệu này nọ, ...

Lên năm 2 tôi giảm bớt thời gian chơi mà quan tâm nhiều vào việc học, tham gia các hoạt động thiện nguyện, hoạt động của trường. Trước mắt kỳ 1 năm 2 tôi tập trung vào các môn cơ bản như hệ điều hành, mạch số, cơ sở dữ liệu, mạng máy tính và trả nợ 2 môn năm nhất, học được thêm nhiều kiến thức mới nhưng tôi vẫn rất mông lung không biết học để làm gì và dùng vào đâu. Đến kỳ 2 tôi vẫn tập trung nhiều vào việc học, kết quả là từ học kỳ đó đến khi ra trường, kỳ nào tôi cũng nhận được học bổng để đóng tiền học phí.

Cùng thời gian đó tôi gặp anh Trung (khóa trên lớp CNMP2012) đã giới thiệu tôi với 1 anh bên Gameloft dạy lập trình và chuyên dạy theo hướng low level. Sau vài buổi nói chuyện, tìm hiểu kỹ, tôi liên hệ anh ấy và bắt đầu vào khóa học trong vòng 1 năm. Có lẽ cuộc sống của tôi bắt đầu thay đổi từ đây.

Anh ấy tên là Vinh, cựu sinh viên trường đại học Khoa Học Tự Nhiên, người thành lập trang STDIO và có nhiều năm làm trainer ở Gameloft, người đã thay đổi suy nghĩ của tôi rất nhiều về cuộc sống, công việc và các mối quan hệ xã hội.

STDIO Training tôi tham gia 2 khóa học là C/C++ căn bản và lập trình game engine với SDL. Ở khóa học thứ nhất tôi hầu như được học mọi thứ cơ bản về C/C++ và đủ để tự tin phỏng vấn tại VNG vào cuối năm 3. Khóa thứ 2 tôi build lại 1 game engine bằng thư viện SDL từ việc xử lý input cho đến việc render, viết gameloop và xử lý game state, quản lý resource. Qua đó cũng hiểu rõ được những game engine lớn như Cocos2d-x hay Unity được xây dựng như thế nào? Ngoài 2 khóa học, tôi còn học thêm OpenGL (Open Graphics Library) và cũng hiểu được cơ chế mà OS render hình ảnh các đối tượng lên màn hình như nào. Rồi tôi còn học thêm về Web, viết được front-end và back-end (tôi dùng CodeIgniter là framework PHP, sau này có học thêm Laravel). Nói chung hồi đó tôi học rất nhiều thứ mà bây giờ nhìn lại không biết sao mình lại học trâu bò đến vậy.

Cũng thời gian đó, tôi tập viết blog chia sẻ các bài viết về lập trình. Để viết được 1 bài viết không phải dễ dàng: phải chi tiết từ câu chữ, chính tả, rồi nội dung truyền tải, rồi kiến thức phải nắm chắc. Tôi nhớ bài viết đầu tiên của tôi mất khoảng 1 tuần để các editor các chỉnh sửa giúp. Nhưng rồi tôi đã quen dần và có 33 bài viết ở STDIO. Các bạn có thể tìm thấy các bài viết tại đây.

Đến năm 3, tôi bắt đầu học những môn học chuyển ngành. Ngành Khoa học máy tính như tôi sẽ học về máy học (Machine Learning) và xử lý ngôn ngữ tự nhiên (Natural Language Processing). Tôi chọn theo máy học, sẽ học về các thuật toán phân lớp (Classification) và các thuật toán gom cụm (Cluster). Nhìn chung, các môn học hồi đó đều hay, nhưng tôi không hứng thú lắm với chúng vì không biết sẽ làm gì với những thứ đó. Cũng thời gian học ở STDIO, tôi thử làm game nhưng không thấy thích thú, làm web cũng vậy, nên thời gian này tôi tập trung vào học thử Android. Đến cuối năm 2015, VNG có chương trình học bổng cho các trường công nghệ thông tin trong thành phố, tôi quyết định thử. Sau 1 bài test và 2 bài phỏng vấn tôi đã lọt vào top 30/300 người nhận học bổng của VNG năm đó.

VNG Scholarship
VNG Scholarship

Đầu năm 2016 tôi apply vào Zalo Android Fresher, với kiến thức tôi tích lũy được và sau 2 lần phỏng vấn, tôi ứng tuyển thành công. Hầu hết các câu hỏi fresher đều tập trung vào cấu trúc dữ liệu và giải thuật  (đệ quy, thuật toán tìm đường, giải thuật tham lam, ...) với 1 ít kiến thức về platform. Vậy là tôi đi làm từ hồi năm 3, ở Zalo, tôi học được mọi thứ như quy trình làm việc, kiến thức về technical từ các anh mentor, team Server, follow design từ team Design và fix bug từ QC. Vậy là tôi đã là 1 Android Developer, haha.

Zalo Team
Zalo team

Thời gian đó tôi không còn viết blog ở STDIO nữa mà lập ra eitguide.net: mua domain, VPS, setup NGINX, MySql, FTP, ... mọi thứ tôi đều tự làm để xây dựng dựng nên EITGUIDE. Tôi chủ yếu viết về lập trình là chính, đó là blog cá nhân của tôi. Hiện tại đã có hơn 120 bài viết về lập trình Android, Flutter, OpenCV, ...

Kỳ 1 năm 4, tôi vẫn làm ở Zalo, vẫn công việc quen thuộc là 1 Android Fresher. Hằng ngày đều bắt 2 chuyến xe buýt để đến VNG, tính tổng thời gian đi và về mất khoảng 2 tiếng, đa phần thời gian ngồi trên xe buýt tôi nghe nhạc, nghe tiếng Anh rồi ngủ gật luôn. Về đến phòng là mệt rã rời nhưng luôn cảm thấy vui vẻ vì đã học được nhiều thứ. Đến kỳ 2 năm 4, kỳ cuối cùng của đại học, tôi vào MMLAB làm khóa luận nên phải chia tay team Zalo để dành trọn thời gian tại MMLAB.

Thời gian nghiên cứu khóa luận ở MMLAB
Thời gian nghiên cứu khóa luận ở MMLAB

Khóa luận của tôi hướng theo Computer Vision nên ở MMLAB tôi chủ yếu tìm hiểu Machine Learning như các thuật toán Linear Regression, SVM, CNN, RNN, Neural Network. Nói chung, các thuật toán này đòi hỏi toán rất nhiều như đạo hàm, tìm cực đại, cực tiểu (không phải là đạo hàm 1 hai biến đơn giản đâu, mà là cả ngàn biến, ...), rồi tích phân, nói chung là hại não lắm. Bên cạnh đó, tôi tìm hiểu về xử lý hình ảnh như thuật toán blur, medium, candy edge detection và các thuật toán rút trích đặc trưng hình ảnh (feature extractor) như HOG, SIFT, SUFT phục vụ cho khóa luận.

Hồi đó tôi có theo học khóa học CS231n: Convolutional Neural Networks for Visual Recognition. Mọi kiến thức về lĩnh vực này rất hay, tôi từng có ý nghĩ sẽ học lên thạc sĩ đi theo chuyên ngành này nhưng vì 1 số lý do nên tôi quyết định theo hướng Software Developer.

Cũng trong thời gian này, tôi làm freelancer Android cho 1 số cá nhân ở ngoài và support 1 team làm về MMO (Youtube, Ads). Tôi viết rất nhiều tool auto thực hiện nhiều tác vụ:

  • Auto tạo Gmail, Yahoo, Apple
  • Auto view, share, like Youtube
  • Auto BlueStack with ADB and Xposed
  • Auto iOS Device, tweek jailbreak

Thời gian làm về MMO tôi quen rất nhiều người, nhiều ngành nghề, nhiều lĩnh vực khác nhau, xây dựng nên các mối quan hệ và học hỏi, tích lũy nhiều kinh nghiệm từ họ. Làm MMO thất bại nhiều lắm nhưng vấp ngã nhiều rồi cũng đứng lên được thôi. Sau đó, tôi quyết định học thêm iOS và nhận 1 số dự án freelance ở ngoài để có tiền trang trải cuộc sống.

Hạnh phúc là sau 4 năm đại học, tôi ra trường đúng hạn. Nhìn lại 4 năm nhiều bạn bè, nhiều mối quan hệ, nhiều bài học, thất bại cũng như thành công. Nói chung đều là những ký ức, hoài niệm không thể nào quên.

Lễ tốt nghiệp
Lễ tốt nghiệp
Nhóm đại học của tôi
Nhóm đại học của tôi

Cuộc sống sau khi ra trường

Sau khi ra trường, công ty đầu tiên tôi phỏng vấn đó là Garena với vị trí là Android Software Engineer.

Chị nhân sự gọi tôi phỏng vấn, tôi cũng chẳng cần ôn gì và confirm luôn sẽ lên làm bài test ngày hôm sau. Kết quả các bạn cũng có thể đoán được tôi rớt ngay vòng 1. Nguyên nhân là không có sự chuẩn bị kỹ càng.

Lại 1 cú vấp ngã vì quá tự tin chăng? Qua đây cũng là 1 bài học cho tôi.

Rớt Garena tôi vào làm 1 công ty X (nghe có bí hiểm nhỉ?), tôi làm việc với vài trò là 1 iOS Software Engineer. Nhiệm vụ là viết ứng dụng VPN. Tôi quản lý server config VPN và viết phần client iOS luôn. Cũng hiểu được kha khá các giao thức như IPSEC, L2TP, ... Sau 2 tháng thử việc, tôi xin nghỉ vì không phát triển bản thân được và môi trường không phù hợp. Cái quý nhất là mọi người ở đây rất vui vẻ, thân thiện mà chưa có nơi làm việc nào tôi cảm nhận được như thế.

Sau công ty đó, tôi trở lại VNG lần nữa, tham gia vào team 360Live với vị trí iOS Software Engineer, làm ứng dụng live streaming. Để pass được, tôi cần phải trải qua 2 vòng:

  • Vòng 1:
    • Các kiến thức về cấu trúc dữ liệu như Array, LinkListed, HashMap, Tree, ...
    • Thuật toán Linear Search, Binary Search, Sort. Thường sẽ có 3 câu coding trên bảng trắng, trình bày với người phỏng vấn cách giải và các giải pháp tối ưu.
    • Các câu hỏi về platform (Application, View Lifecycle, Concurrent, ...).
  • Vòng 2:
    • Phỏng vấn technical với Department Head.
    • Benefit và salary.

Vậy là tôi pass 360Live và join từ tháng 11/2017 đến giờ.

Ở 360Live tôi handle tầng application của ứng dụng (Rest API, UI, Logic App), giải quyết nhiều vấn đề mà trước đây tôi chưa gặp phải, học hỏi các kiến thức mới. May mắn là team tôi có anh leader cực kỳ giỏi và chỉ dạy chúng tôi rất nhiều.

Công việc ở 360Live của tôi :)). Vui chứ nhỉ?
Công việc ở 360Live của tôi, vui chứ nhỉ? :))

Ngoài ra tôi còn tham gia training fresher về iOS và RxSwift, đôi khi đi phỏng vấn ứng viên, những câu hỏi tôi dành cho ứng viên cũng không quá khó, đại khái như:

  • So sánh ArrayLinkListed, ưu nhược điểm và trường hợp ứng dụng?
  • Lifecycle của ViewController, Application như thế nào?
  • 1 số câu hỏi cơ bản về UICollectionView, UITableView ví dụ như cơ chế reuse cell như thế nào? Datasource với delegate của hai component đó là gì?
  • Cách mà iOS quản lý bộ nhớ ra sao?
  • Bạn hiểu gì về Concurrent trong iOS.

Nói chung ở 360Live tôi có nhiều trải nghiệm hứng thú và mới mẻ, có thể nói là lên 1 tầm cao mới sau khi ra trường, nhưng cảm thấy bản thân còn phải học hỏi nhiều thêm điển hình như cải thiện tiếng Anh, Mobile Architecture, Design System, ...

Bạn có thể đọc bài gốc tại EITGUIDE: Nghĩa từ khi vào đại học cho đến khi ra trường trở thành iOS Developer.

Và đấy là câu chuyện 6 năm từ khi vào đại học và ra làm việc của tôi, còn câu chuyện của bạn là gì?

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024