21/09/2018, 17:03

Nguyễn Nhật Ánh sẽ nói gì về lập trình và…code?

Phóng tác dựa theo tản văn: Bắt đầu từ những con chữ của tác giả Nguyễn Nhật Ánh. Tản văn này của bác nói về nghề văn và về con chữ. Xét thấy nghề này cũng có nhiều nét giông giống nghề code, mình xin mượn dăm câu chữ từ bài viết để viết nên bài này. Hi vọng bác Ánh đọc được sẽ ...

Phóng tác dựa theo tản văn: Bắt đầu từ những con chữ của tác giả Nguyễn Nhật Ánh.

Tản văn này của bác nói về nghề văn và về con chữ. Xét thấy nghề này cũng có nhiều nét giông giống nghề code, mình xin mượn dăm câu chữ từ bài viết để viết nên bài này. Hi vọng bác Ánh đọc được sẽ không giận vì “đạo văn”. 

Người bạn trẻ hỏi tôi: Làm thế nào để trở thành lập trình viên? Nghề lập trình bắt đầu từ đâu?

Tôi đáp: Từ sự yêu thích máy tính và phần mềm. Người bạn trẻ bảo: Tôi yêu thích.

Tôi lại nói: Thế thì bắt đầu từ năng khiếu và khả năng tư duy. Người bạn trẻ lại bảo: Tôi có năng khiếu.

Ồ, nếu cái gì bạn cũng có rồi thì có lẽ nghề lập trình bằng đầu từ… code! 

1

Có lẽ không có nghề nào trên đời mà công cụ lao động lại đơn giản như nghề code. Trong khi anh thợ mộc phải sắm cưa, bào, đục, anh thợ may phải sắm máy may, thì anh coder chỉ cần một chiếc laptop đã có thể ung dung hành nghề.

Tất nhiên, sang hơn thì dùng Alienware, sang hơn nữa thì xài Macbook, nhưng nếu không có những thứ máy móc xa hoa đó, một con desktop Pentium 4 cùi kể như đã đủ.

Cũng như nếu không có xe gắn máy hay ôtô, con người ta vẫn có thể đi lại bằng chiếc xe đạp cà tàng. Xem ra, yêu cầu về công cụ của nghề văn còn thấp hơn những nghề lao động bình dân như đánh giày hay sửa xe đạp.

Nguyên liệu của nghề code còn đơn giản hơn nữa. Thợ mộc cần gỗ, thợ may cần vải, thợ hồ cần xi măng, còn coder chỉ cần… code. Mà code là thứ nguyên liệu chẳng phải bỏ tiền ra mua. Code lềnh khênh trong các phần mềm, ngổn ngang trên mạng. Code lấp lánh trong các project mã nguồn mở trên github.

FlappyBirl để giải trí, Thiendia để nghiên cứu, toidicodedao để đọc cũng là nguồn cung cấp nguyên liệu cho code. Vì trong đó, có code. Vậy, nguyên liệu của nghề lập trình ở khắp mọi nơi. Và hoàn toàn miễn phí, chỉ cần rong tuổi một ngày mở một thư viện Open Source ra đọc, hoặc tìm cách reverse engineering một phần mềm nào đó.

ss4

2

Lập trình viên ắt nhiên phải… biết code và code đúng. Vì yêu cầu đầu tiên trong thao tác lập trình là code phải chính xác. Giống như đường kim của thợ may hay viên gạch của thợ hồ, đặt lệch một li có khi lại đi hơn một dặm.

Ví dụ đơn giản nhất: người code phải biết chọn đúng cấu trúc dữ liệu và thuật toán code cho bài toán; đặt tên biến tên hàm và viết comment dễ đọc dễ hiểu; thiết kế cấu trúc code rành rọt, mạch lạc.

Muốn vậy, phải làm nhiều, code nhiều. Code đẹp: đó là lời khen khiến một coder tự hào.

super-computer-nerd

3

Làm sao biết mình có code giỏi hay không? Thiết tưởng, để biết điều này cũng không khó lắm. Làm hàng chục bài tập, học hàng chục ngôn ngữ/framework, thứ gì cũng chơi được, hẳn bạn là người code giỏi.

Tất nhiên, có thể bạn sẽ gặp một vài khó khăn khi gặp những thuật toán khó, ngôn ngữ mới, nhưng các bài hướng dẫn trên mạng bổ sung thêm nguyên liệu cho nghề của bạn.

Nhưng người biết cách kiếm tiền chưa chắc đã là người biết cách xài tiền. Nghề lập trình cũng vậy, viết ra code thì dễ mà lập trình thật sự mới thiệt là khó.

Khó ở chỗ bạn biết chắc bạn có rất nhiều thuật toán, ngôn ngữ, thiết kế trong bộ nhớ nhưng đến khi cần dùng để giải quyết vấn đề thì tìm hoài không ra, không biết nó nằm ở ngóc ngách nào trong đầu bạn. Hệt như khi cần mua đồ mà bỗng nhiên bạn lại không tìm thấy ví tiền trong túi, thiệt là éo le!

Kiến thức trong đầu xét cho cùng cũng na ná như quần áo trong rương hay trong tủ. Nếu bạn lười, bạn sẽ chỉ mặc đi mặc lại vài bộ xếp ở trên, treo ở ngoài, trong khi ở dưới đáy rương hay trong góc tủ, nếu bạn chịu khó lục lọi, bạn sẽ thấy có những chiếc quần, chiếc áo đẹp đến mức bạn phải sững sờ. Bạn sẽ trố mắt ngạc nhiên: Chiếc áo đẹp thế này, sao lâu nay ta không lấy ra mặc nhỉ?

Khả năng code cũng vậy. Thông thường con người ta có thói quen dùng những thuật toán/thiết kế mà thường ngày mình vẫn dùng. Những chữ quen thuộc có cái tiện là khi bạn cần, chúng hiện ra ngay, thậm chí không cần bạn kêu gọi, thúc giục hay năn nỉ.

Trường hợp này, khá phổ biến, đã chỉ ra rằng trong thực tế bạn chỉ dùng 1/10, thậm chí 1/100 hay 1/1000 kiến thức lập trình mà bạn có, hoàn toàn lãng phí.

Giống như bạn đang sở hữu một triệu đồng mà khả năng sử dụng trên thực tế chỉ có một ngàn đồng. Trong tư cách một lập trình viên, chính sự lười nghĩ đã niêm phong tài khoản thuật toán/kiến thức của bạn khiến bạn không thể huy động tối đa vốn liếng của mình.

ss2

4

Dĩ nhiên sẽ quá khắt khe nếu yêu cầu bạn phải nghĩ ngay ra thuật toán/thiết kế thích hợp hoặc cần thiết phục vụ cho việc giải quyết vấn đề khi lập trình của bạn. Điều đó đòi hỏi một trí nhớ, đặc biệt là một khả năng tư duy mạnh mẽ và phong phú.

Bản thân tôi là lập trình viên, đã code cũng nhiều, nhưng không phải lúc nào tôi đưa ra giải pháp đúng, làm ra chương trình như ý muốn. Tôi không biết các lập trình viên khác làm thế nào, riêng tôi, tôi khắc phục cách học thêm, làm thêm và… viết blog.

Khi học một ngôn ngữ mới, tôi dùng nó để làm một thứ gì nhỏ nhỏ (web, app). Khi học một thuật toán mới, tôi lại tìm cách áp dụng nó vào bài toán nào đó. Thấy thứ gì hay ho, tôi lại biến nó thành bài viết trên blog.

Thỉnh thoảng, tôi cũng hay đọc sách về ngành lập trình, dù nó không trực tiếp giúp tôi code giỏi hơn. Gấp cuốn sách lại, giống như các bà nội trợ đi ra khỏi siêu thị, bạn sẽ thu hoạch được nhiều thứ.

Bạn sẽ biết lập trình viên giỏi không chỉ biết code, những mưu mẹo sống sót và làm vừa lòng PM, cách trở thành một coder có tâm, … và dĩ nhiên là bạn sẽ nghĩ ra áp dụng những thứ đó, mặc dù có thể không phải ngay hôm nay hay ngày mai.

Các bà nội trợ cũng thế thôi, họ ngắm nghía hàng giờ trong siêu thị rồi đi ra tay không, nhưng những món hàng hấp dẫn, thậm chí cả giá cả lẫn vị trí của chúng, đã khắc sâu trong tâm trí họ. Một lúc nào đó, cần tới, họ sẽ tìm ngay được cái họ cần.

Nói tóm lại, đó là một cách rèn luyện trí óc, một kiểu thể dục tinh thần, và theo tôi là vô cùng quan trọng với những ai có ý định hành nghề bằng code.

ss3

5

Xét cho cùng, code chỉ là code, nếu nó không được chạy. Một đoạn code chỉ là những dòng chữ vô nghĩa, không làm được gì có ích cho đời. Code không nên chỉ nằm trên giấy, nó được tồn tại là để chạy. Chúng ta vẫn nghe nói chạy thử code đó thôi.

Thứ thật sự mà code tạo ra không phải là … code, mà là sản phẩm, là phần mềm (như một ứng dụng, một trang web chẳng hạn). Nói khác đi, code chả là gì khi đứng riêng mình nó. Sản phẩm tạo ra mới làm code trở nên có nghĩa.

Nhưng bàn về những sản phẩm tạo nên từ code, không phải là mục đích của bài viết này.

Techtalk via toidicodedao

0