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
ooOoo
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 đã.
Tường thuật từ một buổi ăn tối
Lại có một dịp khác tôi có dịp đi ăn tối với các người bạn của một người bạn của tôi. Thành phần thì đủ cả: dược sĩ, nhân viên bán hàng, marketing, giáo viên, người không có việc làm và người chưa có việc làm.
– Biết vậy hồi trước tao học ngành CNTT thì bây giờ sướng rồi.
Tôi giật mình và tiếp tục chăm chú lắng nghe.
– Ừ! – Một người khác nói. – Làm cái đó lương cao mà không phải lo lắng, chạy vạy nhiều.
– Làm ngành của tao nhìn bên ngoài thì đã thật, nhưng nhiều cái mình không thích nhưng cứ phải ráng mà chịu đựng, nhìn bọn làm phần mềm thảnh thơi mà thấy thèm.
À há! Khi mình thay đổi cách nhìn vào cùng một việc, mình sẽ thấy được nhiều điều quan trọng hơn. Vậy thì thử đội mũ vàng vào và nhìn mọi việc một cách tích cực và yêu đời xem.
1) Làm phần mềm thật là vui
Không có nhiều công việc trên đời này tự bản thân nó đem lại niềm vui như khi làm phần mềm.
Bằng chứng thì rất dễ tìm thấy. Hãy đến một công ty phần mềm vào buổi tối, vào ngày cuối tuần, thậm chí là ngày lễ, bạn sẽ thấy có một vài nhân viên vẫn đang ở công ty mày mò tìm hiểu, viết thêm một số phần mềm chẳng liên quan đến công việc, cũng chẳng để kiếm tiền. Họ mày mò chỉ đơn giản vì họ thích, vì nó hay, vì nó vui. Ngoài ra, những công nghệ mới liên quan đến phần mềm, và ngay cả bản thân chiếc máy vi tính, đều có thể đem lại niềm vui và sự thích thú cho người sử dụng. Tôi luôn thấy nhiều nhân viên ở lại công ty để duyệt web, chơi game bằng máy vi tính. Ngoài ra còn có vô số điều lý thú khác để làm với máy vi tính.
Ngược lại, tôi chưa bao giờ thấy một nhân viên kế toán hay tài chính ở lại công ty để “chơi” với mấy cái sổ sách cả. Image Tôi cũng chưa thấy ở nhà máy nào có công nhân tình nguyệnở lại để “quậy” với mấy cái máy mọc cả. Hay những người làm sales, họ sẽ làm gì sau khi hoàn thành công việc? Chẳng có gì trong công việc để “giải trí” cho họ cả. Có lẽ bia, rượu, thuốc lá, đồ nhắm thì vui hơn chăng? Image
Dĩ nhiên cũng có người ở lại để mày mò tìm hiểu thêm về công việc. Nhưng mục đích chủ yếu là để nâng cao kiến thức chuyên môn và thăng tiến. Đây là một phạm trù khác. Cái mà tôi muốn nói đến là niềm vui, là động lực tự nhiên, vô tư.
Tôi còn nhớ khi mình tham gia đội dự tuyển bóng đá ỏ trường hồi cấp II, sau giờ tập luyện mệt nhọc, tất cả chúng tôi đều ở lại để chia làm hai phe đá banh tiếp. Chẳng phải để rèn luyện gì cả, chỉ bởi vì đá banh thì vui, chơi với bạn bè thì rất vui.
Tôi còn quen một anh bạn làm nhân viên trong bệnh viện, chưa hề đi học chính thức về tin học, nhưng khi rảnh rỗi vẫn tự đọc sách để việt máy chương trình bằng VB để phục vụ cho công việc của mình và đồng nghiệp. Hay một ông bác tự mày mò học viết chương trình đơn giản, học thiết kế đồ họa để tự làm web cho mình. Thật là vui và thật là say mê. Họ cũng rất vui nếu tôi tặng họ những cuốn sách hay hay gửi cho họ những chương trình mẫu hữu ích.
Ngược lại, tôi chưa có dịp tặng những cuốn sách kiểu như “Nhập môn kế toán”, “Nghệ thuật bán hàng” cho ai đó mà tôi quen, để họ có thêm thú vui tiêu khiển. Image
Một công việc mà bản thân nó có thể đem lại niêm vui, sự thích thú một cách tự nhiên, vô tư, thì đó chắc chắn là một công việc tốt về lâu dài.
2) Làm phần mềm hướng mình đến những mục tiêu tốt đẹp
Ở bất kỳ công ty phần mềm nào, nhân viên luôn được khuyến khích:
* Nâng cao và cập nhật kiến thức chuyên môn.
* Rèn luyện ngoại ngữ.
* Rèn luyện kỹ năng giao tiếp, giải quyết vấn đề, kỹ năng trình bày,…
* Chăm chỉ, có trách nhiệm,….
Nếu bạn thực hiện tốt những việc trên, bạn sẽ được đền đáp về nhiều mặt: thu nhập, chức vụ,… Nghĩa là bạn cần đặt những mục tiêu tốt đẹp, và thực hiện những kế hoạch tốt đẹp.
Những công việc khác thì thế nào? Ai cũng hiểu mục tiêu của ngành y là cao đẹp, nhưng để bảo đảm cuộc sống tốt đẹp thì phần lớn bác sĩ phải thực hiện những kế hoạch chẳng tốt đẹp tí nào. Image Bây giờ thì thầy cô giáo cũng phải chạy xô, ép buộc học sinh rất nhiều. Image Thậm chí cũng có những công việc mà cả mục tiêu và kế hoạch đều không cao đẹp tí nào cả. Chẳng hạn mục tiêu cuối cùng là phải rút ruột được khách hàng, chén ép người khác,…. ImageImageImage
Nói dễ hiểu hơn, môi trường làm phần mềm bản thân nó là nơi tạo điều kiện cho mọi người nỗ lực vì những mục tiêu cao đẹp, để mọi bên đều có lợi (Win/Win). Còn nhiều công việc khác, nếu muốn tốt cho mình thì phải bon chen, thủ đoạn, nói chung lợi cho mình thì hại cho người khác và ngược lại (Win/Lose hoặc Lose/Win).
3) Làm phần mềm có thể giúp đem lại thu nhập cao
Lương bổng của kỹ sư phần mềm thì không thể giúp mình làm giàu được. Tính ra lại không bằng những ngành khác. Nhưng thử nghĩ lại xem, có ai làm giàu chỉ bằng đồng lương của mình không? Image
Trước tiên, hãy xem lại mục tiêu của bạn là gì?
1. Kiếm một công việc có lương cao nhất?
2. Có được tài chính để mình đạt được những mục tiêu khác trong cuộc sống?
Nếu mục tiêu của bạn là 1, thì làm phần mềm không phải là công việc phù hợp. Mà thật ra cũng khó có một công việc phù hợp với mục tiêu này, vì ngay khi bạn kiếm được một công việc có mức lương cao hơn, bạn sẽ lại thấy (hay nghe đồn thấy) có một công việc có lương cao hơn nữa.
Còn để đạt được mục tiêu thứ 2, bạn cần làm tốt 3 điều:
1. Biết cách kiếm tiền.
2. Biết cách tiêu tiền.
3. Biết cách dùng số tiền còn dư lại để sinh ra nhiều tiền hơn.
Nghĩa là, làm việc và làm giàu là hai việc hoàn toàn khác nhau. Kẻ nào cố gắng nhập chung lại để giải quyết cùng một lúc cuối cùng chỉ thêm thất vọng mà thôi.
Điều tuyệt vời là thế này: làm phần mềm là công việc rất tốt để bạn hoàn thành tốt điều thứ nhất trong 3 việc trên. Tuyệt vời hơn nữa là bạn có thể kiếm tiền một cách lương thiện. Image
Nếu muốn có nhiều tiền hơn, cái mà bạn cần không phải là một công việc mới, mà là học và làm thật tốt hai điều còn lại. Dĩ nhiên, trên đời cũng có thể có công việc có mức lương quá tốt đến nỗi bạn không cần quan tâm đến hai điều còn lại. Nhưng nó sẽ rất hiếm, và dù sao thì thực hiện tốt cả 3 điều vẫn dễ dàng và căn cơ hơn là chỉ cần làm đều thứ nhất.
Khi nào có thời gian, tôi sẽ nói nhiều hơn về vấn đề “cơm áo gạo tiền này”. Image
4) Làm phần mềm tạo điều kiện có được cuộc sống cân bằng
Muốn sống hạnh phúc thì chúng ta phải khỏe mạnh về thể chất lẫn đầu óc. Mà đối với mỗi thứ, cách tốt nhất để nó khỏe mạnh là phải vận động.
Làm phần mềm là cách tốt nhất để vật động đầu óc. Nói chung các công việc liên quan đến dịch vụ, làm việc văn phòng, dạy học, nghiên cứu, ít nhiều cũng giúp vận động đầu óc. Sau khi kết thúc công việc, bạn có thể sử dụng thời gian rảnh để vận động tay chân, chơi thể thao, làm những việc khác để bồi bổ cơ thể. Thật là dễ dàng (dĩ nhiên nếu bạn chịu cố gắng Image).
Những người làm công việc tay chân, cơ bắp thì không được thuận lợi như vậy. Tôi từng có thời gian làm rồi nên biết rõ. Sau một ngày làm việc đầu óc mệt nhoài, tôi có thể dễ dàng vận động gân cốt cho cân bằng. Nhưng sau một ngày làm việc tay chân rã rời, thật không dễ tí nào để dành thêm thời gian để vận động đầu óc. Đọc sách, chơi ô chữ, luyện vài bài toán Image Không đời nào làm được. Khả thi nhất là nằm dài xuống và coi một bộ phim lê thê, ướt át của Hàn Quốc. Cái đó thì thật ra chẳng giúp vận động đầu óc được một tí gì hết.
Một số công việc khác cũng độc hại không kém. Làm sếp chẳng hạn, hay đi tiếp khách để bán hàng cũng vậy. Bia rượu, thuốc lá, và có khi thêm mấy cái khoản nếu-không-nói-ra-thì-ai-cũng-hiểu, Image thật là một tai họa cho thể chất lẫn đầu óc. Image Uống xong một chai bia phải mất gần 1 giờ đồng hồ chạy bộ để khắc phục sự cố; nếu uống hết một két bia chắc phải mất hết một ngày không ăn uống gì để chạy bộ. Image
5) Và thử suy nghĩ tích cực về những suy nghĩ tiêu cực trước đó
Nếu mình làm phần mềm thì gia đình không “nhờ vả” gì được. Nhưng nếu nghĩ kỹ lại, thì thật là tốt. Ai trong chúng ta đều có gia đình, họ hàng, bạn bè, người quen để có thể “nhờ vả” những dịp như vậy. Thế thì khi nào mình cần, hay gia đình mình cần, thì cứ việc nhờ những người đó giúp đỡ. Image
Tôi muốn làm công việc mà mình yêu thích, làm người thực sự có ích; còn mấy việc “linh tinh và rắc rối” đó, chắc chắn có rất nhiều người có thể giúp đỡ tôi. Điều ngược lại thì tôi không muốn làm tí nào. Còn bạn thì sao?
Còn muốn tiếp xúc với bên ngoài nhiều hơn? Công việc lập trình đúng là không cho phép bạn tiếp xúc với nhiều người bên ngoài, nhưng đó là trong công việc. Lập trình không hề ngăn cản bạn sử dụng thời gian còn lại để làm những việc đó.
Đối với tôi, điều tuyệt vời nhất của công việc là nó không cho phép tôi gặp quá nhều người. Image Có nghĩa là nó sẽ giúp tôi không phải gặp những người mà tôi không thích, những người mà tôi và họ không đem lại sự thay đổi tốt đẹp cho nhau. Có nghĩa là nó giúp tôi quý trọng thời gian của mình, thời gian mà lẽ ra tôi phải dành cho những người tôi yêu thương nhất, những người yêu thương tôi nhất, những người có ý nghĩa đối với tôi nhất trong gia đình, công việc, sở thích,… Khi nhìn ra xung quanh, tôi thấy mình không thể làm một số công việc đơn giản bởi vì để làm tốt những việc đó, tôi phải hy sinh những điều có ý nghĩa nhất đối với tôi, để có được những điều mà thật ra chẳng có ý nghĩa gì về lâu dài cả, tôi phải làm bởi vì người ta yêu cầu tôi làm, hay là vì muốn được bằng như những người khác. Image
Vậy làm phần mềm thì lý thú hay là quá “cơ bắp”? Cũng nói về phần mềm, có người làm những việc rất high-tech, nhưng có người lại làm việc rất low-tech.
Thế nào là high-tech? Bạn có thể đọc cuốn sách “Nghệ thuật lập trình máy tính”
Thế nào là low-tech? Bạn thử đọc qua cuốn sách “Code Complete” Tôi đã đọc gần hết cuốn Code Complete, và đã từng cố gắng đọc cuốn “Nghệ thuật lập trình máy tính”, nhưng chỉ được vài chương của tập I là bỏ cuộc. Từ đó tôi hiểu mình thích hợp với phần low-tech khi làm phần mềm.
Điều hấp dẫn khi làm mấy cái low-tech này là gì? Image Đó là tư duy để hiểu đúng vấn đề cần giải quyết, phân tích những giải pháp có thể rồi chọn là giải pháp tốt nhất, dùng những kiến thức và công nghệ hiện có (những cái hiện có thôi, còn muốn tìm ra cái mới thì không thuộc về phạm trù ở đây nữa) để thiết kế giải pháp đó, hiện thực, rồi kiểm tra. Tất cả những việc trên luôn đặt dưới áp lực thời gian, áp lực về chất lượng.
Dĩ nhiên, nếu công việc lập trình là đáng chán thì nguyên nhân không phải bởi vì bản chất công việc là đáng chán; mà nguyên nhân là có sự khác biệt giữa nguyện vọng của bạn và thực tế bạn đang làm. Trong trường hợp đó, cái mà bạn cần không phải là một chức vụ mới (tôi không bao giờ muốn làm sếp để sai những người cấp dưới làm những việc mà bản thân tôi cũng thấy “è lưỡi”), không phải là một công ty mới, mà là một trong 3 cách:
1. Một công việc hoàn toàn mới, để thay đổi cái hiện tại.
2. Một suy nghĩ hoàn toàn mới, để thay đổi cái nguyện vọng.
3. Cả 1 và 2.
Tóm lại, mệnh đề “Làm phần mềm chẳng có gì cao sang và thật chán” là sai. Image
Lời kết
Lâu lắm rồi mới tập viết lại, thật là đã. Image Ở đây tôi chỉ mới đội mũ đen và mũ vàng để nhìn vào công việc mà mình đang làm. Khi nào rảnh chắc phải thử đội mũ trắng (dữ kiện, khách quan), hay các mũ màu khác để xem sao. Hay là có bạn nào giúp tôi làm việc này với.