Mặt tối của ngành công nghiệp IT

  • Blog
  • |
  • Thursday, January 14, 2016
Ngành lập trình kể ra cũng có khá nhiều cái sướng: Dễ xin việc, công việc thú vị, tiếp xúc nhiều cái mới, mức lương khá. Tuy vậy, nó có không ít mặt tối mà chỉ những người có thâm niên, tiếp xúc lâu với nghề mới trải nghiệm và nhận ra được. Bài viết này lấy cảm hứng từ course cùng tên trên pluralsight: Technology Career Dark Side, nhằm giúp bạn đọc có cái nhìn khách quan hơn về ngành IT, cũng như tự rút ra cách “sống sót” cho bản thân mình.
 

1. Công nghệ liên tục thay đổi – Ai là người có lỗi

 
Trong ngành lập trình, công nghệ là thứ liên tục thay đổi. Những công nghệ mới liên tục ra đời thay thế công nghệ cũ, làm kiến thức rất dễ lỗi thời vì. Do đó, người lập trình viên phải liên tục học hỏi, nếu không họ sẽ trở nên lạc hậu.
 
Nguyên nhân sâu xa đằng sau chuyện này chính là Tiền. Tại sao mỗi năm FIFA và PES đều ra bản mới? Để bán lấy tiền. Tại sao mỗi năm Iphone lại ra phiên bản mới? Để hút máu người dùng, đế kiếm tiền. Đó cũng là lý do các hãng công nghệ liên tục đưa ra các sản phẩm/công nghệ mới để bán lấy tiền: C# thay đổi từ 2.0 tới 5.0, Windows mỗi 2-3 năm lại ra bản mới, Visual Studio và SQL Server cũng tương tự.
 
Nhìn chung, sự thay đổi này có mặt tích cực của nó: Các framework/library mới có nhiều tính năng hơn, giúp việc code nhanh và dễ dàng hơn. Tuy nhiên, điều đó cũng đi kèm không ích phiền toái: Mỗi version lại có chút ít cập nhật và thay đổi, làm việc nâng cấp/tích hợp rất mệt mỏi và mất thời gian. Một ví dụ điển hình là ngôn ngữ Python: Python có 2 phiên bản 2 và 3. Phiên bản 3 tích hợp quá nhiều thay đổi, nhiều thư viện của python 2 không chạy được trên bản 3, … do đó cộng đồng Python vẫn tranh cãi về việc dùng phiên bản nào. Phiền toán lớn nhất chính là: Tốn công sức, thời gian mà lập trình viên đã bỏ ra để học ngôn ngữ đó.
 
Đôi khi một framework/library chết, không được hỗ trợ nữa (VB6, Silverlight). Thử tượng tượng bây giờ MS SQL không được phát triển tiếp xem, một đống dự án sử dụng MS SQL sẽ lao đao.  Đó là lý do các ngôn ngữ/công nghệ như Java, C#, PHP, MySQL vẫn được ưa chuộng so với NodeJS, MongoDB, … vì chúng có tuổi đời lâu hơn, đáng tin tưởng hơn.
 
Vòng đời của một công nghệ: Một công nghệ mới ra đời, được nhiều công ty sử dụng, nhu cầu tuyển dụng cao nên nhiều người theo học. Qua năm tháng, công nghệ chết dần, không ai tuyển nữa nên ít người học. Tuy nhiên, ứng dụng của các công ty được xây dựng bằng các công nghệ cũ, họ vẫn cần developer để bảo trì/nâng cấp ứng dụng. Đó là lý do các developer Cobol, VB6, Fortran vẫn rất được giá (Bọn Nhật có nhiều hệ thống lớn và siêu lớn xây dựng bằng các công nghệ này, toàn outsource cho dân VN bảo trì).
 

2. Hackathon và Stackoverflow không “tốt đẹp” như bạn nghĩ

 
Hackathon là một cuộc thi code nho nhỏ, thường tổ chức vào hai ngày cuối tuần. Các lập trình viên sẽ lập thành một team khoảng 3-5 người để xây dựng một sản phẩm. Giải thưởng (khá hấp dẫn) sẽ được trao cho các đội xuất sắc nhất.
 
Mặt tốt của hackathon rất nhiều và dễ thấy. Các sự kiện này thường rất vui và có ích cho lập trình viên: Họ được vui chơi, được code, được tặng quà, còn được xây dựng quan hệ, kết nối với cộng đồng. Tuy nhiên, mặt xấu thì ít người để ý. Hackathon được tổ chức với lý do là “phát triển cộng đồng, giới thiệu công nghệ”. Thật ra, đây là một cách rẻ mạt để chôm thời gian và công sức của lập trình viên. Luật bản quyền cũng ít khi được coi trọng (ứng dụng tham gia hackathon, mặc định bản quyền thuộc về hackathon) nên bạn có thể dễ dàng bị chôm/đạo ý tưởng mà không làm được gì.
 
Stackoverflow là một mạng hỏi-đáp dành cho lập trình viên. Tham gia stackoverflow sẽ giúp bạn nâng cao trình độ và kiến thức. Tuy nhiên, tham gia stackoverflow, bạn đã vô tình tham gia vào đội ngũ “chuyên gia” miễn phí, cho stackoverflow thu tiền quảng cáo. Nó còn áp dụng Gamification (Điểm, huy hiệu) để dụ dỗ bạn đóng góp thời gian, công sức. Một câu trả lời trên stackoverflow tiết kiệm cho bạn 1 tiếng fix lỗi, bạn bỏ ra 15 phút ngồi đóng góp lại cũng ko sao, nhưng đừng bỏ 3, 4 tiếng vào đó nhé.
 
Dù vậy, mình vẫn khuyên các bạn tham dự các hackathon và stackoverflow, chúng rất hữu ích với mọi lập trình viên. Nhưng nhớ biết nhận thức và dè chừng những mặt xấu của nó nhé.
 
 
 

3. Vấn đề outsource và bóc lột

 
Ở Việt Nam có khá nhiều công ty outsource (FPT, Harvey Nash, …). Các công ty này cung cấp phần lớn công ăn việc làm cho lập trình viên, đóng góp vào GDP nước nhà. Outsource cũng không phải hoàn toàn xấu, nhưng quá lệ thuộc vào outsource, chỉ cắm đầu vào gia công phần mềm, thì ngành IT nước nhà sẽ rất khó phát triển.
 
Vì sao các công ty nước ngoài lại outsource, chung quy cũng (lại) là vì tiền. Giá nhân sự của Việt Nam, Ấn Độ rẻ hơn lập trình viên nước ngoài nhiều. Các công ty outsource Việt Nam ăn phần lớn, trả một phần nhỏ cho lập trình viên. Đó là lý do các bác PM, quản lý, cấp cao lương thưởng cao chót vót, còn developer quèn thì lương nhỏ giọt. Mình khuyên các bạn nên học giỏi tiếng Anh rồi tự tìm cách bán thân – qua nước ngoài làm. Mình quen vài ông anh làm cho công ty nước ngoài, 1 ông qua Singapore làm, lương cao mà không lo bị bóc lột như outsource.
 
Nhắc tới chuyện bóc lột, hình thức bóc lột “dã man” nhất là làm thêm giờ, còn gọi là OT (Overtime). Nếu bạn xui xẻo rơi vào dự án “cháy”, OT là chuyện như cơm bữa. Bạn sẽ phải đi làm tới 8-9 giờ tối, cả thứ 7 chủ Nhật. Điều này ảnh hưởng không nhỏ đến sức khỏe, quan hệ xã hội và gia đình. Mình từng nghe “truyền thuyết” về 1 team cũ ở BU26 FPT, do OT ăn mì tôm riết mà cả nhóm bị mỡ trong máu. Về chuyện tiền nong, có nhiều công ty trả tiền OT rất sòng phẳng, cũng có nhiều nơi quy ra ngày phép, hoặc xù luôn. Làm với Nhật thì không cái khái niệm OT, đi làm 9-10h tối mới về là “văn hóa làm việc” bên đó.
 

4. Giỏi technical không chưa đủ

 
Nhiều bạn ngáo ngơ mới ra trường vẫn tưởng điều này là đúng, thấy mình hơi giỏi nên tỏ thái độ khi phỏng vấn. Môi trường làm việc đòi hỏi nhiều thứ hơn cả khả năng code, đó là: khả năng giao tiếp, khả năng trình bày/thuyết trình, kĩ năng thương thảo, khả năng làm việc nhóm, … Tới những cấp cao hơn như team lead, quản lý, bạn còn phải biết cách quản lý, chia việc, cách thuyết phục, nói cho người khác nghe. Khả năng code là bắt buộc, nhưng chỉ code không là chưa đủ nếu bạn muốn sống sót và thăng tiến trong ngành này.
 

5. Cấp trên thường “đéo biết gì cả”

 
Đôi khi nói cấp trên “đéo biết gì” cũng không sai. Một sự thật buồn cười của ngành mình là: Nếu giỏi technical, developer sẽ được đẩy lên làm quản lý. Ở cấp quản lý, họ ít có thời gian code, mà phải lo chia việc, quản lý nhân sự, quản lý dự án,… toàn những việc trước giờ họ chẳng bao giờ làm. Ở cương vị mới, họ cũng phải học dần dần về quản lý, giống như chúng ta mới bắt đầu học code vậy thôi.
 
Các bạn lập trình viên thường có suy nghĩ rằng “Ông team leader/PM có code bao giờ đâu, công nghệ mới cũng *éo biết”. Điều này đúng, vì họ còn phải lo nhiều việc khác: nhân sự, tài nguyên, phỏng vấn ứng viên, hoặc đấu đá nội bộ công ty ,… không có đủ thời gian để trau dồi technical. Đôi khi tranh cãi về một vấn đề, bạn chỉ thấy vấn đề technical, họ còn phải chú ý đển nhiều khía cạnh khác như: sắp xếp team, tiến độ dự án, trình độ thành viên, …
 
Do vậy, đừng giữ thái độ thù hằn, cay cú hay xem thường cấp trên. Hãy cứ cố gắng thấu hiểu và học hỏi họ đi, biết đâu sẽ có lúc bạn “bị” đẩy lên làm quản lý như họ thôi. Gợi ý nhỏ: Nếu cấp trên thật sự “ngu” và bạn không chiụ nổi, cứ thoải mái chuyển công ty/chuyển phòng ban khác thôi, ngành mình cũng dễ xin việc lắm.
 

6. Lập trình viên dần đang mất giá

 
Hôm trước, mình nhận được mail giới thiệu việc làm thêm của vlance – Một trang web cho freelancer Việt Nam. Nhìn giá cả các dịch vụ IT ở Việt Nam mà thấy thương: Một ứng dụng chỉ có giá 2 triệu, một website chỉ khoảng 1 triệu. Một phần do các công ty IT ở Việt Nam phá giá, làm mọi thứ từ web tới app với giá rẻ mạt. Một phần do các bạn developer Việt Nam đang bán rẻ chất xám, bán rẻ sức lao động của chính mình.
 
Ở đầu bài, mình từng nói rằng ngành lập trình viên có mức lương kha khá. Với các vị trí như senior, team leader, PM thì lương 1000-3000$/tháng là chuyện bình thường. Tuy nhiên, mức lương ở các vị trí thấp hơn lại … khá là thấp. Một phần là do nhiều bạn trẻ đổ xô đi học công nghệ thông tin, học lập trình, khi ra trường lại không đủ trình độ, đành ngậm ngùi làm những công việc nhàm chán, mức lương thấp.
 
Công nghệ hiện đại làm mọi người dễ tiếp cận việc lập trình hơn, nên người dùng có thể làm web, làm ứng dụng dễ dàng. Lập trình viên thì ngày càng “lười” hơn, “nhàn” hơn nhờ các framework. Trong tương lai, có thể ngành lập trình sẽ không còn hot như bây giờ, lập trình viên sẽ rớt giá “thê thảm”.
 

Kết luận

 
Nghe mình “hù” nãy giờ, chắc bạn cũng hơi nghi ngại rồi phải không? Đừng lo, hãy áp dụng một số lời khuyên dưới đây của mình.
 
Nắm vững kiến thức nền tảng, học nhiều ngôn ngữ chứ đừng ôm khư khư 1 ngôn ngữ. C++, C#, Java, … có hay đến đâu cũng chỉ là công cụ. Quan trọng là bạn làm được gì với ngôn ngữ mình biết.
 
Ngành mình có rất nhiều developer, nhưng có rất ít developer giỏi. Hãy tự trao dồi kiến thức và kĩ năng để tự nâng giá bản thân nhé, đã giỏi thì không lo thất nghiệp hay lương thấp.
 
Xác định con đường mình muốn đi: Manager hay Technical, hoặc mở công ty riêng. Học thêm mấy thứ ngoài luồng như: quản trị, kinh tế, khởi nghiệp,… sau này sẽ có ích lắm đấy.
 
Sống khôn hơn và đừng ngáo ngơ nữa. Chịu khó đi xã giao, tạo dựng danh tiếng, quan hệ. Hãy đọc blog của một số developer nổi tiếng để học cách suy nghĩ, cách làm việc của họ

 

Related Post


15 mẹo giúp sử dụng Chrome DevTools hiệu quả
Friday, November 6, 2015
Google Chrome là trình duyệt web phổ biến thường được nhiều lập trình viên sử dụng. Trong đó có nhiều tính năng hỗ trợ nổi bật như trực tiếp chỉnh sửa CSS (live-editing CSS), sử dụng console và debugger. Trong bài viết này, SSS sẽ giới thiệu đến bạn 15 mẹo giúp sử dụng Chrome DevTools hiệu quả và cải thiện quy trình làm việc tốt hơn
Design Pattern là gì?
Sunday, September 6, 2015
Design Pattern là một kỹ thuật dành cho lập trình hướng đối tượng. Nó cung cấp cho ta cách tư duy trong từng tình huống của việc lập trình hướng đối tượng, và phân tích thiết kế hệ thống phần mềm. Nó cần thiết cho cả các nhà lập trình và nhà phân tích thiết kế....
Search

Đăng ký nhận bài mới


Category

Blog Archive