Chặng đường IT sắp tới, em nên đi thế nào?

Em chào mọi người.

Em sinh năm 2005, hiện tại đang học năm thứ 3 nhưng em đã hoàn thành gần như toàn bộ chương trình học trên trường, hiện chỉ còn thực tập và làm đồ án. Em đã liên hệ với nhà trường và được chấp thuận cho đi thực tập cùng khóa anh chị 2004, đồng thời có khả năng được xét ra trường cùng khóa.

Hiện tại em đang học ngành IT, chuyên ngành chính là Phát triển phần mềm.

Tuy nhiên, trong suốt thời gian học, em dần bị mất phương hướng nên việc học trở nên khá lan man và mơ hồ. Lúc đó em chỉ nghĩ đơn giản là cố gắng học xong càng sớm càng tốt để có thể đi làm và tích lũy kinh nghiệm trước các bạn cùng tuổi.

Trong thời gian học, em đi chạy Grab, làm lao động phổ thông, chạy bàn,… chứ thực sự không tập trung nhiều vào việc học kiến thức chuyên ngành.

Sau đó, cuộc đời em có thể nói là bước sang một trang khác khi em may mắn gặp được một người đã định hướng và chỉ cho em con đường học tập cũng như làm việc.

Em từ bỏ dần những công việc phổ thông và bắt đầu đi xin làm thêm, học việc tại các cơ sở và công ty để có cơ hội tiếp xúc với công việc thực tế.

Trong quá trình đó, em cũng thử qua một số công việc liên quan đến ngành IT. Em từng làm DEV, Data Analyst và sau đó chuyển sang IT Support, IT Helpdesk.

Qua những trải nghiệm thực tế này, em nhận ra bản thân không thực sự phù hợp với công việc lập trình thuần túy, cũng như chưa tìm thấy sự phù hợp lâu dài ở mảng Data. Ngược lại, em lại cảm thấy khá hợp và có hứng thú với Network và Systems .

Hiện tại em đang muốn chuyển hướng dần sang System/Infrastructure , với mục tiêu xa hơn là DevOps/System Engineer .

Về nền tảng hiện tại, em có kiến thức về C#, ASP.NET Core, SQL Server, MySQL, Git, REST API, MVC, Entity Framework Core,… Bên cạnh đó em đang học và củng cố kiến thức về mạng, Linux/Windows và CCNA.

Em cũng đã có một chút kinh nghiệm thực tế về hỗ trợ máy tính, cài đặt phần mềm, xử lý sự cố thiết bị và hệ thống ở mức cơ bản.

Tuy nhiên, em tự nhận thấy phần nền tảng về System/Infrastructure của mình hiện tại vẫn còn thiếu khá nhiều.

Tiếng Anh của em khá kém, khả năng tự học cũng chưa tốt. Trước đây em rất dễ bị game và những thứ giải trí khác cuốn đi nên có thời gian học hành khá thiếu kỷ luật. Bây giờ em đã nhận ra vấn đề đó và đang cố gắng xây dựng lại thói quen học tập một cách nghiêm túc hơn.

Một vấn đề khác là em đang bị lan man trong việc học .

Em biết muốn đi DevOps thì không thể chỉ học Docker, Kubernetes hay Jenkins rồi tự nhận mình là DevOps. Nhưng khi tìm hiểu sâu hơn thì lại thấy có quá nhiều thứ cần học:

Linux, Networking, System Administration, Git, Bash/Python, Virtualization, Docker, CI/CD, Cloud, Monitoring, Logging, Security, Kubernetes,…

Em không biết nên sắp xếp chúng theo thứ tự nào để xây dựng nền tảng cho đúng, cũng không biết với xuất phát điểm hiện tại thì mình nên đi làm vị trí nào trước.

Hiện tại em đang nghĩ đến một lộ trình kiểu:

IT Support → System/Linux → Cloud/Automation → DevOps

Tức là em muốn đi từ nền tảng hệ thống lên dần thay vì cố nhảy thẳng vào DevOps.

Nhưng đây mới chỉ là định hướng em tự suy nghĩ, nên em rất muốn xin lời khuyên của những anh/chị đã có kinh nghiệm thực tế.

Em muốn xin lời khuyên của mọi người:

1. Với background hiện tại của em, mọi người nghĩ em nên đi theo hướng nào là hợp lý nhất: System Engineer, Linux Admin, Network, Cloud hay DevOps ?

2. Nếu mục tiêu cuối cùng là DevOps/System Engineer thì trong 1–2 năm đầu em nên tập trung xây những kiến thức nào trước? Có thể cho em một roadmap thực tế theo thứ tự được không?

3. Em có nên đi làm IT Support/System Admin/Linux Admin một thời gian để xây nền tảng rồi mới chuyển sang DevOps không, hay có hướng nào tốt hơn?

4. Với một người tiếng Anh còn yếu, khả năng tự học chưa tốt và nền tảng System/Infrastructure còn thiếu , mọi người nghĩ em nên ưu tiên cải thiện điều gì trước?

5. Về chứng chỉ, ngoài CCNA thì trong trường hợp của em có những chứng chỉ nào thực sự đáng để học, và đâu là những thứ không nên quá chạy theo?

6. Cuối cùng, nếu mọi người có thể quay lại thời điểm mới bắt đầu bước vào ngành System/DevOps, mọi người sẽ học và làm những gì khác đi?

Em biết xuất phát điểm của mình khá vòng vèo và hiện tại còn nhiều thiếu sót. Nhưng lần này em muốn đi nghiêm túc và có định hướng rõ ràng thay vì tiếp tục học lan man.

Em rất mong nhận được những lời khuyên, kinh nghiệm thực tế và cả những góp ý thẳng từ mọi người.

Em cảm ơn mọi người đã đọc bài.

Trước hết, mình rất cảm ơn bạn vì một bài viết có đầu tư và suy ngẫm.

Tiếp theo, mình chúc mừng bạn vì gặp đúng người đúng thời điểm trong cuộc đời.

Mình tiếp tục chúc mừng bạn đã tìm được sở thích và định hướng được tương lai. Đây là điều nhiều người “mơ ước”.


Mình sẽ trả lời các câu hỏi của bạn theo kinh nghiệm của bản thân. Mình thấy mọi người hay trả lời lòng vòng nhưng mình thích trả lời trực tiếp.

  1. Theo hướng mà em thích nhất. Vì em thích DevOps và đã định hình lộ trình thì cứ theo nó.
  1. Kiến thức Network và OS. Lộ trình của bạn cũng ổn. Tuy nhiên hãy nghĩ tới 1 kiểu xoắn ốc thay vì đường thẳng. Nghĩa là bạn không cần trở thành Linux expert mới có thể học Cloud. Bạn học kiến thức cần cho “công việc hiện tại” và kiến thức cần cho DevOps, từ mức cơ bản tới nâng cao.
  1. Có việc nào thì làm việc đó. Bắt đầu từ IT Support là lựa chọn tốt vì người ta không tuyển DevOps junior đâu. Nghĩa là trong quá trình làm IT Support và System Admin, bạn sẽ tự tích lũy được kiến thức DevOps. Sau đó bạn tự gọi mình là 2-3 năm kinh nghiệm DevOps rồi tự ứng tuyển vào vị trí DevOps.

Dùng AI để học nền tảng bằng tiếng Việt. Vì không có thầy dạy rất khó, nên nhờ AI dạy bằng tiếng Việt cũng không sao. Cùng với đó thì học tiếng Anh giao tiếp (đọc, nói). Công ty FDI, công ty gốc nước ngoài lương cao x2 nhé. Xem đó là động lực.

Cứ học CCNA đã. Làm một thời gian sẽ tự biết mình cần chứng chỉ gì khác.

Mình không làm DevOps nên không trả lời được. Mình chưa từng nghĩ quay ngược thời gian để học khác đi. Nếu quay ngược thời gian mà vẫn giữ ký ức hiện tại thì mình sẽ mua Bitcoin :unamused:. Nghiêm túc hơn thì có thể sẽ muốn trải nghiệm một cuộc đời khác, vì chắc chắn dù một thay đổi nhỏ cũng sẽ thay đổi cả vũ trụ. Người bạn sẽ gặp, việc bạn sẽ làm. Mình biết là câu trả lời này không giống như ý định bạn muốn hỏi nhưng mình thích trả lời vậy :v.

:+1:

Thật may mắn trong cuộc đời khi có cơ hội làm lại, bắt đầu lại và nắm lấy nó. Chúc bạn thành công. Và khi bạn cảm thấy mình ổn, hãy tiếp tục truyền nó cho người khác nhé.

1 Like

Cảm ơn anh đã chia sẻ.
Em hiểu ý anh là nên đi theo hướng Support → System → DevOps thay vì cố nhảy thẳng vào DevOps khi nền tảng chưa đủ.

Hiện tại em cũng đã có một khoảng thời gian làm Support/Helpdesk rồi, nên em đang định hướng bước tiếp theo là chuyển thẳng sang System/Infrastructure để tiếp tục xây nền về Linux, Network, Server, VM… Sau khi nền tảng System đủ vững thì em sẽ tiến tiếp sang DevOps.

Em muốn hỏi thêm là với hướng đi này thì theo anh, ở thời điểm hiện tại em nên tập trung bổ sung những kiến thức/kỹ năng nào để có thể bắt đầu apply các vị trí Junior System/Infrastructure ạ?

Nếu bạn muốn biết DevOps hay System Admin cần học cái gì thì xem hết các JD trên mạng ấy. Ví dụ:
System Admin Jobs
DevOps Jobs

coi người ta yêu cầu cái gì thì học cái đó.

Tuy nhiên thực sự mình không nghĩ là bạn “học” được đâu. Học chuyên môn mà không hành (làm trong công việc) thì qua vài tuần sẽ quên hết thôi. Học kiến thức nền tảng thì sẽ nhớ lâu hơn. Lộ trình học thế nào thì bạn hỏi AI tốt hơn mình.

Bạn có thể học theo cách này: “Khi tôi gửi một tin nhắn Messenger (Facebook) từ máy tính A tới điện thoại B của bạn tôi thì những gì thực sự xảy ra?”
Để trả lời câu hỏi này thực sự đủ sâu và chi tiết thì bạn sẽ phải hiểu hết 1 bầu trời kiến thức từ App, OS, Network đến Security. Trong quá trình tìm hiểu từng mục lớn thì bạn sẽ học được các kiến thức nền tảng để trả lời từng mục đó.

Đây là câu trả lời của AI:

Dưới đây là Lộ trình Luồng dữ liệu (Data Path Flow) chi tiết từng chặng kèm các Topic kiến thức cốt lõi bạn cần master cho mục tiêu DevOps.
1. Tầng Ứng dụng & Trình duyệt (Application Layer)

Hành động: Bạn nhấn nút "Gửi" trên Messenger Web ở máy tính A.

    1.1. JS Engine & DOM Event: Chrome/Firefox nhận sự kiện click. JavaScript Engine (V8) đọc nội dung tin nhắn từ bộ nhớ RAM allocated cho trang web.

    1.2. WebSocket / HTTP Request: JavaScript dùng API WebSocket.send() hoặc fetch() để tạo một request.

    1.3. Serialization: Dữ liệu dạng object/JSON được chuyển thành chuỗi byte (Binary/String) để chuẩn bị truyền qua mạng.

Topic học làm nền tảng:

    Core: JSON Data Interchange, Browser Internals (Event Loop, Memory allocation).

    DevOps Focus: Client-Server Architecture, RESTful API vs WebSocket vs gRPC (Cách các microservices giao tiếp).

2. Tầng Hệ điều hành Máy tính A (OS & User/Kernel Space)

Hành động: Trình duyệt bàn giao gói tin cho Hệ điều hành xử lý.

    2.1. System Call (Syscall): Trình duyệt (chạy ở User Space) không có quyền truy cập trực tiếp card mạng. Nó gọi một System Call (như send() hoặc write()) để yêu cầu Kernel (Hệ điều hành) can thiệp.

    2.2. Context Switch: CPU chuyển từ User Mode sang Kernel Mode để thực thi mã nguồn của OS Kernel.

    2.3. TCP/IP Stack trong Kernel: OS Kernel tiếp nhận chuỗi byte và đóng gói qua các tầng mạng:

        Transport Layer (TCP): Thêm TCP Header (Port nguồn: e.g. 52341, Port đích: 443/5222), cấp số Sequence Number để đảm bảo thứ tự gói tin, chia nhỏ dữ liệu thành các TCP Segments.

        Network Layer (IP): Thêm IP Header (IP nguồn của bạn, IP đích của Server Meta), thực hiện định tuyến nội bộ (Routing Table lookup).

    2.4. Socket Buffer & Network Driver: Segments được đẩy vào vùng nhớ Socket Buffer (sk_buff trong Linux). Driver của Card mạng (NIC Driver) chuyển dữ liệu thành các Ethernet Frames (Data Link Layer - MAC Address).

    2.5. DMA Transfer & NIC Trigger: Card mạng dùng DMA (Direct Memory Access) đọc Frame từ RAM rồi chuyển thành tín hiệu điện/quang hoặc sóng Wi-Fi đẩy ra ngoài.

Topic học về OS (Rất quan trọng cho DevOps):

    Core: Process vs Thread, User Space vs Kernel Space, System Calls (strace), Memory Management (RAM, DMA, Buffer).

    Linux Deep-dive: File Descriptors, Linux Networking Stack, Socket Programming (C/Python/Go socket), sysctl kernel network tuning.

3. Tầng Mạng & Truyền dẫn (Network Infra & Routing)

Hành động: Gói tin đi qua môi trường vật lý, Router nhà mạng và Internet backbone đến Meta.

    3.1. Local Network (LAN): Gói tin đi qua Wi-Fi/Cáp Ethernet đến Router nhà bạn. Router dùng NAT (Network Address Translation) để đổi IP riêng (Private IP 192.168.x.x) thành IP công cộng (Public IP).

    3.2. ISP & Internet Backbone: Gói tin qua hàng loạt Router của nhà mạng (VNPT/Viettel/FPT) -> Qua các tuyến cáp quang biển (APG, AAG...) -> Đến điểm trao đổi Internet (IXP).

    3.3. Border Gateway Protocol (BGP): Các Router trên thế giới dùng BGP để tìm đường đi ngắn/tối ưu nhất để đến hạ tầng Meta.

    3.4. Anycast DNS & Edge Network: IP của Meta thường là Anycast IP. Gói tin được dẫn đến Edge PoP (Point of Presence) hoặc CDN Node gần bạn nhất thay vì bay thẳng sang Mỹ.

Topic học về Networking (Cốt lõi cho DevOps/SRE):

    Fundamental: Mô hình OSI & TCP/IP, Subnetting, CIDR, VLAN.

    Protocol: TCP vs UDP, Handshake 3 bước (3-way handshake), TLS/SSL Handshake (Mã hóa HTTPS), NAT, DNS, BGP Routing.

    DevOps Focus: Load Balancing (L4 vs L7), Anycast Network, CDN Infrastructure, Reverse Proxy (Nginx, HAProxy).

4. Hạ tầng Máy chủ Meta (Cloud & Distributed Systems)

Hành động: Server Meta xử lý, xác thực và lưu trữ tin nhắn.

    4.1. Edge Load Balancer: Gói tin cập bến Data Center Meta, đi qua L4/L7 Load Balancers (như Envoy/Katran) để giải mã TLS và cân bằng tải.

    4.2. API Gateway & Microservices: Load Balancer chuyển request đến Service quản lý Chat (viết bằng C++/Go/Erlang).

    4.3. Authentication & Database Write: Service kiểm tra Token, ghi log tin nhắn vào CSDL phân tán (như Cassandra/RocksDB/HBase) để đảm bảo không mất dữ liệu.

    4.4. Message Queue: Tin nhắn được đẩy vào một Hệ thống Hàng chờ (như Kafka hoặc custom MQ) để truyền tải bất đồng bộ tới thiết bị B.

Topic học dành cho DevOps:

    Infra & Cloud: Docker Containers, Kubernetes (K8s orchestration), Load Balancing, Reverse Proxy.

    Architecture: Microservices Communication, Message Queues (Kafka, RabbitMQ), Distributed Databases, Observability (Prometheus, Grafana, Distributed Tracing).

5. Tầng Đẩy Thông báo & Mạng Di động (Push & Mobile Infra)

Hành động: Server Meta báo tin cho Điện thoại B.

    5.1. Target Lookup: Server tìm thấy Socket ID của Điện thoại B (đang chạy ngầm hoặc đóng).

    5.2. APNs / FCM Push Notification: Nếu app Messenger trên B đang đóng, Meta gọi API sang FCM (Google) hoặc APNs (Apple). Server của Apple/Google dùng một kết nối ngầm duy trì sẵn với OS điện thoại B để đẩy Popup Notify.

    5.3. Mobile Network: Gói Push đi qua trạm phát sóng 4G/5G (Cellular Tower) hoặc Wi-Fi để chạm tới Anten điện thoại B.

Topic học nâng cao:

    System Design: Push Notification Architecture, Persistent Connections at Scale (cách giữ hàng triệu kết nối WebSocket/MQTT cùng lúc).

6. OS & App Điện thoại B (Receiving & Rendering)

Hành động: Điện thoại B nhận dữ liệu, hiển thị và phản hồi ACK.

    6.1. Hardware Interrupt (Ngắt phần cứng): Card Wi-Fi/4G của điện thoại B nhận sóng, tạo một Hardware Interrupt gửi đến CPU điện thoại để tạm dừng việc khác và xử lý gói tin nhập vào.

    6.2. OS Kernel & App Wakeup: OS Kernel nhận Frame -> Đưa qua TCP/IP stack -> Chuyển vào Socket. Nếu App đang đóng, Push Service của OS đánh thức (wake up) process Messenger.

    6.3. App Decrypt & UI Render: Messenger giải mã payload, gọi GPU/CPU render dòng tin nhắn lên màn hình.

    6.4. Round-Trip Ack: Điện thoại B gửi một gói tin ACK (Acknowledge) đi ngược lại hành trình trên về Máy tính A để đổi trạng thái tin nhắn thành "Đã nhận".

Topic học về OS & Hardware:

    Core: Interrupt Handler, CPU Interrupts, Context Switching trên Mobile/ARM architecture, OS Process Lifecycle.

Ngợp đúng không? Không ai học hết được cũng như biết hết được các topic trên. Nhưng hãy bắt đầu bằng việc tìm hiểu các thuật ngữ ở mức cơ bản. Ví dụ: WebSocket là gì? HTTP là gì?

Nhắc lại: hãy học theo hình xoắn ốc.

Còn cách thực sự giúp bạn có được việc làm là thực hành trên các project cụ thể. Ví dụ như: “Setup mạng cho quán Net; setup máy chủ cho 1 trang web làm dịch vụ spa”.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?