" Loạt bài viết này thuộc về Lê Đình Lĩnh Nam.(Nam Le's Blog) " qua diễn đàn BKAV
________________
Được nghỉ 3 ngày nên ngồi suy ngẫm về cái nghiệp lập trình viên mà mình đang theo đuổi.
Tường thuật từ một buổi ăn trưa
Một dịp hiếm hoi tôi được ngồi ăn trưa với mấy đứa bạn học chung hồi đại học. Cả bọn đều đang làm cho các công ty phần mềm lớn, ngót ngét cũng được hơn 2 năm rồi.
- Dạo này bên mày "cày" dữ không?
- Cũng như trước. Bị bên kia nó dí giữ quá.
.......
- Bây giờ tao nhận ra rằng đi làm phần mềm là một sai lầm. Tưởng rằng lương cao chứ thật ra chẳng bằng ai. Tao thấy mấy đứa bạn đi làm mấy ngành khác sướng hơn nhiều. Mấy đứa đi làm sales giàu quá trời.
- Còn mấy đứa bạn tao đi làm bên ngành ngân hàng cũng đã lắm.
- Tính ra thì học y hoặc dược hơi cực nhưng bây giờ đứa nào cũng ngon lành.
Câu chuyện tiếp tục với đề tài liên quan đến các ngành nghề khác. Ở thời buổi này thì cả bọn thấy làm nghế gì cũng sướng hết, vừa có thu nhập cao lại vừa lý thú, trừ cái nghề lập trình viên mà cả bọn đang theo đuổi!
Hỡi ôi! Cái nắng đổ lửa của Sài Gòn cũng không làm tôi choáng bằng nỗi băn khoăn về cái nghề mà mình đang theo đuổi. Ai cũng đổ xô đi học công nghệ thông tin, ai cũng nói ngành này là "hot" nhất, triển vọng nhất, tốt nhất, và sướng nhất. Image Thế mà ngay ở đây, những kỹ sư phần mềm mà kinh nghiệm làm việc còn ít hơn cả "kinh nghiệm" ngồi trên ghế giảng đường Đại học, với bao ước mơ, hoài bão và nhiệt huyết, lại có cái nhìn thực tế thật phũ phàng vậy.
Ok. Phần "tâm trạng" mở đầu như vậy là đủ rồi. Bây giờ tôi thử liệt kê những cái "nghĩ quẩn" của mình về nghề lập trình viên (hay là kỹ sư phần mềm, hay là chuyên viên phát triển phần mềm, hay là thợ code, hay là công nhân kỹ thuật cao, hay là những chuyên viết chat Yahoo! lén,...)
1) Làm phần mềm không có thu nhập cao
Đây là thực thế phũ phàng nhất đang đè nặng lên đầu óc của các lập trình viên chúng ta, nặng đến nỗi đôi lúc có người không thể đè nỗi phím Shift trên bàn phím. Image
Vâng, theo tất cả các khảo sát về tiền lương thì làm việc trong ngành CNTT sẽ có mức lương cao nhất.
Điều đó đúng nhưng chưa đủ. Mức lương khởi đầu thì cao thật, nhưng sau đó thì... Làm sao ta có thể toàn tâm toàn ý fix bug được nếu như biết được đứa bạn cấp III của mình bây giờ đang làm cho các tập đoàn kinh tế nước ngoài với mức thu nhập trên 10 triệu. Làm sao không thể nóng đầu được nếu như biết được lúc mới ra trường mức lương của nó chỉ bằng phân nửa của ta. Image
Vâng, lương khởi điểm thì cao nhưng tăng không nhanh. Có tăng thì cũng tăng không nhiều. Có nơi chịu tăng nhiều thì không có thưởng. Ngoài những cái đó thì chẳng còn thu nhập nào khác, cũng ít có cơ hội để "đánh lẻ" bên ngoài vì công việc chính đã quá bận rộn rồi.
2) Làm phần mềm lại rất cực
Cái cực đầu tiên là áp lực thời gian. Điều này thì không cần phải nói nhiều rồi. Image
Bây giờ nói đến môi trường làm việc. Nếu ai chưa từng làm phần mềm thì có thể hình dung thế này.
Thử tưởng tượng bạn bước vào một khu nhà rộng lớn, rất yên tĩnh và hoàn toàn cách biệt với thế giới bên ngoài. Bạn bước đến cửa ra vào và biết rằng ở đây những người bảo vệ làm việc 24 giời/ngày, suốt 365 ngày/năm. Bước vào bên trong nữa, bạn sẽ thấy ở đấy không khí rất âm u, hoàn toàn không có ánh sáng tự nhiên. Cũng dễ hiểu thôi, vì mọi nơi ở đây đều không có cửa sổ. Nếu có cửa sổ thì cũng luôn bị đóng kín lại.
Bạn bước vào sâu hơn nữa và thấy các căn phòng được ngăn ra, bên trong từng căn phòng lại được ngăn ra thành từng buồng nhỏ hơn nữa. Mỗi buồng đều có diện tích như nhau, rất chật hẹp, và được bài trí, trang bị vật dụng giống hệt nhau. Trong đó có đặt ít nhất một bộ máy vi tính, nhưng vì diện tích không gian quá nhỏ nên nó chiếm gần hết khoảng không, chỉ còn lại vừa đủ cho bạn ngồi vào đó. Bạn sẽ không thể đi lại thoải mái được, không thể nằm ra, thậm chí xoảy trở vận động cũng khó khăn vì quá chật hẹp.
À, bạn cũng phải đeo một cái thẻ có ghi một mã số trên túi áo. Bạn sẽ nhận ra rằng mọi người ở đây cũng đều đeo thẻ có mã số như vậy. Và bạn chỉ có thể tự do trong khoảng không gian chật hẹp của mình; bạn không được tự do đi sang khu vực khác, thậm chí không được sang buồng bên cạnh và đụng đến bất kỳ vật dụng gì ở đó.
Chưa hết, bạn không được làm ồn và ảnh hưởng, dù nhỏ nhất, đến những buồng xung quanh.
Và mỗi ngày sẽ có một người có chức vụ ở đây (tạm gọi là đốc công) đến giao cho bạn một số nhiệm vụ phải hoàn thành. Bạn sẽ làm việc trong buồng của mình, với những dụng cụ cung cấp sẵn. Không như những công việc ở thế giới bên ngoài, ở đây họ thực thi chế độ làm việc "tự do giờ giấc". Điều đó có nghĩa là gì? Điều đó có nghĩa là có những người ở cấp cao hơn nữa giao cho những viên đốc công các nhiệm vụ, và định các nhiệm vụ đó theo đơn vị thời gian là ngày, tuần, hoặc tháng. Đến phiên các đốc công này sẽ chia nhỏ các nhiệm vụ đó ra rồi giao lại cho những người như bạn. Điều kỳ lạ mới xảy ra ở đây. Cái mà viên đốc công nhận là một công việc cần n ngày, nhưng vì bạn được quản lý theo chế độ "tự do giờ giấc", cho nên cái gọi là n ngày đó hoàn toàn không có ý nghĩa đối với bạn. Bạn có thể phải bỏ ra n nhân với 8 giờ để hoàn thành nó, hoặc có thể phải cần đến n nhân với 12 giờ, hoặc n nhân với 18 giờ, hoặc là (n+x+y+z) nhân với 18 giờ. Cái mà viên đốc công cần ở bạn là kết quả cuối cùng.
Được rồi. Tôi tạm dừng ở đây để hỏi bạn một câu:
Bạn nghĩ xem mình đang ở đâu?
Tôi tin rằng chín trên mười người được hỏi sẽ có cùng một câu trả lời: đó là cái nhà tù. Nơi mà người ta tách biệt mọi người ra riêng rẽ; nơi mà hoạt động suốt ngày, suốt đêm, suốt năm; nơi mà người ta nhét thật nhiều người vào ở theo nguyên tắc tối ưu hóa tối đa về diện tích sử dụng và sẵn sàng y sinh mọi yếu tố khác; nơi mà người ta chỉ quan tâm đến công việc có được hoàn thành hay không, chứ không cần chú ý đến chất lượng và thời gian bỏ ra; và là nơi mà với tất cả sự hy sinh và chịu đựng như vậy, những người bỏ ra gần hết thời gian của họ ở đó sẽ chỉ được tưởng thưởng rất ít; và việc tưởng thưởng sẽ phải đợi cho đến khi xong nhiệm vụ, hoặc đến một ngày cố định nào đó trong năm (gọi là ngày ân xá, hay còn gọi là đợt performance appraisal) - (hãy nhớ đến cách mà ba mẹ tưởng thưởng cho bạn: trước, trong khi, và sau khi làm xong việc đều được cả, và thưởng một cách vô điều kiện, nếu bạn đậu đại học vào tháng 8 thì ba mẹ không bao giờ phải đợi đến tháng 12 mới thưởng cho bạn, thậm chí ngay từ tháng 5, tháng 6 cũng có thể khích lệ cho bạn rồi; bây giờ hãy so sanh với cách mà nhà tù trên thưởng cho bạn Image Bạn thhích cái nào hơn? Image
Nhưng ngoài chín người đó vẫn còn một người có câu trả lời hoàn tòan khác: nơi đây là một công ty phần mềm. Người đó không ai khác là một lập trình viên. Image
3) Nghề lập trình chẳng giúp gì cho gia đình được
Người Việt mình đi làm ngoài chuyện kiếm tiền là mục tiêu đầu tiên, còn sau đó thì muốn có thể "giúp đỡ" cho gia đình, họ hàng vào những dịp quan trọng. Ví dụ: chồng của con của em ruột của bà ngoại của tôi làm một chức lớn trong ngành hàng hải ở ngoài Hà Nội, nên gia đình tôi có "vấn đề" gì về chuyển hàng hóa đi nơi khác là OK liền Image; hoặc nếu như chị họ của chị dâu của anh họ xa của bạn làm ở phòng tín dụng ngân hàng, bạn sẽ dễ dàng vay tiền để mua nhà hơn; hoặc là bạn học cũ hồi cấp II của mẹ tôi có một người bạn thân có người em gái ruột làm ở bộ phận Răng - Hàm - Mặt bệnh viện Chợ Rẫy, nên khi đứa cháu trai của anh rể của tôi cần đi nhổ một cái răng sâu, chắc chắn nó sẽ được ưu tiên vào trước mà không phải đợi lâu; ngoài ra, cháu bé này khi xin vào lớp 1 cũng rất dễ dàng vì một người họ hàng xa ở ngoài Bắc của tôi là bạn thời chiến đấu với vợ của ông hiệu trường của trường cấp I trọng điểm trong khu vực. Image
Vậy, tôi có thêm một câu hỏi dành cho bạn:
Tính từ lúc đi làm lập trình viên đến giờ, hãy kể ra một lần nào đó mà gia đình hay họ hàng của bạn đã "nhờ vả" bạn được việc gì đó?
Tôi tin rằng phần lớn các lập trình viên đều không trả lời được câu hỏi này.
Vậy một câu hỏi dễ hơn:
Hãy nhìn xung quanh trong công ty phần mềm mà bạn đang làm, kể cả những người có chức vụ và thâm niên cao nhất, bạn có thấy họ "giúp đỡ" được cho gia đình việc gì chưa?
Hầu hết các lập trình viên cũng không thể trả lời được câu hỏi này.
Bởi vì khi bạn dành gần hết thời gian trong ngày của mình ngồi trước máy vi tính để viết chương trình, bạn sẽ chẳng có được một "lợi thế" nào khác trong cuộc sống, ngay trước mắt và về sau này. Thậm chí một người bạn của tôi đi làm marketing cho tập đoàn hóa mỹ phẩm, thoạt nhìn cũng chẳng có "ưu thế" gì đặc biệt, nhưng thật ra hằng tháng cũng được công ty cho nào là dầu gội đầu, sửa tắm, kem đánh răng, sản phẩm riêng dành cho chi em phụ nữ Image,... hoàn toàn miễn phí. Ông bác làm bảo vệ kiêm soát vé ở sân vận động thì thỉnh thoảng đem được nhiều vé mời về cho gia đình. Người bạn khác làm kiến trúc sư thì có thể vẽ nhà dùm tôi với giá hữu nghị mà chất lượng thật bảo đảm. Còn bạn, bạn có thể đem được cái gì về? Đem cái chương trình mà ngay cả bạn dù viết ra nó cũng không hình dung người ta sẽ sử dụng ra sao? Hay là giúp đỡ họ hàng mình khi họ cần fix một vài cái bug trong một cái phần mềm nào đó. Image Thậm chí, một số bạn của tôi, đi du học lên cao để chuyên tâm làm nghiên cứu, thoạt nhìn thì có vẻ "vô tích sự" đối với gia đình, nhưng ngẫm lại thì cũng đem về nhà được cái danh là "ông tiến sĩ", "ông thạc sĩ". Còn nếu bạn đi làm lập trình viên, dù có được ra nước ngoài đi công tác, thì bà hàng xóm bên cạnh nhà cũng chỉ biết rằng: "thằng đó nó đi xuất khẩu lao động". Image
4) Làm phần mềm thì sẽ ít cơ hội được giao tiếp với bên ngoài
Bởi vì bạn phải dành gần hết thời gian trong cuộc đời của mình trong một không gian chật hẹp, với phía trước là làm màn hình vi tính, hai bên trái và phải là hai vách ngăn, còn ngay phía sau lại là một lập trình viên khác cũng đang ngồi trong thế tù túng giống bạn. Đấy, thế giới của bạn hạn hẹp như thế. Bạn rời mắt khỏi màn hình, nhìn ra xa xăm, và chẳng phải đợi lâu khi mắt của bạn bị dội ngay lại bởi bức tường trước mặt. Lần cuối cùng mà bạn thấy ánh sáng mặt trời khi đang làm việc là khi nào? Phần lớn những người không bao giờ hình dung nổi mình có thể sống trong một căn nhà không bao giờ có ánh sáng tự nhiên, thế mà họ không nhận ra rằng mình dành hết thời gian ban ngày ở một môi trường khủng khiếp như vậy. Image
Đáng buồn thay, ở trong một mội trường như vậy còn khiến cho bạn ít có cơ hội tiếp xúc với thế giới bên ngoài. Bạn sẽ ít khi gặp được những người mà bạn yêu thương, ít có điều kiện làm quen được với những người có thể giúp thay đổi cuộc đời hay sự nghiệp của bạn một cách tích cực. Khi bộ óc của bạn lúc nào cũng chỉ hoạt động trong 2 trạng thái: suy nghĩ logic (lúc bạn làm việc và đi học thêm vào buổi tối) và ngủ, chắc chắn bạn sẽ bị thui chụt đi rất nhiều khả năng cảm nhận cảm xúc của người đang nói chuyện với mình, hay khả năng biểu lộ suy nghĩ của mình một cách mạch lạc và đầy xúc cảm.
Ồ không, bạn không hề cô đơn trong thế giới riêng của mình, vì bây giờ khoa học kỹ thuật đã phát triển rất cao. Có 2 phát minh vĩ đại có thể giúp cho bạn tiếp xúc với thế giới bên ngoài dù bạn ở bất kỳ đâu, bất kỳ khi nào: điện thoại di động và online messenger (ở VN thì có thể gọi luôn là Yahoo! Messenger, hay IM, vì nó quá phổ biến). Nhưng thật ra thì chúng chỉ làm cho thế giới của người lập trình viên tồi tệ thêm thôi. Hãy nghĩ về người mà bạn yêu thương nhất. Có thể bạn đã quá quen thuộc với khả năng gọi đến người đó, hay là nghe được giọng nói của người đó bất kỳ lúc nào, bất kỳ ở đâu. Hãy nghĩ lại thử xem. Thế ngoài giọng nói của người đó, bạn có thể nghe được tâm trạng, đọc được cảm xúc trên khuôn mặt người đó, nghe không chỉ bằng tai mà còn bằng trái tim của mình không? Hãy nghĩ lại thử xem. Có bao giời bạn thấy buồn cười không khi bạn trao đổi với người đó hằng ngày, mà người đó cũng không ở xa bạn, nhưng đến một hôm bạn chợt nhận ra người đó đã ốm đi rất nhiều, có vẻ mệt mỏi hơn rất nhiều, khi bạn có được thời gian hiếm hoi gặp mặt. Hãy thử nghĩ lại xem. Bạn có thể gọi đến người đó bất kỳ khi nào bạn muốn, nhưng liệu điện thoại di động có giúp cho bạn biết đúng lúc nào đó mà người đó cần bạn đến nhất không. Không thể rồi. Chỉ có ánh mắt, cử chỉ, khuôn mặt, hơi thở của người đó mới giúp bạn nghe ra được điều đó. Những tín hiệu này thì còn rất lâu khoa học kỹ thuật mới có thể giúp bạn được.
Hay như tôi đây, trước khi biết đến YM, tôi có thể viết một hơi mười mấy trang giấy, biểu lộ cảm xúc của mình qua từng từ ngữ, chấm câu, ngắt đoạn. Còn bây giờ tôi dùng phần lớn thời gian để suy nghĩ xem chèn cái emotion nào (Image, Image, Image, Image, Image) để thay cho sự bất lực trong cách thể hiện cảm xúc của mình.
Tóm lại, bất kỳ ai cũng cần một cuộc sống cân bằng, vừa có thế giới riêng tư vừa có thể giới bên ngoài. Công việc lập trình viên có thể khiến cho cuộc sống của bạn mất cân bằng. Bạn có thể giải quyết bằng cách chữa trị đúng vào nguyên nhân của vấn đề (sự mất cân bằng), hoặc bạn có thể chọn cách chữa trị vào các triệu chứng (ít giao tiếp, tách biệt với thế giới bên ngoài). Phần lớn lập trình viên đều chọn cách thứ hai, và họ dành thật nhiều thời gian cho điện thoại di động và YM. Bất kỳ ai cũng hiểu điều đơn giản này: không thể tin vào một bác sĩ chỉ biết chữa bệnh bằng cách tìm mọi cách dứt cho được triệu chứng, cái mà bệnh nhân cần là chuẩn đoán tìm ra nguyên nhân và chữa được nguyên nhân của căn bệnh.
Điện thoại di động và YM chỉ giúp lập trình viên chữa trị các triệu chứng. Nó là những phương tiện thông tin tốt, đặc biệt tốt với những ai có cuộc sống cân bằng. Nhưng nó là một thảm họa đối với những ai có cuộc sống không cân bằng. Hầu hết mọi lập trình viên đều có cuộc sống không cân bằng.
5) Làm lập trình viên không "cao cấp" như mọi người nghĩ
Mọi người thương quan niệm ngành CNTT là ngành khoa học trình độ cao, hay là kỹ thuật cao (high-tech). Bởi vậy ai cũng cho rằng làm phần mềm là ngành kỹ thuật cao. Ở đâu sắp mở khu công nghệ cao, ở đấy người ta sẽ tìm cách chào đón các công ty phần mềm vào đầu tiên.
Thực sự không phải như vậy. Làm phần mềm không phải là kỹ thuật cao, ngược lại là khác, nó chính là ngành kỹ thuật thấp (low-tech). Công việc mà tôi đang làm là gì? Đó là chuyển những yêu cầu chưa rõ ràng của khách hàng thành những mã lệnh của máy vi tính. Chấm hết. Chẳng có gì là high-tech cả. Nếu nói thông dịch viên là một ngành kỹ thuật cao thì thật là buồn cười, còn tôi thấy nói rằng làm phần mềm là một ngành kỹ thuật đỉnh cao thì còn buồn cuời hơn.
CNTT là một ngành high-tech, và một khoa học cao cấp. Chính xác.
Nhưng làm phần mềm không phải là CNTT, và càng không phải là high-tech.
Những người nghiên cứu chuyên sâu về các lý thuyết lập trình, về các khoa học cơ bản cho ngành phần mềm là high-tech. Các lĩnh vực về compiler, database, AI (trí tuệ nhân tạo), robot, kể cả về cấu trúc dữ liệu và thuật toán,... đều có thể xem là high-tech. (À, mà hiện nay ở Việt Nam người ta đổ xô học lên cao để đi theo những cái high-tech này, nhưng có thật họ có làm những việc high-tech ở trong đó không thì tôi sẽ có dịp trình bày sau Image).
Còn làm phần mềm lại ở một cấp thấp hơn rất nhiều. Tất cả mọi việc tôi cần làm để chuyển yêu cầu thành các mã lệnh là sử dụng các cấu trúc dữ liệu, các thuật toán đã sẵn có. Chẳng có gì là high-tech cả. Làm phần mềm mà một kỹ nghệ (engineering) chứ không phải là khoa học (science) hay là nghiên cứu (research) gì cả.
Bây giờ trở lại với công việc thực tế của lập trình viên. Các sinh viên ngành CNTT đều mơ mộng về một công việc rất high-tech, trong đó mình có thể tìm ra những thuật toán mạnh mẽ, những lý thuyết mới mẻ, những mô hình độc đáo, sáng tạo. Những chỉ sau 1,2 năm làm việc thì đều vỡ mộng vì thấy rằng công việc thực tế lại quá low-tech, quá "cơ bắp".
Sử dụng lý thuyết sẵn có để làm ra phần mềm chính là kỹ nghệ phần mềm, cái này thì chằng có gì là high-tech theo như cách hiểu của mọi người cả.
Còn nếu muốn tìm ra những lý thuyết mới thì đó là một lĩnh vực hoàn toàn khác. Có thể rất high-tech, nhưng ở VN có lẽ có rất ít công ty tạo điều kiện để làm việc này. Còn ở nước ngoài có thể vào những bộ phần nghiên cứu phát triển ở các công ty lớn mà làm. Mà công việc đó thì cũng không còn được gọi là software engineering nữa.
Vậy thì bị kịch của lập trình viên là gì? Đó là phải làm một công việc rất low-tech trong khi đầu óc lại luôn mơ về một công việc high-tech. Hậu quả: công việc cực khổ, cơ bắp, nhàm chán, và chẳng có gì mới mẻ.
Có thể hiễu nỗi khổ này của lập trình viên bằng cách hình dung một anh chàng lúc nào cũng mơ mộng trở thành một nhà toán học lỗi lạc, trong khi công việc hằng ngày là phải tính toán sổ sách cho một cửa hiệu tạp hóa. Image
----------
Nãy giờ tôi nhìn vào nghề lập trình viên bằng suy nghĩ phiến diện, tiêu cực. Bây giờ thử bỏ chiếc mũ màu đen trên đầu, bỏ cả cặp mắt kính đen Image ra, đội chiếc mũ màu vàng vào, ngước lên bầu trời trên cao, nhìn thấy ánh sáng mặt trời vàng rực. Vậy thử tìm cách nhìn nghề lập trình viên bằng con mắt lạc quan xem thế nào.
Nhưng trước hết thì phải đi uống nước ép trái cây đã.
________________
Được nghỉ 3 ngày nên ngồi suy ngẫm về cái nghiệp lập trình viên mà mình đang theo đuổi.
https://www.youtube.com/watch?v=xIIVGd0dKyI
Su hướng phát triển của ngành công nghệ thông tin
Tường thuật từ một buổi ăn trưa
Một dịp hiếm hoi tôi được ngồi ăn trưa với mấy đứa bạn học chung hồi đại học. Cả bọn đều đang làm cho các công ty phần mềm lớn, ngót ngét cũng được hơn 2 năm rồi.
- Dạo này bên mày "cày" dữ không?
- Cũng như trước. Bị bên kia nó dí giữ quá.
.......
- Bây giờ tao nhận ra rằng đi làm phần mềm là một sai lầm. Tưởng rằng lương cao chứ thật ra chẳng bằng ai. Tao thấy mấy đứa bạn đi làm mấy ngành khác sướng hơn nhiều. Mấy đứa đi làm sales giàu quá trời.
- Còn mấy đứa bạn tao đi làm bên ngành ngân hàng cũng đã lắm.
- Tính ra thì học y hoặc dược hơi cực nhưng bây giờ đứa nào cũng ngon lành.
Câu chuyện tiếp tục với đề tài liên quan đến các ngành nghề khác. Ở thời buổi này thì cả bọn thấy làm nghế gì cũng sướng hết, vừa có thu nhập cao lại vừa lý thú, trừ cái nghề lập trình viên mà cả bọn đang theo đuổi!
Hỡi ôi! Cái nắng đổ lửa của Sài Gòn cũng không làm tôi choáng bằng nỗi băn khoăn về cái nghề mà mình đang theo đuổi. Ai cũng đổ xô đi học công nghệ thông tin, ai cũng nói ngành này là "hot" nhất, triển vọng nhất, tốt nhất, và sướng nhất. Image Thế mà ngay ở đây, những kỹ sư phần mềm mà kinh nghiệm làm việc còn ít hơn cả "kinh nghiệm" ngồi trên ghế giảng đường Đại học, với bao ước mơ, hoài bão và nhiệt huyết, lại có cái nhìn thực tế thật phũ phàng vậy.
Ok. Phần "tâm trạng" mở đầu như vậy là đủ rồi. Bây giờ tôi thử liệt kê những cái "nghĩ quẩn" của mình về nghề lập trình viên (hay là kỹ sư phần mềm, hay là chuyên viên phát triển phần mềm, hay là thợ code, hay là công nhân kỹ thuật cao, hay là những chuyên viết chat Yahoo! lén,...)
1) Làm phần mềm không có thu nhập cao
Đây là thực thế phũ phàng nhất đang đè nặng lên đầu óc của các lập trình viên chúng ta, nặng đến nỗi đôi lúc có người không thể đè nỗi phím Shift trên bàn phím. Image
Vâng, theo tất cả các khảo sát về tiền lương thì làm việc trong ngành CNTT sẽ có mức lương cao nhất.
Điều đó đúng nhưng chưa đủ. Mức lương khởi đầu thì cao thật, nhưng sau đó thì... Làm sao ta có thể toàn tâm toàn ý fix bug được nếu như biết được đứa bạn cấp III của mình bây giờ đang làm cho các tập đoàn kinh tế nước ngoài với mức thu nhập trên 10 triệu. Làm sao không thể nóng đầu được nếu như biết được lúc mới ra trường mức lương của nó chỉ bằng phân nửa của ta. Image
Vâng, lương khởi điểm thì cao nhưng tăng không nhanh. Có tăng thì cũng tăng không nhiều. Có nơi chịu tăng nhiều thì không có thưởng. Ngoài những cái đó thì chẳng còn thu nhập nào khác, cũng ít có cơ hội để "đánh lẻ" bên ngoài vì công việc chính đã quá bận rộn rồi.
2) Làm phần mềm lại rất cực
Cái cực đầu tiên là áp lực thời gian. Điều này thì không cần phải nói nhiều rồi. Image
Bây giờ nói đến môi trường làm việc. Nếu ai chưa từng làm phần mềm thì có thể hình dung thế này.
Thử tưởng tượng bạn bước vào một khu nhà rộng lớn, rất yên tĩnh và hoàn toàn cách biệt với thế giới bên ngoài. Bạn bước đến cửa ra vào và biết rằng ở đây những người bảo vệ làm việc 24 giời/ngày, suốt 365 ngày/năm. Bước vào bên trong nữa, bạn sẽ thấy ở đấy không khí rất âm u, hoàn toàn không có ánh sáng tự nhiên. Cũng dễ hiểu thôi, vì mọi nơi ở đây đều không có cửa sổ. Nếu có cửa sổ thì cũng luôn bị đóng kín lại.
Bạn bước vào sâu hơn nữa và thấy các căn phòng được ngăn ra, bên trong từng căn phòng lại được ngăn ra thành từng buồng nhỏ hơn nữa. Mỗi buồng đều có diện tích như nhau, rất chật hẹp, và được bài trí, trang bị vật dụng giống hệt nhau. Trong đó có đặt ít nhất một bộ máy vi tính, nhưng vì diện tích không gian quá nhỏ nên nó chiếm gần hết khoảng không, chỉ còn lại vừa đủ cho bạn ngồi vào đó. Bạn sẽ không thể đi lại thoải mái được, không thể nằm ra, thậm chí xoảy trở vận động cũng khó khăn vì quá chật hẹp.
À, bạn cũng phải đeo một cái thẻ có ghi một mã số trên túi áo. Bạn sẽ nhận ra rằng mọi người ở đây cũng đều đeo thẻ có mã số như vậy. Và bạn chỉ có thể tự do trong khoảng không gian chật hẹp của mình; bạn không được tự do đi sang khu vực khác, thậm chí không được sang buồng bên cạnh và đụng đến bất kỳ vật dụng gì ở đó.
Chưa hết, bạn không được làm ồn và ảnh hưởng, dù nhỏ nhất, đến những buồng xung quanh.
Và mỗi ngày sẽ có một người có chức vụ ở đây (tạm gọi là đốc công) đến giao cho bạn một số nhiệm vụ phải hoàn thành. Bạn sẽ làm việc trong buồng của mình, với những dụng cụ cung cấp sẵn. Không như những công việc ở thế giới bên ngoài, ở đây họ thực thi chế độ làm việc "tự do giờ giấc". Điều đó có nghĩa là gì? Điều đó có nghĩa là có những người ở cấp cao hơn nữa giao cho những viên đốc công các nhiệm vụ, và định các nhiệm vụ đó theo đơn vị thời gian là ngày, tuần, hoặc tháng. Đến phiên các đốc công này sẽ chia nhỏ các nhiệm vụ đó ra rồi giao lại cho những người như bạn. Điều kỳ lạ mới xảy ra ở đây. Cái mà viên đốc công nhận là một công việc cần n ngày, nhưng vì bạn được quản lý theo chế độ "tự do giờ giấc", cho nên cái gọi là n ngày đó hoàn toàn không có ý nghĩa đối với bạn. Bạn có thể phải bỏ ra n nhân với 8 giờ để hoàn thành nó, hoặc có thể phải cần đến n nhân với 12 giờ, hoặc n nhân với 18 giờ, hoặc là (n+x+y+z) nhân với 18 giờ. Cái mà viên đốc công cần ở bạn là kết quả cuối cùng.
Được rồi. Tôi tạm dừng ở đây để hỏi bạn một câu:
Bạn nghĩ xem mình đang ở đâu?
Tôi tin rằng chín trên mười người được hỏi sẽ có cùng một câu trả lời: đó là cái nhà tù. Nơi mà người ta tách biệt mọi người ra riêng rẽ; nơi mà hoạt động suốt ngày, suốt đêm, suốt năm; nơi mà người ta nhét thật nhiều người vào ở theo nguyên tắc tối ưu hóa tối đa về diện tích sử dụng và sẵn sàng y sinh mọi yếu tố khác; nơi mà người ta chỉ quan tâm đến công việc có được hoàn thành hay không, chứ không cần chú ý đến chất lượng và thời gian bỏ ra; và là nơi mà với tất cả sự hy sinh và chịu đựng như vậy, những người bỏ ra gần hết thời gian của họ ở đó sẽ chỉ được tưởng thưởng rất ít; và việc tưởng thưởng sẽ phải đợi cho đến khi xong nhiệm vụ, hoặc đến một ngày cố định nào đó trong năm (gọi là ngày ân xá, hay còn gọi là đợt performance appraisal) - (hãy nhớ đến cách mà ba mẹ tưởng thưởng cho bạn: trước, trong khi, và sau khi làm xong việc đều được cả, và thưởng một cách vô điều kiện, nếu bạn đậu đại học vào tháng 8 thì ba mẹ không bao giờ phải đợi đến tháng 12 mới thưởng cho bạn, thậm chí ngay từ tháng 5, tháng 6 cũng có thể khích lệ cho bạn rồi; bây giờ hãy so sanh với cách mà nhà tù trên thưởng cho bạn Image Bạn thhích cái nào hơn? Image
Nhưng ngoài chín người đó vẫn còn một người có câu trả lời hoàn tòan khác: nơi đây là một công ty phần mềm. Người đó không ai khác là một lập trình viên. Image
3) Nghề lập trình chẳng giúp gì cho gia đình được
Người Việt mình đi làm ngoài chuyện kiếm tiền là mục tiêu đầu tiên, còn sau đó thì muốn có thể "giúp đỡ" cho gia đình, họ hàng vào những dịp quan trọng. Ví dụ: chồng của con của em ruột của bà ngoại của tôi làm một chức lớn trong ngành hàng hải ở ngoài Hà Nội, nên gia đình tôi có "vấn đề" gì về chuyển hàng hóa đi nơi khác là OK liền Image; hoặc nếu như chị họ của chị dâu của anh họ xa của bạn làm ở phòng tín dụng ngân hàng, bạn sẽ dễ dàng vay tiền để mua nhà hơn; hoặc là bạn học cũ hồi cấp II của mẹ tôi có một người bạn thân có người em gái ruột làm ở bộ phận Răng - Hàm - Mặt bệnh viện Chợ Rẫy, nên khi đứa cháu trai của anh rể của tôi cần đi nhổ một cái răng sâu, chắc chắn nó sẽ được ưu tiên vào trước mà không phải đợi lâu; ngoài ra, cháu bé này khi xin vào lớp 1 cũng rất dễ dàng vì một người họ hàng xa ở ngoài Bắc của tôi là bạn thời chiến đấu với vợ của ông hiệu trường của trường cấp I trọng điểm trong khu vực. Image
Vậy, tôi có thêm một câu hỏi dành cho bạn:
Tính từ lúc đi làm lập trình viên đến giờ, hãy kể ra một lần nào đó mà gia đình hay họ hàng của bạn đã "nhờ vả" bạn được việc gì đó?
Tôi tin rằng phần lớn các lập trình viên đều không trả lời được câu hỏi này.
Vậy một câu hỏi dễ hơn:
Hãy nhìn xung quanh trong công ty phần mềm mà bạn đang làm, kể cả những người có chức vụ và thâm niên cao nhất, bạn có thấy họ "giúp đỡ" được cho gia đình việc gì chưa?
Hầu hết các lập trình viên cũng không thể trả lời được câu hỏi này.
Bởi vì khi bạn dành gần hết thời gian trong ngày của mình ngồi trước máy vi tính để viết chương trình, bạn sẽ chẳng có được một "lợi thế" nào khác trong cuộc sống, ngay trước mắt và về sau này. Thậm chí một người bạn của tôi đi làm marketing cho tập đoàn hóa mỹ phẩm, thoạt nhìn cũng chẳng có "ưu thế" gì đặc biệt, nhưng thật ra hằng tháng cũng được công ty cho nào là dầu gội đầu, sửa tắm, kem đánh răng, sản phẩm riêng dành cho chi em phụ nữ Image,... hoàn toàn miễn phí. Ông bác làm bảo vệ kiêm soát vé ở sân vận động thì thỉnh thoảng đem được nhiều vé mời về cho gia đình. Người bạn khác làm kiến trúc sư thì có thể vẽ nhà dùm tôi với giá hữu nghị mà chất lượng thật bảo đảm. Còn bạn, bạn có thể đem được cái gì về? Đem cái chương trình mà ngay cả bạn dù viết ra nó cũng không hình dung người ta sẽ sử dụng ra sao? Hay là giúp đỡ họ hàng mình khi họ cần fix một vài cái bug trong một cái phần mềm nào đó. Image Thậm chí, một số bạn của tôi, đi du học lên cao để chuyên tâm làm nghiên cứu, thoạt nhìn thì có vẻ "vô tích sự" đối với gia đình, nhưng ngẫm lại thì cũng đem về nhà được cái danh là "ông tiến sĩ", "ông thạc sĩ". Còn nếu bạn đi làm lập trình viên, dù có được ra nước ngoài đi công tác, thì bà hàng xóm bên cạnh nhà cũng chỉ biết rằng: "thằng đó nó đi xuất khẩu lao động". Image
4) Làm phần mềm thì sẽ ít cơ hội được giao tiếp với bên ngoài
Bởi vì bạn phải dành gần hết thời gian trong cuộc đời của mình trong một không gian chật hẹp, với phía trước là làm màn hình vi tính, hai bên trái và phải là hai vách ngăn, còn ngay phía sau lại là một lập trình viên khác cũng đang ngồi trong thế tù túng giống bạn. Đấy, thế giới của bạn hạn hẹp như thế. Bạn rời mắt khỏi màn hình, nhìn ra xa xăm, và chẳng phải đợi lâu khi mắt của bạn bị dội ngay lại bởi bức tường trước mặt. Lần cuối cùng mà bạn thấy ánh sáng mặt trời khi đang làm việc là khi nào? Phần lớn những người không bao giờ hình dung nổi mình có thể sống trong một căn nhà không bao giờ có ánh sáng tự nhiên, thế mà họ không nhận ra rằng mình dành hết thời gian ban ngày ở một môi trường khủng khiếp như vậy. Image
Đáng buồn thay, ở trong một mội trường như vậy còn khiến cho bạn ít có cơ hội tiếp xúc với thế giới bên ngoài. Bạn sẽ ít khi gặp được những người mà bạn yêu thương, ít có điều kiện làm quen được với những người có thể giúp thay đổi cuộc đời hay sự nghiệp của bạn một cách tích cực. Khi bộ óc của bạn lúc nào cũng chỉ hoạt động trong 2 trạng thái: suy nghĩ logic (lúc bạn làm việc và đi học thêm vào buổi tối) và ngủ, chắc chắn bạn sẽ bị thui chụt đi rất nhiều khả năng cảm nhận cảm xúc của người đang nói chuyện với mình, hay khả năng biểu lộ suy nghĩ của mình một cách mạch lạc và đầy xúc cảm.
Ồ không, bạn không hề cô đơn trong thế giới riêng của mình, vì bây giờ khoa học kỹ thuật đã phát triển rất cao. Có 2 phát minh vĩ đại có thể giúp cho bạn tiếp xúc với thế giới bên ngoài dù bạn ở bất kỳ đâu, bất kỳ khi nào: điện thoại di động và online messenger (ở VN thì có thể gọi luôn là Yahoo! Messenger, hay IM, vì nó quá phổ biến). Nhưng thật ra thì chúng chỉ làm cho thế giới của người lập trình viên tồi tệ thêm thôi. Hãy nghĩ về người mà bạn yêu thương nhất. Có thể bạn đã quá quen thuộc với khả năng gọi đến người đó, hay là nghe được giọng nói của người đó bất kỳ lúc nào, bất kỳ ở đâu. Hãy nghĩ lại thử xem. Thế ngoài giọng nói của người đó, bạn có thể nghe được tâm trạng, đọc được cảm xúc trên khuôn mặt người đó, nghe không chỉ bằng tai mà còn bằng trái tim của mình không? Hãy nghĩ lại thử xem. Có bao giời bạn thấy buồn cười không khi bạn trao đổi với người đó hằng ngày, mà người đó cũng không ở xa bạn, nhưng đến một hôm bạn chợt nhận ra người đó đã ốm đi rất nhiều, có vẻ mệt mỏi hơn rất nhiều, khi bạn có được thời gian hiếm hoi gặp mặt. Hãy thử nghĩ lại xem. Bạn có thể gọi đến người đó bất kỳ khi nào bạn muốn, nhưng liệu điện thoại di động có giúp cho bạn biết đúng lúc nào đó mà người đó cần bạn đến nhất không. Không thể rồi. Chỉ có ánh mắt, cử chỉ, khuôn mặt, hơi thở của người đó mới giúp bạn nghe ra được điều đó. Những tín hiệu này thì còn rất lâu khoa học kỹ thuật mới có thể giúp bạn được.
Hay như tôi đây, trước khi biết đến YM, tôi có thể viết một hơi mười mấy trang giấy, biểu lộ cảm xúc của mình qua từng từ ngữ, chấm câu, ngắt đoạn. Còn bây giờ tôi dùng phần lớn thời gian để suy nghĩ xem chèn cái emotion nào (Image, Image, Image, Image, Image) để thay cho sự bất lực trong cách thể hiện cảm xúc của mình.
Tóm lại, bất kỳ ai cũng cần một cuộc sống cân bằng, vừa có thế giới riêng tư vừa có thể giới bên ngoài. Công việc lập trình viên có thể khiến cho cuộc sống của bạn mất cân bằng. Bạn có thể giải quyết bằng cách chữa trị đúng vào nguyên nhân của vấn đề (sự mất cân bằng), hoặc bạn có thể chọn cách chữa trị vào các triệu chứng (ít giao tiếp, tách biệt với thế giới bên ngoài). Phần lớn lập trình viên đều chọn cách thứ hai, và họ dành thật nhiều thời gian cho điện thoại di động và YM. Bất kỳ ai cũng hiểu điều đơn giản này: không thể tin vào một bác sĩ chỉ biết chữa bệnh bằng cách tìm mọi cách dứt cho được triệu chứng, cái mà bệnh nhân cần là chuẩn đoán tìm ra nguyên nhân và chữa được nguyên nhân của căn bệnh.
Điện thoại di động và YM chỉ giúp lập trình viên chữa trị các triệu chứng. Nó là những phương tiện thông tin tốt, đặc biệt tốt với những ai có cuộc sống cân bằng. Nhưng nó là một thảm họa đối với những ai có cuộc sống không cân bằng. Hầu hết mọi lập trình viên đều có cuộc sống không cân bằng.
5) Làm lập trình viên không "cao cấp" như mọi người nghĩ
Mọi người thương quan niệm ngành CNTT là ngành khoa học trình độ cao, hay là kỹ thuật cao (high-tech). Bởi vậy ai cũng cho rằng làm phần mềm là ngành kỹ thuật cao. Ở đâu sắp mở khu công nghệ cao, ở đấy người ta sẽ tìm cách chào đón các công ty phần mềm vào đầu tiên.
Thực sự không phải như vậy. Làm phần mềm không phải là kỹ thuật cao, ngược lại là khác, nó chính là ngành kỹ thuật thấp (low-tech). Công việc mà tôi đang làm là gì? Đó là chuyển những yêu cầu chưa rõ ràng của khách hàng thành những mã lệnh của máy vi tính. Chấm hết. Chẳng có gì là high-tech cả. Nếu nói thông dịch viên là một ngành kỹ thuật cao thì thật là buồn cười, còn tôi thấy nói rằng làm phần mềm là một ngành kỹ thuật đỉnh cao thì còn buồn cuời hơn.
CNTT là một ngành high-tech, và một khoa học cao cấp. Chính xác.
Nhưng làm phần mềm không phải là CNTT, và càng không phải là high-tech.
Những người nghiên cứu chuyên sâu về các lý thuyết lập trình, về các khoa học cơ bản cho ngành phần mềm là high-tech. Các lĩnh vực về compiler, database, AI (trí tuệ nhân tạo), robot, kể cả về cấu trúc dữ liệu và thuật toán,... đều có thể xem là high-tech. (À, mà hiện nay ở Việt Nam người ta đổ xô học lên cao để đi theo những cái high-tech này, nhưng có thật họ có làm những việc high-tech ở trong đó không thì tôi sẽ có dịp trình bày sau Image).
Còn làm phần mềm lại ở một cấp thấp hơn rất nhiều. Tất cả mọi việc tôi cần làm để chuyển yêu cầu thành các mã lệnh là sử dụng các cấu trúc dữ liệu, các thuật toán đã sẵn có. Chẳng có gì là high-tech cả. Làm phần mềm mà một kỹ nghệ (engineering) chứ không phải là khoa học (science) hay là nghiên cứu (research) gì cả.
Bây giờ trở lại với công việc thực tế của lập trình viên. Các sinh viên ngành CNTT đều mơ mộng về một công việc rất high-tech, trong đó mình có thể tìm ra những thuật toán mạnh mẽ, những lý thuyết mới mẻ, những mô hình độc đáo, sáng tạo. Những chỉ sau 1,2 năm làm việc thì đều vỡ mộng vì thấy rằng công việc thực tế lại quá low-tech, quá "cơ bắp".
Sử dụng lý thuyết sẵn có để làm ra phần mềm chính là kỹ nghệ phần mềm, cái này thì chằng có gì là high-tech theo như cách hiểu của mọi người cả.
Còn nếu muốn tìm ra những lý thuyết mới thì đó là một lĩnh vực hoàn toàn khác. Có thể rất high-tech, nhưng ở VN có lẽ có rất ít công ty tạo điều kiện để làm việc này. Còn ở nước ngoài có thể vào những bộ phần nghiên cứu phát triển ở các công ty lớn mà làm. Mà công việc đó thì cũng không còn được gọi là software engineering nữa.
Vậy thì bị kịch của lập trình viên là gì? Đó là phải làm một công việc rất low-tech trong khi đầu óc lại luôn mơ về một công việc high-tech. Hậu quả: công việc cực khổ, cơ bắp, nhàm chán, và chẳng có gì mới mẻ.
Có thể hiễu nỗi khổ này của lập trình viên bằng cách hình dung một anh chàng lúc nào cũng mơ mộng trở thành một nhà toán học lỗi lạc, trong khi công việc hằng ngày là phải tính toán sổ sách cho một cửa hiệu tạp hóa. Image
----------
Nãy giờ tôi nhìn vào nghề lập trình viên bằng suy nghĩ phiến diện, tiêu cực. Bây giờ thử bỏ chiếc mũ màu đen trên đầu, bỏ cả cặp mắt kính đen Image ra, đội chiếc mũ màu vàng vào, ngước lên bầu trời trên cao, nhìn thấy ánh sáng mặt trời vàng rực. Vậy thử tìm cách nhìn nghề lập trình viên bằng con mắt lạc quan xem thế nào.
Nhưng trước hết thì phải đi uống nước ép trái cây đã.