50 Năm của ngành phát triển phần mềm

Bài viết được dịch từ blog Coding Horror

Lời bàn của Vinacode:

Ngành phát triển phần mềm của thế giới tính đến nay đã phát triển được trên 50 năm, còn không biết ngành phát triển phần mềm của Việt Nam có tự bao giờ? Nhưng theo như mình thử tìm kiếm thì hóa ra chúng ta cũng được “người ta” viện trợ cho máy tính khá sớm:

“Năm 1968, chiếc máy tính điện tử Minsk-22 do Liên Xô tặng, đã về đến Việt Nam. Nó là loại máy tính lớn (chỉ có thể gọi là Computer) hay còn gọi là các Mainframe. Hệ máy này do Liên Xô thiết kế dựa trên một bản vẽ logic khá sơ sài của hệ máy PDP của hãng DEC Hoa Kỳ được các sĩ quan tình báo Liên Xô là KGB đánh cắp về (kĩ nghệ về CNTT của Hoa Kỳ vẫn đi xa hàng thập kỉ so với Liên Xô vào thời đó). Máy có kích thước chiếm hết 1 gian phòng 100m2, không dùng mạch tích hợp (vì công nghệ mạch tích hợp – IC thời đó còn rất sơ khai), dùng bóng bán dẫn chớ không phải Transistor như các máy tính ngày nay vì tới năm 1957 mới có các thiết bị đơn giản ứng dụng Transistor thay cho các bóng bán dẫn cỡ lớn (mà tiên phong là hãng điện tử lừng danh Sony). Máy không có hệ điều hành, chạy đơn nhiệm, dùng ngôn ngữ lập trình là… ngôn ngữ máy (hoặc khá hơn là hợp ngữ), cùng một vài ngôn ngữ cổ đại thời đó như FORTRAN, COLBOL …

Cùng khoảng thời gian đó, miền nam Việt Nam, người Mỹ đã đưa vào VN từ những năm 1970 các máy mainframe của IBM sản xuất với các tính năng vượt trội khủng khiếp nhằm các mục đích tính toán lớn trong cuộc chiến tranh Việt Nam. Sau năm 1975 toàn bộ các máy mainframe này đều do Miền Bắc tiếp quản, bao gồm cả máy mainframe khá tốt vào thời đó là IBM360/50.”

Phần mềm soạn thảo văn bản BKED của TS Quách Tuấn Ngọc

Phần mềm soạn thảo văn bản BKED của TS Quách Tuấn Ngọc

Có máy tính rồi nhưng từ sau 1975 thì có lẽ chúng ta để đắp chiếu là chính, mãi đến năm 1987 thì mới có Tiến sĩ Quách Tuấn Ngọc viết ra chương trình phần mềm soạn thảo văn bản đầu tiên của Việt Nam là BKED. Có lẽ đó cũng chỉ là một vài “điểm sáng” nhỏ nhoi của ngành phần mềm Việt. Còn lại chúng ta “nổi tiếng” về lĩnh vực gia công phần mềm là chính.

Mình xin trích một đoạn trong cuốn sách “Những người làm chủ số 1 Việt Nam” nói về giai đoạn đầu của quá trình công ty FPT tham gia làm gia công phần mềm như sau:

“PGS.TS Trương Gia Bình vẫn còn nhớ, một đêm tháng 11 năm 1998, anh với anh Nguyễn Thành Nam ngồi ăn mì tại sân bay Bangkok trong lúc chờ chuyến bay về Việt Nam. Cả hai im lặng, tha thẩn nhai. Sau tất cả những gì đã chứng kiến ở Bangalore, Ấn Độ, dường như họ vẫn chưa hết bàng hoàng: Một đất nước còn rất nghèo, nhưng đã hé lộ sẽ là một cường quốc công nghệ thông tin (CNTT) trong thế kỷ 21. Một lúc lâu sau, anh nói với anh Nguyễn Thành Nam: ‘Em lấy một đội và thử đi.’ Anh Nam gật đầu đồng ý.

Cuộc chiến toàn cầu hóa bắt đầu.”

Trong lịch sử 50 năm của ngành phát triển phần mềm thế giới thì Việt Nam đã tham gia được vào phân khúc nào?Trong lịch sử 50 năm của ngành phát triển phần mềm thế giới thì Việt Nam đã tham gia được vào phân khúc nào?


Tấm áp phích quảng cáo về Lịch Sử Các Ngôn Ngữ Lập Trình của nhà xuất bản O’Reilly thì rất hấp dẫn người đọc.

Nếu bạn lần lại lịch sử những ngôn ngữ lập trình về thời khởi thủy của chúng, bạn sẽ biết rằng chúng ta đã làm việc với nghề phát triển phần mềm này một thời gian rất, rất dài.

Ngôn ngữ C thì đại khái là bằng tuổi tôi; FORTRAN có số tuổi nhiều như bố mẹ tôi. Thế còn về những “lính mới” trong danh sách trên thì sao? Ở đây trang web khảo sát về chỉ số TCPI của TIOBE software đã cung cấp cho ta một số dữ liệu về mức độ phổ biến của các ngôn ngữ lập trình kể từ những năm 2001. Bạn hãy để ý chi tiết đến tuổi của những ngôn ngữ lập trình mới nhất và “hot” nhất như sau:

Ngôn ngữ Ruby thì mới bước vào tuổi teen. Còn JavaScript thì vẫn chưa bước vào tuổi dậy thì nữa.

Và hiển nhiên là có sự liên quan về tuổi tác của những ngôn ngữ lập trình hiện đại này và ngày xuất bản của một số cuốn sách miêu tả về suy nghĩ đương thời về ngành phát triển phần mềm hiện đại:

Ngành phát triển phần mềm hiện đại thực ra mới phát triển gần đây. Thậm chí mặc dù chúng ta đã có trên 50 năm kinh nghiệm trong lĩnh vực này, nhưng ngành phát triển phần mềm thì vẫn đang trong thời kỳ chập chững tập đi.

Bạn hãy để ý đến lĩnh vực source control (quản lý mã nguồn) là một ví dụ. Source control rõ ràng là nền tảng của kỹ nghệ phần mềm. Tôi tin rằng lĩnh vực quản lý mã nguồn đã không trở nên phổ biến rộng rãi cho mãi tận đến năm 1999. Và đây là lý do tại sao:

  1. Mặc dù CVS đã có mặt từ cuối những năm 80 của thế kỷ trước, nhưng nó chỉ được phổ biến rộng rãi thông qua SourceForge, cái này vẫn chưa tồn tại cho mãi tới năm 2000.
  2. Microsoft SourceSafe cũng đã xuất hiện từ giữa những năm 90 của thế kỷ trước, nhưng vẫn không được chấp nhận là một xu thế chủ đạo cho tới khi nó được đóng gói kèm như là một phần của bộ Visual Studio 6.0 Enterprise vào năm 1998.

Một điều khá rõ ràng là, source control đã tồn tại từ trước năm 1999. Nhưng tại sao nó phải mất một khoảng thời gian rất dài để công cụ quan trọng này của kỹ nghệ phần mềm trở nên được sử dụng rộng rãi? Hóa ra câu trả lời lại nằm trong một lý thuyết gọi là mô hình trưởng thành mà hai tác giả Redwine-Riddle đã đề xuất (pdf):

Redwine và Riddle đã nghiên cứu một số công nghệ trong phát triển phần mềm để xem tại sao chúng lại phát triển và phổ biến được. Họ nhận thấy rằng nói chung một công nghệ sẽ mất từ 15 đến 20 năm để phát triển từ mức công thức khái niệm đến điểm mà nó sẵn sàng để phổ biến rộng rãi.

Họ nhận ra chúng sẽ phát triển qua 6 giai đoạn điển hình như sau:

  • Nghiên cứu cơ bản. Khảo cứu những khái niệm và ý tưởng cơ bản, tạo ra một cấu trúc ban đầu dựa trên vấn đề đã biết, hình thành bộ khung câu hỏi nghiên cứu phản biện.
  • Công thức hóa khái niệm. Lưu hành nội bộ những ý tưởng, phát triển một cộng đồng nghiên cứu, tập trung vào một số ý tưởng thích hợp, công bố các giải pháp đối với các vấn đề phụ xác định.
  • Phát triển và mở rộng. Tạo ra sự mở đầu trong việc sử dụng công nghệ đó, làm sáng tỏ những ý tưởng cơ bản, khái quát hóa hướng tiếp cận đó.
  • Thăm dò và mở rộng nội bộ. Mở rộng hướng tiếp cận đến những lĩnh vực khác, sử dụng công nghệ cho những vấn đề thực tế, làm ổn định công nghệ, phát triển các tài liệu huấn luyện, chỉ ra giá trị trong những kết quả đạt được.
  • Thăm dò và mở rộng ra bên ngoài. Tương tự như trong nội bộ, nhưng bao gồm một cộng đồng rộng hơn của những người không phải là các nhà phát triển, chỉ ra những chứng cứ quan trọng của giá trị và tính khả dụng.
  • Phổ biến rộng rãi. Phát triển chất lượng sản phẩm, hỗ trợ các phiên bản của công nghệ đó, thương mại hóa và tiếp thị công nghệ, mở rộng cộng đồng người dùng.

Redwine và Riddle đã trình bày theo dòng thời gian của một số công nghệ phần mềm theo sự phát triển của chúng thông qua những giai đoạn cho tới tận giữa những năm 1980. Còn tôi trình bày một phân tích tương tự cho sự trưởng thành của kiến trúc phần mềm trong những năm 1990.

CVS đã được phát hành vào năm 1986. Nó mất khoảng 15 năm sau đó để cho việc sử dụng CVS trở thành một xu thế chủ đạo, chính xác như lời phỏng đoán của Redwine-Riddle.

Mô hình Redwine-Riddle được đề xuất vào năm 1980 thì rất được thịnh hành vào ngày nay. Mark Dominus, trong Design Patterns of 1972, đã quay trở lại gần 35 năm để minh họa về cái cách mà chúng ta vẫn phải vật lộn để làm tiến hóa các ngôn ngữ lập trình ngày nay:

Phong trào “Design Patterns” đã trở nên phổ biến từ năm 1960, mục tiêu của nó là muốn huấn luyện cho các lập trình viên cách nhận ra những tình huống khi mà các pattern có thể áp dụng được, và thực thi nó thường xuyên khi cần thiết. Trong khi điều này có một mức tiến bộ rất lớn so với việc không áp dụng các pattern, sau đó các pattern đó đã được hệ thống hóa và nhúng vào trong các ngôn ngữ lập trình sau này.

Việc nhận ra các pattern là một điều rất quan trọng của quá trình phát triển của các ngôn ngữ lập trình. Trong lập trình nói chung, ý tưởng sử dụng chung một giải pháp cho vấn đề cứ xuất hiện lặp lại trong những ngữ cảnh khác nhau thì thật tuyệt vời và rất có giá trị. Vấn đề của phong trào “Design Patterns” là việc sử dụng những pattern nào sau đó: các lập trình viên được huấn luyện để nhận ra và áp dụng những pattern đó khi có thể.

Đáng lẽ những pattern đó nên được sử dụng như những biển chỉ dẫn tới những thiếu hụt của ngôn ngữ lập trình. Thì quan điểm của phong trào “Design Patterns” dường như lại là bằng một cách nào đó các lập trình viên sẽ cần thực thi Visitors, Abstract Factories, Decorators, và Faades. Nhưng những thứ này thì không quan trọng bằng sự cần thiết thực thi Subroutine Calls hoặc Object-Oriented Classes trong ngôn ngữ nguồn. Những pattern này nên được xem như là sự thiếu sót hoặc là những đặc trưng thiếu hụt trong các ngôn ngữ như Java và C++. Câu trả lời tốt nhất để nhận ra những pattern này là tìm xem những thiếu sót nào có trong những ngôn ngữ lập trình đó là nguyên nhân của pattern trở nên cần thiết, và làm thế nào để các ngôn ngữ đó có thể cung cấp sự hỗ trợ tốt hơn để giải quyết những dạng vấn đề này.

Tôi nghĩ rằng tốc độ thay đổi trong phát triển phần mềm thì rất nhanh, xin cảm ơn tới sự gia tăng theo hàm số mũ trong truyền thông của 50 năm vừa qua– truyền hình, vệ tinh, điện thoại di động, và dĩ nhiên là cả internet nữa. Là các nhà phát triển phần mềm, chúng ta lớn lên đã quen với việc phần cứng máy tính tăng gấp đôi tốc độ cứ mỗi 18 tháng. Cái mà chúng ta vẫn chưa có khả năng đương đầu tốt đó là mất bao lâu để nhân loại có thể bắt kịp với tốc độ phát triển của phần cứng đó.

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

8 comments on “50 Năm của ngành phát triển phần mềm

  1. Thử, sai, rút kinh nghiệm… Làm programming và trading đôi khi thật giống nhau. Một năm sau cái đêm tháng 11/1998, đội quân xuất ngoại làm phần mềm đầu tiên của Việt Nam đặt chân tới Bangalore, và đó là những người FPT. Lịch sử phần mềm Việt Nam chắc chắn sẽ không phủ nhận bước chân đầu tiên của những con người này, đó là 3 cái tên: Khúc Trung Kiên, Bùi Thị Hồng Liên, Phạm Minh Tuấn. Nhưng có lẽ như một điềm báo trước, khi đập trái dưa hấu trong lễ thành lập công ty tại Bangalore theo phong tục Ấn, trái dưa từ tay Mr Kiên chỉ vỡ làm đôi thay vì bắn tung tóe sắc đỏ tượng trưng nhiều may mắn.

    Làm gia công phần mềm vốn ngốn nhiều nhân lực, lợi nhuận thấp, bấp bênh, không có giá trị gia tăng. Người Việt Nam đặt trụ sở gia công phần mềm tại Bangalore càng dở tệ, tự đặt mình vào thế làm thuê đa cấp, làm thuê của làm thuê. Chiến dịch này là một bài học thất bại, có chăng là một chuyến đi “Tây Trúc thỉnh kinh” giá đắt, tưởng gặp thần tiên hóa ra toàn yêu quái cỡ bự Tata, Infosys, Wipro…

    Người dẫn đường cho chuyến thỉnh kinh này là Henry Trần Văn, một Việt kiều (lại Việt kiều) Canada. Mr Henry vốn là executive chi nhánh Dynamic Solution tại Hà Nội, có trụ sở ngay phía trên FSoft một tầng lầu tại cùng một tòa Building. Mr Henry chán Dynamic nhảy qua đầu quân cho Mr Bình đúng vào lúc FPT khao khát làm gia công phần mềm như Ấn Độ, nghĩ rằng đó là “vision” sáng nhất thời đại, mở cánh cửa vào thế kỷ 21… Mr Henry khéo léo tạo lòng tin cho cả thế hệ bằng hai dự án gia công cho Winsoft (Canada) là LifeServ và WinFund, nhưng có lẽ đó là tất cả những gì tốt đẹp nhất Mr Việt kiều này đóng góp cho phần mềm Việt Nam. Thực tế, dễ hiểu rằng họ cũng chỉ vì công ăn việc làm và lợi ích của bản thân trước tiên, dù ẩn sau những lời mỹ miều có cánh như yêu nước, muốn góp sức phát triển nền công nghệ Việt Nam blah blah… Khi chán họ sẽ bỏ đi không kèn không trống, thậm chí không có sự chia tay vui vẻ.

    Không còn cách nào khác, phải tự học, tự làm, tự đi bằng đôi chân của chính mình. Dù đó chỉ là nâng cấp Robot Nao thành SmartOshin hay học lỏm HTC One để chế FPT Win, dù đó là VNG Zalo hay BKAV SmartHome còn nhiều khiếm khuyết thì đều có hàm lượng sáng tạo bằng chất xám Việt Nam, đáng khích lệ hơn việc đào bán tài nguyên thô hay bán nhân công giá rẻ. Và để những “trí tuệ Việt Nam” thực sự cất cánh thì cần một thể chế chính trị mới, gấp lắm rồi. Nhưng thử nói chuyện với những Mr Việt kiều này, họ hoàn toàn không muốn điều đó. Họ chính là những người đầu tiên muốn giữ nguyên hiện trạng Việt Nam vì có lợi cho việc kiếm tiền bằng chính sách thực dân khai thác nhân công giá rẻ của họ.

    • Cám ơn anh Hùng và Alan đã chia sẻ.
      Trên cách hiểu và quan điểm cá nhân, em đồng ý với Alan về việc đi theo con đường gia công phần mềm của Ấn Độ sẽ làm hao tổn chất xám và cảm thấy ít sự tự do, sáng tạo (như trong bài “Những lầm tưởng về lập trình viên Ấn Độ” trên vinacode).
      Đó là một trong những lí do chính khiến em bỏ qua chuyện đồng lương và quyết định ở lại với một dự án khởi nghiệp thay vì ứng tuyển vào một vị trí “developer” của một công ty gia công phần mềm nào đó (đang mọc lên như nấm).

      • Tri Truong, anh rất vui khi thấy nội dung trên blog Vinacode tạo ra những tác động tích cực đến cách suy nghĩ và quyết định của những bạn trẻ như em. Chúc em thành công với sự lựa chọn của mình.

        Thanks for feedback! 🙂

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s