Chúng ta là những người đánh máy trước, lập trình viên thứ nhì

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

Bạn có nhớ trong một bài viết tuần trước tôi có nói rằng lập trình thì cũng chỉ là viết?

Tôi đã sai. Như một độc giả đã bình luận rằng, nó thì thậm chí còn đơn giản hơn điều đó.

[Điều này] làm tôi nhớ lại khoảnh khắc mình trở thành nhân vật Dilbert trong truyện cười nổi tiếng một ít năm về trước, khi ông chủ (dĩ nhiên là không rành về kỹ thuật) của tôi đã bình luận rằng ông ta chẳng bao giờ hiểu nổi tại sao lại phải mất nhiều tháng trời để phát triển một phần mềm. “Dù gì thì”, ông ta nói, “nó chỉ là ngồi gõ bàn phím thôi mà.”

Giống như mấy cái đồng hồ hỏng, thậm chí mấy vị quản lý đầu hói cũng phát biểu đúng một lần mỗi ngày. Lập trình thì chỉ là gõ chữ.

Kỹ năng gõ nhanh là một trong những kỹ năng quan trọng nhất của nghề lập trình viên.Kỹ năng gõ nhanh là một trong những kỹ năng quan trọng nhất của nghề lập trình viên.


Vì vậy nếu bạn muốn trở thành một lập trình viên vĩ đại, thì hãy bắt đầu bằng cách trở thành một người gõ chữ vĩ đại trước. Hãy hỏi Steve Yegge.

Tôi không thể tưởng tượng nổi lý do tại sao các lập trình viên chuyên nghiệp ngoài kia lại cho phép họ có một nghề nghiệp mà không dạy bản thân mình cách gõ chữ. Điều đó không tạo ra bất kỳ một ý nghĩa nào cả. Nó thì cũng giống như việc một diễn viên không biết cách làm thế nào để mặc quần áo. Nó chỉ ra rằng trò chơi chưa được chuẩn bị. Giống như bạn chuẩn bị một cuộc họp mà chưa chuẩn bị slide. Đến lớp học mà chưa làm bài tập về nhà. Hoặc bơi trong một cuộc thi Olympics mà lại mặc một bộ đồ leo núi vậy.

Hãy đối mặt với nó: đó là sự lười biếng.

Không có lời bào chữa nào cho nó. Không có lời ngụy biện nào. Tôi có một người bạn, John, người chỉ có thể sử dụng một cánh tay. Anh ta gõ 70 từ/phút. Anh ta đã phát minh ra kỹ thuật của riêng mình để thực hiện điều đó. Anh ta không tạo ra lời ngụy biện nào; anh ta gõ nhanh hơn rất nhiều người khác đang ngồi đổ lỗi nọ kia.

Tôi đã có một trao đổi email ngắn với Steve vào khoảng tháng 3 năm 2007, sau khi tôi viết bài Lập trình viên giỏi hãy bớt sử dụng chuột. Tôi hy vọng Steve không ngại, nhưng tôi muốn trích hai đoạn trực tiếp từ bức email trả lời của anh ta:

Tôi đã cố gắng để nhận ra đâu là khóa học quan trọng nhất về khoa học máy tính đối với một sinh viên ngành Computer Science đã từng được học, và cuối cùng đã nhận ra rằng nó là khóa Typing 101 (khóa học về cách đánh máy).

Thực ra những kỹ sư phần mềm vĩ đại mà tôi biết, những người mà đã xây dựng ra những sản phẩm tuyệt vời, thì họ đều có thể đánh máy.

Quả là những tuyên bố mạnh mẽ. Tôi nhất trí với điều đó. Chúng ta là những người đánh máy trước tiên, và sau đó mới là lập trình viên. Rất khó cho tôi để khiến cho lập trình viên khác nghiêm túc khi tôi thấy họ sử dụng các kỹ thuật gõ bằng cách săn lùng và mổ cò. Giống như Steve, tôi đã nhìn thấy điều này khá thường xuyên.

Đầu tiên, xin tiết lộ một chút sự thực. Không giống như Steve, tôi là một người đánh máy hoàn toàn tự học. Tôi đã không tham gia bất kỳ một lớp tập đánh máy nào ở trường trung học cả. Trước khi tôi viết bài này, tôi nhận ra là mình nên kiểm tra để đảm bảo rằng mình không phải là một kẻ hoàn toàn khoác lác. Vì vậy tôi đã kiếm đại một trang thử tốc độ đánh máy ngay trong kết quả tìm kiếm đầu tiên và thử làm một bài test.

Kết quả gõ nhanh.Tôi hoàn toàn không phải là người đánh máy nhanh nhất thế giới, mặc dù tôi đã từng chơi trò game Typing of the Dead. Cho phép tôi nhấn mạnh rằng đây không phải là một cuộc thi gõ nhanh. Tôi chỉ muốn chắc chắn rằng mình không hoàn toàn gõ dở trước khi tôi đăng bài viết này. Vâng, có một điểm khởi đầu cho tất cả mọi thứ. Có thể điều này sẽ khởi đầu một xu hướng. Tôi không chắc lắm, nhưng bạn sẽ chẳng bao giờ biết được.

Steve và tôi tin rằng không có gì cơ bản trong lập trình hơn là khả năng diễn đạt một cách hiệu quả bản thân bạn thông qua việc đánh máy. Chú ý rằng tôi nói là “hiệu quả” chứ không phải là “hoàn hảo”. Đây là nói về khả năng chấp nhận được của một kỹ năng cốt lõi trong lập trình.

Có thể bạn sẽ không bị thuyết phục rằng đánh máy là một kỹ năng thuộc loại cốt lõi trong lập trình. Tôi không trách bạn, mặc dù tôi giữ lại quyền để tự hỏi rằng làm thế nào mà bạn có thể lập trình mà không sử dụng bàn phím.

Thay vì việc trả lời trực tiếp, hãy cho phép tôi chia sẻ một (trong rất nhiều) nhược điểm của tôi cùng với bạn. Ít nhất 4 lần mỗi ngày, tôi đi vào một phòng trong nhà mà không nhớ nổi lý do tại sao mình lại đi vào phòng đó. Ý tôi là tôi không nhớ lý do tại sao cả. Cứ như thể là tôi đã được chuyển vào phòng đó bởi một người ngoài hành tinh vậy. Buồn thay, sự thực thì ít ly kỳ hơn nhiều. Đây là điều thực sự đã xảy ra: chỉ trong một khoảng thời gian ngắn từ khi tôi đứng dậy và di chuyển từ điểm A đến điểm B, tôi đã hoàn toàn quên mất bất cứ điều gì đã khiến tôi đứng dậy. Vâng chắc chắn là tôi sẽ đứng tần ngần một lúc, cố gắng nhớ lại lý do mà mình cần phải làm trong cái phòng đó. Đôi khi thì tôi nhớ ra, đôi khi thì không. Cuối cùng, tôi thường kết thúc bằng việc đi đi lại lại rất nhiều lần, để nhớ ra một việc gì khác mà tôi cần phải hoàn thành ở cái phòng đó sau khi tôi đã rời khỏi nó.

Tất cả điều đó thì thật là đáng buồn. Hy vọng rằng trí não của bạn sắp xếp công việc hiệu quả hơn trí não của tôi. Nhưng tôi không đổ lỗi cho bộ não của mình – mà tôi đổ lỗi cho cái cơ thể của tôi. Nó không thể theo kịp. Nếu tôi đến đích nhanh hơn, thì tôi đã không có thời gian để quên.

Cái mà tôi đang cố gắng nói ở đây: là vấn đề về tốc độ. Khi mà bạn gõ nhanh và hiệu quả, bạn sẽ phải dành ít thời gian giữa việc nghĩ ý tưởng và diễn đạt nó trong code. Điều đó có nghĩa là, nếu bạn ít ra là người giống như tôi, rằng bạn có thể thực sự biến một số ý tưởng của mình lên màn hình trước khi bạn hoàn toàn đánh mất dấu vết của những luồng suy nghĩ đó ở trong đầu.

Vâng, bạn nên nghĩ về cái mà bạn đang làm, một cách rõ ràng. Đừng chỉ gõ những dòng chữ ngẫu nhiên sai chính tả nhanh nhất mà bạn có thể, trừ khi bạn là một lập trình viên sử dụng ngôn ngữ Perl. Nhưng tất cả những thứ khác thì đều tương đương, và việc gõ nhanh sẽ có một lợi thế. Cách tốt nhất để trở thành một người gõ nhanh là thông qua việc tập gõ và gõ thật nhiều. Một chút nghiên cứu và luyện tập có hệ thống thì không làm đau bất cứ ai. Đây là một số đường link mà có thể thú vị để truyền cảm hứng cho bạn trở thành một người gõ nhanh:

(Nhưng đây là một danh sách khá thiếu sót và sơ sài. Những công cụ nào mà bạn nghĩ là nên xài để trở thành một người đánh máy nhanh hơn?)

Có rất ít thứ mà một lập trình viên có thể làm mà không phải sờ đến bàn phím; nó là một công cụ cơ bản nhất trong nghề nghiệp của chúng ta. Tôi tin rằng việc thực hành là nền tảng, và kỹ năng đánh máy cũng là nền tảng mà các lập trình viên cần phải có.

Hoan hô những người đánh máy!

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 “Chúng ta là những người đánh máy trước, lập trình viên thứ nhì

  1. Em cũng mới tập gõ 10 ngón nhưng thấy khá khó (tốc độ chỉ còn dưới 12wpm) vì cách gõ cũ gần như ngấm vào máu mất rồi nhưng đọc bài này xong thấy có hứng tập hơn 🙂 Hay bắt chước anh Hùng lấy bài này để tập gõ nhể hehe 😀

      • Em thấy nhiều người cũng bảo nhớ được phím rồi thì cũng không cần phải máy móc theo đúng chuẩn làm gì, miễn nhanh, chính xác là được 🙂 , em ngón út hơi ngắn nên toàn phải dùng ngón nhẫn thay.

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 Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s