Designer Developer Team Working Collaboration Concept 115495 108 1
20Th2

Thế hệ lập trình viên mới đang thay thế những kỹ sư phần mềm chuẩn mực?

1 Ye6xxvifqmkas2dbxjwmug 8

Hầu hết những người tôi quen biết đều là kỹ sư phần mềm (Software Engineer) hay các nhà khoa học về máy tính (Computer Scientist) đã có kinh nghiệm và trải qua thời kỳ khoa học máy tính được yêu cầu đào tạo đặc biệt kỹ lưỡng. Tuy nhiên việc được đào tạo chuẩn chỉnh về khoa học máy tính có vẻ chỉ đúng với các nhà khoa học máy tính, còn đối với những người làm lập trình thì không hẳn như vậy. Nhiều trường đại học lâu năm mà tôi biết đang than phiền về sự giảm sút kỹ năng và trình độ học vấn của thế hệ trẻ. Bản thân tôi cũng nhận thấy sự thay đổi này từ phía các ứng viên lập trình đầu vào cả trong công việc lẫn các lớp đào tạo. Có vẻ như công nghệ phần mềm được biết đến như một ngành học nguyên tắc và chuyên nghiệp đã nhường chỗ cho các developer non nớt – những người biết rất ít về khoa học máy tính chuẩn. Có điều gì đó đã thay đổi sao?

 

Nhìn lại lịch sử

Nếu quay trở lại thời kỳ khởi đầu của khoa học máy tính, cụm từ “khoa học máy tính” vẫn chưa được sử dụng và không có Khoa về khoa học máy tính ở bất kỳ trường học nào. Khoa học máy tính, thời đó, về cơ bản cũng giống như một môn học và là tập con của toán học và/hoặc kỹ thuật mà thôi. Khoa khoa học máy tính đầu tiên được thành lập vào năm 1962 tại Đại học Purdue, và phải mất 15 năm sau đó để có một trường đại học nhỏ chỉ chuyên về ngành này. Bước vào thập niên những năm 1980, khoa học máy tính chủ yếu vẫn được xem là một mảng nhỏ của toán học hay kỹ thuật nói chung. Tuy nhiên, các lập trình viên máy tính đã sớm lộ diện từ những năm 1940. Vậy những người tiên phong đầu tiên này là ai và họ đã làm gì?

Augusta Ada King, Nữ bá tước Lovelace: Nhà toán học và được xem là lập trình viên đầu tiên trong lịch sử

Các lập trình viên (programmer) đầu tiên đều là những người theo toán học. Thời đó họ chưa được gọi là lập trình viên một cách thường xuyên. Họ là những nhà phân tích, kỹ sư, nhà toán học, hay được gọi một cách chung chung là những “người phụ nữ thực sự thông minh làm việc trong phòng lạnh (Những nhà lập trình đầu tiên hầu hết là nữ và máy tính thời đó được đặt trong phòng có điều hòa nhiệt độ). Những “programmer” này đều phải có kiến thức chuyên sâu và được đào tạo chính thức về toán học và/hoặc kỹ thuật. Hầu hết họ gần như đạt đến trình độ của một nhà khoa học so với những người làm nghề lập trình viên trong thời đại ngày nay. Theo thời gian, và vào cuối những năm 1960, lĩnh vực phần mềm phát triển và những người liên quan đến lập trình được biết đến như những kỹ sư phần mềm (software engineer). Đây là những người có trình độ học vấn cao (chủ yếu vẫn là phụ nữ), thường có bằng cấp về toán học. Điều này vẫn được tiếp tục duy trì một thời gian sau đó.

Margaret Hamilton, một trong những kỹ sư phần mềm lỗi lạc đầu tiên

Đến những năm 1980, ngành khoa học máy tính và bằng cấp liên quan đến ngành này bắt đầu chiếm ưu thế tại các trường cao đẳng và đại học. Một số người xem đây là thời kỳ hoàng kim của khoa học máy tính. Máy tính cá nhân xuất hiện trong các ngôi nhà trên khắp nước Mỹ, những bộ phim như WarGames gây tò mò cho mọi người và khiến họ muốn tìm hiểu sâu hơn về máy tính, và những tin đồn về một thứ được gọi là “ The Internet” xuất hiện đã khiến mọi người sợ hãi. Trong giai đoạn này, chúng ta đã chứng kiến sự tăng lên về số lượng của những “kỹ sư phần mềm” chuẩn mực. Đó là title được tôn trọng và được nhiều người khao khát bởi chỉ những người được đào tạo chính thức về toán học, khoa học máy tính và/hoặc kỹ thuật điện mới được phép sử dụng. Điều này cũng chỉ kéo dài một thời gian.

 

Có điều gì đó đã thay đổi

Đến cuối những năm 1990, thế hệ người làm lập trình mà chúng ta bây giờ vẫn đơn giản gọi là “programmers”, “coder” hay “developer” xuất hiện. Đây là những người thay vì sở hữu bằng đại học chính quy như trước, lại chỉ có các chứng chỉ như đào tạo kỹ thuật quân sự hoặc bằng cấp liên kết về lập trình thực hành, hoặc đơn giản là tự học nhờ Internet. Dần dần, nhóm lập trình mới này bước vào lĩnh vực công nghệ phần mềm với title như “programmer”, “developer”, trái ngược với những “engineer”. Chúng ta cũng chứng kiến ​​sự bùng nổ trong các lĩnh vực kỹ thuật liên quan đến máy tính như chuyên gia mạng và quản trị viên hệ thống.

Thậm chí cho đến đầu những năm 2000, với tư cách là Hiring Manager, tôi gần như chưa bao giờ thấy đơn ứng tuyển nào cho vị trí kỹ thuật phần mềm mà ứng viên không có bằng cấp chính quy 4 năm. Nếu thấy, hẳn tôi sẽ từ chối ngay lập tức mà không cần phải suy nghĩ thêm. Đến cuối năm 2010, ít nhất một nửa số đơn ứng tuyển tôi nhận được không có bằng cấp chính thức. Bây giờ là giáo sư khoa học máy tính, tôi thường xuyên gặp những sinh viên bỏ học sau một hoặc hai kỳ học bởi họ đã tìm được công việc như một lập trình viên (những công việc này thường không thực sự ổn, và không phải là một công việc mà họ đã sẵn sàng, nhưng có tiêu đề là “developer”)

 

Tên vị trí “Software Engineer”, đã không còn dành riêng cho kỹ sư được đào tạo chuẩn chỉnh hay nắm giữ các vị trí cấp cao tại các tập đoàn công nghệ lớn nữa. Giờ đây, các title “Developer” hay “Programmer” xuất hiện nhiều hơn qua các quảng cáo, hoặc theo một cách giật tít hơn như “hacker”, “code-ninja”, “code-guru”. Chúng ta cũng thấy tiêu đề “Fullstack Developer” xuất hiện khắp mọi nơi, như thể nó có một ý nghĩa đặc biệt nào đó (đáng tiếc, nó thực sự không hề có ý nghĩa đặc biệt nào cả!). Bằng cấp không còn là một chỉ số cần thiết để đánh giá khả năng của ai đó trong nghề lập trình, và trên thực tế đào tạo chính thức không còn là một tiêu chuẩn bắt buộc. Các tiêu chuẩn dường như dần bị hạ thấp nghiêm trọng, đến mức bất cứ ai có thể code bây giờ đều được gọi là “programmer”.

 

Vậy điều gì đã xảy ra?

Đa phần những người được đào tạo chuẩn chỉnh trước đây lập luận rằng là các tiêu chuẩn đã bị chối bỏ. Rõ ràng là nhu cầu về những người có thể lập trình đã tăng vọt một cách khủng khiếp. Phải có ai đó để lập trình chứ? Và vì thế chúng ta hạ thấp tiêu chuẩn chỉ để bất kỳ ai cũng có thể ngồi sau bàn phím và code. Nghe qua thì lý do này có vẻ khá hợp lý bởi có rất ít người vượt qua được bốn năm đại học đầy thử thách về khoa học và số người đạt bằng cấp cao trong các ngành như toán học, kỹ thuật và khoa học máy tính lại càng ít hơn.

Đây hẳn là một câu chuyện về những con số. Nhu cầu về developer rất cao, số người có khả năng lấy tấm bằng bốn năm về khoa học máy tính lại tương đối thấp, và chúng ta cần các lập trình viên ngay và luôn. Chúng ta phải đáp ứng nhu cầu này bằng cách nào đó, và giải pháp là hạ thấp các tiêu chuẩn. Rõ ràng, bây giờ chúng ta đang cho phép cho bất cứ ai đều có thể trở thành kỹ sư (engineer) và kỳ vọng về những sản phẩm tốt nhất một cách mù quáng. Dường như, kỹ thuật phần mềm chuẩn mực đang dần biến mất và được thay thế bằng “coding”, hacking” thiếu sự đào tạo bài bản và chuẩn chỉnh. Đó là một câu trả lời đơn giản mà nhiều kỹ sư được đào tạo theo chuẩn muốn tin (bao gồm cả tôi). Tuy nhiên, giống như hầu hết các câu trả lời đơn giản khác, chúng ta nên nhìn sâu hơn trước khi đưa ra kết luận.

Những gì đã là bằng chứng cho một ngành công nghệ máy tính đã trưởng thành, được mô đun hóa (chuyên môn hóa theo chức năng nhiệm vụ) và tối đa hóa năng suất. Chúng ta từng yêu cầu các kỹ sư phần mềm phải được đào tạo chính thức và chuyên sâu về tất cả các khía cạnh của máy tính bởi ngày đó số lượng máy tính trong một doanh nghiệp hoặc tổ chức chỉ là…một. Một chiếc máy tính rất lớn, rất phức tạp và rất đắt tiền. Không hề có network như ngày nay và cũng không có Internet. Các cá nhân làm việc trên chiếc máy tính này phải là những nhà khoa học, kỹ sư, nhà toán học toàn năng. Những công việc ban đầu này đòi hỏi rất khắt khe bởi bản thân công nghệ thời đó còn non nớt và phần lớn còn thử nghiệm. Khi công nghệ máy tính trưởng thành, những chiếc máy tính này được mô đun hóa, sản xuất và đóng gói (giống như bất kỳ công nghệ nào). Các cá nhân sẽ không cần phải vào vai một nhà toán học, kỹ sư, lập trình viên, quản trị viên mạng và quản trị viên cơ sở dữ liệu toàn năng. Vai trò kỹ thuật viên (cũng như chính bản thân công nghệ) đã được chia nhỏ thành các chuyên gia được đào tạo tập trung vào 1 mảng nhất định hơn là một vài chuyên gia có trình độ học vấn và khả năng tổng quát cao.

Tìm bug. Nguồn gốc của cụm từ “computer bug”

Điều này cũng xảy ra trong hầu khắp các lĩnh vực. Giai đoạn phát triển đầu tiên được dành cho những người có tầm nhìn, tài năng và có học thức nhất. Giai đoạn này những người thực sự nghiêm túc nhất với giáo dục chính quy chiếm ưu thế bởi mỗi người phải có kiến ​​thức đầy đủ về toàn bộ lĩnh vực. Hãy xem xét những ngày đầu phát triển của ngành công nghiệp ô tô (trước khi nó trở thành một ngành công nghiệp đúng nghĩa); chỉ những người có hiểu biết sâu sắc về luyện kim và kỹ thuật mới có thể chế tạo, thiết kế hoặc sửa chữa ô tô. Lắp ráp hoặc sửa chữa ô tô vào đầu những năm 1900 đòi hỏi kiến ​​thức và kỹ năng về rèn, luyện kim, chế tạo, kỹ thuật, vật lý và hóa học (dù có được đào tạo chính quy hay không, bạn vẫn phải biết rất rất nhiều thứ). Trong những năm 1930 đến 1940, nhu cầu về ô tô tăng vọt, dây chuyền lắp ráp được phát minh và lắp ráp từng phần xuất hiện. Ngày nay, một công nhân làm việc trên dây chuyền lắp ráp sản xuất ô tô nhìn chung có rất ít kiến ​​thức về kỹ thuật và luyện kim, chưa kể đến khoa học máy tính đã được ứng dụng vào điều khiển các phương tiện. Tương tự như vậy, chúng ta có các kỹ thuật viên ô tô có ít hoặc không có kiến ​​thức về kỹ thuật hoặc luyện kim (hoặc khoa học máy tính). Họ sử dụng thiết bị để xác định vấn đề, đặt mua máy móc qua mạng và lắp ráp chúng lại. Những kỹ thuật viên và công nhân trên dây chuyền lắp ráp được đào tạo và có kỹ năng, nhưng theo một cách hoàn toàn khác với một kỹ sư cơ khí hoặc một nhà luyện kim. Điều này đã xảy ra trong lĩnh vực khoa học máy tính và kỹ thuật phần mềm – bởi vì đó là điều tất yếu.

 

Kỹ thuật viên lập trình

Giống như ví dụ về ngành công nghiệp ô tô phía trên, nhu cầu về kỹ sư lập trình cao cấp đã tăng vọt. Máy tính và phần mềm được chuyên môn hóa, được đóng gói và sản xuất cùng lúc. Lúc này, sự bùng nổ trong các lĩnh vực liên quan đến khoa học máy tính (computer science) như mạng, quản trị hệ thống, mã hóa, cơ sở dữ liệu, kỹ thuật điện.. cũng đồng thời xảy ra. Chỉ đơn giản là chúng ta không đủ khả năng chi trả cho tất cả những ai hoạt động trong lĩnh vực máy tính nếu họ đều là những nhà toán học, nhà khoa học máy tính có trình độ cao. Điều này cũng tương tự như việc chúng ta không thể lắp ráp hoặc sửa chữa ô tô nếu mọi công nhân và thợ cơ khí lắp ráp bắt buộc phải có bằng thạc sĩ về kỹ thuật cơ khí. Mọi việc không cần phức tạp đến mức ấy. 
 

Những gì chúng ta có ngày nay phía sau bàn phím máy tính đang dần trở nên tương đồng với những sản phẩm của các kỹ thuật viên ô tô lành nghề (chứ không phải là các kỹ sư cơ khí được đào tạo bài bản, chính thức). Định nghĩa về “coder” hay “developer” giờ đây đã không còn gắn liền với tấm bằng chính thức 4 năm về khoa học máy tính. Thay vào đó, họ đã trở thành những người được đào tạo cơ bản, tham gia một vài khóa học computer science nhưng chủ yếu vẫn liên quan trực tiếp đến việc lập trình. Việc lập trình ngày nay cũng không còn diễn ra trong các môi trường thử nghiệm, phức tạp vốn yêu cầu một nền tảng kiến thức thật chắc chắn về khoa học máy tính. Nó chỉ đơn giản yêu cầu khả năng xác định vị trí các bộ phận và lắp ráp nó đúng cách, tương tự với những kỹ thuật viên về ô tô. Một lập trình viên cũng không cần phải biết cách thiết kế và xây dựng một thuật toán sắp xếp-tìm kiếm và phân tích hiệu suất theo phương pháp của toán học trước khi triển khai. Công việc của họ chỉ đơn giản là tìm cách sắp xếp  “bộ phận” đó và ráp nó vào mà thôi.

Những gì chúng ta đang chứng kiến không phải là sự biến mất của những kỹ sư phần mềm hay nhà khoa học máy tính thực thụ, đó chỉ là sự trỗi dậy của các kỹ thuật viên lập trình.

Chân dung về những developer có trình độ: Có kiến thức về khoa học máy tính ở mức cơ bản nhưng phải liên quan trực tiếp đến việc lập trình cùng với chương trình đào tạo về lập trình. 

 

Sức sống mạnh mẽ của sự chuẩn mực

Các nhà khoa học máy tính và kỹ sư phần mềm thực thụ không hề bị thay thế bởi “coders”, “developers” hoặc thậm chí là “hackers”. Họ chỉ đơn giản là đang được sắp xếp và phân bổ lại họ vào các vị trí mới trong nền công nghiệp đang phát triển rất nhanh này. Nhờ vào những ngọn cờ tiên phong là các nhà khoa học máy tính, kỹ sư và nhà toán học, giờ đây kỹ thuật viên lập trình (hay các tên gọi hiện đại hơn như “developer” hoặc “coder”) mới có cơ hội phát triển mạnh mẽ. Việc phát triển phần mềm ngày nay được chuyên môn hóa hơn và chủ yếu được đóng gói sẵn. Đặc biệt, các thành tựu trong ngành khoa học phần mềm đã tạo nên các thư viện chuyên sâu, package manager, dependency manager, môi trường phát triển phần mềm được tích hợp, dịch vụ phần mềm, cơ sở hạ tầng dịch vụ, kho lưu trữ mã phân tán và dĩ nhiên bao gồm cả sự phát triển của Internet. Tất cả đều được khởi nguồn từ các tiến sĩ và kỹ sư trong viện nghiên cứu khoa học máy tính. Hơn nữa, các ngôn ngữ lập trình như Python đã trừu tượng hóa các chi tiết đến nỗi hầu như ai cũng có thể làm được chỉ với một chút kiến thức cơ bản về khoa học máy tính. 

Các nhà khoa học máy tính vẫn đang nỗ lực nghiên cứu xây dựng các lý thuyết mới và công nghệ mới. Các kỹ sư phần mềm được giáo dục chính thống và có bằng cấp về khoa học máy tính là những người đang giúp cho các giả thuyết đó trở thành hiện thực. Tuy nhiên, giờ đây khi những công nghệ mới đang dần lọc ra những người ở front-line, chính những kỹ thuật viên lập trình là những người đang thực hiện phần lớn các công việc thường nhật trong ngành phát triển phần mềm. 

Các nhà khoa học máy tính, các nhà toán học và kỹ sư phần mềm được đào tạo chính thức với bằng cấp cao về khoa học máy tính vẫn hiện hữu, tất nhiên. Nhu cầu sử dụng những đối tượng này cao hơn bao giờ hết trong khi đó việc tìm ra họ trong toàn nhân lực của ngành công nghiệp máy tính-phần mềm đang gặp nhiều khó khăn. Các kỹ sư và nhà khoa học kể trên đã từng có thời điểm chiếm đến 100% trên tổng số người trong ngành, tuy nhiên dần dần về sau số phần trăm này ngày càng nhỏ đi. Không phải ai đó đang thay thế họ mà bởi vì một công việc với nhu cầu rất cao đã được tạo ra: Kỹ thuật viên lập trình.

Không chỉ có những kỹ sư phần mềm và các nhà khoa học máy tính mới có thể giữ vững vị thế, tất cả chúng ta, những người trong ngành vẫn đang đảm nhận tốt công việc hơn bao giờ hết. Chỉ khác là chúng ta có thêm những người đồng nghiệp mới – kỹ thuật viên lập trình, họ xứng đáng được chào đón bởi chính họ là lực lượng đảm nhận hầu hết công việc trong thời đại ngày nay. 

 

Sự lựa chọn là của bạn!

Nhờ vào sự phát triển đầy bùng nổ của công nghệ và thành tựu của những người tiên phong đầu tiên trong ngành công nghệ phần mềm, giờ đây những người thuộc thế hệ mới đều có thể có cho mình một sự nghiệp hứa hẹn trong ngành công nghiệp vốn từng được coi là “không thể tiếp cận”. Giống như cuộc cách mạng sản xuất ô tô những năm 1930-40 đã dẫn đến việc tạo ra tầng lớp trung lưu và sự tăng vọt đột biến về mức sống, cuộc cách mạng công nghệ thông tin ngày nay cũng đang tạo ra điều tương tự. Sự dân chủ hóa trong khoa học máy tính cũng đang xuất hiện như một tín hiệu tốt. 
Bây giờ, sự lựa chọn phụ thuộc ở bạn. Hầu hết tất cả mọi người đều có thể góp phần vào cuộc cách mạng về công nghệ và có được một công việc thú vị với mức lương hấp dẫn. Sự lựa chọn bây giờ không chỉ đơn giản là việc đưa ra quyết định bạn có muốn trở thành một phần của ngành công nghiệp này hay không mà còn là sự lựa chọn về cấp bậc, vị trí và cách thức để đạt được điều đó. Các tiến sĩ khoa học máy tính vẫn đang hằng ngày nghiên cứu và đưa ra những lý thuyết mới. Những người có bằng cấp cao về toán và khoa học máy tính vẫn đang thử nghiệm và tìm cách biến chúng thành những công nghệ thực tế. Các kỹ sư phần mềm được đào tạo chính quy với trình độ khoa học máy tính đang đảm nhiệm vai trò kiến trúc sư và lãnh đạo. Các kỹ thuật viên lập trình (các coder, developer, programmer hiện đại) là lớp tiên phong thực hiện công việc đưa các “bộ phận” vào đúng vị trí, lắp ráp và bảo trì hệ thống trong khi các nhà phân tích và quản trị viên là cánh tay đắc lực để hỗ trợ họ. 

Những ngày xưa cũ đã qua, nơi thậm chí ngay cả những người được đào tạo bài bản nhất mới dám nghĩ đến việc tham gia vào lĩnh vực điện toán. Bây giờ, bản thân bạn cũng đã có thể lựa chọn trình độ học vấn cho mình hoặc có thể chọn/đổi vị trí theo mong muốn bằng cách nâng cao trình độ. Tuy nhiên, để rõ ràng hơn, nếu bạn muốn viết code chỉ để “sống qua ngày”, bạn sẽ không khi nào thoát ra khỏi sự bó hẹp trong phạm vi kiến thức cơ bản của ngành khoa học máy tính, bạn nhất thiết phải bổ sung cho mình thêm một số kỹ năng mềm và quan điểm sống riêng. Không hề dễ dàng, đúng không? Để làm được điều đó, hãy bắt đầu bằng câu hỏi: “Mình muốn bắt đầu từ đâu và muốn đi được bao xa?” nhé!

 

(Bài viết đã được cho phép dịch bởi tác giả)

Tác giả: Alexander Katrompas

Bài viết gốc: tại đây

Người dịch: Vân Phạm, Ly Nguyễn

Like & follow Pixta Việt Nam để cập nhật những tin tức công nghệ mới và thú vị nhé!