Coding trước đây đối với mình là một thứ gì xa vời, kĩ thuật mà chỉ có dân học công nghệ các thứ mới học được. Cũng có mày mò đi học freecodecamp một thời gian, học được chút html với css nhưng không ứng dụng được gì vào thực tế, bài tập code thì đơn giản mà nhìn vô cái mã của mấy trang web dài mà phát hoảng (chỗ bà bấm chuột phải xong chọn inspect đó). Vậy mà trong vòng 7 tháng từ tháng 5 năm 2024 tới giờ, Tea phát triển được hơn 50 file code các thể loại từ windows batch, appscript, cho đến python sử dụng selenium, csv, pandas các kiểu để giải quyết được những công việc thực tế, tự động hoá những công việc lặp đi lặp lại. Ngồi tính nhẩm nhẩm ra khối lượng công việc mà mấy con code này cày được chắc tương đương khoảng hai người full-time rưỡi ngồi làm, từ là gần 100 tiếng đồng hồ mỗi tuần. Nghe cao siêu quá, ghê gớm quá, nhưng mà không tới nỗi vậy đâu, để Tea kể cho nghe. Hồi trước muốn viết ra một phần mềm, một người coder cần phải biết hàng trăm, hàng ngàn dòng lệnh, mỗi dòng lệnh có một tác dụng khác nhau, và để thực hiện những chương trình phức tạp thì người coder phải biết càng nhiều lệnh càng tốt để phòng khi có một ngày sử dụng đến. Nói cách khách, phải biết thiệt nhiều để hi vọng khi gặp vấn đề thực tế thì biết dòng lệnh nào để sử dụng, đạt được hiệu quả công việc tối đa. Có đợt cũng mơ mộng muốn phát triển phần mềm, lên mạng đọc xem học bao lâu thì mới có thể code được một phần mềm hoàn chỉnh, thất vọng tràn trề khi thấy phải học cả 2-3 năm thì mới biết được một ngôn ngữ lập trình, mà nhiêu đó còn chưa đủ để làm một phần mềm hoàn chỉnh mà chỉ mới có thể lãnh một khâu trong quá trình phát triển phần mềm, còn phải phụ thuộc người khác để làm front-end, back-end các kiểu. Nghe nản luôn mà!
Năm 2021 khi ChatGPT ra đời thực sự là một bước ngoặt. Giờ người ta không cần phải thuộc làu hết tất cả các ngôn ngữ lập trình trong đầu nữa, mà chỉ cần miêu tả ý tưởng với ChatGPT là có thể phát triển được chương trình của mình bằng bất cứ ngôn ngữ lập trình nào rồi. Bắt đầu bằng một vấn đề cụ thể: Thông thường các chương trình học lập trình thường dạy các kiến thức rất nền tảng, cơ bản. Các kiến thức này rất quan trọng chứ, nhưng vẫn không có ý nghĩa gì nếu nó không liên quan. Giống như là: “Cái anh nói hay lắm, nhưng mà có liên quan gì đến tui đâu mà nói cho tui nghe?”. Bởi vậy nên mình học mấy khoá từ đầu chỉ học bài 1, bài 2 là nản mất tiêu rồi (chắc cũng tại tính không kiên nhẫn, mau chán). Vậy nếu được làm lại, Tea sẽ bắt đầu với một vấn đề cụ thể, ví dụ:
- Tạo một loạt các thư mục Google Drive theo danh sách có sẵn trong file Excel, sau đó gửi link của các thư mục này cho địa chỉ email tương ứng trong file Excel đó.
- Đổi tên tất cả các file trong mỗi thư mục con, thêm tên của thư mục chứa các file đó làm tiền tố của file để dễ nhận diện khi gửi file đi.
- Tự động đếm số chữ đã viết trong ngày/tuần/tháng và gửi email tự động nhắc nhở mình viết cho đủ mục tiêu. Hồi chưa có ChatGPT, nếu hỏi một anh bạn lập trình viên phát triển phần mềm, anh ấy có thể sẽ trả lời đại loại như: ‘Em sẽ phải học javascript, rồi phát triển appscript, rồi cách dùng/kết nối API của Google vào code của mình,…’. Mình cũng đâu thể kêu anh code thử cho em coi coi, làm cho em coi thử xong em học làm lại. Ai mà chịu chỉ cho như vậy chắc thu nhiều tiền, vừa tiền soạn bài code theo yêu cầu của mình, vừa tiền học phí dạy cho mình cách làm chương trình giống như vậy nữa. Giờ thì free hoàn toàn, mấy việc phía trên cứ bỏ vào ChatGPT mà hỏi, nó trả lời cho cặn kẽ, viết hẳn code, cho ví dụ, không hiểu dòng nào giải thích lại dòng đó. Sẽ có lúc sẽ chạm đến những vấn đề về kiến thức nền tảng, khái niệm cơ bản mà phải dành thời gian ra học cơ bản mới hiểu chứ, nhưng đến lúc đó học vẫn chưa muộn mà phải không? Chưa kể, lúc đó mình lại có động lực học để hiểu khái niệm đó hơn, vì hiểu càng sớm thì áp dụng giải quyết vấn đề càng sớm, càng nhanh. Ví dụ cụ thể cho việc này là có lúc Tea đang phát triển nhiều đoạn code cùng một lúc, lúc thay đổi này hay thay đổi kia không theo dõi được, phải copy paste, bỏ vô notes của máy tính ghi là version 1, version 2, cái nào work thì giữ lại để sau còn quay lại version đó. Lúc đó lên mạng hỏi diễn đàn, hỏi ChatGPT mới biết là dân chuyên nghiệp không ai làm thế cả, mà người ta dùng Git, lưu trữ các phiên bản khác nhau ở trên GitHub, làm tới đâu thì cập nhật sao lưu tới đó, hoàn toàn bằng lệnh hết nên nhanh gọn lẹ, không có copy paste gì rườm rà. Thế là dành cả 1 ngày để học, hiểu xem các dùng Git như thế nào, đăng lên GitHub ra làm sao, tốn cũng khá thời gian nhưng lúc nào cũng có động lực để hiểu cho nhanh mà còn quay lại phát triển dự án mình đang làm tiếp tục. Chắc vì thích ngôn ngữ, nên Tea thích nghĩ về ngôn ngữ lập trình y như một…ngôn ngữ vậy. Cũng có ngữ pháp, từ vựng như bình thường. Trong đó từ vựng là những dòng lệnh khác nhau, ví dụ trong appscript thì có dòng lệnh để mở file, đóng file, copy dữ liệu, paste dữ liệu, đổi tên file, tạo thư mục, xoá file,…hay trong selenium thì có mở tab mới, đóng tab, click vào, cuộn lên, cuộn xuống trang, điền vào ô trống,…Ngữ pháp là những cú pháp để liên kết những dòng lệnh phía trên lại với nhau, ví dụ như làm cái nào trước, làm cái nào sau, làm cái A trong vòng bao nhiêu lần trước khi thoả mãn điều kiện gì đỏ rồi thực hiện B để đóng code lại. Để thành thạo được ngôn ngữ này thì cũng phải biết nhiều từ vựng, và biết đủ ngữ pháp để liên kết những từ vựng đó lại với nhau vậy. Cũng vì vậy mà áp dụng cách học ngôn ngữ như tiếng Anh vào cách học lập trình, thiết kế phần mềm cũng rất được nè! Ví dụ như học bao nhiêu từ vựng, ngữ pháp đi nữa mà không dùng đến thì cũng quên, còn nếu chỉ biết vài cái thôi, nhưng dùng thời dùng lui, dùng hoài, dùng tới khi gặp tình huống không đủ dùng thì lại lên mạng cập nhật một tí, học thêm vài từ cho đủ dùng, thì lại nhớ hoài, nhớ rõ, nghe là hiểu, đọc tới mấy ‘từ vựng’ đó là biết người ta đang nói về cái gì liền. Muốn nói tiếng Anh hay tiếng gì hay, trước nhất phải biết nói trước phải không? Nên muốn lập trình ra phần mềm thiệt xịn xò, trước nhất cũng phải hiểu ngôn ngữ, nhưng mà hiểu ở mức sử dụng chứ không phải chỉ biết qua qua cho có rồi cũng quên. Team lập trình cơ bản, theo Tea hiểu thường sẽ có một leader và một đội những bạn coder. Người leader thường sẽ không trực tiếp ngồi viết, gõ từng dòng code, mà đa số sẽ lên concept, chỉ đạo và hướng dẫn các bạn coder trong team mỗi người viết một đoạn code khác nhau. Sau đó người leader sẽ rà soát lại xem có lỗi ở đâu không, còn có thể tối ưu được hơn nữa không, và có thể leader là người tổng hợp code, hoặc có một bạn tổng hợp các code, các phần khác nhau lại luôn. Cũng giống như trong nhà máy vậy đó, để làm ra cái bàn thì có ông làm cái chân bàn, có bà làm cái mặt bàn, có người đóng vít,…còn người thợ chính đôi khi chỉ làm những công đoạn quan trọng hoặc chỉ quan sát và hướng dẫn thôi. Công cụ AI bây giờ có thể, ở một mức độ tương đối, thay công việc của các bạn coder ngồi gõ từng dòng code để phát triển từng phần, không cần phải có những người biết hàng ngàn dòng code, vài chục ngôn ngữ lập trình để viết những đoạn code thành phần ấy nữa. Vậy nên team code ngày xưa sẽ có 2 hướng phát triển:
- Ông/Bà leader thấy ChatGPT viết được code thành phần, cắt giảm nhân sự, một mình ngồi thay vì gõ email cho nhân viên thì gõ prompt cho ChatGPT viết, sau đó tự tay hoặc giữ lại một thành viên để tổng hợp code lại, thế là xong. Team ngày xưa 8 người giờ chỉ còn 2.
- Mỗi coder trong tay bây giờ nắm giữ năng lực phát triển của một đội coder ngày trước, nên team này hiệu quả và năng suất hơn bao giờ hết, một mình team làm mang lại doanh thu bằng cả công ty ngày trước, và doanh số công ty tăng gấp 10. Tuy nhiên điều này cần các bạn coder phải phát triển tư duy và những kĩ năng khác ngoài code, ví dụ như lắng nghe khách hàng, tìm hiểu nhu cầu, phát hiện vấn đề, thiết kế giải pháp,…Còn ai chỉ biết code và biết code thật giỏi thì cũng…hơi có vấn đề. Dĩ nhiên đây chỉ là một góc nhìn over-simplified - được tối giản hoá để bản thân và những người không làm việc trong ngành công nghệ khác hiểu được, chứ vấn đề này nó còn nhiều góc cạnh để phân tích, trong thực tế thì nó không đơn giản đến mức như vậy. Tea tin là vài năm nữa từ bây giờ, đa số mọi người đều biết phát triển phần mềm hết, tại ai cũng có một ông thầy quá giỏi, quá xịn xò là ChatGPT ở bên cạnh hướng dẫn chi tiết, cầm tay chỉ việc, thậm chí có thể đóng vai trò một ‘coder’ trong đội code ‘một mình tui’, còn bản thân mình là một người leader miêu tả vấn đề, giám sát và chỉnh sửa cho phù hợp với nhu cầu thực tế. Ai cũng có thể biết cách tạo ra những đoạn code để phục vụ như cầu công việc cá nhân, ví dụ như người kế toán thì có thể làm code để tự động tổng hợp dữ liệu kế toán, xuất báo cáo tài chính, tự động gửi email cho khách hàng theo ý muốn của mình, hay ca sĩ cũng có thể làm những phần mềm để quản lí show, book lịch, xuất hoá đơn cho khách,…hay đặc biệt giáo viên như Tea có thể tự động hoá việc chấm bài, gửi bài, từ đó mà có nhiều thời gian hơn để tập trung vào việc học những cái hay ho hơn để dạy cho học viên. Đương nhiên là các việc trên đã có những giải pháp phần mềm sẵn (gọi là SaaS) như Calendly (đặt lịch), MISA (kế toán), eInvoice (xuất hoá đơn), nhưng vẫn còn những việc nhỏ hàng ngày mà tốn rất nhiều thời gian trong khi có thể được tự động hoá bởi những đoạn code đơn giản. Biết code không phải để thay thế những giải pháp trên, mà để bổ sung vào những chỗ còn thiếu. Học đi chưa muộn cả nhà ơi!!