Nhan Nguyen

Tôi đã tự học lập trình và tìm được việc làm như thế nào

Jun 14, 2020 programming self-learning
image

Khi đang là sinh viên năm 3, mình đã có một quyết định làm thay đổi cuộc đời của mình hoàn toàn, đó là nghỉ học để theo đuổi đam mê lập trình. Sau gần một năm tự học, mình đã gặt hái được những thành quả đầu tiên. Đến hiện tại thì mình đã là Software engineer tại một trong những kỳ lân công nghệ hàng đầu của Việt Nam.


Lý do chọn lập trình

Hồi cấp ba mình có xin ba mẹ mua cho một dàn máy tính với lý do là "học Tiếng Anh", nhưng thật ra là mua về để chơi game =))). Chơi game hoài cũng chán, mình lại quay sang tò mò vọc thử, cài phần mềm này nọ các kiểu. Lâu ngày đâm ra cũng thích mấy cái về máy tính nên thế là quyết định thi Công nghệ thông tin thôi.

Nhưng mà sao nhiều lần cúp học chơi game, bị phụ huynh “gank” đến tận tiệm game thì điều gì đến cũng đến, năm đó mình trượt đại học, thiếu có gần chục điểm =))).

Mình đành phải nộp nguyện vọng hai một ngành khác lấy điểm thấp hơn mặc dù trong lòng rất thích Công nghệ thông tin. Ba năm đầu mình học rất chán, chủ yếu ở nhà tự mày mò học lập trình, lên lớp thì toàn ngủ gật. Đến năm ba, mình quyết định nộp đơn xin bảo lưu, nhưng mình biết chắc là mình sẽ không bao giờ đi học lại nữa. Từ đó mình ở nhà, quyết tâm dồn hết sức để tự học lập trình.

Mình tự học như thế nào?

Lúc đầu mình mình khá bối rối không biết nên bắt đầu từ đâu, và hơi … lo lắng khi lần đầu làm chuyện ấy (bỏ đại học và tự học lập trình). Nhưng dần dần bình tĩnh lại, mình lên internet, tìm hiểu và quyết định chọn học lập trình Web vì lúc đó có rất nhiều người học PHP để làm Web. Mình cũng học PHP rồi từ từ học thêm MySQL, HTML, CSS, Bootstrap, Javascript, jQuery,...

Thật ra những ngày đầu học rất khó vì tài liệu tiếng Việt rất ít và thường không chuyên nghiệp lắm nên mình phải tìm các tài liệu, sách hay khóa học tiếng Anh. Có một sự thật là ngày xưa mình rất kém môn ngoại ngữ nên khi đọc tài liệu Tiếng Anh giống như cực hình vậy. Giai đoạn này cũng tạo cho mình động lực để cố gắng học Tiếng Anh sau này. Lúc đầu mình đọc sách vì chưa nghe được video. Dịch sách kiểu dịch từng chữ, giống như bỏ vô Google dịch vậy, giờ đọc lại vừa thấy ngây ngô vừa buồn cười. Sau đó Tiếng Anh khá hơn thì coi mấy video có phụ đề, rồi dần dần coi không cần phụ đề luôn.

Trong quá trình học mình có làm một số project nhỏ như blog cá nhân, code framework MVC đơn giản, và làm CV bằng HTML đăng lên Github page. Đa số là các dự án nhỏ, đơn giản, áp dụng các kiến thức mình học được, và các giải pháp đều do mình tự nghĩ ra, nghĩ sau code vậy chứ không hẳn là tối ưu nhất vì lúc đó mình tự học thì làm gì có kinh nghiệm.

Sau khi làm xong CV là mình bắt đầu đi rải đơn xin việc ^^

Nộp CV và phỏng vấn

Mình chủ yếu lên Vietnamworks với ITViec để tìm công ty nào tuyển fresher PHP thì nộp CV vào. Nộp chắc cũng vài chục công ty thì có khoảng chục nơi gọi đi phỏng vấn. Lần đầu mình nhận offer của công ty làm về Magento có tầm một trăm nhân sự. Có thể một số bạn đã làm rồi thì biết Magento khá là khó xơi, nhất là với fresher, mình lại là dân tự học nữa. Thử việc được gần tháng mình xin nghỉ vì không chịu nổi “nhiệt”.

Ở nhà một thời gian sắp hết tiền thì mình lại vác CV đi xin việc tiếp. Lần này thì mình từ chối một số công ty thực tập không lương (vì lúc đó đói lắm các bạn ạ T_T) và nhận offer làm cho bộ phận IT của một công ty giải trí. Chưa vui được bao lâu thì nỗi buồn ập tới. Vào công ty mới biết làm về Wordpress, công việc của mình là viết một plugin cho website của công ty, mình thì chỉ biết PHP thuần, chưa từng làm qua CMS, framework nào. Cộng với môi trường tại công ty giải trí không phù hợp với mình, sau khi đi làm một tuần thì mình quyết định nghỉ việc.

Vừa may lúc đó, có một công ty mình từng phỏng vấn gửi offer yêu cầu mình về làm việc, mình liền say yes ngay và luôn. Sau kinh nghiệm chóng vánh ở hai công ty cũ, mình quyết tâm cố gắng với cơ hội mới này. Kết quả là mình đã vượt qua vòng thử việc, và làm ở đây khá lâu trước khi chuyển sang nơi khác.

Phỏng vấn fresher thì các công ty chủ yếu hỏi về kiến thức cơ bản, cách tư duy, định hướng nghề nghiệp, thái độ với công việc, kiểu “mục tiêu năm năm tới của em là gì?”, “em có mong muốn học công nghệ mới không”, hay “tại sao em chọn ngành công nghệ thông tin” blah blah chứ ít hỏi sâu về chuyên môn.

Lúc chuẩn bị, mình có lên mạng tìm đọc các bài viết, sách hướng dẫn trả lời các câu hỏi phỏng vấn. Đọc một hồi mình thấy đau đầu quá, mỗi nơi chỉ một kiểu và có quá nhiều thứ cần nhớ. Nên mình nghĩ thôi không đọc nữa. Phương châm của mình là có sao nói vậy, biết thì trả lời, không biết thì nói không biết bảo sẽ về tìm hiểu sau, thái độ nên thành thật, khiêm tốn và cầu thị. Trước khi đi phỏng vấn công ty nào thì mình lên Google tìm hiểu một chút về công ty, thấy thắc mắc gì thì ghi chú lại để lúc gặp thì hỏi.

Quá trình thử việc

Khi mình vào công ty thứ ba thì mình có 2 tháng thử việc. Sếp có giao cho một anh trong team hướng dẫn mình. Mấy tuần đầu mình tìm hiểu về framework mới, có gì không hiểu thì mình hỏi mentor. Sau đó mình tham gia vào project và làm các công việc đơn giản. Nếu gặp bug hay có gì không hiểu thì lên đọc documents, google, nếu vẫn không hiểu thì hỏi mentor. Thời gian rảnh mình tìm hiểu thêm về các kiến thức nâng cao của framework. Kết thúc 2 tháng mình được ký hợp đồng tiếp tục làm ở công ty. Cuối cùng cũng vượt qua vòng thử việc.

Khi các bạn fresher mới vào công ty thì sẽ có khoảng 2 tháng thử việc. Trong 2 tháng này đầu tiên các bạn sẽ được đào tạo về công nghệ, quy trình mà công ty đang áp dụng. Thời gian đào tạo thì tùy công ty. Các bạn sẽ có một hoặc nhiều mentor, là những người hướng dẫn các bạn về các chi tiết của công nghệ, quy trình mà bạn sắp học, nếu có gì thắc mắc thì bạn có thể hỏi mentor của mình. Cũng tùy công ty mà bạn sẽ có mentor toàn thời gian, tức là chỉ làm nhiệm vụ hướng dẫn người mới như bạn thôi, hay mentor bán thời gian là những người vẫn làm những việc khác trong công ty nhưng dành ra một khoảng thời gian trong ngày để hướng dẫn người mới. Đây cũng là lý do mà phỏng vấn fresher người ta thường ít hỏi chuyên sâu về công nghệ, bởi các bạn sẽ được đào tạo lại cho phù hợp với công ty. Trong quá trình thử việc các bạn có thể sẽ được tiếp cận các dự án đơn giản để làm quen. Sau ba tháng thì người mentor hay cấp trên của bạn sẽ đánh giá về năng lực, thái độ của bạn và quyết định có ký hợp đồng lâu dài với bạn hay không.

Phần tiếp theo mình sẽ phân tích về ưu và nhược điểm của việc tự học lập trình.

Ưu điểm của tự học lập trình

1. Linh hoạt thời gian, địa điểm

Bạn có thể học ở bất cứ đâu, bất cứ khi nào, miễn là các bạn có máy tính, phù hợp với những bạn ở xa hay không có điều kiện theo học đại học.

2. Tiết kiệm tiền bạc

Bạn sẽ tiết kiệm được tiền bạc vì trên internet hiện nay có rất nhiều khóa học, tài liêu miễn phí về lập trình (cả tiếng Anh và tiếng Việt). Các bạn có thể vào các trang dạy học online, các kênh youtube hay tải ebook về học cũng được.

Hiện nay có nhiều khóa học, tài liệu dù miễn phí như được thiết kế khá bài bản, chất lượng nên các bạn cứ yên tâm.

3. Tiết kiệm thời gian

Bạn sẽ không cần phải tốn thời gian để học các môn phụ như thể dục, triết học, vật lý, … Do đó có thể dành thời gian để tập trung học những gì liên quan đến lập trình thôi. Không phải mình xem nhẹ các môn phụ, nhưng trong nhiều tình huống các bạn không có nhiều thời gian, cần phải học nhanh để đi làm nhanh nhất có thể nên phải tận dụng thời gian sao cho thật hiệu quả.

4. Rèn luyện kỹ năng tự học

Ngành lập trình là một ngành có tốc độ đào thải rất nhanh. Những gì bạn biết hôm nay rất có thể sẽ lỗi thời sau vài tháng, vài năm tới. Vì vậy các bạn phải liên tục học hỏi cập nhật kiến thức của mình và vì vậy, tự học là một kỹ năng không thể thiếu đối với một lập trình viên.

Nhược điểm của tự học lập trình

1. Dễ bị mất phương hướng

Việc có nhiều khóa học dễ dẫn đến việc mất phương hướng, không biết nên học những gì, học khóa học nào, xem tài liệu nào đúng. Kết quả là người học thường mất nhiều thời gian học những thứ không liên quan, dễ sinh ra chán nản, bỏ cuộc.

2. Không có người hướng dẫn

Bạn sẽ không có cơ hội để hỏi giảng viên khi có vấn đề khó hiểu mà phải tự tìm tòi nghiên cứu. Có nhiều vấn đề chỉ cần hỏi là ra, nhưng nhiều khi tự tìm hiểu lại tốn nhiều thời gian.

3. Thiếu hụt các kiến thức nền tảng

Thường các bạn tự học sẽ tập trung vào công nghệ, ngôn ngữ và bỏ qua các kiến thức nền tảng như cấu trúc dữ liệu và giải thuật, cơ sở dữ liệu, mạng máy tính,... Đối với một fresher thì các kiến thức này ít được sử dụng, nhưng đây là nền tảng để các bạn tiến xa hơn trong nghề. Các bạn tự học có thể không cần học các kiến thức này ngay từ đầu để tiết kiệm thời gian, nhưng cần bổ sung các kiến thức nền tảng sớm nhất có thể.

4. Không có bằng cấp chứng nhận

Việc không có bằng cấp đôi khi cũng làm các bạn tự ti so với các bạn khác từ trường đại học ra, nhiều công ty vẫn yêu cầu bằng cấp, nhất là các công ty nhà nước. Ngoài ra, nếu bạn muốn đi làm ở các nước tiên tiến như Singapore, Nhật, Mỹ, Châu Âu thì thường phải cần có bằng đại học.

Đối với ngành công nghệ thông tin ở Việt Nam hiện tại thì cũng có nhiều công ty không quan trọng bằng cấp, chủ yếu là các bạn có làm được việc, có ý chí cầu tiến và có thể đào tạo được hay không. Mình cũng quen nhiều đồng nghiệp, khi hỏi ra mới biết họ cũng xuất thân từ ngành khác chứ không phải dân chuyên ngành IT.

Trên đây là những chia sẻ, kinh nghiệm của mình về việc tự học lập trình, hi vọng bạn sẽ tìm được một số thông tin hữu ích.