Chủ Nhật, 5 tháng 11, 2017


Chào các bạn! Đã gần 4 tháng không gặp nhỉ :D.

Thời gian gần đây mình rất hay nhận được câu hỏi từ các bạn sinh viên năm 1,2 kiểu như:
  • "em code cũng khá được nhưng thường phải search Google tham khảo code không biết có quá tệ không?"
  • "em luôn lên Stack Overflow để tìm giải pháp cho vấn đề gặp phải, thậm chí những hàm cơ bản của ngôn ngữ em cũng hay quên và phải Google để tìm, vậy có phải em sẽ trở thành một developer tệ không?"
Anh cũng vậy đó em =))

Mình cũng không hiểu tại sao lại có những câu hỏi ngớ ngẩn thế này, nhưng theo mình câu trả lời còn tùy thuộc vào lĩnh vực mà bạn đang học. Software Engineering, Computer Science, Networking hay Database,..
Các lĩnh vực như C.S. đòi hỏi bạn phải có một tư duy tốt, động não suy nghĩ trước khi sử dụng last resort là search Google giải pháp cho vấn đề đó.

Ở đây mình sẽ nói đến lĩnh vực S.E - tập trung nhiều hơn về productivity và chất lượng của project - cũng là lĩnh vực mình đang theo học nên mới dám chém gió =)).

Câu trả lời là: KHÔNG. Dĩ nhiên là không.


Không developer/programmer nào có thể tự vỗ ngực tuyên bố rằng họ có thể hoàn thành một project mà không phải google một vài lần.

Ví dụ đối với các web developers, ngoài kia có hàng trăm HTML tags, cả đống thuộc tính của CSS, rồi Javascript lại là một ngôn ngữ không "strict" làm mọi thứ rối tung lên thì làm sao bạn có thể dễ dàng nhớ hết tất cả mọi hàm, mọi tag, mọi thuộc tính của chúng được chứ? 
Sẽ có những lúc ta cần quyền trợ giúp, và trong 80% trường hợp thì luôn có một người nào đó trên Trái Đất này từng gặp phải vấn đề tương tự và đã giải quyết được nó. Nếu họ là người sống vì cộng đồng dĩ nhiên họ sẽ post lên Internet và mong rằng có thể sẽ giúp được ai đó tiếp tục tập trung vào công việc mà không lãng phí thời gian vô ích.

Việc này làm mình nhớ tới một câu chuyện về Albert Einstein như này: 
Trong một buổi tiệc tối Einstein được hỏi xin số điện thoại của ông, và ông mở phone book ra để tìm nó, người kia bèn hỏi tiếp tại sao ông lại cần phone book để ghi lại cả số của mình trong khi ông là người rất rất thông minh và có trí nhớ siêu đẳng như vậy. Einstein trả lời rằng: "Tại sao tôi cần phải làm não mình trở nên lộn xộn để nhớ những thông tin mà tôi có thể dễ dàng tìm thấy khi tôi cần nó?"

Stack Overflow (SO) - trang hỏi đáp mà bạn hay thấy mỗi lần search vấn đề gì đó trên Google - thực sự là best steroids dành cho các developer. Mình nghiêm túc đấy!
SO hoạt động theo dạng example based - giải quyết vấn đề qua các đoạn code ví dụ - đó là một cách cực kì mạnh mẽ để học một thứ gì đó. Ngay cả khi copy/paste những đoạn code đó không giải quyết được vấn đề của bạn, nó cũng sẽ giảm thiểu thời gian bạn bỏ ra để cho việc hiểu một vấn đề gì đó bằng những đoạn code nhỏ, hơn là phải loay hoay trong đống code dài vô tận của hầu hết các documents hiện nay
Chắc ai cũng muốn có một quyển ^^

Muốn biết cách để thực hiện việc X với Y,Z? Chỉ cần search và đây là cách mà Y, Z nó hoạt động, đây là các tham số đầu vào, đây là những dữ liệu cần thiết.
Gặp phải vấn đề B? Chỉ cần search và...đây...thì ra là do C. Bây giờ đơn giản chỉ việc suy nghĩ làm sao để giải quyết C thôi. Hmmm hay lại lên search làm sao để giải quyết C nhỉ? :D

Mặt khác, việc search Google tham khảo code hay giải pháp của người khác còn giúp bạn viết những đoạn code tốt hơn, tránh việc sử dụng các giải pháp tạm thời (work around) mà không hiểu rõ và giải quyết triệt để vấn đề (dễ thấy ở việc các developers hay lạm dụng try/catch hoặc check null vô tội vạ mà không cần biết vấn đề tại sao Exception đó bị thrown). 
Hay tốn cả tấn thời gian vào việc đọc đống documents cùng với những đoạn code ví dụ dài loằng ngoằng trong đó và dẫn đến việc không bắt kịp deadlines.
How to không trễ deadline???

Là một sinh viên ngành S.E, là một developer, mình thường dành thời gian và chất xám vào việc hiểu cách thức mà hệ thống vận hành và làm sao để giải quyết các vấn đề. Tập trung vào bức tranh toàn cảnh sẽ tốt cho công việc của bạn hơn là cố gắng ghi nhớ rõ từng cú pháp như to_upper(), upper(), hay là toUpper(). Với những vấn đề như vậy khi mắc phải mình có thể search và ôn lại gần như ngay lập tức.

Bởi vì không có lý do nào để reinventing the wheel khi nó đã được người trước giải quyết và áp dụng thành công.

Một số bạn sẽ hỏi rằng: Vậy khi gặp những vấn đề khó hơn và phức tạp hơn thì làm cách nào mà áp dụng search Google vào giải quyết được?
Đối với những vấn đề phức tạp - chúng ta...vẫn áp dụng nguyên tắc trên. Tại sao chúng ta phải dành nhiều thời gian và nỗ lực để giải quyết vấn đề mà có một người nào đó đã giải quyết rồi ?? :D ??. 
Bạn không cần phải tìm hiểu làm cách nào để tạo ra một transmission nếu bạn đang muốn tạo ra một chiếc xe hơi. Vấn đề quan trọng là dành thời gian đó để hiểu được giải pháp mà bạn vừa implement và dành thời gian đó để giải quyết các vấn đề độc nhất mà chỉ mình project bạn gặp phải.

Nói đi cũng phải nói lại.


Bạn cũng không nên lạm dụng việc search Google mà đi copy/paste bất cứ thứ gì bạn tìm thấy, ít nhất thì cũng phải hiểu "sơ sơ" về các đoạn code đó trước khi implement vào project của bạn.
Điều tốt nhất bạn có thể làm là luôn hiểu rõ tại sao vấn đề được giải quyết với giải pháp đó. Cứ như vậy bạn sẽ học được những cái mới một cách nhanh nhất và những vấn đề đó sẽ không phiền bạn trong tương lai nữa. Việc học là việc tìm hiểu, nhưng nếu bạn cứ bỏ qua phần "hiểu" mà chỉ chăm chăm vào việc "tìm" sau đó copy/paste code thì đó chính là thất bại của bạn.

Link sách ở trên: https://www.gitbook.com/book/tra38/essential-copying-and-pasting-from-stack-overflow/details

Chúc các bạn học tốt! Happy coding!


0 nhận xét:

Đăng nhận xét

Categories

Sample Text

Được tạo bởi Blogger.

Must Read

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Popular Posts

Video

Popular Posts

Our Facebook Page