Lập trình viên và chuyện gõ phím

Lập trình viên và chuyện gõ phím
Photo by fancycrave1 from Pixabay

Vừa trải qua một đợt bận rộn, giờ đây rảnh rỗi hơn, tôi có nhiều thời gian suy nghĩ hơn về nghề nghiệp, về tương lai của bản thân và về nhiều thứ khác. Trong bài viết này, tôi sẽ trình bày những suy nghĩ của mình về gõ phím – việc làm hằng ngày của tôi cũng như mọi lập trình viên khác.

Nghề lập trình

Ngoài kia người ta đang đồn nhau rằng, IT là vua của mọi nghề. Rất nhiều “thằng em sinh năm 96 bỏ học cơ khí chuyển sang làm IT”. Chỉ nói nghề IT thì chung chung và có rất nhiều ngành nhỏ. Trong những ngành nhỏ của IT thì ngành phần mềm là một trong số những ngành đang hot hiện nay. Nhà nhà đi học lập trình, người người trở thành lập trình viên.

Lập trình viên là những người làm nghề lập trình. Ngày tôi nghe nói đến nghề này thì người ta gọi chung là lập trình viên. Bây giờ người ta có rất nhiều thuật ngữ khác nhau để chỉ người làm nghề lập trình: coder, programmer, developer hay thậm chí là software engineer. Những từ tiếng Anh này, đương nhiên là không hoàn toàn cùng nghĩa, nhưng đang được sử dụng khá bừa bãi.

Tôi thấy thực tế ở Việt Nam, đây chỉ là các từ ngữ hoa mỹ khác nhau để chỉ những người làm cùng một công việc, mỗi nơi sẽ gọi một khác. Dù đưa ra vô vàn cách giải thích về sự khác nhau giữa những thuật ngữ này, thì chẳng qua người ta đang cố muốn thể hiện rằng công ty tôi toàn người giỏi, toàn làm việc ở trình độ cao chứ không phải loại tầm thường. Nhưng thực tế thì software engineer ở công ty này cũng làm công việc tương tự như coder ở công ty khác mà thôi 😆.

Lập trình (programming), hay dịch từ tiếng anh là lên chương trình cho máy tính, nghĩa là công việc mà lập trình viên sẽ sử dụng các ngôn ngữ lập trình khác nhau để thiết kế, xây dựng và bảo trì các chương trình máy tính. Một tập các chương trình máy tính, thư viện và dữ liệu liên quan sẽ tạo ra phần mềm, là thứ cung cấp tiện ích cho người dùng sử dụng.

Và rõ ràng, khi con người còn sử dụng máy tính, thì nhu cầu về phần mềm sẽ không bao giờ hết. Và do đó, ngành lập trình sẽ còn tồn tại rất lâu nữa. Tôi chưa biết sau này máy tính lượng tử sẽ thay đổi ngành lập trình thế nào. Nhưng có lẽ là hết đời này thì nghề lập trình vẫn sẽ giống như bây giờ.

Xin trích dẫn một câu nói của Edsger Dijkstra:

When we had no computers, we had no programming problem either. When we had a few computers, we had a mild programming problem. Confronted with machines a million times as powerful, we are faced with a gigantic programming problem.

Đặc biệt dưới thời đại ngày nay, những cụm từ như cách mạng 4.0 hay chuyển đổi số (DX – Digital Transformation) xuất hiện khắp nơi, nhu cầu về phần mềm ngày càng nhiều hơn ở tất cả các lĩnh vực trong đời sống. Chính vì thế, nhu cầu về nguồn nhân lực trong ngành luôn ở mức rất cao. Các vị trí công việc liên quan đến lập trình máy tính được nhiều công ty, tổ chức đăng tuyển với mức lương và đãi ngộ tốt hơn mặt bằng chung rất nhiều.

Hầu hết mọi người vẫn thường nghĩ làm lập trình viên là một công việc nhàn hạ, được ngồi phòng điều hoà, mưa không tới mặt, nắng chẳng tới đầu mà thu nhập lại cao. Suy nghĩ này phần đúng (về việc ngồi phòng điều hòa), còn về công việc thì sai hoàn toàn. Lập trình viên làm việc rất rất vả, bên cạnh đó là những mặt trái mà ít ai biết tới.

Phần lớn thời gian của lập trình viên là ngồi làm việc với màn hình máy tính, do vậy cũng có rất nhiều bệnh tật cũng theo đó mà ra, có thể kể đến như: sỏi thận, trĩ, thoát vị đĩa đệm, v.v… Do đặc thù công việc nên việc làm ngoài giờ với các lập trình viên cũng không quá xa lạ. Thêm vào đó là việc thường xuyên ăn uống không điều độ, sử dụng nhiều cà phê và các loại đồ ăn nhanh sẽ gây ảnh hưởng rất xấu đến sức khoẻ, đặc biệt là hệ tiêu hoá.

Lập trình viên là những người dễ bị stress do phải chịu nhiều áp lực. Ngoài áp lực về cơm áo gạo tiền của một con người bình thường thì còn áp lực phải hoàn thành công việc đúng hạn, áp lực vì sếp và đồng nghiệp, áp lực về những người khác quá giỏi, áp lực về công nghệ đang dùng quá xa lạ và còn rất nhiều áp lực khác nữa.

Lập trình viên cũng thường hay bị mất ngủ và rơi vào tình trạng mệt mỏi, thiếu sức sống, nhất là những giai đoạn làm việc cần sự tập trung cao độ. Chẳng hạn như phải suy nghĩ đưa ra giải pháp cho một công đoạn nào đó của dự án. Những lúc đó đầu óc họ thường tập trung rất cao độ dẫn đến tình trạng như “tẩu hoả nhập ma” ám ảnh cả trong bữa ăn giấc ngủ, rất khó ngủ hoặc ngủ không sâu. Chỉ đến khi nào công việc hoàn thành thì đầu óc mới dần dần cân bằng trở lại.

Công việc lập trình cũng không phải lúc nào cũng hào nhoáng, tạo ra những phần mềm tầm cỡ thế giới. Đa phần những công việc lập trình mà bạn được giao khi bắt đầu đi làm sẽ là làm các ứng dụng CRUD “thêm bớt xoá sửa”. Có những lúc sẽ quen đến mức nhàm vì suốt ngày chỉ có tạo form, sửa form. Hoặc đôi khi bạn sẽ mất 1-2 ngày chỉ để sửa 1 con bug, tìm hiểu lý do tại sao code của mình không chạy.

work
Nguồn: quick meme

Vì áp lực quá lớn nên lập trình viên nhảy việc nhiều hơn những ngành nghề khác. Cũng đã có không ít trường hợp vì quá mệt mỏi về đầu óc đến mức phải bỏ nghề 💔.

Lập trình viên có gõ nhiều không?

Thuở ban đầu, lập trình viên không hề cần phải gõ phím để lập trình mà việc lập trình được thực hiện bằng tay (thay đổi rơ le (relay) và dây dẫn) sau đó nâng cấp hơn là lập trình trên giấy (bằng bìa đục lỗ). Đến tận đầu thế kỷ 21, khi tôi học lập trình vẫn thỉnh thoảng lập trình trên giấy (nhưng không dùng bìa đục lỗ) để tiếp nối truyền thống của thế hệ đi trước 👍.

Thời điểm hiện tại, cho dù các phương pháp nhập liệu tiên tiến như nhận diện chữ viết, nhận diện giọng nói đã có những bước tiến đáng kể, chúng vẫn chưa thể thay thế phương pháp truyền thống. Gõ phím (đánh máy hay typing) vẫn là cách hiệu quả nhất để giao tiếp với máy tính và cũng là kỹ năng cơ bản trong cuộc sống hiện đại này.

Vậy với các lập trình viên, những người được cho là gõ phím ăn tiền thì sao? Cũng như mọi ngành nghề cần đến máy tính khác, rõ ràng gõ phím là một kỹ năng cơ bản.

Trường tôi học trước đây yêu cầu kỹ năng đánh máy tối thiểu 150 ký tự/phút mới được học một số môn lập trình. Yêu cầu này thực ra không phải cao vì tôi thấy mức 150 ký tự/phút này cũng vẫn hơi chậm so với yêu cầu công việc, nhưng với một sinh viên ít được tiếp xúc với công nghệ như tôi thì nó cũng là một thử thách.

Thế nhưng đi làm rồi tôi cảm thấy rằng, công việc của mình không đánh máy nhiều bằng lúc đi học.

Trong suy nghĩ của nhiều người thì lập trình viên là những người ngồi nhìn chằm chằm vào máy tính gõ lạch cạch cả ngày. Sự thật thì chỉ đúng một nửa, cá nhân tôi thì không gõ phím liên tục mà theo lời con gái thì thời gian nhiều nhất là “ngồi không và nhìn màn hình”.

programmer
Nguồn: Facebook “Software engineer’s life”

Đó là vì nghề lập trình không phải chỉ viết code. Trong việc phát triển phần mềm, đâu phải lúc nào cũng là phát triển mới. Rất nhiều thời gian là dùng để bảo trì và sửa lỗi sản phẩm. Những lúc như vậy, công việc chính là xem và sửa lại những đoạn mã trước đó. Nhiều khi chỉ cần thêm bớt một vài dấu ngoặc là đủ 😎.

Ngay cả khi viết code thì việc gõ liên tục hàng giờ liên cũng không bao giờ xảy ra. Với sự phát triển của các editor và IDE hiện đại, hầu như lập trình viên không cần phải gõ chay toàn bộ nữa, mà có thể sử dụng gợi ý trong quá trình làm việc. Đó là chưa kể đến việc “tham khảo” được code của người khác. Ngoài ra thì còn build, chạy thử, v.v… rất nhiều công đoạn khác nhau.

Suy cho cùng, viết code chỉ là bước cuối cùng. Nội dung code là gì mới là thứ quan trọng nhất. Không phải cứ code dài là tốt và không phải cứ code nhiều là làm việc chăm chỉ. Trong hầu hết các trường hợp, lập trình viên giỏi luôn code rất ngắn gọn.

Để ra được kết quả là những dòng code chất lượng cần phải trải qua một quá trình rất dài. Nếu nhìn thấy một lập trình viên đang ngồi không, thì sự thật không phải như vậy đâu. Họ đang làm việc đấy (suy nghĩ), lúc này rất dễ tẩu hỏa nhập ma, đừng tưởng họ đang không làm gì mà nhờ vả cái này cái kia. Thỉnh thoảng tôi cũng cần dùng giấy bút hay bảng trắng nhưng hầu hết thời gian tôi thấy là lập trình viên thích hình dung mọi thứ trong đầu (nên trông rất giống ngồi không 😄).

Ngược lại, nếu bạn thấy lập trình viên nào mà ngồi gõ lạch cạch liên tục thì không phải đang code đâu. Nhưng cũng đừng vội nghĩ họ ngồi chơi 😆, tất cả đều là làm việc cả đấy. Chúng tôi còn phải trao đổi với đồng nghiệp, viết tài liệu, tìm thông tin, v.v… Nói chung là rất nhiều việc khác nhau nhưng đặc điểm chung là công việc đã gắn với máy tính thì đánh máy cũng là một phần rất quan trọng.

Kỹ năng gõ 10 ngón trong nghề lập trình

Tôi có để ý rằng, nhiều đồng nghiệp của mình không hề gõ phím bằng 10 ngón mà chỉ dùng 4–5 ngón mà thôi. Hơi bất ngờ vì trong suy nghĩ của tôi thì những người làm việc với máy tính cả ngày mà đánh máy như vậy là không thành thạo. Thế nhưng rồi tôi lại nhận ra rằng, mình đánh máy cũng chẳng nhanh hơn họ và quan trọng là công việc của họ hay của mình cũng chẳng có gì chênh lệch.

Vậy là không phải cứ gõ 10 ngón mới là nhanh. Mà không phải chỉ tôi thấy đâu. Có hẳn một nghiên cứu khoa học về kỹ năng đánh máy rồi. Các nhà nghiên cứu tại Đại học Aalto (Phần Lan) chính là những người đã đưa ra kết luận: gõ 10 ngón không giúp bạn gõ nhanh hơn.

Nghiên cứu này cũng chỉ ra một số đặc điểm chung của những người đánh máy nhanh, dù họ có đánh bằng 10 ngón hay không. Ví dụ, người đánh máy nhanh giữ tay của họ ở một vị trí thay vì di chuyển chúng trên bàn phím, vì vậy không có chuyện “lướt tay trên bàn phím” đâu. Họ cũng sử dụng cùng một ngón tay cho cùng một chữ cái ở hầu hết lần gõ (gõ bao nhiêu ngón cũng rất cần nguyên lý này).

Các nhà nghiên cứu cũng quan sát thấy những người đánh máy chưa qua đào tạo dành khoảng gấp đôi thời gian nhìn chằm chằm vào ngón tay của mình thay vì màn hình, làm ảnh hưởng đến khả năng của họ trong các thao tác chỉnh sửa mang tính phức tạp. Vậy đó, tuy không nhất thiết phải gõ bằng 10 ngón, việc gõ phím mà không cần nhìn bàn phím quan trọng hơn rất nhiều.

Lập trình viên vẫn cần gõ nhanh

Nói chung lập trình viên không phải là những người gõ văn bản thuê nên kỹ năng đánh máy không cần phải đạt tới mức thượng thừa. Thế nhưng, để làm việc hiệu quả thì một lập trình viên cũng không thể đánh máy quá chậm.

Suy cho cùng thì lập trình viên vẫn cần phải đánh máy, và thậm chí là code cũng có thể coi là một loại văn bản. Dù không tỉ lệ thuận nhưng việc đánh máy nhanh hơn mới giúp lập trình viên làm việc hiệu quả hơn. Một người không thể lập trình nhanh với một kỹ năng đánh máy không thành thạo. Rõ ràng là dù thông minh đến đâu mà kỹ năng không đủ thì cũng không thể biến trí thông minh đó thành sản phẩm được (mà tôi nghĩ người thông minh ít khi đánh máy chậm lắm 😆).

Theo nhiều nguồn trên Internet, thì tốc độ đánh máy của lập trình viên ít nhất phải đạt 60 từ/phút (khoảng 300 ký tự/phút, gấp đôi yêu cầu của trường tôi 😬) mới có thể đảm bảo được hiệu quả làm việc. Tất nhiên là đánh máy nhanh hơn thì càng tốt.

Ngoài ra thì một yếu tố quan trọng không kém là gõ phải chính xác. Gõ nhanh nhưng độ chính xác kém thì nhiều khi còn tai hại hơn cả chậm mà chắc. Cá nhân tôi cũng đã từng có không ít những tình huống như vậy. Đang code như thần thì gõ sai chính tả, kết quả là thay vì bắt kịp những ý tưởng lóe lên trong đầu thì tôi phải ngồi sửa lỗi, khi sửa xong thì quên luôn nãy vừa nghĩ gì rồi 🤣 😂.

Để đánh máy hiệu quả, đầu tiên và cũng là bắt buộc là lập trình viên phải thành thạo bàn phím (để có thể gõ mà nhìn màn hình chứ không cần nhìn bàn phím). Học cách gõ 10 ngón tuy không bắt buộc nhưng theo tôi là cách hiệu quả nhất. Với những người liên tục tiếp xúc với bàn phím như lập trình viên thì điều này không có gì quá khó khăn, và nó sẽ đến rất tự nhiên 👍.

Ngoài ra, như tôi đã nói, việc viết code không nhất thiết phải gõ chay. Lập trình viên cần phải thành thạo những thao tác gõ tắt, những tổ hợp phím của editor hay IDE mà mình sử dụng. Đương nhiên rồi, dù gõ nhanh đến thế nào đi chăng nữa cũng không thể nào nhanh hơn copy paste được đâu 😁.

Đó cũng là phương pháp tốt nhất để tăng tốc độc làm việc của lập trình viên. Sử dụng những phím tắt, gợi ý hoặc snippet của editor sẽ cực kỳ hữu ích. Tôi đã từng chứng kiến đồng nghiệp của mình sử dụng IDE (không nhớ rõ tên, hình như là PHPStorm) để code mà trông như làm ảo thuật vậy. Chỉ mất một vài thao tác là anh ta có thể tạo ra một đoạn code tương đối hoàn chỉnh và chỉ cần chỉnh sửa thêm một chút là xong.

Những chức năng kiểu như vậy sẽ giúp bạn làm việc nhanh hơn, chính xác hơn. Tuy nhiên nhược điểm là những IDE có nhiều chắc năng thường khá tốn kém và cũng rất tốn tài nguyên (CPU, bộ nhớ) để hoạt động. Ngoài ra, phụ thuộc vào IDE quá có thể khiến kiến thức của lập trình viên bị mai một 😂. Vì vậy tôi không khuyến khích lạm dụng cách này. Vừa tốn tiền (tôi khá chắc là muốn dùng sẽ phải tự mua, vì rất ít công ty sẽ chi cho nhân viên những khoản như vậy), đồng thời dần dần bạn có thể sẽ quên mất cách phải bắt đầu những dòng code như thế nào (thay vào đó là nhớ những keyword, những phím tắt của IDE).

Bên cạnh bàn phím, việc sử dụng chuột trong khi lập trình cũng quan trọng. Các thao tác chuột như bôi đen, lựa chọn vị trí đặt dòng code, copy paste vào đúng nơi, đúng chỗ cũng giúp ích rất nhiều. Nếu làm nhanh, nhưng không làm chuẩn, thì bạn chỉ tốn thời gian thêm để sửa các lỗi sai (còn làm chậm thì không còn gì để nói 🤭).

Cuối cùng, như tôi cũng đã nói, viết code chỉ là những thao tác cuối cùng. Những điều trên có thể sẽ giúp bạn gõ nhanh hơn, nhưng chưa chắc đã giúp bạn làm việc nhanh hơn đâu. Yếu tố quyết định vẫn là ở bản thân mỗi người. Gõ phím nhanh hơn, nhưng không biết gõ gì thì kết quả có khi còn không bằng một người gõ chậm nhưng biết copy-paste 🤣.

Tôi xin lỗi nếu bài viết có bất kỳ typo nào. Nếu bạn nhận thấy điều gì bất thường, xin hãy cho tôi biết.

Nếu có bất điều gì muốn nói, bạn có thể liên hệ với tôi qua các mạng xã hội, tạo discussion hoặc report issue trên Github.