Coder bắt đầu thế nào

conganthanhphohanoi

Sinh lý yếu
Xin chào mọi người! Dạo gần đây trên xàm cũng nhiều bạn đăng đàn hỏi về việc chuyển qua ngành IT với những câu hỏi rất thân quen.
Ví dụ: - Có nên đi học đại học không? - Nên học ở đâu, trung tâm nào? - Lương có cao không? - Thuật toán/ cấu trúc dữ liệu có quan trọng không? - Làm ngành nào bây giờ? Vân vân và mây mây. Thế nên mình xin lập topic này để giải đáp một số thắc mắc thường gặp của mọi người. Mọi người có góp ý thì xin cứ thoải mái nhé. Nếu quote hay mình sẽ note lại ở #1. Vậy thread này sẽ bao gồm 3 phần chính.
Phần 1: Tổng quan về ngành CNTT ở VN, các lĩnh vực, lương lậu, bla bla..
Phần 2: Những bước bạn cần chuẩn bị. Có nên đi học đại học không, nên học cái gì cho người mới bắt đầu.
Phần 3: Đi làm, và một số kinh nghiệm cần thiết. Các kỹ năng phỏng vấn, cách chọn công ty, offer v.v... Rất mong mọi người bổ sung. Mình xin đi vào chi tiết. Phần 1. CNTT Ngành CNTT ở VN, nếu bạn nhìn lại tầm 10 năm trước, hay xa hơn là 20 năm trước, thì đa phần là các công ty out source. Trong mảng này thì có thể nói có rất nhiều cái tên quen thuộc, Fsoft, TMA, CMC, KMS, Bosch, Nash v.v...

Họ là những công ty lớn (về số lượng), làm những dự án lớn hàng triệu đô. Tầm những năm gần đây thì ở VN xuất hiện nhiều công ty làm product hơn. Một số công ty làm product, có làm về AI/Machine learning cũng có. Một số cái tên tiêu biểu như Misfit (Fossil đã mua và dàn research chuyển qua Axon), Arimo (mình chưa thấy sản phẩm nào nổi bật của anh này), Trusting social (mảng tài chính tín dụng rất mạnh). Một số cty product khác như Vin, GHN, Grab, Goviet, Be, Teko (sản phẩm Airpay), hay Garena (bây giờ là SEA). Các sản phẩm thương mại điện tử như Tiki, Lazada (dc mua lại bởi Alibaba), Sendo (của FPT), Shoppe(của SEA). Tất nhiên ko thể bỏ qua mảng game, mà tiêu biểu là VNG, và sản phẩm Zalo. Có thể nói thị trường IT ở VN đang rất sôi đông hơn bao giờ hết. Bất kể bạn làm web, backend, mobile, frontend, devops, hay bạn dùng ngôn ngữ gì đi chăng nữa, php, java, c++, python, go, đều có thể tìm được rất nhiều tin tuyển dụng. Làm outsource cũng dc, mà muốn làm product cũng dc.
Vậy, vì sao nhiều người lại muốn nhảy qua ngành IT như vậy, có lẽ là bởi vì những tin tuyển dụng với mức lương ngất ngưởng. Một vị trí 3 năm kinh nghiệm có thể đã đạt lương 2k$. Ai lâu năm hơn tí thì có thể 3-5k USD. Đi ra nước ngoài, như Sing, Nhật thì còn có mức lương cao hơn nữa.

Thật sự đó là mức lương khiến nhiều người ở ngoài ngành dễ bị chóng mặt và muốn nhảy qua ngành này. Tất nhiên việc này ko thiếu. Mình cũng chứng kiến không ít bạn nhảy qua ngành này. Tuy nhiên ngành IT có thật sự dễ như vậy, dễ học, dễ có lương ngàn đô?. Trong rất nhiều topic, mình thấy rất nhiều bạn nói rằng chả cần học đại học, cứ google search, copy code từ stackoverflow, bla bla. Từ những cuộc tranh cãi như thế khiến cho nhiều bạn dễ ngộ nhận rằng ngành IT rất dễ dàng. Trên thực tế, không đơn giản như vậy. Để đạt level senior, bạn cần tối thiểu 10000h, hay 10 năm. Mình biết rất nhiều bạn còn trẻ nhưng trình độ rất khá. Họ đã trải qua 4 năm cày cuốc ở bậc đại học, làm đồ án, gánh team, đi làm cày thêm 3-4 năm nữa thì lên dc vị trí senior. Một số bạn xuất chúng hơn chỉ cần 2-3 năm. Có thể nói đây là những bạn có background rất tốt, học lập trình từ cấp 3, thái độ cầu thị và quan trọng nhất là LÀM VIỆC CHĂM CHỈ. Ở VN, rất nhiều bạn đạt title senior nhưng trình độ chưa tới, chẳng qua là do làm lâu nên lên. Trong khi trình độ chỉ mới ở mid level, dưới senior và trên junior một tí. Nên mình hy vọng các bạn đang có suy nghĩ này bớt ngộ nhận 1 chút về khả năng cũng như trình độ của bản thân. Thôi dài dòng thế đủ rồi. Mình xin đi vào phần 2 và trả lời các câu hỏi thường gặp dành cho các bạn đang muốn chuyển ngành. Còn phần 1, mọi người muốn update gì thì cứ bổ sung nhé. Phần 2: 2.1. Tui muốn đổi ngành, nên bắt đầu từ đâu? Điều đầu tiên, mình nghĩ bạn cần phải xác định thật sự được lý do bạn muốn đổi ngành. Vì lương cao cũng dc. Vì bạn thích cũng được. Vì ngành này đang hot fashion cũng ok nốt.

Nhưng giả sử các bạn ở độ tuổi > 25. Việc các bạn đổi ngành khiến bạn cần tối thiểu 1-2 năm cho các kiến thức cơ bản và chọn lĩnh vực phù hợp (ngành IT rất rộng và nhiều lĩnh vực con). Và bắt đầu lại từ đầu ở một lĩnh vực mới nên sẽ rất khó khăn ở giai đoạn này. Với lại cũng sẽ rất dễ nản ban đầu. Cho nên hãy cân nhắc thật kỹ. Bạn có thể đi học thử ở các trung tâm đào tạo. Học một khoá căn bản lập trình chỉ tốn vài tháng + vài triệu. Quá rẻ đúng không nào. Có khi học xong bạn sẽ đổi ý cũng nên. 2.2. Có nên học đại học không? Mình nghĩ các bạn KHÔNG NÊN học đại học. Các bạn sẽ phải học rất nhiều môn học không cần thiết. Tốn kém về mặt thời gian, nhất là khi các bạn đã 2x-30 tuổi rồi. Việc tốn thêm 3-4 năm đi học đại học là ko cần thiết. À, bổ sung thêm tí, nhưng với các bạn trẻ thì mình vẫn khuyên nên đi học Đại Học nhé. Đó ko chỉ đơn thuần là nơi để học, mà còn là nơi cho các bạn giao lưu, mở rộng quan hệ, network, v.v... 2.3. Nên học gì đầu tiên? Kiến thức trong ngành máy tính rất rộng. Từ kiến thức chung về máy tính, hệ điều hành, kiến trúc máy tính, network. Tới kiến thức về lập trình, database, các công nghệ mới. Bạn cũng cần học thêm ít nhất 2-3 ngôn ngữ lập trình (ko cần thiết phải thông thạo hết). Rồi tuỳ theo bạn đi theo hướng nào mà xác định học sâu thêm. Ví dụ bạn muốn theo hướng data engineer thì cần học thêm về machine learning, các tool cần thiết như python, java, spark, hadoop, mysql v.v... Làm web frontend thì học css, html, javascript. Làm web backend thì học java, python, golang, nodejs, v.v... Làm game thì học cái khác nữa. Nhưng bắt đầu thì mình khuyên, dù các bạn theo hướng gì các bạn cần học tối thiểu: + Kiến thức cơ bản về network: TCP IP, OSI, HTTPS, SSL, v.v... + Kiến thức cơ bản về máy tính, hệ điều hành: Học cách sử dụng linux, cách các tài nguyên máy tính được sử dụng như thế nào, CPU, Ram, disk IO, v.v.. + Kiến thức cơ bản về lập trình: Có thể chọn C++/ Java đề bắt đầu. Nên tập code các bài tập lập trình, phỏng vấn trên leetcode. Học một số cấu trúc dữ liệu/ thuật toán cơ bản. + Phải làm được một website cơ bản: HTML/ CSS, JS, Database. Cái này là bắt buộc, để bạn hiểu một website nó vận hành thế nào. + Kiến thức cơ bản về database: Chọn một database để bắt đầu như MySQL, học các viết query. Học thêm về NOSQL. Đối với việc học DB, bạn có thể kết hợp với dự án website ở trên. Thiết kế các table, các mối quan hệ giữa các table với nhau. Ví dụ bạn thiết kế 1 website bán hàng. Sẽ cần các bảng về user, sản phẩm, đơn hàng, v.v... + Học các kiến thức liên quan tới lập trình hướng đối tượng (OOP), học các design pattern cơ bản (singleton, factory, proxy, observer...) Đủ nhiều chưa? Tầm này muốn tự học hay ra trung tâm, học sơ sơ cũng 7-8 tháng cho tới 1 năm đấy.


Tới đây mà bạn vẫn kiên trì tiếp tục thì xin chúc mừng, bạn có thể đi tiếp với ngành CNTT rồi đấy. 2.4. Cấu trúc dữ liệu, thuật toán có quan trọng không? Có. Nhưng bạn ko cần quá đi sâu. Bạn chỉ cần học cơ bản, các CTDL thường gặp (linklist, tree, hashmap, v.v...) các thuật toán sort/search thông thường. Biết cách vận dụng các cấu trúc dữ liệu/ thuật toán trong tình huống cần thiết là được. Để làm được điều này các bạn cần học, hiểu tính chất của các thuật toán và các CTDL. Việc học cái này không khó. Trên mạng rất nhiều tài liệu, sách vở cũng như các khoá học để bạn làm quen. 2.5. Học xong cơ bản rồi thì sao. 2.6. Tìm việc 2.7. Những khó khăn khi chuyển ngành - Bạn phải bắt đầu từ đầu, và mất tầm gần 1 năm để bổ sung những kiến thức hành trang cho bạn. (Lưu ý, đây chỉ là kiến thức nền tảng cơ bản) - Bạn phải cạnh tranh với nguồn nhân sự chính quy từ đại học. Rõ ràng các bạn xuất phát ở vị trí bất lợi hơn. - Bạn phải cập nhật kỹ thuật công nghệ mới liên tục. - Bạn sẽ gặp những đứa sếp/ leader trẻ tuổi hơn bạn. - Ngồi máy tính 10 tiếng/ ngày là điều quá đỗi bình thường. - Khởi điểm bạn sẽ không có được mức lương ngàn đô đâu, bạn sẽ mất nhiều năm để lên lương từ từ cũng như tích luỹ kinh nghiệm. Bạn có thể gặp rắc rối về tài chính nếu đã có vợ con hay đang nợ ngân hàng.
- Khi quá 30 tuổi, khả năng học hỏi + tiếp thu cái mới của bạn sẽ ảnh hưởng đôi chút. Bạn cũng có thể gặp khó khăn khi học cái mới. - Bắt buộc phải biết tiếng Anh để đọc tài liệu. - Có khả năng tìm kiếm tài liệu, tự học, tự trao dồi kiến thức.
 
Sửa lần cuối:
Ngành IT rộng mở cho mọi người bởi bản chất tự học là chính, ai cũng nhảy vô được. Nhưng trên đời đéo có cái gì dễ mà ngon ăn. Quan trọng vẫn là chịu khó cày bừa thôi.
 
Ae nào học bách khoa vào đóng góp cái giáo trình cụ thể cho các cháu còn biết mà học.
 
Một số ae bắt đầu học code chọn đại một ngôn ngữ rồi bỏ qua System, Network, OS. - SQL (SQL Server, PosgresSQL).... là rất thiếu sót
 
Tao đang đọc cái lol gì thế này. Tóm gọn lại xem nào :d code code code cái lol. Phải nói là: cần học lập trình ngôn ngữ nào. Code code code ccc
 
Tao đang đọc cái lol gì thế này. Tóm gọn lại xem nào :d code code code cái lol. Phải nói là: cần học lập trình ngôn ngữ nào. Code code code ccc
Mạng Máy tính, Hệ điều hành, Kiến trúc máy tính, Lý thuyết trình biên dịch :)) còn thiếu gì xin mời giáo sư thêm vào
 
Ko biết code. Học mỗi php mấy năm nay vẫn chưa làm được bài Hello World!
Nhưng mà chơi open source thì cũng kiếm được đôi tỷ khoảng 5 năm nay rồi :))
 
Mạng Máy tính, Hệ điều hành, Kiến trúc máy tính, Lý thuyết trình biên dịch :)) còn thiếu gì xin mời giáo sư thêm vào
Ngắn gọn dễ hiểu thế này. Muốn theo cntt phải học lập trình và lập trình. Muốn học lập trình thì có 2 thứ cần phải học: tiếng anh + toán. Thiếu 1 trong 2 thì dừng, ko có tố chất đâu.
 
Thì đấy. M lại cứ bảo ngôn ngữ gì. Học ngôn ngữ xong phải học cấu trúc, cách hệ thống vận hành nữa chứ.
 
Bác cho em hỏi mấy trang như fb, ins thì học ngôn ngữ gì và những cái kiến thức nền tảng đấy học trong bao lâu ( không cần giỏi đủ để làm được thôi).
 
câu nói KHÔNG NÊN học đại học của chủ tus chỉ đúng với mấy ông trên 25 thôi nhé!
Học đại học cho ta rất nhiều thứ: 1,kiến thức cơ bản với mấy môn nnhập môn như cơ sở dữ liệu và giải thuật, kiến trúc máy tính, ...
2, rèn luyện khả năng tư duy, giải thuật , rèn luyện khả năng học và tự học(rất quan trong với dân IT khi công nghẹ update liên tục)
3,rèn luyện lĩ năng nói, kĩ năng thuyết trình
4,Bằng không quan trọng nhưng có bằng con đường của bác sẽ dễ dàng hơn rất nhiều và cơ hội sau này của bác cũng nhiều hơn mấy ông không bằng nhé
 
học j lắm thế.
m nghĩ xem m có ý tưởng j, lên mạng tìm tài liệu, r làm, r lại bí, r lại đi tìm tài liệu -> n vòng -> ra project
-> viết cv (đã có nền là cái sản phẩm nền của m) -> vào cty -> cty đào tạo lại từ đầu
r cứ theo vòng lặp lại làm r lại bí r lại tìm tài liệu ....
kiểu hình xoáy trôn ốc ấy
Chứ học mà mấy cái tài liệu mà chả làm được ra cái j thì có khác j m học cấp 3 đâu :vozvn (15):
 
câu nói KHÔNG NÊN học đại học của chủ tus chỉ đúng với mấy ông trên 25 thôi nhé!
Học đại học cho ta rất nhiều thứ: 1,kiến thức cơ bản với mấy môn nnhập môn như cơ sở dữ liệu và giải thuật, kiến trúc máy tính, ...
2, rèn luyện khả năng tư duy, giải thuật , rèn luyện khả năng học và tự học(rất quan trong với dân IT khi công nghẹ update liên tục)
3,rèn luyện lĩ năng nói, kĩ năng thuyết trình
4,Bằng không quan trọng nhưng có bằng con đường của bác sẽ dễ dàng hơn rất nhiều và cơ hội sau này của bác cũng nhiều hơn mấy ông không bằng nhé
Cao đẳng liên thông lên viện đào tạo liên tục của bach khoa có ok không anh? E thấy bảo học full các tối trong tuần. Giờ học như văn bằng 2 nên các thầy cũng chán ko muốn dạy. Chương trình cũng bị rút gọn đi nhiều. E muốn đi học ở đó cho có nền tảng. Giờ nếu ko học ở đó chắc lại phải tự tìm tài liệu trên mạng. Loạn phết.
 
Top