第 1 页
goupee.vn goupee.com NGHỀ LẬP TRÌNH TẤT TẦN TẬT NHỮNG ĐIỀU NGƯỜI HỌC LẬP TRÌNH KHÔNG THỂ BỎ QUA fb.com/goupee.vn
正在生成预览...
goupee.vn goupee.com NGHỀ LẬP TRÌNH TẤT TẦN TẬT NHỮNG ĐIỀU NGƯỜI HỌC LẬP TRÌNH KHÔNG THỂ BỎ QUA fb.com/goupee.vn
goupee.vn goupee.com Nghề lập trình là nghề có mức lương hấp dẫn, cơ hội thăng tiến và cơ hội việc làm lớn nhất hiện nay. Mức lương sau 2 - 5 năm kinh nghiệm trung bình từ 13 - 30 triệu tùy năng lực (Theo TOPDev). Vậy bạn có biết: Học lập trình xong ra làm gì? Ở đâu? Các mức lương phổ biến lập trình viên nhận được là bao nhiêu? Nghề lập trình viên có quan trọng bằng cấp không? Ứng viên lập trình nên viết CV như thế nào? Làm thế nào để trúng tuyển khi đi phỏng vấn ở các công ty phần mềm? Mọi thứ sẽ được bật mí trong: "Nghề lập trình - Tất tần tật những điều người học lập trình không thể bỏ qua". fb.com/goupee.vn
goupee.vn goupee.com MỤC LỤC 1. Nghề lập trình 1.1 Tổng quan nghề lập trình...................................................................................................02 1.2. Nghề lập trình web - lựa chọn nào cho người mới bắt đầu.........................03 1.3. Các vị trí công việc công nghệ thông tin.................................................................06 1.4. Lập trình viên làm việc ở những đâu?........................................................................ 11 1.5. Lập trình viên nên học ngôn ngữ nào?..................................................................... 12 2. Toàn cảnh ngành CNTT Việt Nam 2.1. Toàn cảnh ngành CNTT Việt Nam..................................................................................14 2.2. Những con số thống kê trong ngành CNTT............................................................15 3. Trở thành lập trình viên 3.1. Mẫu CV cho lập trình viên.................................................................................................. 19 3.2. Các câu hỏi thường gặp khi phỏng vấn tại các công ty phần mềm................................................................................................. 20 3.3. Kỹ năng phỏng vấn................................................................................................................ 21 3.4. Nên làm gì để bắt đầu theo đuổi nghề lập trình.................................................23 4. Về CodeGym 4.1. Về CodeGym............................................................................................................................... 26 4.2. Trở thành lập trình viên chuyên nghiệp sau 4 tháng với Coding Bootcamp............................................................................... 27 4.3. Lộ trình học tập.........................................................................................................................28 4.4. Coding Bootcamp đầu tiên tại Việt Nam.................................................................. 29 4.5. Cam kết việc làm......................................................................................................................29 5. Quick reference 5.1. PHP - Quick reference............................................................................................................30 5.2. JAVA - Quick reference.......................................................................................................... 34 6. Đăng ký tuyển sinh 6.1. Hướng dẫn đăng ký xét tuyển.........................................................................................44 fb.com/goupee.vn
goupee.vn goupee.com NGHỀ LẬP TRÌNH Tổng quan nghề lập trình Nghề lập trình Để biết nghề lập trình là gì, trước tiên chúng ta phải biết lập trình viên là gì? Lập trình viên là người thiết kế, xây dựng và bảo trì các chương trình máy tính (phần mềm). Bằng cách thao tác các đoạn mã (các ngôn ngữ) trên các công cụ lập trình. Lập trình viên có thể tạo ra các chương trình mới và sửa lỗi hay nâng cấp chương trình đó để tăng tính hiệu quả của việc sử dụng máy tính. Các lập trình viên thường làm việc trên nhiều ngôn ngữ lập trình như: lập trình web Java, C++, PHP, Asp, ASP.Net và C#. Vậy, nghề lập trình là nghề thiết kế, xây dựng và bảo trì các chương trình máy tính (phần mềm) bằng cách thao tác các đoạn mã (các ngôn ngữ) trên các công cụ lập trình, nhằm tạo ra các chương trình mới và sửa lỗi hay nâng cấp chương trình đó để tăng tính hiệu quả của việc sử dụng máy tính. Lập trình làm công việc gì? Những người làm nghề lập trình có thể đảm nhận rất nhiều công việc khác nhau. Một trong những công việc chủ yếu của họ chính là viết code. Để làm ra một phần mềm, trước hết người ta phải tạo ra một “bản thiết kế”, mỗi lập trình viên đảm nhiệm một phần việc, sau đó các phần được kết nối lại tạo thành một sản phẩm hoàn chỉnh. Lập trình viên được ví là những thợ “coding” (người ngồi gõ những dòng lệnh (code) trên máy tính), làm ra các phần mềm hoặc chỉnh sửa, phát triển nó dựa trên các công cụ lập trình. Hiện nay, nghề Lập trình được phân thành nhiều mảng chuyên sâu như: Lập trình Web, Lập trình Hệ Thống, Lập trình Database, Lập trình Game, Lập trình Mobile. Nhiệm vụ chính của người lập trình là: Xây dựng mới một ứng dụng Nâng cấp và sửa chữa các ứng dụng có sẵn Xây dựng các chức năng xử lý Nghiên cứu và phát triển công nghệ mới fb.com/goupee.vn 02 Nghề lập trình
goupee.vn goupee.com NGHỀ LẬP TRÌNH Nghề lập trình web - lựa chọn nào cho người mới bắt đầu Nghề lập trình Web – lựa chọn nào cho người mới bắt đầu? Full-stack Developer (Lập trình viên Full-stack) là thuật ngữ xuất hiện lần đầu vào năm 2012, từ một thông tin tuyển dụng của Facebook. Kể từ đó, thuật ngữ này đã được sử dụng phổ biến và thảo luận rất nhiều. Thậm chí nó còn trở thành một xu hướng nghề nghiệp rất được quan tâm. Bằng chứng là lượng tìm kiếm của từ khoá “Full-stack Developer” trên toàn thế giới ngày càng tăng theo thời gian. Vậy Full-stack thực sự có ý nghĩa là gì? Đâu là mối quan hệ giữa các khái niệm Full-stack với Front-end và Back-end? Nếu là người mới bắt đầu, hẳn bạn cũng rất phân vân về các khái niệm này, phần giải thích sau đây sẽ cho chúng ta thấy các góc nhìn rõ ràng hơn về từng loại công việc và đồng thời mang lại các lời khuyên hữu ích cho những người đang mong muốn có được một sự lựa chọn đúng. Nhập môn lập trình web Hãy bắt đầu bằng việc quay ngược trở lại nguồn gốc của web, để hiểu hơn về cách mà thông tin được hiển thị trên các trang web trên màn hình máy tính của bạn. Tất cả các website đều sử dụng ngôn ngữ HTML để trình bày thông tin theo một cấu trúc mong muốn. Có thể xem HTML chính là phần lõi tạo ra một trang web, như bột để làm bánh vậy – HTML chính là bột và trang web là bánh. Trong những ngày sơ khai của web, tất cả các trang web đều là tĩnh. Có nghĩa là, nếu lập trình viên muốn thay đổi nội dung của một trang web thì họ cần thay đổi mã HTML của nó thông qua việc cập nhật mã nguồn một cách thủ công. Điều này thật là kinh khủng, bởi vì cứ mỗi lần muốn thay đổi thông tin thì lại phải cập nhật các file HTML. Thử tưởng tưởng tượng, với các website cần cập nhật tin tức hằng ngày, chẳng hạn như BBC News, đội ngũ lập trình viên phải hoạt động vất vả như thế nào để có thể cập nhật được số lượng vài trăm trang web trong một ngày thường xuyên như vậy. Chắc hẳn, đây không phải là cách làm tốt. Trên thực tế, ngày nay các trang web như của BBC News sử dụng các website động, có nghĩa là nội dung của các trang web có thể dễ dàng cập nhật và thay đổi. Nói một cách dễ hiểu thì đội ngũ lập trình viên đã tạo ra một “bản mẫu” (template) cho các trang tin, sau đó họ sẽ điền các thông tin cụ thể (chẳng hạn như tiêu đề, nội dung, ảnh…) vào các bản mẫu đó. Với cách làm này thì họ không cần phải sửa mã nguồn mỗi khi muốn cập nhật hoặc đăng bài mới nữa. Vậy các dữ liệu như tiêu đề, nội dung, ảnh… được lưu ở đâu? Đó chính là Cơ sở dữ liệu – một nơi hoàn hảo để lưu trữ và truy xuất các dữ liệu với bất cứ cấu trúc nào mà bạn muốn. Và để làm được điều này, xin mời bạn làm quen với các ngôn ngữ phía máy chủ (server-side language). Có rất nhiều ngôn ngữ làm được việc này, chẳng hạn như Java, C#, PHP, Python, JavaScript… Và như vậy, ngay bây giờ, một trang web đang hiển thị trên màn hình máy tính của bạn đã có thể trải qua các bước sau: Dữ liệu của nó được lưu trữ trong một Cơ sở dữ liệu nào đó, chẳng hạn như MySQL Dữ liệu đó được lấy ra và xử lý bởi một ngôn ngữ server-side nào đó, chẳng hạn như Java hoặc PHP Mã HTML được sinh ra để hiển thị ngay trên trình duyệt của bạn fb.com/goupee.vn Nghề lập trình 03
goupee.vn goupee.com NGHỀ LẬP TRÌNH Phát triển ứng dụng Web Front-end Phát triển ứng dụng Web Front-end là nói đến công việc tạo ra giao diện và trải nghiệm người dùng của một website. Công việc này được thực hiện bởi các lập trình viên Front-end. Thông thường, họ sử dụng các ngôn ngữ như HTML, CSS và JavaScript để hoàn thành công việc của mình. Đây chính là 3 ngôn ngữ tối cần thiết để có thể xây dựng được website trên thực tế. HTML được dùng để tạo ra nội dung của trang web, CSS giúp cho trang web trở nên đẹp đẽ hơn và JavaScript giúp người dùng tương tác được với trang web một cách tiện lợi. Nhưng, đây mới chỉ là các công nghệ Web Front-end của thời kỳ đầu. Các lập trình viên Web Front-end ngày nay có những công cụ mạnh mẽ hơn rất nhiều để hoàn thành xuất sắc nhiệm vụ của mình, đó chính là các ngôn ngữ và nền tảng mới, chẳng hạn như TypeScript, Coffee- Script, SASS, LESS, Angular, ReactJS, VueJS… Phát triển ứng dụng Web Back-end Nếu Front-end là bộ mặt của một website thì Back-end chính là bệ đỡ, là nguồn sống của website đó. Phát triển ứng dụng Web Back-end là nói đến công việc sử dụng các ngôn ngữ server-side để thao tác với Cơ sở dữ liệu, thiết lập các quy tắc nghiệp vụ, đảm bảo bảo mật… và cung cấp nội dung cho phía Front-end. Với tầm quan trọng như vậy, các lập trình viên Web Back-end cần làm việc tốt với nhiều mảng khác nhau, chẳng hạn như cơ sở dữ liệu, bảo mật, các giao thức web, thiết kế kiến trúc hệ thống… và thậm chí là phải biết Front-end. jQuery React JS CSS HTML JS PS Bootstrap fb.com/goupee.vn 04 Nghề lập trình
goupee.vn goupee.com NGHỀ LẬP TRÌNH Lập trình viên Full-stack Lập trình viên Web Full-stack là lập trình viên có khả năng làm việc với cả Web Front-end và Web Back-end. Tại sao lại cần có những lập trình viên Web Full-stack? Bởi vì, mặc dù chúng ta có thể phân chia việc lập trình web thành 2 mảng là Front-end và Back-end, nhưng 2 mảng này đều liên quan rất chặt chẽ với nhau và có ảnh hưởng đến nhau. Đặc biệt, theo xu hướng phát triển hiện nay của mảng Web Front-end thì càng ngày các lập trình viên Front-end càng cần có những kỹ năng gần giống với kỹ năng của lập trình viên Back-end. Có nghĩa là, lập trình viên Web Front-end cũng cần thành thạo thiết kế kiến trúc, thành thạo các giao thức web, thành thạo bảo mật… và thậm chí là biết các kiến thức phía Back-end. Ngoài ra, một lập trình viên Web Full-stack có rất nhiều thuận lợi khi phát triển các các ứng dụng web, so với các lập trình viên chỉ chuyên biệt một mảng là Front-end hoặc Back-end. Lập trình viên Web Full-stack hiểu rõ hơn về tổng quan của hệ thống, biết các thành phần được liên kết với nhau như thế nào, biết cách để các bên giao tiếp với nhau tốt nhất, biết cách để tối ưu toàn bộ hệ thống… và nhất là hiểu được công việc của các bên còn lại. Trong thực tế, vẫn có nhiều tranh cãi xung quanh thuật ngữ “Lập trình viên Full-stack”. Lí do chính là bởi vì có nhiều định nghĩa khác nhau và cách hiểu khác nhau về “Full-stack”. Trong khuôn khổ của bài viết này, chúng ta cũng không đặt tham vọng thống nhất được các định nghĩa và cách hiểu. Ngược lại, chúng ta sẽ phân tích ngữ nghĩa để hiểu hơn về một loại công việc mới, thay vì tập trung vào các tranh cãi. Stack – có nghĩa là một tập hợp các công nghệ khác nhau được sử dụng để phát triển và vận hành một sản phẩm. Chẳng hạn, MySQL – PHP – Linux – Apache – Laravel – Docker – Angular có thể được xem là một stack, tất nhiên là có thể thêm nhiều công nghệ khác vào trong stack này, tuỳ thuộc vào nhu cầu của từng sản phẩm. MongoDB – Java – Spring MVC – Tomcat – Linux – ReactJS – Docker – AWS cũng có thể là một stack, và cũng có thể thêm nhiều công nghệ khác vào nữa. Các công nghệ này cũng còn được gọi là các tầng (layer) trong một stack. Như vậy, một lập trình viên Full-stack là một lập trình viên có thể làm việc với tất cả các layer của một stack cụ thể. Không có một lập trình viên Full-stack chung chung, mà cần phải chỉ rõ là “stack” nào (stack đó bao gồm những layer nào). Vậy còn mức độ thuần thục của các công nghệ này thì như thế nào? Tất nhiên, nếu một lập trình viên thành thạo được tất cả các công nghệ trong một stack là điều quá tốt, nhưng điều này thường chỉ đạt được với những lập trình viên khá nhiều năm kinh nghiệm làm việc trong cùng một stack. Đối với các lập trình viên ít kinh nghiệm hơn, thông thường họ sẽ có thế mạnh hơn ở một số công nghệ nào đó, còn các công nghệ còn lại thì họ đủ để dùng để tạo ra sản phẩm. Khi gắn bó với một stack đủ lâu thì mức độ thành thạo của các công nghệ cũng tăng dần lên theo thời gian và thậm chí là lập trình viên đó có thể mở rộng thêm các công nghệ của một stack hoặc bắt đầu làm việc trên các stack khác. fb.com/goupee.vn Nghề lập trình 05
goupee.vn goupee.com NGHỀ LẬP TRÌNH Các vị trí công việc công nghệ thông tin Kỹ sư phần mềm (Software engineer) Còn được biết đến với các tên gọi tương tự như: Kiến trúc sư phần mềm, kỹ sư hệ thống. Mô tả: Kỹ sư phần mềm là người thiết kế và lập trình phần mềm ở mức hệ thống. Kỹ sư phần mềm là người hiểu các chức năng của hệ thống, trao đổi với khách hàng để xác định các chức năng của hệ thống đang xây dựng. Kỹ sư phần mềm là người giao tiếp nhiều và đồng thời cũng có nền tảng kỹ thuật và các kỹ năng lập trình tốt. Các kỹ năng cần thiết: Phân tích, tư duy logic, làm việc nhóm. Chuyên gia phân tích hệ thống (Systems analyst) Còn được biết đến với các tên gọi như: Chuyên gia sản phẩm, kỹ sư hệ thống, chuyên gia giải pháp, nhà thiết kế kỹ thuật. Mô tả: Chuyên gia phân tích hệ thống là người nghiên cứu và phân tích các vấn đề nghiệp vụ để sau đó đưa ra các thiết kế hệ thống thông tin nhằm cung cấp giải pháp, việc này thường xuất phát từ yêu cầu từ các bộ phận kinh doanh hoặc từ khách hàng. Chuyên gia phân tích hệ thống thu thập các yêu cầu và xác định chi phí cũng như thời gian cần thiết để triển khai dự án. Công việc này đòi hỏi việc kết hợp giữa các kỹ năng nghiệp vụ và kiến thức kỹ thuật, đồng thời phải giao tiếp tốt với các bên. Các kỹ năng cần thiết: Khả năng trích xuất và phân tích các dữ liệu, giao tiếp tốt, chịu được áp lực. fb.com/goupee.vn 06 Nghề lập trình
goupee.vn goupee.com NGHỀ LẬP TRÌNH Chuyên gia phân tích nghiệp vụ (Business analyst) Còn được biết đến với các tên gọi: Kiến trúc sư nghiệp vụ, chuyên gia thông tin. Mô tả: Chuyên gia phân tích nghiệp vụ là người đóng vai trò trung gian quan trọng, làm việc với cả đội ngũ kỹ thuật, các cấp quản lý và với người dùng cuối. Chuyên gia phân tích nghiệp vụ là người đưa ra các cải tiến về quy trình và hoạt động nghiệp vụ thông qua việc sử dụng các công nghệ kỹ thuật. Vai trò này được xác định theo từng dự án, bắt đầu bằng việc phân tích các nhu cầu của khách hàng, thu thập và tài liệu hoá các yêu cầu, lập kế hoạch để xây dựng thiết kế cho giải pháp công nghệ. Chuyên gia phân tích nghiệp vụ cần phải có hiểu biết về công nghệ, tuy nhiên không nhất thiết phải là một chuyên gia công nghệ. Các kỹ năng cần thiết: Giao tiếp, thuyết trình, hỗ trợ, quản lý dự án và giải quyết vấn đề. Hỗ trợ kỹ thuật (Technical support) Còn được biết đến với các tên gọi: Nhân viên hỗ trợ, quản lý vấn đề. Mô tả: Hỗ trợ kỹ thuật là người giải quyết các vấn đề trong quá trình hoạt động của các hệ thống. Nhiều chuyên gia hỗ trợ kỹ thuật làm việc trong các công ty sản xuất và cung cấp phần cứng, và cũng có nhiều chuyên gia hỗ trợ kỹ thuật ở các doanh nghiệp nhằm hỗ trợ, theo dõi và bảo trì các hệ thống được sử dụng hằng ngày. Nhiều công việc đòi hỏi các chuyên gia với nền tảng và kinh nghiệm kỹ thuật tốt. Các kỹ năng cần thiết:Hiều biết nhiều về công nghệ, giải quyết vấn đề, giao tiếp, kiên nhẫn và nhẹ nhàng. fb.com/goupee.vn Nghề lập trình 07
goupee.vn goupee.com NGHỀ LẬP TRÌNH Kỹ sư mạng (Network engineer) Còn biết đến với tên gọi: Kỹ sư phần cứng, chuyên gia mạng. Mô tả: Kỹ sư mạng là một trong các công việc rất cần thiết trong ngành IT, là người thực hiện các thao tác cài đặt, quản trị, duy trì và nâng cấp các hệ thống giao tiếp, xử lý các vấn đề liên quan đến mạng lưới trong các công ty. Kỹ sư mạng cũng là người chịu trách nhiệm về bảo mật, lưu trữ dữ liệu và các chiến lược khôi phục nếu có sự cố xảy ra. Các kỹ năng cần thiết: Các kiến thức chuyên ngành mạng, kỹ năng giao tiếp, lập kế hoạch, phân tích và giải quyết vấn đề. Quản lý dự án (Project manager) Còn biết đến với tên gọi: Trưởng dự án. Mô tả: Quản lý dự án là người tổ chức các PROJECT nhóm phát triển, phân bố thời gian và tài nguyên để đảm bảo các dự án đạt được các yêu cầu về chức năng, đúng thời gian và nằm trong ngân sách cho phép. Quản lý dự án điều phối tất cả các hoạt động từ khi mới bắt đầu dự án cho đến khi kết thúc. Vai trò này đòi hỏi kinh nghiệm và nền tảng vững chắc về kỹ thuật cũng như các kỹ năng mềm để làm việc tốt với các nhóm phát triển và các nhà quản lý cấp cao. Các kỹ năng cần thiết: Khả năng tổ chức, giải quyết vấn đề, giao tiếp, tư duy rành mạnh, khả 27 năng chịu đựng áp lực công việc. fb.com/goupee.vn 08 Nghề lập trình
goupee.vn goupee.com NGHỀ LẬP TRÌNH Nhà phát triển (Developer) Còn được biết đến với các tên gọi: Lập trình viên, nhân viên viết mã. Mô tả: Nhà phát triển là người trực tiếp tạo ra phần mềm thông qua viêc sử dụng các ngôn ngữ lập trình và các công cụ hỗ trợ. Nhà phát triển thường làm việc cộng tác trong các nhóm để đảm bảo các tính năng của sản phẩm được xây dựng và đáp ứng được các yêu cầu như thiết kế ban đầu. Vai trò này đòi hỏi kiến thức và kỹ năng tốt về công nghệ, công cụ và các ngôn ngữ lập trình. Các kỹ năng cần thiết: Hiểu biết về các loại ứng dụng phần mềm, hiểu biết về các ngôn ngữ lập trình, kỹ năng giao tiếp và làm việc nhóm. Kiểm thử viên phần mềm (Software tester) Còn được biết đến với tên gọi: Kiểm thử viên, nhân viên kiểm thử. Mô tả: Kiểm thử viên phần mềm là người tham gia vào công tác đảm bảo chất lượng PHP HTML 5 phần mềm thông qua việc phát hiện các lỗi tiềm tàng và hỗ trợ nhóm phát triển trong việc xử lý các lỗi. Kiểm thử viên phần mềm thực hiện các thao tác phân tích nghiệp vụ, lập kế hoạch kiểm thử, viết các kịch bản kiểm thử, thực thi các ca kiểm thử <code/:>ode/:> và viết các báo cáo kiểm thử. Các kỹ năng cần thiết:Tỉ mỉ trong từng chi tiết, khả năng nắm bắt các yêu cầu nghiệp vụ, khả năng sử dụng các hệ thống phần mềm, kỹ năng phân tích và điều tra vấn đề, kỹ năng giao tiếp. fb.com/goupee.vn Nghề lập trình 09
goupee.vn goupee.com NGHỀ LẬP TRÌNH Chủ sản phẩm (Product owner) Còn được biết đến với các tên gọi: Quản lý sản phẩm. Mô tả: Chủ sản phẩm là người chịu trách nhiệm xác định và đảm bảo các chức năng của hệ thống. Chủ sản phẩm tìm hiều và nghiên cứu các yêu cầu của người dùng cuối, đưa ra các giải pháp để đáp ứng được các yêu cầu, quản lý tiến độ và chất lượng của các chức năng trong suốt quá trình phát triển. Chủ sản phẩm là người có hiểu biết về thị trường, về các hệ thống phần mềm và sử dụng các công cụ quản lý sản phẩm và quản lý dự án. Các kỹ năng cần thiết:Tìm kiếm và phân tích thông tin, kỹ năng quản lý, kỹ năng giao tiếp. ScrumMaster (ScrumMaster) Mô tả: ScrumMaster là người chịu trách nhiệm trong việc đảm bảo các nhóm scrum hoạt động tốt và chuyển giao được sản phẩm chất lượng cao. ScrumMaster nắm rõ khung làm việc scrum, các kỹ thuật phát triển và là người làm việc thường xuyên với nhóm phát triển. ScrumMaster có thể là người am hiểu về công nghệ hoặc không. Các kỹ năng cần thiết: Kỹ năng giao tiếp, kỹ năng lắng nghe, kỹ năng giải quyết vấn đề, khả năng tháo gỡ các khó khăn. fb.com/goupee.vn 10 Nghề lập trình
goupee.vn goupee.com NGHỀ LẬP TRÌNH Lập trình viên làm việc ở những đâu? Công ty gia công phần mềm cho nước ngoài Có lẽ lợi thế lớn của các công ty gia công nằm ở môi trường chuyên nghiệp và cơ hội tham gia cọ xát các dự án lớn của nước ngoài. Những điều này đặc biệt hữu ích cho những lập trình viên trẻ mới bước từ môi trường giảng đường sang thực tế, và việc đặt mình dưới áp lực của các dự án lớn đòi hỏi các quy trình chặt chẽ sẽ giúp lập trình viên nhanh chóng chuyên nghiệp hóa bản thân mình. Tuy nhiên môi trường gia công cũng có những hạn chế nhất định, việc vẫn còn ít những dự án xứng tầm cũng như việc trả chi phí cố định theo đầu người ở đa phần các công ty sẽ dần khiến nhiều lập trình viên chán nản và từng bước tìm cho mình những hướng đi mới mẻ hơn. Công ty start-up/hoặc công ty làm sản phẩm Làm việc trong một công ty start-up thực sự sẽ đòi hỏi bạn làm việc >100% khả năng của mình. Ngoài ra, do công việc của công ty start-up khá nhiều mà số người lại hạn chế, nên gần như sẽ đòi hỏi bạn phải biết thêm rất nhiều thứ không nằm trong kiến thức của bạn được trang bị ở các công ty lớn. Trong một môi trường như vậy sẽ khiến bạn trưởng thành lên rất nhiều. Lẽ dĩ nhiên môi trường start-up cũng có những hạn chế. Hạn chế thứ nhất là tỉ lệ các công ty start-up thành công là rất thấp, nên đôi lúc việc gắn bó trong một môi trường start-up chờ thời quá lâu mà vẫn chưa thấy đầu ra sẽ khiến bạn lãng phí rất nhiều thời gian và đánh mất nhiều cơ hội, thực tế chứng minh các công ty start-up thành công lớn đa phần đều có những bước tiến thần tốc trong một thời gian nhất định. Hạn chế thứ hai, môi trường start-up đòi hỏi bạn biết rộng hơn là biết sâu. Do đó nếu bạn là một người chuyên sâu về một công nghệ nhất định thì sẽ không thích hợp trong môi trường này. Công ty đa quốc gia Có lẽ vị trí cho lập trình viên trong các công ty này không nhiều khi phần lớn hiện nay vẫn xem Việt Nam là một thị trường phân phối và tiêu thụ. Tuy nhiên gần đây tình hình đã dần khá hơn khi thị trường Việt Nam bắt đầu lớn và chứng tỏ vị trí tiềm năng trong tương lai gần sắp tới. Làm việc trong các công ty này được lợi là quy trình đã khá bài bản nên lập trình viên chỉ cần tập trung vào những hướng nhất định, rất phù hợp cho những ai đam mê đào sâu vào một công nghệ mũi nhọn. Ngoài ra làm việc trong môi trường này cũng giúp lập trình viên mở rộng tầm nhìn lên rất nhiều bởi có cơ hội cọ xát trong một môi trường mang tính quốc tế. Tuy nhiên điểm yếu ở các công ty này là lập trình viên sẽ không có được một cái nhìn tổng quát về công ty như trong môi trường công ty start-up đã nêu trên. Công ty/tổ chức nhà nước Làm trong nhà nước thì lương khá thấp so với thị trường. Tuy nhiên đổi lại môi trường tương đối nhẹ hơn, cũng như sẽ có những giá trị vô hình nhất định và tiềm năng trong tương lai, đặc biệt trong một xã hội mà nhà nước vẫn còn nắm giữ một vai trò quan trọng trong nền kinh tế như Việt Nam hiện nay. fb.com/goupee.vn Nghề lập trình 11
goupee.vn goupee.com NGHỀ LẬP TRÌNH Lập trình viên cần học những ngôn ngữ nào? Trước khi bàn đến kinh nghiệm và cách học lập trình cho người mới bắt đầu, chúng ta sẽ điểm qua những ngôn ngữ lập trình cơ bản. PHP PHP là mã nguồn mở, miễn phí, hỗ trợ người dùng xây dựng website với chi phí tiết kiệm nhất. Nhờ đó, PHP đã trở nên phổ biến một cách rất nhanh chóng trong những năm qua. Ngay cả những ông lớn như Facebook, Yahoo!, Wikipedia cũng sử dụng tới PHP. Hiện nay, hầu hết các trang web bạn tiếp xúc đều được xây dựng từ PHP. Đây có lẽ cũng là lý do mà phần lớn doanh nghiệp hiện giờ đều ưu tiên tuyển dụng những lập trình viên thông thạo ngôn ngữ này. Tính cộng đồng cao chính là một ưu điểm vượt trội của PHP. Bên cạnh đó, một điểm mạnh khác của PHP đó là có khá nhiều CMS, Framework được xây dựng từ PHP giúp rút gọn quá trình tạo một website. Vì vậy, trên thế giới có khá nhiều lập trình viên sử dụng PHP để xây dựng dự án cho riêng họ hoặc cho khách hàng của họ. Java Xét về mức độ phổ biến, Java cũng không kém phần PHP. Đây là ngôn ngữ lập trình được sử dụng nhiều thứ 3 trên thế giới. Nhắc đến Java là nhắc đến những ứng dụng phần mềm trên di động. Nhưng thực tế, ngôn ngữ này còn làm được nhiều điều hơn thế. Java là một ngôn ngữ lập trình hướng đối tượng, có đặc trưng sâu sắc dựa trên lớp (class-based), được thiết kế để có thể hoạt động đa nền tảng. Do vậy, một nhược điểm không thể không nói của Java đó là sự phức tạp và khó nắm bắt. fb.com/goupee.vn 12 Nghề lập trình
goupee.vn goupee.com NGHỀ LẬP TRÌNH Python Được phát triển từ những năm 80s bởi Guido Van Rossum, Python cũng năm trong danh sách ngôn ngữ lập trình phổ biến và dễ tiếp cận. Python là ngôn ngữ mã nguồn mở và sử dụng miễn phí, thậm chí cho các ứng dụng thương mại. Theo đó, Python cho phép các lập trình viên tạo ra một số lượng lớn code dễ đọc trong một khoảng thời gian ngắn. Nhưng Python cũng là một ngôn ngữ Dynamic, hỗ trợ hướng đối tượng và có phong cách lập trình chức năng như những ngôn ngữ khác. Bởi tính mềm dẻo, Python là một trong những ngôn ngữ lập trình bậc cao được sử dụng rộng rãi nhất ngày nay. C và C++ C và C++ là khá quen thuộc với hầu hết các sinh viên trong ngành công nghệ thông tin. Bởi, hai ngôn ngữ này thường được đưa vào chương trình giảng dạy ngay từ những năm đầu. C/ C++ được mệnh danh là nền tảng của khoa học máy tính và lập trình. Tuy nhiên, C và C++ được đánh giá là rất khó để học. Dù vậy, nếu nắm được chắc hai ngôn ngữ này, bạn có khả năng học sang ngôn ngữ khác rất nhanh bới hầu hết các ngôn ngữ đều được phát triển từ một hay một vài khái niệm của C/ C++. fb.com/goupee.vn Nghề lập trình 13
goupee.vn goupee.com TOÀN CẢNH NGÀNH CNTT VIỆT NAM Toàn cảnh ngành CNTT Việt Nam 24.501 DOANH NGHIỆP 13,13% TĂNG TRƯỞNG 1.500.009 TỶ ĐỒNG1.500.009 TỶ ĐỒNG đang hoạt động trong ngành CNTT số doanh nghiệp CNTT doanh thu toàn ngành 34.320 TỶ ĐỒNG 60 TỶ USD 780.926 NHÂN LỰC nộp ngân sách nhà nước tổng giá trị xuất khẩu đang làm việc trong ngành CNTT Nhu cầu tuyển dụng nhân lực CNTT Theo báo cáo của bộ Thông tin và Truyền thông năm 2017, từ nay đến 2020 Việt Nam thiếu 500.000 nhân lực cho ngành CNTT. 4% 7% 1% 11% 12% 48% 43% 53% 41% 80% Thành phố Hồ Chí Minh và Các công ty gia công là 80% các vị trí tuyển dụng Hà Nội là hai địa phương có những đơn vị có nhu cầu yêu cầu có hơn 2 năm kinh nhu cầu tuyển dụng nhân tuyển dụng nhân lực CNTT nghiệm làm việc lực CNTT lớn nhất nước cao nhất Gia công Khác Hồ Chí Minh Khác Có kinh nghiệm Quản lý Sản phẩm Hà Nội Mới tốt nghiệp Khác fb.com/goupee.vn 14 Nghề lập trình
goupee.vn goupee.com TOÀN CẢNH NGÀNH CNTT VIỆT NAM Sự trung thành và gắn bó với công ty Hiện tượng nhảy việc xảy ra thường xuyên, gây khó khăn và tổn thất cho các doanh nghiệp trong việc đào tạo nhân lực và đảm bảo nguồn lực cho các dự án. Mức độ trưởng thành và văn hóa làm việc Nhân sự không quan tâm đến việc quan sát và củng cố các kinh nghiệm có được từ môi trường làm việc. Chất lượng nhân sự thấp Nhân sự thiếu kiến thức, kỹ năng và kinh nghiệm để đảm nhận các vị trí trong các dự án phần mềm. Ảnh hưởng của cách mạng công nghiệp 4.0 và phong trào khởi nghiệp THỬ THÁCHNhiều doanh nghiệp công nghệ mới được hình thành khiến cho thị trường tuyển dụng trở nên sôi động, làm cho mức lương tăng cao nhanh chóng, tạo nên bong bóng lương trong ngành IT. Khả năng giao tiếp bằng ngoại ngữ Nhiều khách hàng từ châu Âu, Châu Mỹ, Nhật Bản, Hàn Quốc đòi hỏi nhân sự phải giao tiếp được bằng ngoại ngữ, đây là một yêu cầu khó khăn đối với nhân sự IT hiện tại. Những con số thống kê trong ngành CNTT Tỷ lệ nhảy việc cao 60.2% 39.8% YES NO Hơn 60% nhân sự CNTT mong muốn chuyển sang làm việc ở các công ty khác fb.com/goupee.vn Nghề lập trình 15
goupee.vn goupee.com TOÀN CẢNH NGÀNH CNTT VIỆT NAM Các lý do chính để chuyển việc 47.5% 17.5% 10% Mong muốn lương cao hơn Mong muốn thăng tiến Mong muốn môi trường làm việc tốt hơn Các động lực chính để gắn bó với ngành CNTT 62% 71% 83% Cơ hội thăng tiến Tự chủ tài chính Nâng cao năng lực Phân bố lương trong ngành CNTT Theo loại sản phẩm $1,024 $1,200 $1,122 $1,063 $1,146 $942 $1,145 Web Mobile Embedded applications SaaS E-commerce applications system Game Others Theo ngôn ngữ lập trình $1,023 $1,185 $1,071 $1,057 $997 .Net PHP C++ Python Java Theo vị trí công việc $1,372 $1,206 $1,125 $926 $802 Developer Tech lead Tester Project manager Others Dữ liệu tham khảo: Báo cáo của TopITWorks năm 2017 Báo cáo của Navigos năm 2017 Báo cáo của VietnamWorks năm 2018 fb.com/goupee.vn 16 Nghề lập trình
goupee.vn goupee.com TOÀN CẢNH NGÀNH CNTT VIỆT NAM Developer nữ đang theo đuổi công nghệ gì? 30% 20% 10% 0 Java Javascript C C++ Python PHP C# Ruby Swift Go Top nguồn học lập trình 77% 33% 29% HỌC CÁC THAM GIA CÁC KHOÁ HỌC ONLINE CẬP NHẬT TIN TỨC SỰ KIỆN CÔNG NGHỆ Stackoverflow.com Medium.com Vietnam Mobile Day Codeacademy.com Techtalk.vn Vietnam Web Summit Github.com Viblo.asia TechFest Slimshare.com Tech Summit Kipalog Ngoài những trang nước ngoài, những trang blog tại Việt Nam như Techtalk.vn, Viblo, hayNgoài những trang nước ngoài, những trang blog tại Việt Nam như Techtalk.vn, Viblo, hayNgoài những trang nước ngoài, những trang blog tại Việt Nam như Techtalk.vn, Viblo, hayNgoài những trang nước ngoài, những trang blog tại Việt Nam như Techtalk.vn, Viblo, hayNgoài những trang nước ngoài, những trang blog tại Việt Nam như Techtalk.vn, Viblo, hayNgoài những trang nước ngoài, những trang blog tại Việt Nam như Techtalk.vn, Viblo, hay Kipalog chính là nơi mà các lập trình viên có thể trò chuyện và chia sẻ kiến thức của mình. Đặc biệt, Techtalk.vn còn thường xuyên có những sự kiện công nghệ với sự góp mặt chia sẻ của các chuyên gia hàng đầu trong thị trường Tech. Nhà tuyển dụng quan tâm điều gì ở CV của Developer Kinh nghiệm 90.50% thực tế Từng có một quan niệm sai lầm rằng nhà tuyển dụng ưu tiên các ứng viên xuất phát Demo dự án 72.70% (Github, portfolio) từ các trường CNTT Top đầu thị trường. Nhưng thực tế, điều họ quan tâm chính là 41.70% Học vấn kinh nghiệm và năng lực làm việc thực tế của ứng viên. Ngoại ngữ 23.70% Ngoại ngữ cũng đang là một kĩ năng bắt (Tiếng Anh/Nhật) buộc của Developer. Kỹ năng 8.20% mềm fb.com/goupee.vn Nghề lập trình 17
goupee.vn goupee.com TOÀN CẢNH NGÀNH CNTT VIỆT NAM Methodologies thông dụng nhất 85.4% 62.7% 35.2% 28.4% AGILE SCRUM KANBAN PAIR PROGRAMMING Agile và Scrum vẫn là những methodologies thông dụng nhất cho developer để quản lí tiến độ của dự án. Mức thu nhập của Developer theo số năm kinh nghiệm $330 - $515 $525 - $1150 $1550 - $2350 > $2300 MỚI TỐT NGHIỆP CÓ KINH NGHIỆM CẤP QUẢN LÝ GIÁM ĐỐC (Dưới 2 năm làm việc) (Trên 2 năm làm việc) (Dưới 5 năm làm việc) VÀ CẤP CAO HƠN (Dưới 10 năm làm việc) Sau 1 năm làm việc, mức lương của Developer thường sẽ tăng đến mức đáng kể. Các nhà tuyển dụng cũng gặp rất nhiều khó khăn cho việc tuyển dụng những vị trí từ cấp quản lí trở lên do những đòi hỏi và yêu cầu gắt gao. Dự đoán nhân lực IT tại Việt Nam 2018 - 2020 2018 2019 2020 Cần Thiếu Cần Thiếu Cần Thiếu 320,000 75,000 350,000 90,000 400,000 100,000 Nhân lực Nhân lực Nhân lực Nhân lực Nhân lực Nhân lực Thiếu hụt nhân sự luôn là một bài toán nan giải cho thị trường IT, dù xu hướng lương thưởngThiếu hụt nhân sự luôn là một bài toán nan giải cho thị trường IT, dù xu hướng lương thưởngThiếu hụt nhân sự luôn là một bài toán nan giải cho thị trường IT, dù xu hướng lương thưởngThiếu hụt nhân sự luôn là một bài toán nan giải cho thị trường IT, dù xu hướng lương thưởngThiếu hụt nhân sự luôn là một bài toán nan giải cho thị trường IT, dù xu hướng lương thưởngThiếu hụt nhân sự luôn là một bài toán nan giải cho thị trường IT, dù xu hướng lương thưởng và phúc lợi đang tăng mạnh cho ngành này, nhưng nhiều chuyên gia dự báo năm 2019 Việt Nam vẫn sẽ thiếu hụt từ 70.000 đến 90.000 nhân sự IT. fb.com/goupee.vn 18 Nghề lập trình
显示前 20 页。下载资料查看完整内容。
暂无评论。快来抢沙发吧!
评论 (0)
暂无评论。快来抢沙发吧!