Học kỹ nghệ phần mềm

GS John Vu05/02/2025 13:00
Học kỹ nghệ phần mềm

Có khác biệt giữa kĩ năng máy tính được dạy ở đại học và kĩ năng được công nghiệp phần mềm cần tới.

Khác biệt này dường như là do quan điểm hàn lâm nhìn về các lí thuyết máy tính phải được dạy thế nào cho sinh viên và kinh nghiệm của các giáo sư. Quan điểm hàn lâm về dạy tập trung vào chuỗi bài giảng về lí thuyết tính toán và thực hành thì dùng các bài tập về lập trình. Trong khi cách tiếp cận này hợp lí, các bài giảng và bài tập trên lớp thường thiếu “tri thức chiều sâu” của điều đã xảy ra trong các dự án phần mềm thực. Đó là lí do tại sao nhiều sinh viên rất giỏi ở trường lại khó áp dụng lí thuyết của họ vào thực tế khi làm việc trong công nghiệp phần mềm. Sau đây là một số khác biệt:

Cách tiếp cận hàn lâm nhấn mạnh:

  1. Xây dựng các chương trình nhỏ, cỡ vài trăm dòng mã.
  2. Dùng các ngôn ngữ lập trình như Pascal hay C.
  3. Mọi thứ bao giờ cũng “bắt đầu mới” cho từng bài tập lớn.
  4. Trường học hiếm khi dạy việc dùng các công cụ phần mềm hay sản phẩm bán sẵn Commercial-off-the-shelves (COTS).
  5. Lập trình trong cô lập hay trong nhóm nhỏ.
  6. Niềm tin rằng nếu một chương trình “làm việc”, nó là tốt.
  7. Cách tiếp cận phát triển không hình thức (chủ yếu viết mã) thay vì cách tiếp cận chặt chẽ yêu cầu nhiều kĩ năng hơn.

Người phát triển phần mềm thực hành trong công nghiệp phải giải quyết:

  1. Hệ thống phần mềm lớn, thường hàng trăm nghìn hay hàng triệu dòng mã.
  2. Nhiều ngôn ngữ lập trình, Pascal và C KHÔNG được dùng nữa, bị thay thế bằng Java, C++, C # và Ajax;
  3. Hệ thống hiện tại vẫn còn quan trọng và phải được bảo trì và liên tục được cập nhật. Hiếm khi bạn bắt đầu cái gì đó mới;
  4. Phần lớn các công ti có hàng trăm công cụ phần mềm và dùng nhiều sản phẩm thương mại làm sẵn COTS.
  5. Phần lớn nỗ lực phát triển đều được thực hiện bởi các tổ lớn, không ai làm việc một mình.
  6. Có nhiều bù trừ chi phí hiệu năng trong hoàn cảnh kinh doanh. Một chương trình “làm việc” có thể không đủ tốt.
  7. Mọi phát triển phải tuân theo các qui trình và chuẩn được xác định rõ.

Rõ ràng, hai cách tiếp cận này KHÔNG ngang hàng với nhau, đó là lí do tại sao nhiều sinh viên khoa học máy tính chịu thua thiệt trong công nghiệp phần mềm và phải được đào tạo lại trước khi họ có thể có năng suất.

Một vấn đề chính khác là việc nhận diện tri thức và kĩ năng. Tri thức nói tới điều sinh viên “biết” nhưng kĩ năng chỉ ra những điều sinh viên phải có khả năng “làm.” Hơn nữa kĩ năng có thể được xác địng bằng “chiều sâu” (Quen thuộc, Thực hành và Làm chủ) dựa trên kinh nghiệm và chiều dài của thực hành. Không may, phần lớn các giáo sư đại học chưa bao giờ làm việc trong công nghiệp phần mềm hay chưa từng được đưa vào những thực hành này cho nên họ chỉ tập trung vào dạy lí thuyết mà không thực hành, vì vậy sinh viên không bao giờ có cơ hội để phát triển tri thức chiều sâu về một số chủ đề.

Ngày nay, phần lớn các đại học hàng đầu trên thế giới đang thay thế các bài tập truyền thống bằng “kịch bản tái tạo” nơi sinh viên phải áp dụng điều họ học vào giải quyết “vấn đề thực.” Với cách tiếp cận này, sinh viên có thể phát triển các kĩ năng của họ bằng việc áp dụng tri thức họ học trong lớp và nhận được phản hồi từ các giáo sư. Đây là lí do chính tại sao phần lớn các chương trình kĩ nghệ phần mềm đều hội tụ vào “qui trình” hay dãy các hoạt động mà kĩ nghệ phần mềm phải tuân theo thay vì học các lí thuyết trừu tượng.

Theo phương pháp bài giảng truyền thống, qui trình phần mềm là khó dạy bởi vì chừng nào giáo sư còn chưa có kinh nghiệm công nghiệp thực tế, sẽ khó giải thích khái niệm về qui trình cho sinh viên, người đơn giản ngồi và nghe hướng dẫn. Học “qui trình” họ phải “làm nó.”  (Phương pháp học qua hành).

Chẳng hạn, theo cách tiếp cận kịch bản tái tạo, có nhiều biến cố xảy ra đồng thời; cho nên sinh viên phải thường xuyên ngắt hoạt động của mình để làm việc trên các hoạt động khác như trong dự án thực. Họ học cách ưu tiên hoá công việc của mình bởi vì làm theo cùng cách mọi lúc sẽ không dẫn tới cùng kết quả.

Theo cách tiếp cận kịch bản, có vài nhân tố ngẫu nhiên như yêu cầu thay đổi, thành viên tổ thay đổi, khách hàng thay đổi và lịch biểu thay đổi cũng giống như trong dự án thực cho nên sinh viên học rằng có những mục đích xung đột mà đôi khi can nhiễu lẫn nhau mà họ phải giải quyết. Hành động của sinh viên để nhận diện những mục đích nào đó là quan trọng hơn các mục đích khác, và một số mục đích có thể được đạt tới khi các mục đích khác có thể bị trì hoãn hay được thực hiện một phần. Sinh viên sẽ học rằng với mọi dự án, có nhiều người dùng và khách hàng mà từng người đều cố thoả mãn nhu cầu riêng của họ cho nên sinh viên học cách thương lượng và thoả hiệp cũng như họ sẽ thực hiện trong dự án thực.

Tôi tin cách tiếp cận mới này là cao cấp hơn nhiều so với cách tiếp cận truyền thống, đặc biệt trong việc dạy kĩ nghệ phần mềm hay các lĩnh vực công nghệ khác.

English version

Learning Software Engineering

There is a difference between the computer skills taught at university and the skills that are needed by the software industry. The difference seems to be the way academic view of how computer theories must be taught to students and the experiences of the professors. The academia view of teaching is focusing in a series of lectures about computing theories and practice using programming assignments. While this is a reasonable approach, such lectures and class assignments often lack an “in-depth knowledge” of what happened in real software projects. That is why many students who are very good in school have difficulty to apply their theories into practices when working in software industry. Following are some differences:

The academic approach emphasizes:

  1. The construction of small programs, about few hundred lines of code.
  2. The use of few programming languages such as Pascal or C.
  3. Everything always “start new” for each assignment.
  4. School rarely teaches the use of software tools or Commercial-off-the-shelves (COTS) products.
  5. Programming in isolation or in small groups.
  6. The belief that if a program “works”, it is good.
  7. An informal development approach (Mostly coding) rather than rigorous that requires more skills.

Practicing software developer in industry must have to deal with:

  1. Software systems that are large, often hundred thousands or millions lines of code.
  2. Several programming languages, Pascal and C are NOT used anymore, to be replaced by Java, C++, C # and Ajax;
  3. Existing systems remain important and have to be maintained and continuously updated. Rarely you start something new;
  4. Most companies have hundreds of software tools and extensive use of Commercial-Off-The Shelves Products
  5. Most development efforts that are undertaken by large teams, no one works alone.
  6. There are many cost performance trade-offs in business contexts. A program that “Work” may not be good enough;
  7. Every development must follow a well-defined processes and standards.

Clearly, these two approaches are NOT in line with each other, that is why so many computer science students suffered in the software industry and have to be retrained before they can be productive.

Another major issue is the identification of knowledge and skills. Knowledge refers to what student “know” but skills indicate things that students should be able to “do”. Furthermore the skills can be specified with a “depth” (Familiarity, Practice, and Mastery) based on experiences and length of practice. Unfortunately, most university professors never work in software industry or have been exposed to these practices so they only focus on teaching theories but not practices so students never have a chance to develop an in-depth knowledge of some subjects.

Today, most top universities in the world are replacing traditional assignments with “simulated scenarios” where students must apply what they learn in solving “real problems”. With this approach, students can develop their skills by applying the knowledge they learned in class and receive feedbacks from professors. This is the main reason why most software engineering programs is focusing on “the process” or the sequence of activities that software engineering must follow rather than learning abstract theories. In traditional lectures method, software process is difficult to teach because unless the professor have actual industry experiences, it would be difficult to explain the concept of process to students who are simply sitting and listening to the instructions. To learn “process” they must “do it”.  (The Learning by Doing method).

For example, in the simulated scenario approach, there are multiple events happen at the same time; so students must frequently interrupt their activities to work on others just like in real project. They learn how to prioritize their works because doing the same way every time will not lead to the same results. In scenario approach, there are several random factors such as requirements changes, team member change, customers change and schedules change just like in real project so student learn that there are conflicting goals that sometimes interfere with each other that they must solve. Students’ actions are to identify certain goals as more important than others, and some goals that can be attained when others can be postponed or partially fulfilled. Students will learn that for every project, there are multiple users and customers that each try to satisfy their own needs so they learn how to negotiate and compromise just as they will do in real projects.

I believe this new approach is far superior than the traditional approach, especially in teaching software engineering or other technology fields.

 


Gửi bình luận
(0) Bình luận
1

Làm việc hay không làm việc

Tuần trước tôi nhận được một email: “Dường như là thầy đang khuyến khích sinh viên đi làm trong khi vẫn đang học đại học nhưng bố mẹ em bảo em rằng em phải tập trung vào học tập vì họ có thể chăm lo cho em. Đi làm sẽ làm phân tán học tập của em và em KHÔNG nên làm hai điều đồng thời thì sẽ không thành công trong cái nào. Thầy nghĩ thế nào?”
2

Phần mềm mã nguồn mở

Phần mềm “nguồn mở” là phần mềm được viết theo cách mã nguồn để mở, sẵn có cho mọi người dùng, thay đổi, cải tiến và tự do phân phối lại nó.
3

Nghề nghiệp và việc làm

"Em hiểu rằng giáo dục đại học là quan trọng nhưng em vẫn bị lẫn lộn về chọn lựa của em khi kết thúc giáo dục bậc đại học rồi đi làm cùng việc làm như mọi người có sáu tháng đào tạo lập trình..."
4

Tính toán mây

Một người quản lí hỏi: “Tác động của tính toán mây là gì? Công ti tôi được coi như dùng dịch vụ tính toán mây từ Microsoft. Điều gì sẽ xảy ra cho những người làm việc trong nhóm công nghệ thông tin hỗ trợ cho công ti?”
5

Lập mục đích

Bạn có biết thuyền trưởng dẫn hướng con thuyền của mình trên đại dương thế nào không?

Bill Gates nói tại Harvard

Bill Gates trở lại Đại học Harvard để nói chuyện cho một lớp sắp tốt nghiệp và nhận bằng danh dự sau khi bỏ học tại trường 33 năm trước đây để thành lập Microsoft Corp.

Vấn đề với dự án phần mềm lớn

Khi nhiều dự án phần mềm đang ngày càng lớn hơn và phức tạp hơn, kĩ năng và kinh nghiệm của người quản lí càng trở nên quan trọng hơn.

Làm thế nào để trở thành người phát triển phần mềm tốt

Tôi nhận được email từ một người bạn hỏi về cách đánh giá người phát triển phần mềm để xác định ai tốt ai xấu.

Bill Gates ở Đại học Thanh Hoa

Trong chuyến thăm lần thứ 10 tới Trung Quốc, chủ tịch Microsoft Corporation Bill Gates đã làm khuấy động ở Bắc Kinh

Việc làm

Tuần trước tôi nhận được email mà người viết nói “Tôi không có bằng cấp về khoa học máy tính hay kĩ nghệ phần mềm. Làm sao tôi có thể học để kiếm việc trong lĩnh vực máy tính?”

Xu hướng thị trường

Khi tôi đi tiến hành nghiên cứu về xu hướng phần mềm toàn cầu, tôi có thể thấy bằng chứng về cuộc khủng hoảng tài chính ở hầu khắc mọi nước với công nhân bị sa thải và các công ti phần mềm hết khả năng kinh doanh.

Lời khuyên cho người quản lí dự án phần mềm

Sau đây là đối thoại giữa người quản lí cấp cao (SM) người đưa ra lời khuyên cho người quản lí dự án phần mềm (PM)

CMU tại Trung Quốc

iCarnegie của Carnegie Mellon và iSofStone, một trong những công ti khoán ngoài hàng đầu của Trung Quốc, đã cùng là đối tác để mở học viện đào tạo cho các nhà chuyên nghiệp CNTT ở Vô Tích, Trung Quốc.

'Trạm dừng sinh tử' và những bí ẩn diệu kỳ

“Trạm dừng sinh tử” mang đến cho người đọc nhiều điều ngạc nhiên và đáng chiêm nghiệm về những người cận tử, những người làm công việc chăm sóc người bệnh giai đoạn cuối đời và những mối “nhân duyên” kỳ lạ giữa con người với con người trong cuộc đời này.

Người kiểm thử chuyên nghiệp

Blog GS John VU - GS John Vu - 24/06/2026 12:00
Tuần trước, một sinh viên hỏi tôi: “Kiểm thử có phải là việc làm mức vào nghề hay nó là một nghề chuyên nghiệp? Có nghề như kiểm thử viên phần mềm không?”

Đừng mắc bẫy! Người xấu tính xuyên tạc, đánh giá thấp bạn? Sự thật là họ đang mang "GƯƠNG SOI" chính mình ra chỉ trích!

Kỹ năng - Tích Thành - 24/06/2026 11:00
Khi những lời chỉ trích cay nghiệt, sự hạ bệ vô cớ ập đến, phản ứng tự nhiên của bạn là gì? Thường là giận dữ, ấm ức, hoặc lao vào giải thích để phân bua. Nhưng có một sự thật mà bạn không hề hay biết. Đó là...

Người càng thông minh càng “lạnh”: 3 việc không quản, 4 điều không nói, 5 kiểu không giúp để sống nhẹ đầu

Suy ngẫm - Trang Đào - 24/06/2026 10:00
Trong cách đối nhân xử thế, người thông minh không phải là người nói nhiều hay can thiệp sâu, mà là người biết dừng đúng lúc, lùi đúng chỗ.

"Thần đồng văn học", được Đại học Thanh Hoa phá lệ để tuyển vào: Cuộc sống hiện tại gây bất ngờ

Phong cách sống - Nhật Linh - 24/06/2026 09:00
Trong khi phần lớn học sinh phải cạnh tranh quyết liệt từng điểm số để giành suất vào các trường đại học hàng đầu, một cô gái trẻ ở Trung Quốc từng khiến dư luận bất ngờ khi được Đại học Thanh Hoa đặc cách hạ chuẩn tới 60 điểm để tuyển sinh.

'Trạm dừng sinh tử' và những bí ẩn diệu kỳ

Từ sách - Phim - Thu An - 24/06/2026 08:00
“Trạm dừng sinh tử” mang đến cho người đọc nhiều điều ngạc nhiên và đáng chiêm nghiệm về những người cận tử, những người làm công việc chăm sóc người bệnh giai đoạn cuối đời và những mối “nhân duyên” kỳ lạ giữa con người với con người trong cuộc đời này.

Nghề nghiệp và việc làm

Blog GS John VU - GS John Vu - 23/06/2026 12:00
"Em hiểu rằng giáo dục đại học là quan trọng nhưng em vẫn bị lẫn lộn về chọn lựa của em khi kết thúc giáo dục bậc đại học rồi đi làm cùng việc làm như mọi người có sáu tháng đào tạo lập trình..."

Điều doanh nghiệp cần biết về GPT - “bộ não” phía sau chatbot AI

Kỹ năng - Vân Anh - 23/06/2026 11:00
GPT, viết tắt của Generative Pre-trained Transformer, là một lớp mô hình trí tuệ nhân tạo tạo sinh có khả năng tạo ra văn bản, tóm tắt tài liệu, viết email, trả lời câu hỏi, hỗ trợ lập trình hoặc phân tích dữ liệu theo yêu cầu bằng ngôn ngữ tự nhiên. Nói đơn giản, GPT giống như “bộ não ngôn ngữ” đứng sau nhiều chatbot AI nổi tiếng hiện nay, bao gồm Chat GPT.

Không phải nghèo hay xấu xí: 3 kiểu đàn ông này mới là “án tử xã hội”

Suy ngẫm - Ứng Hà Chi - 23/06/2026 10:00
Đàn ông có những vấn đề này không chỉ là lỗi hành vi, mà phản ánh sự rối loạn ở tầng nhận thức, khả năng tự kiểm soát và phán đoán cốt lõi.

Việt Nam có một nhà văn sở hữu tác phẩm được dịch ra ít nhất 3 thứ tiếng, là tài liệu nghiên cứu, giảng dạy tại Havard, Stanford, Oxford

Phong cách sống - Nhật Linh - 23/06/2026 09:00
Không chỉ là cây bút lớn của văn học Việt Nam hiện đại, nhà văn này còn là tác giả sở hữu tác phẩm có sức sống vượt ra khỏi biên giới quốc gia.

 'Để hiểu một người' - Chúng ta đang sống trong thời đại khủng hoảng kết nối 

Từ sách - Phim - TĐ - 23/06/2026 08:00
Thứ chúng ta cần nhất là các mối quan hệ, và thứ mà chúng ta xử lý vụng về nhất dường như cũng là các mối quan hệ.

Tính toán mây

Blog GS John VU - GS John Vu - 22/06/2026 12:00
Một người quản lí hỏi: “Tác động của tính toán mây là gì? Công ti tôi được coi như dùng dịch vụ tính toán mây từ Microsoft. Điều gì sẽ xảy ra cho những người làm việc trong nhóm công nghệ thông tin hỗ trợ cho công ti?”

Thất nghiệp đừng vội hoảng: 5 kỹ năng "hái ra tiền" tự học miễn phí giúp bạn lật ngược thế cờ

Kỹ năng - Kiều Dương - 22/06/2026 11:00
Thay vì lo âu khi CV gửi đi chưa có phản hồi, hãy tận dụng khoảng thời gian này để trang bị 5 kỹ năng hữu ích hoàn toàn miễn phí trên mạng.

Tỷ phú Elon Musk và 5 lời khuyên: Chỉ cần làm được 1 điều, cơ hội thành công sẽ tăng vọt

Suy ngẫm - Phương Anh - 22/06/2026 10:00
Vị tỷ phú này cho rằng, để đạt được thành công, mỗi người cần phải mạnh mẽ và nỗ lực thực hiện những điều sau.

Câu chuyện đằng sau tấm ảnh sét đánh đỉnh Landmark 81 thu hút "bão like"

Phong cách sống - Vũ Thanh Bình - 22/06/2026 09:00
Sau 7 năm theo dõi hiện tượng giông sét, tác giả bức ảnh đã ghi lại được khoảnh khắc sét đánh trúng đỉnh tòa nhà Landmark 81 trong cơn mưa lớn tại TPHCM.

Biến tiềm năng thành tài năng - Chúng ta đang sống trong một nền văn hóa tôn thờ tài năng thiên bẩm

Từ sách - Phim - TĐ - 22/06/2026 08:00
 Adam Grant cho rằng tiềm năng không nằm ở nơi bạn bắt đầu, mà nằm ở quãng đường bạn có thể đi được.
HẠT GIỐNG TÂM HỒN
2019 Bản quyền thuộc về hatgiongtamhon.com.vn. Phát triển bởi ONECMS