Archive

Archive for the ‘zLượm lặt’ Category

Cuộc Sống Là Những Va Đập

Hãy nghe một viên sỏi kể về nguồn gốc của mình: “Tôi vốn là một tảng đá khổng lồ trên núi cao, trải qua bao năm tháng dài đăng đẳng bị mặt trời nung đốt, người tôi đầy vết nứt. Tôi vỡ ra và lăn xuống núi, mưa bão và nước lũ cuốn tôi vào sông suối.

Do liên tục bị va đập, lăn lộn, tôi bị thương đầy mình. Nhưng rồi chính những dòng nước lại làm lành những vết thương của tôi. Và tôi trở thành một hòn sỏi láng mịn như bây giờ”.

Bạn nghĩ gì khi nghe câu chuyện trên? Cảm thấy lý thú với chuyến đi của hòn sỏi hay xúc động trước ánh mắt lạc quan của nó đối với cuộc đời đầy biến động? Đã bao giờ bạn thấy được rằng chính những chông gai mới tạo nên những hình hài đẹp và ấn tượng, dù là hình hài được tạo bởi chính những vết thương và sự đớn đau?

Có thể là bạn, có thể là tôi, cuộc sống chẳng bao giờ chỉ mang đến nỗi đau, cũng chẳng bao giờ chỉ mang đến niềm hạnh phúc. Vượt qua được gian khổ, vượt qua những cuộc thử thách, vượt qua được những nỗi đau là bạn đã tự làm hoàn thiện chân dung mình.
Cuộc sống là vô vàn những điều biến động. Vì vậy, cho dù trong khó khăn hay trong hạnh phúc, cũng mong bạn luôn nhớ cuộc hành trình của hòn sỏi để sống tự tin hơn, để mang những yêu thương xoa dịu và làm lành những vết thương. Sự va đập của cuộc sống chẳng có gì đáng sợ đâu bạn ạ!

(theo schoolnet)

Advertisements
Categories: Chia sẻ, zLượm lặt

Café sữa vs café đen

Café sữa vs café đen

Vào quán uống nước, em luôn gọi café đen. Anh luôn gọi café sữa.

Người ta mang nước ra, luôn luôn nhầm lẫn. Anh café đen. Em café sữa.

Em nhanh tay đổi 2 món. Người bồi bàn đứng ngẩn ra, mặt đầy vẻ thắc mắc. Anh cười trừ. Đợi người ta đi, anh trách: “Sao không để người ta đi rồi em hãy đổi? Làm mất mặt anh quá!!!” Em cười phá lên: “Đằng nào cũng vậy. Đâu có gì mắc cỡ!”.

Em con gái mà lại thích café đen.

Anh con trai nhưng rất thích café sữa.

Em bảo café đen nguyên chất, tuy đắng nhưng uống rồi sẽ mang lại dư vị, mà nếu pha thêm sữa thì sẽ chẳng còn cảm giác café nữa.

Anh bảo café cho thêm tí sữa sẽ đậm mùi café hơn, lại còn cảm giác ngọt ngào của sữa…

Anh và em luôn thế. Khác nhau hoàn toàn.

Anh và em không yêu nhau. Đơn giản chỉ là bạn bè. Mà không, trên bạn bè 1 chút. Gần giống như tình anh em.

Nhưng em không chịu làm em gái anh. Em bảo, em gái có vẻ phụ thuộc vào anh trai, có vẻ yếu đuối, có vẻ… hàng trăm cái “có vẻ” và em không đồng tình.

Anh cũng không muốn anh là anh trai của em. Anh trai suốt ngày phải lo cho em gái, bị nhõng nhẽo, vòi vĩnh đủ thứ. Anh không thể kiên nhẫn.

Lâu lâu em hẹn anh ra ngoài đi uống café. Em café đen, anh café sữa.

Thỉnh thoảng buồn buồn anh lôi em đi vòng vòng, rốt cuộc cũng đến quán nước. Anh café sữa. Em café đen.

Anh có bạn gái. Bạn gái anh xinh xắn, rất dịu dàng, nữ tính. Đi với anh giống như 1 con thỏ non yếu ớt. Anh tự hào bảo, cô ấy không “ba gai”, bướng bỉnh như em.

Em có bạn trai. Bạn trai em đẹp trai, galant, luôn chiều chuộng em. Đi với em, anh ấy không bao giờ khiến em tức chết. Em kiêu hãnh khoe, anh ấy thực sự là chỗ dựa vững chắc.

2 cặp thỉnh thoảng gặp nhau. Em vẫn café đen. Anh luôn café sữa.

Bạn trai em nói, anh đổi ly cho em. Em không chịu, café đen là sở thích của em.

Bạn gái anh thắc mắc, anh không uống café đen như những người con trai khác. Anh nhún vai, café sữa hợp khẩu vị với anh.

Trong lúc nói chuyện, thường thường anh và em vẫn cãi nhau. Bạn trai em luôn là người hòa giải. Bạn gái anh dịu dàng nói anh phải biết nhường nhịn con gái.

Cuối cùng anh là anh. Em vẫn là em.

Anh chia tay bạn gái. Cũng có thời gian chông chênh. Nhưng anh không hối tiếc. Anh và cô căn bản không hợp nhau. Dù cô ra sức chiều chuộng anh, nhưng anh vẫn thấy thiếu thiếu cá tính gì đó. Mà cá tính thiếu ấy mới thật sự hấp dẫn anh.

Em chia tay bạn trai. Có một lúc cảm thấy trống vắng. Nhưng em không hối hận. Em và bạn trai không tìm được tiếng nói chung. Dù anh ấy không khiến em bực mình, ít khi gây sự với em. Nhưng em vẫn thấy thiếu thiếu. Mà “thiếu thiếu” ấy làm em chán nản.

Anh và em không hẹn mà gặp nhau ở quán café cũ.

Em gọi café đen.

Anh gọi café sữa.

Người bồi đã quen với 2 người. Anh ta không để nhầm chỗ nữa.

Anh yên lặng. Em cũng không nói. Đợi người bồi đi, anh kéo ly café đen về phía mình, đẩy ly café sữa về phía em.

Hôm đó 2 người uống thử “khẩu vị” của người kia.

Đêm ấy, anh nhắn tin cho em “Café đen hay thật! Anh bắt đầu thấy thích nó!”

Em nhắn tin lại cho anh “Café thêm sữa cũng rất tuyệt vời. Em sẽ uống café sữa…”

Sau đó em và anh luôn đi cùng nhau, bất luận ở đâu, em cũng luôn gọi café sữa cho em và không quên gọi café đen cho anh…

Café đen hay café sữa đều là café, phải không?

Tình yêu đắng hay tình yêu ngọt đều là tình yêu… chẳng phải sao???

Categories: zLượm lặt

Cần bao nhiêu nhân viên Microsoft để thay một cái bóng đèn?

Sự khác biệt giữa việc viết mã cho những bài thực hành trong trường so với việc lập trình cho các công ty về phần mềm thương mại là rất lớn. Bạn đã hoàn thành việc viết code cho năm dòng, nhưng có một triệu những bước tiếp theo để đưa nó vào trong năm dòng mã trong sản phẩm thương mại. Nhiều sinh viên tốt nghiệp ngành khoa học máy tính không có ý tưởng mơ hồ về việc làm một phần mềm thương mại, ngoài việc viết mã.

Eric Lippert là một lập trình viên về công nghệ kịch bản của Microsoft chẳng hạn như VBScript và JScript. Qua đó, bài đọc này làm cho Microsoft có một chút sự độc quyền, sự độc quyền phát sinh bởi 1 lí do, và bất cư ai tham gia vào việc viết phần mềm làm việc một cách hoàn hỏa, mà ko giới thiệu gì về Security thì sẽ cùng loại với sự độc quyền.

Khi thêm những tính năng vào trong VBScript, có người sẽ gửi mail và hỏi rằng làm thế nào để thực thi các tính năng này. Thông thương các câu hỏi là “one-off“: một tính năng mà giải quyết các vấn đề riêng tư của họ. Chẳng hạn như:” tôi cần gọi hàm ChangeLightBuldWindowHandleEx nhưng tôi ko có bộ điều khiển ActiveX để làm điều đó và bạn cũng ko thể gọi thư mục Win32 APIs từ 1 file script đc; bạn có thề thêm 1 phương thức ChangeLightBuldWindowHandleEx vào trong những hàm đc xây dựng sẵn trong VBScript ko? nó sẽ chỉ giống 5 dòng mã”

Tôi luôn luôn bảo cho những người này làm cùng một động tác là – nếu nó chỉ là 5 dòng mã khi đó bạn thiết kế một đối tượng ActiveX. Bởi vì là, rõ ràng bạn hoàn toàn đúng-nó sẽ làm cho tôi mất khoảng 5 phút để thêm những tính năg vào trong thư viện của VBScript. nhưng có bao nhiêu nhân viên Microsoft tham gia để làm thay đổi 1 lightbulb?

  • Một lập trình viên tiêu tốn năm phút trong việc thực thi phương thức ChangeLightBulbWindowHandleEx.
  • Một người quản lí chương trình (PM=Program Manager) để viết các chi tiết kĩ thuật.
  • Một chuyên gia cục bộ để xem xét lại các mô tả về kĩ thuật trong việc phát hành cục bộ.
  • Một chuyên gia về khả năng hữu dụng để xem xét lại các đặc tả cho sự phát hành các xử lí và hữu dụng.
  • Ít nhất là 1 lập trình viên, 1 nhân viên kiểm thử, và một nhà quản lí chương trình để giải quyết những chỗ yếu kém.
  • Một PM để thêm vào các mô hình an ninh cho đặc tả.
  • Một nhân viên kiểm thử để viết kế hoạch kiểm tra.
  • Một leader về bộ phận test để cập nhật test schedule (schedule=thời dụng biểu).
  • Một nhân viên kiểm thử để viết những trường hợp kiểm tra và cho phép chúng có khả năng tự động hóa.
  • Ba hoặc bốn nhân viên kiểm thử tham gia vào trong những lỗi ko thể dự đoán trước.
  • Một nhân viên viết các báo cáo kĩ thuật để viết các documentation.
  • Một nhân viên phê bình kĩ thuật để đọc và sửa bản documentation.
  • Một nhân viên biên tập để đọc và sữa bản documentation.
  • Một nhà quản lí documentation nhằm tích hợp các documentation mới vào trong body, cập nhật nội dung của table, các chỉ mục, vv…
  • 25 dịch giả để dịch các tài liệu documentation và các thông điệp lỗi do người dùng gây ra vào trong tất cả các ngôn ngữ của Windows.
  • Một nhóm các nhà quản lí chính để phân công việc cho tất cả những nhân viên này, viết các bản kiểm tra.

Không có công việc nào trong số các công việc trên diễn ra một cách riêng lẻ trong khoảng thời gian dài, nhưng có thể họ sẽ thêm vào các tính năng đơn giản. Bạn sẽ phải note lại là đối với tôi mọi việc diễn ra suôn sẻ; nhưng điều gì sẽ xảy ra nếu có một lỗi lập trình trong năm dòng mã? Khi đó, chúng tôi phải thêm vào các khoản chi phí cho việc tìm kiếm lỗi, viết các đoạn mã kiểm tra mang tính đệ qui, và vân vân… Khoảng thời gian năm phút khởi đầu đó sẽ đc chuyển đổi vào trong nhiều người, nhiều tuần làm việc và có giá trị lớn, tất cả sẽ đc save lại cho 1 người. Nhưng điều đó ko mang ý nghĩa gì về việc kinh doanh cả. Tại Microsoft chúng tôi cố gắng rất, rất nhiều để ko phải phát hành các bản phần mềm chưa đủ độ chín. Bản phần mềm hoàn hảo phải chắc chắn rằng là nó hợp lệ, có thể dễ dàng sử dụng các tính năng mà ko phải lo lắng gì về các điểm yếu security. Nhưng chúng tôi phải làm cho nó mang tính đúng đắn bởi vì khi chúng tôi ra phiên bản mới về script engines, hàng trăm triệu người sẽ áp dụng các đoạn mã đó, và 10 triệu người sẽ làm lại chương trình 1 lần nữa.

Categories: zLượm lặt

Lúc bé và bây giờ

Nghiêm túc:

Lúc bé, tưởng khóc là buồn! Bây giờ phát hiện, buồn nhất là không thể khóc được, cứ trống rỗng, tỉnh táo và vô hồn.

Lúc bé, tưởng cười là vui! Bây giờ nghĩ lại, có những giọt nước mắt , còn vui hơn cả một trận cười.

Lúc bé, tưởng cô đơn ở đâu xa lắm! Đến giờ mới hiểu, lúc bên nhau, sự ấm áp mới thật mong manh, mà nỗi cô đơn sao lại gần gũi thế?

Lúc bé, tưởng yêu là tất cả?! Lớn rồi mới biết, sau yêu còn có chia tay.

Viết tiếp:

Lúc bé, tưởng đông bạn là hay! Đến giờ mới hiểu, đông bạn chưa chắc đã có người nào thật sự thân thiết với mình!

Lúc bé, tưởng lớn lên là làm được người lớn! Bây giờ mới hiểu, nhiều tuổi chưa chắc đã trưởng thành!

Lúc bé, tưởng cạp đất là bẩn! Bây giờ mới hiểu, nhiều người cạp tiền mà vẫn bẩn như thường! (Còn cạp đất đôi khi lại rất sạch mới đau!)

Lúc bé, tưởng không biết gì là ngu! Bây giờ phát hiện, ngu là biết quá nhiều.

Lúc bé, tưởng cuộc sống chỉ có hôm nay và ngày mai! Lớn lên mới biết, cuộc sống còn có cả ngày hôm qua!

Lúc bé, tưởng chim bồ câu là chim hòa bình! Đến giờ mới biết, (hình) chim hòa bình thường đi chung với súng đạn!

Lúc bé, tưởng “trái đất này là của chúng mình”! Lớn lên mới biết, trái đất này chẳng của ai cả và người ta thi nhau làm bẩn lên nó!

Lúc bé, tưởng lúc nào cũng có cha mẹ! Lớn lên mới biết, cha, mẹ cũng có cuộc sống riêng của họ!

Lúc bé, tưởng cổ tích là không bao giờ có thật! Đến giờ mới biết, nhiều chuyện có thật còn hơn cả cổ tích!

Lúc bé, tưởng rằng mình luôn thích làm người lớn! Bây giờ mới biết, càng lớn càng thích trở lại lúc bé!

Lúc bé, thấy bố mẹ với nhau thật thắm thiết! Lớn lên mới biết, trước mặt trẻ con người lớn thường hay tỏ ra như thế!

Lúc bé, tưởng rằng ai cũng tốt với mình! Đến giờ mới biết, nhiều người chỉ tốt với em bé và người đã chết thôi!

Lúc bé, người lớn bảo rằng đánh nhau là xấu! Bây giờ mới biết, đôi khi đánh nhau như trẻ con còn đỡ xấu hơn là ngấm ngầm hãm hại lẫn nhau!

Lúc bé, tưởng rằng mình sẽ yêu thương tất cả mọi người! Lớn lên mới biết, càng ngày mình chỉ yêu thương có mỗi chính bản thân mình.

Lúc bé, tưởng rằng tiêm ngừa là để phòng bệnh! Bây giờ mới biết, tiêm ngừa còn có thể làm cho mình chết đi! (hú hồn)

Lúc bé, tưởng rằng chỉ có bà phù thủy mới xài thuốc độc! Lớn lên mới biết, nhiều “doanh nhân” vẫn xài thuốc độc ầm ầm! (tội cho dân ngu cu đen chẳng biết đâu độc đâu lành!)

Lúc bé, tưởng rằng bố chỉ có mẹ! Đến giờ mới biết, ngoài mẹ, bố còn có bồ nhí, thư ký…

Lúc bé, tưởng rằng…

====

Vui vui:

Lúc bé, nghỉ học là chuyện lạ! Lớn lên mới biết, chuyện lạ là đi học thường xuyên…!

Lúc bé, tưởng đến trường là phải học! Lớn lên mới biết, đến trường còn được… ngủ!

Lúc bé, tưởng thi xong là hết! Lớn lên mới biết, sau thi còn có thi lại!

Lúc bé, tưởng gặp thầy cô là ở trường! Lớn lên mới biết, có thể gặp lại thầy cô nhiều lần tại nhà!

Lúc bé, tưởng điểm 10 mới giỏi! Lớn lên mới biết, chỉ 5 thôi đã quý lắm rồi!

Lúc bé, tưởng càng học càng giỏi! Lớn lên mới biết, càng học càng ngu đi!

Lúc bé, tưởng được cho 10.000 là dư! Bây giờ được cho 1 triệu cũng không đủ!

Viết tiếp:

Lúc bé, tưởng bệnh là nằm im! Lớn rồi mới biết, bệnh cũng phải vác xác đi làm!

Lúc bé, tưởng yêu là được hôn! Lớn rồi mới biết, khi yêu ngoài hôn còn có nhiều thứ khác.

Lúc bé, tưởng đi làm là sẽ có lương! Đi làm rồi mới biết, ngoài lương còn có bổng lộc, hoa hồng…

Lúc bé, tưởng buổi tối thường có ma quỷ! Bây giờ thì biết ma (túy), quỷ (râu xanh) có cả ban ngày!

Lúc bé, tưởng rằng gameonline chỉ có Võ lâm! Lớn lên mới biết, ngoài Võ lâm còn có MU, Cửu Long, Hiệp khách…

Lúc bé, tưởng rằng áo mưa chỉ dùng để đi mưa! Lớn lên mới biết, “áo mưa” còn được dùng để tránh HIV/AIDS!

Lúc bé, tưởng rằng bệnh mới phải uống thuốc! Bây giờ mới hiểu, đôi khi phải uống thuốc để không bị bệnh!

Lúc bé, tưởng rằng….

(TOM IIR)

Categories: zLượm lặt

BÍ ẨN CÁC THƯƠNG HIỆU

Bí ẩn các thương hiệu

CARLSBERG: Các Anh Ráng Lấy Sức Bồng Em Ra Giường

HEINEKEN: Hôn Em Ít Nên Em Khều Em Nhéo (xuôi), Nếu Em Khôn Em Nằm Im Em Hưởng (ngược)

HALIDA: Hãy Liều Đi Anh

TIGER: Tình Yêu Giết Em Rồi

SAN MIGUEL: Sao Anh Nhớ Mà Ít Ghé Uống, Em Lo

SAIGON: Số Anh Yêu Gái Ở Nhà

HUDA: Hãy Uống Đi Anh (xuôi), Anh Đã Uống Hết (ngược)


BIVINA: Bịnh Vì Nàng


CASTROL: Các Anh Sờ Thử Rồi Ôm Luôn (xuôi), Lỡ Ôm Rồi Thấy Sướng Anh Chiều(ngược)


MARLBORO: Mong Anh Rộng Lòng Bo Rồi Ôm

HERO: Hôn Em Rồi Ôm


VEDAN: Vì Em Đời Anh Nghèo

BMW: Be My Wife (hãy là vợ anh) hoặc Beautiful Mechanic Wonder (kỳ quan cơ khí)


FORD: First On Rust And Deterioration (gỉ và hỏng nhanh nhất).


CHEVROLET: Cheap, Hardly Efficient, Virtually Runs On Lucky Every Time (rẻ, kém hiệu quả, hiển nhiên chạy được là nhờ may mắn…).


DODGE: Drips Oil, Drops Grease Everywhere (nhỏ dầu rơi mỡ khắp nơi).


FIAT: Failure In Italian Automotive Technology (sự thất bại của công nghiệp xe hơi Italy).


VW: Virtually Worthless (Hiển nhiên là vô dụng).


GM: General Maintenance (cần bảo dưỡng toàn bộ)

Có ai có định nghĩa nào vui nữa không?

Categories: zLượm lặt

Ngôn ngữ lập trình số 1?

Hiện có rất nhiều ngôn ngữ lập trình. Một số ngôn ngữ rất phổ biến, một số ngôn ngữ lại rất hấp dẫn và một số ngôn ngữ khác thì rất mạnh trong các ứng dụng chuyên biệt. Làm thế nào để chọn được ngôn ngữ thích hợp?
Một câu hỏi thường gặp của những người mới bắt đầu lập trình là “Nên học hay nên dùng ngôn ngữ lập trình nào?”. Đây không chỉ là mối băn khoăn của các bạn trẻ chập chững bước vào thế giới “0 và 1” mà còn của cả những người trong nghề muốn củng cố hay nắm bắt cơ hội nghề nghiệp. Không có một qui tắc đơn giản để phân hạng các ngôn ngữ (NN). Mỗi NN đều có những điểm mạnh và điểm yếu. Một NN có thể “sáng chói” trong một số lĩnh vực nhưng trong một số lĩnh vực khác bạn lại phải “đánh vật” với nó. Sự lựa chọn NNLT có thể xem như vấn đề “tín ngưỡng” cá nhân. Tuy vậy, có một số cơ sở giúp bạn đưa ra quyết định đúng đắn.

Phân loại Ngôn ngữ lập trình
Ngôn ngữ lập trình (NNLT) là phương tiện để giao tiếp và ra lệnh cho máy tính thực hiện những công việc cụ thể. Máy tính chỉ có thể hiểu các con số 0 và 1, nhưng con người lại không thành thạo kiểu suy nghĩ với các con số này để ra lệnh cho máy tính. Vì vậy người ta đã phát triển các dạng câu lệnh mà con người có thể đọc hiểu, tập các câu lệnh này được gọi là mã nguồn (source code). Mã nguồn phải tuân thủ một tập các từ vựng, cú pháp và qui tắc do những người thiết kế NN đặt ra. Ví dụ, đoạn mã nguồn mẫu ra lệnh cho máy tính hiển thị dòng chữ “Xin chào.” trên màn hình:
#!/usr/bin/perl
print “Xin chào.”
Mã nguồn được một phần mềm thiết kế đặc biệt có thể hiểu các câu lệnh và dịch thành dạng mã mà máy có thể hiểu và thực thi.

Cấp thấp và cấp cao
Một cách tổng quát, một NNLT có 2 thành phần chính: (1) tập các thành phần cơ bản của NN (lệnh, hàm, thủ tục…) có thể kết hợp thành chương trình, và (2) bộ biên dịch để chuyển mã nguồn thành mã máy.
Những NNLT thế hệ đầu tiên gần gũi với mã máy và thường gắn chặt với nền tảng phần cứng, các thế hệ NNLT mới hơn gần gũi với con người hơn và ít lệ thuộc nền tảng phần cứng hơn. Xét theo khía cạnh này, có thể phân các NNLT thành 3 nhóm.
1. Các NNLT cấp thấp (LLL – Low Level Language), ‘hướng đến máy tính“, tương tác trực tiếp với phần cứng. Các NN này có tập lệnh tương ứng với tập lệnh của CPU. Có 2 loại NNLT cấp thấp: NN mã máy dùng các con số và NN Assembly dùng các từ gợi nhớ. Các NNLT cấp thấp nhanh và hiệu quả trong việc tương tác với phần cứng.
2. NNLT cấp cao (HLL – High Level Language), ‘hướng đến nhiệm vụ“, có từ vựng giống tiếng Anh giúp dễ dàng trong việc viết chương trình. Các NN này có cú pháp chặt chẽ, có khả năng chạy trên nhiều hệ thống phần cứng khác nhau. Đa phần các phần mềm được phát triển dùng các NN này. Các NNLT quen thuộc trong nhóm này như C, C++, Pascal, Java…
3. NNLT cấp rất cao (VHLL – Very High Level Language), ‘hướng đến con người“, được thiết kế để phát triển các ứng dụng chuyên biệt mà không đòi hỏi nhiều kiến thức về lập trình. Các NN này khá mới và vẫn đang tiếp tục phát triển. VHLL tương tự HLL nhưng dễ học và dễ sử dụng hơn. VHLL có nhiều loại, có thể kể 2 loại thông dụng nhất:
– Các NN tương tác (authoring) như NN đánh dấu (HTML, DHTML, XML) và NN mô hình (VRML) dùng để tạo trang web và nội dung đa phương tiện.
– Các NN kịch bản (scripting) như JavaScript dùng để viết các chương trình nhỏ đi kèm các trang web để tạo các hiệu ứng động và tương tác.

Tổng quát và chuyên biệt
Xét ở cấp độ tổng quát, tất cả các NNLT đều tương tự nhau. Chúng đều yêu cầu bạn ‘mô tả“vấn đề cần giải quyết và đều đòi hỏi các kỹ năng tương tự. Nếu nắm vững một NN, bạn sẽ có đất để sử dụng những kỹ năng của mình với một NN khác. Nhưng thực tế ứng dụng có những NN thực hiện những kỹ thuật hay giải quyết những dạng vấn đề chuyên biệt dễ hơn những NN khác, và có những NN có khả năng thực hiện nhiều dạng ứng dụng.
Không có lằn ranh rõ ràng giữa các NN chuyên biệt và NN tổng quát. Tuy nhiên có thể phân định một cách đơn giản như sau: Các NN tổng quát được thiết kế để viết các chương trình lớn, có cú pháp phức tạp, thời gian biên dịch dài và phải thực hiện biên dịch trước, và có bộ thư viện riêng. Nói chung các NN tổng quát có thể dùng cho bất kỳ công việc tính toán nào, tuy nhiên thực tế thường mỗi NN thích hợp hơn với một lĩnh vực nhất định nào đó: Fortran thích hợp cho tính toán khoa học; Java dùng cho ứng dụng phân tán không lệ thuộc nền tảng hệ thống; C dùng cho lập trình hệ thống và trình biên dịch; Pascal thích hợp cho việc giảng dạy về lập trình…
Các NN chuyên biệt được thiết kế cho các chương trình nhỏ, cú pháp đơn giản, thường được biên dịch lúc thực thi, và có nhiều tác vụ xây dựng sẵn. Nói chung, các NN chuyên biệt chỉ dùng trong các ứng dụng chuyên biệt: Matlab dùng trong toán học, SQL dùng trong cơ sở dữ liệu, PHP dùng để tạo trang web…
Một số lĩnh vực ứng dụng đặc thù có thể dùng các NN tổng quát nhưng phải bổ sung thêm các hàm thư viện và môi trường đặc biệt. Ví dụ, lập trình đồ hoạ có thể dùng bất kỳ NN tổng quát nào kết hợp với một tập các hàm đồ hoạ.

Mô hình tính toán
Mô hình tính toán của một NNLT tổng quát có ảnh hưởng đến khả năng sử dụng của nó trong một lĩnh vực đặc thù. Có các mô hình tính toán chính: lệnh hay thủ tục (imperative, procedural), khai báo hay phi thủ tục (declarative, non-procedural), hướng đối tượng (object-oriented) và kịch bản (scripting).
Với các NN lệnh, chương trình bao gồm chuỗi lệnh mô tả cách thức thay đổi dữ liệu (trạng thái). Fortran, Cobol, C và Pascal thuộc nhóm này.
Trong khi các NN lệnh chú trọng đến cách thức giải quyết vấn đề, các NN khai báo quan tâm đến vấn đề cần giải quyết, định nghĩa đầu vào và đầu ra của chương trình. Có 2 loại NN khai báo: NNLT chức năng như Lisp và Haskell, và NNLT luận lý như Prolog.
Ở các NNLT hướng đối tượng, toàn bộ thông tin để giải quyết vấn đề (dữ liệu và tác vụ) được nhóm chung lại thành các đối tượng. Các NN hướng đối tượng thuần tuý như Smalltalk và Java chỉ hỗ trợ mô hình này, còn có NN lai như C++ hỗ trợ cả các mô hình khác.

Chọn NNLT
Hiện có rất nhiều NNLT (con số có thể lên
đến hàng trăm). Mỗi NNLT đều có những điểm mạnh và điểm yếu. Có một số yếu tố kỹ thuật và cả phi kỹ thuật tác động đến việc chọn NNLT.

Yếu tố kỹ thuật
– Yêu cầu của ứng dụng: có những NN phù hợp với những ứng dụng đặc thù.
– Nền tảng hệ thống: Ứng dụng sẽ chạy trên nền Intel, Sun, HP hay máy chủ IBM? và hệ điều hành Windows, Sun Solaris, Linux hay IBM OS? Không phải tất cả các NNLT đều có thể chạy trên mọi nền tảng hệ thống.
– Phát triển và bảo trì: NN có hỗ trợ phát triển ứng dụng nhanh và dễ bảo trì?
– Công cụ hỗ trợ và tài liệu: Công cụ hỗ trợ thường là một trong những yếu tố then chốt trong việc chọn NN. Các NN có công cụ hỗ trợ và tài liệu tốt thường dễ phổ biến, ví dụ như Visual Basic.

Yếu tố phi kỹ thuật
– Sự phổ biến của NN: Sự phổ biến, theo nghĩa thị phần và số lập trình viên sử dụng NN, có ảnh hưởng đến việc chọn lựa NN. Với một NN phổ biến như C bạn sẽ dễ dàng tìm thấy nhiều nguồn tài liệu và sự trợ giúp hơn là một NN ít được dùng hơn như Ada.
– Kinh tế: NN có được hỗ trợ tốt bởi các tổ chức thương mại hay cộng đồng phát triển phần mềm miễn phí? (Nghĩa là trình biên dịch và môi trường phát triển của NN sẽ được tiếp tục phát triển trong tương lai).

Chọn đúng công cụ cho công việc
Thực sự, khó có thể nói NNLT nào tốt hơn. Với bất kỳ NN nào cũng đều có những chương trình được viết rất tốt hay dở tệ. Chất lượng của chương trình chịu ảnh hưởng bởi chất lượng của lập trình viên nhiều hơn là chất lượng của NN. NNLT khó nhất chính là NN đầu tiên mà bạn học. Có một số NN có thể giúp cho việc viết chương trình dễ hơn đối với một số dạng ứng dụng, và ngược lại. Ví dụ C rất mạnh về lập trình hệ thống nhưng nếu dùng để viết ứng dụng quản lý dữ liệu thì bạn sẽ phải vất vả xây dựng những thứ đã có sẵn trong dBase hay Foxpro.
Việc xác định các yêu cầu và mục đích sẽ giúp bạn chọn được NN thích hợp. Hãy chọn NN phù hợp với công việc, hay tốt hơn, chọn cả hai. Nếu bạn định viết ứng dụng có yêu cầu xử lý giao diện, nên chọn NN có hỗ trợ đồ họa, như Visual Basic chẳng hạn. Bạn có thể đặt câu hỏi ‘NN nào thực hiện việc này dễ hơn?“ thay vì ‘Làm thế nào để thực hiện việc này với C++?“.
Có thể ứng dụng của bạn có nhiều phần với nhiều yêu cầu khác nhau. Chẳng hạn như chương trình game, có những phần (gồm trí tuệ nhân tạo, luật chơi, giao diện người dùng…) chỉ yêu cầu việc xây dựng và thay đổi dễ dàng, nhưng không yêu cầu tốc độ; nhưng có những phần (như đồ họa) lại đòi hỏi tốc độ.
Một cái áo không bắt buộc dùng chỉ một màu. Trong lập trình cũng vậy, không nhất thiết phải dùng một NN cho toàn bộ chương trình. Có các cách thức cho phép bạn ‘nhúng“ gần như bất kỳ NN nào vào một NN khác. Cách này giúp cho bạn khai thác ưu điểm của từng NN. Tuy nhiên nên cẩn thận, có quá nhiều ‘màu sắc“ sẽ làm bạn rối trí!
Và một điều nên lưu ý: Không hẳn các NN mới hơn luôn là lựa chọn tốt hơn. C++ mới hơn C, thế nhưng C vẫn tồn tại vì vẫn có ưu thế về tốc độ và kích thước nhỏâ gọn.
Trở lại câu hỏi ban đầu, ‘Nên học hay dùng ngôn ngữ lập trình nào?“, có thể bạn tìm thấy lời giải với vấn đề được đặt ngược lại: ‘Để làm gì?“.

SỰ LỰA CHỌN CỦA CÁC NHÀ PHÁT TRIỂN
Theo số báo cáo Worldwide IT Benchmark 2003 của META Group, C++ và Java tiếp tục là các NNLT được lựa chọn hàng đầu để phát triển ứng dụng, chiếm tỉ lệ lần lượt là 18% và 16,7%. HTML, JavaScript, ASP và XML cũng là nhóm NNLT quan trọng chiếm vị trí thứ 3 với tỉ lệ 13,6%, năm trước nhóm NNLT này chiếm tỉ lệ 9,7%. Việc dễ lập trình cùng với xu hướng phát triển của web có lẽ là lý do của sự gia tăng này. Tuy rất nổi tiếng với công cụ phát triển mạnh và được nhiều người dùng nhưng vị trí của Visual Basic trong ngành công nghiệp phần mềm khá khiêm tốn, chiếm vị trí thứ 4 với tỉ lệ 9,8%.
Báo cáo cũng cho thấy Windows vẫn duy trì vị trí dẫn đầu trong lựa chọn nền tảng phát triển, chiếm tỉ lệ áp đảo 61,9% (năm 2002, 53,1%). Nền tảng IBM chiếm vị trí thứ 2 với tỉ lệ 18,3%. Vị trí thứ 3 thuộc về Sun Solaris, 9,4%.
Nhìn chung, số liệu của META Group có sự tương đồng (ngoại trừ trường hợp của VB) với số liệu của một trong những công ty phần mềm hàng đầu ở Việt nam, công ty ParagonSolutions (PSV).
NGÔN NGỮ LẬP TRÌNH
Đây là danh sách các NNLT, từ những NN đã có cách đây hàng chục năm đến những NN mới xuất hiện gần đây, chủ yếu là các NN tổng quát. Các NN được nhóm theo các tính năng tương đồng. Vì giá trị lịch sử, có một số NN “chết” hay ít được sử dụng hiện diện trong danh sách. Danh sách này có thể chưa đầy đủ.
NGÔN NGỮ MÁY dùng các số 0 và 1 để “ra lệnh” cho bộ xử lý. Tập lệnh chỉ tương thích trong cùng họ CPU và rất khó lập trình.

NGÔN NGỮ ASSEMBLY gần giống như NN máy nhưng có ưu điểm là tập lệnh dễ đọc . Nói chung mỗi lệnh trong Assembly (như MOV A,B) tương ứng với một lệnh mã máy (như 11001001). Chương trình Assembly được biên dịch trước khi thực thi. Nếu cần tốc độ và kích thước chương trình thật nhỏ, Assembly là giải pháp.

C đạt được sự thỏa hiệp giữa việc viết code hiệu quả của Assembly và sự tiện lợi và khả năng chạy trên nhiền nền tảng của NNLT cấp cao có cấu trúc. NN hơn 20 năm tuổi này hiện vẫn được tin dùng trong lĩnh vực lập trình hệ thống. Có các công cụ thương mại và miễn phí cho gần như mọi HĐH.

C++ là NN được dùng nhiều nhất hiện nay, đa số phần mềm thương mại được viết bằng C++. Tên của NN có lý do: C++ bao gồm tất cả ưu điểm của C và bổ sung thêm các tính năng hướng đối tượng. Có các công cụ thương mại và miễn phí cho gần như mọi HĐH.

C# [phát âm ‘C sharp“] là lời đáp của Microsoft đối với Java. Do không đạt được thỏa thuận với Sun về vấn đề bản quyền, Microsoft đã tạo ra NN với các tính năng tương tự nhưng chỉ chạy trên nền Windows.

JAVA là phiên bản C++ được thiết kế lại hợp lý hơn, có khả năng chạy trên nhiều nền tảng; tuy nhiên tốc độ không nhanh bằng C++. Có các công cụ miễn phí và thương mại hỗ trợ cho hầu hết các HĐH hiện nay. Tuy Microsoft đã gỡ bỏ h
trợ Java khỏi cài đặt mặc định của các phiên bản Windows mới, nhưng việc bổ sung rất dễ dàng.

PASCAL được thiết kế chủ yếu dùng để dạy lập trình, tuy nhiên nó đã trở nên phổ biến bên ngoài lớp học. Pascal yêu cầu tính cấu trúc khá nghiêm ngặt. Có các công cụ thương mại và miễn phí cho DOS, Windows, Mac, OS/2 và các HĐH họ Unix. Trình soạn thảo website BBEdit được viết bằng Pascal.

DELPHI là phiên bản hướng đối tượng của Pascal được hãng Borland phát triển cho công cụ phát triển ứng dụng nhanh có cùng tên. Môi trường Delphi được thiết kế để cạnh tranh với Visual Basic của Microsoft, hỗ trợ xây dựng giao diện nhanh bằng cách kéo thả các đối tượng và gắn các hàm chức năng. Khả năng thao tác CSDL là một ưu điểm khác của NN. Borland, có các công cụ thương mại cho Windows và Linux.

BASIC [‘Beginner’s All-purpose Symbolic Instruction Code“] là NNLT đầu tiên dùng cho máy vi tính thời kỳ đầu. Các phiên bản hiện đại của BASIC có tính cấu trúc hơn. Có các công cụ thương mại và miễn phí cho DOS, Windows, Mac và các HĐH họ Unix.

VISUAL BASIC [phiên bản của Basic cho môi trường đồ hoạ] là NN đa năng của Microsoft. Nó bao gồm BASIC, NN macro của Microsoft Office (VBA – Visual Basic for Application), và công cụ phát triển ứng dụng nhanh. Tiếc là ứng dụng VB chỉ có thể chạy trên Windows và bạn bị lệ thuộc vào những chính sách thay đổi của Microsoft. (Chương trình viết bằng VB 6 hay các phiên bản trước sẽ không hoàn toàn tương thích với VB.NET)

ADA phần lớn dựa trên Pascal, đây là một dự án của Bộ Quốc Phòng Mỹ. ADA có nhiều điểm mạnh, như cơ chế kiểm soát lỗi, dễ bảo trì và sửa đổi chương trình. Phiên bản hiện thời có cả các tính năng hướng đối tượng.

ICON là NN thủ tục cấp cao. Xử lý văn bản là một trong những điểm mạnh của nó. Có các phiên bản cho Windows, HĐH họ Unix và các môi trường Java; các phiên bản cũ hơn hỗ trợ các HĐH khác.

SMALLTALK môi trường phát triển hướng đối tượng và đồ hoạ của Smalltalk chính là nguồn cảm hứng cho Steve Jobs và Bill Gates ‘phát minh“ giao diện Mac OS và Windows.

RUBY hợp một số tính năng tốt nhất của nhiều NN khác. Đây là NN hướng đối tượng thuần túy như Smalltalk, nhưng có cú pháp trong sáng hơn. Nó có khả năng xử lý văn bản mạnh tương tự như Perl nhưng có tính cấu trúc hơn và ổn định hơn.

PERL thường được xem đồng nghĩa với “CGI Scripting”. Thực tế, Perl “lớn tuổi” hơn web. Nó ‘dính“ vào công việc lập trình web do khả năng xử lý văn bản mạnh, rất linh động, khả năng chạy trên nhiều nền tảng và miễn phí.

TCL (phát âm ‘tickle“) có thể tương tác tốt với các công cụ dùng văn bản như trình soạn thảo, trình biên dịch… dùng trên các HĐH họ Unix, và với phần mở rộng TK nó có thể truy cập tới các giao diện đồ hoạ như Windows, Mac OS và X-Windows, đóng vai trò kết dính các thành phần lại với nhau để hoàn thành các công việc phức tạp. Phương pháp mô-đun này là nền tảng của Unix

PYTHON là NN nguồn mở, hướng đối tượng, tương tác và miễn phí. Ban đầu được phát triển cho Unix, sau đó ‘bành trướng“ sang mọi HĐH từ DOS đến Mac OS, OS/2, Windows và các HĐH họ Unix. Trong danh sách người dùng của nó có NASA và RedHat Linux.

PIKE cũng là NN nguồn mở, miễn phí được phát triển cho nhu cầu cá nhân, và hiện được công ty Roxen Internet Software của Thuỵ Điển phát triển dùng cho máy chủ web trên nền Roxen. Đây là NN hướng đối tượng đầy đủ, có cú pháp tương tự C, và có thể mở rộng để tận dụng các mô-đun và thư viện C đã biên dịch để tăng tốc độ. Nó có thể dùng cho các HĐH họ Unix và Windows.

PHP (Hypertext Pre-Processor) là NN mới nổi lên được cộng đồng nguồn mở ưa chuộng và là mô-đun phổ biến nhất trên các hệ thống Apache (web server). Giống như CFML, mã lệnh nằm ngay trong trang web. Nó có thể dễ dàng truy cập tới các tài nguyên hệ thống và nhiều CSDL. Nó miễn phí và tính khả chuyển đối với các HĐH họ Unix và Windows.

MACROMEDIA COLDFUSION có mã lệnh CFML (Cold Fusion Markup Language) được nhúng trong trang web rất giống với thẻ lệnh HTML chuẩn. Rất mạnh, có các công cụ để truy cập nhiều CSDL và rất dễ học. Hạn chế chính của nó là giá cả, tuy nhiên có phiên bản rút gọn miễn phí. Chạy trên Windows và các HĐH họ Unix.

ACTIVE SERVER PAGES (ASP) được hỗ trợ miễn phí với máy chủ web của Microsoft (IIS). Thực sự nó không là NNLT, mà được gọi, theo Microsoft, là ‘môi trường lập kịch bản phía máy chủ“.Nó dùng VBScript hay JScript để lập trình. Chỉ chạy trên Windows NT/2K. Microsoft đã thay NN này bằng ASP.NET, tuy có tên tương tự nhưng không phải là bản nâng cấp.

JAVASERVER PAGES (JSP) là NN đầy hứa hẹn. Nó dùng Java, có phần mềm máy chủ nguồn mở và miễn phí (Tomcat). Có thể chạy trên hầu hết các máy chủ web, gồm Apache, iPlanet và cả Microsoft IIS.

LISP [‘LISt Processing“] là NNLT ‘có thể lập trình“, được xây dựng dựa trên khái niệm đệ quy và có khả năng thích ứng cao với các đặc tả không tường minh. Nó có khả năng giải quyết những vấn đề mà các NN khác không thể, đó là lý do NN hơn 40 năm tuổi này vẫn tồn tại. Yahoo Store dùng Lisp.

PROLOG [“PROgramming in Logic”] được thiết kế cho các bài toán luận lý, ví dụ như “A bao hàm B, A đúng, suy ra B đúng” – một công việc khá khó khăn đối với một NN thủ tục.

COBOL [“Common Business-Oriented Language”] có tuổi đời bằng với điện toán thương mại, bị buộc tội không đúng về vụ Y2K, và dù thường được dự đoán đến hồi cáo chung nhưng nó vẫn tồn tại nhờ tính hữu dụng trong các ứng dụng xử lý dữ liệu và lập báo cáo kinh doanh truyền thống. Hiện có phiên bản với các tính năng hướng đối tượng và môi trường phát triển tích hợp cho Linux và Windows.

FORTRAN [“FORmula TRANslation”] là NN xưa nhất vẫn còn dùng. Nó xuất sắc trong công việc

đầu tiên mà máy tính được tin cậy: xử lý các con số. Theo đúng nghĩa đen, đây là NN đưa con người lên mặt trăng (dùng trong các dự án không gian), một số tính năng của NN đã được các NN khác hiện đại hơn “mượn”.

dBase [“DataBASE”] là NN lệnh cho chương trình quản lý CSDL mang tính đột phá của Ashton-Tate. Khi chương trình phát triển, NN cũng phát triển v
à nó trở thành công cụ phát triển. Tới thời kỳ xuất hiện nhiều công cụ và trình biên dịch cạnh tranh, nó chuyển thành chuẩn.

Foxpro là một nhánh phát triển của dBase dưới sự “bảo hộ” của Microsoft. Thực ra nó là công cụ phát triển hơn là NN. Tuy có lời đồn đại về sự cáo chung, nhưng NN vẫn phát triển. Hiện Foxpro có tính đối tượng đầy đủ và có công cụ phát triển mạnh (Visual Foxpro).

Erlang [“Ericsson LNAGuage”] thoạt đầu được hãng điện tử Ericsson phát triển để dùng riêng nhưng sau đó đưa ra bên ngoài như là phần mềm nguồn mở. Là NN cấp thấp xét theo việc nó cho phép lập trình điều khiển những thứ mà thường do HĐH kiểm soát, như quản lý bộ nhớ, xử lý đồng thời, nạp những thay đổi vào chương trình khi đang chạy… rất hữu ích trong việc lập trình các thiết bị di động. Erlang được dùng trong nhiều hệ thống viễn thông lớn của Ericsson.

HASKELL là NN chức năng, nó được dùng để mô tả vấn đề cần tính toán chứ không phải cách thức tính toán.
CÁC CÔNG CỤ VÀ MÔI TRƯỜNG PHÁT TRIỂN
Microsoft Visual Studio làm cho mọi thứ trở nên dễ dàng miễn là bạn phát triển ứng dụng trên HĐH của Microsoft và sử dụng các NN cũng của Microsoft!
Borland cung cấp các công cụ phát triển tích hợp đầu tiên với tên “Turbo” và nhiều năm nay “lăng xê” một loạt các công cụ có thể chạy trên nhiều nền tảng. C++ Builder và Delphi là các công cụ mạnh để phát triển nhanh các ứng dụng Windows với C++ và Object Pasccal. Kylix đem các công cụ này sang Linux. JBuilder cung cấp các công cụ tương tự để làm việc với Java (có các phiên bản cho Windows, Mac OS, Linux và Solaris).
Metrowerks CodeWarrior hỗ trợ nhiều nền tảng hơn bất kỳ công cụ phát triển nào (có thể kể một số như Windows, Mac OS, Linux, Solaris, Netware, PalmOS, PlayStation, Nintendo…). Công cụ có thể làm việc với nhiều NN: C, C++, Java và Assembly.
Macromedia Studio MX cung cấp mọi thứ cần thiết để tạo các ứng dụng internet và đa phương tiện, được xem như là giải pháp thay thế cho các công cụ lập trình truyền thống. Bộ công cụ kết hợp Dreamweaver và Flash, với các công cụ đồ hoạ Fireworks và Freehand, và máy chủ ColdFusion. Dreamweaver có thể dùng một mình, cho phép phát triển website có CSDL, lập trình với JSP, PHP, Cold Fusion và ASP. Flash cũng là môi trường lập trình mạnh, dùng để tạo ứng dụng đồ hoạ tương tác. Gần như các công cụ chính đều chạy trên Windows và Mac OS.
IBM VisualAge bành trướng gần như mọi hệ thống, từ máy tính lớn đến máy tính để bàn và thiết bị cầm tay. Các NN bao gồm, C++, Java, Smalltalk, Cobol, PL/I và PRG. VisualAge for Java là một trong các công cụ phát triển Java phổ biến nhất.
NetBeans là môi trường phát triển mô-đun, nguồn mở cho Java, được viết bằng Java. Điều này có nghĩa nó có thể dùng trên bất kỳ hệ thống nào có hỗ trợ Java (hầu hết các HĐH). Nó là cơ sở đề Sun xây dựng Sun One Studio, BEA dùng nó cho một phần của WebLogic.
Sun có các công cụ phát triển hiệu quả trong lĩnh vực của mình. Sun ONE Studio cho Java với cả bản thương mại và miễn phí. Sun ONE Studio Compiler Collection cho các nhà phát triển Unix, dùng C/C++. Với tính toán tốc độ cao, hãng có Forte for Fortran và High-Performance Computing.
Oracle JDeveloper thuộc bộ công cụ Internet Developer Suite. Nó chủ yếu dùng để phát triển các thành phần như servlet cho các ứng dụng web, và kết hợp tốt với CSDL Oracle.
WebGain VisualCafé chuyên hỗ trợ phát triển các ứng dụng phía server dùng Java. Công cụ gồm 2 phần: expert (cho ứng dụng phía client), và enteprise (cho ứng dụng server). Cả hai đều dùng Macromedia Dreamweaver Ultradev để xây dựng khung ứng dụng.
GNU Compiler Collection (GCC) là bộ công cụ miễn phí dùng để biên dịch chương trình chạy trên HĐH bất kỳ thuộc họ Unix. Hỗ trợ các NN: C, C++, Objective C, C, Fortran, Java và Ada. Một số công cụ đã được đưa sang DOS, Windows và PalmOS. Đây là các công cụ được lựa chọn của hầu hết các dự án nguồn mở và bản thân chúng cũng là nguồn mở. GCC không có môi trường phát triển ứng dụng tích hợp.
KDevelop là công cụ phát triển nguồn mở dùng để xây dựng các ứng dụng Linux dùng C++. Mặc dù có tên như vậy nhưng nó hỗ trợ giao diện GNOME cũng như KDE, ngoài các ứng dụng dùng Qt hay không có thành phần đồ họa.
Black Adder là công cụ phát triển mạnh cho các NN Python và Ruby. Có thể chạy trên Linux và Windows. Nó sinh mã để dùng các thành phần đồ họa Qt.
Intel/KAI cung cấp các công cụ phát triển nhắm đến các hệ thống đa xử lý và các HĐH họ Unix, dùng C/C++ và Fortran. Công cụ KAP cho phép chuyển các ứng dụng xử lý đơn sang kiến trúc đa xử lý.
=====================================================
Nguồn: PC World
Tác giả: Thanh Phong.

Categories: zLượm lặt

Làm lập trình viên hay không làm lập trình viên?

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. 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. 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…

Đượ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. 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.

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.

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. 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 Bạn thhích cái nào hơn?

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.

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 ; 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.
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ữ ,… 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 đó. 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”.

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.

Đá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 (, , , , ) để 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 ).

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.

=================================================================

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.

=====================================================
Bản quyền của Lê Đình Lĩnh Nam.
Ghi rõ nguồn “Nam Le’s Blog” khi bạn phát hành lại thông tin từ blog này.
=====================================================

Categories: zLượm lặt