VicoTas
Câu hỏi
avatar viethoang
21/06/2013 12:53

Làm thế nào để code giỏi hơn ?

Tôi muốn code giỏi hơn trong thời gian nhanh nhất, không biết làm thế nào nhỉ?

Danh sách câu trả lời (2)
Đức Vân ducvan1993 21/06/2013 12:53
Học thế nào để trở thành một lập trình viên giỏi?

Đối với ai làm trong ngành công nghệ phần mềm đều biết rằng việc cập nhật kiến thức là điều bắt buộc nhưng làm thế nào để học hiệu quả lại là vấn đề của rất nhiều người. Bài viết này là những kinh nghiệm bản thân của người viết, có thể nó hay cũng có thể nó dở nhưng hi vọng nó sẽ giúp ích được cho nhiều người.
Một số sai lầm trong cách học
Không có mục tiêu:

Có những người rất ham học nhưng không có mục tiêu, nay học cái này mai học cái khác. Lên web thấy công nghệ này hot học đưỡc vài ngày, mai thấy công nghệ kia hot lại học được vài ngày. Những cái vừa biết do không ôn luyện thường xuyên thì cũng bị mất nên kiến thức không thu lại được tới đâu. Một thời gian dài thấy mình không đạt được mục tiêu nào cả, cái nào cụng nghe, cũng biết nhưng chỉ ở mức “nhập môn”.
Không học những cái cơ bản:

Mọi người đều biết rằng trẻ con lớp 1 không thể làm bài tập lớp 8, bỏ qua trí thông minh phát triển theo độ tuổi thì kiến thức phải được tích lũy từ từ, để hiểu được cái nâng cao thì phải thông cái nền tảng, học thì phải học cái gốc chứ không phải học cái ngọn. Nhiều người bỏ ra rất nhiều thời gian ra học (thật ra là nhớ) các hàm API sử dụng như thế nào, viết được vài cái Form cho một công nghệ mới như Avalon là đã vui lắm rồi, sau này một công nghệ mới thay đổ hòan tòan công nghệ cũ thì họ lại mất công học lại từ đầu và bị những người trẻ qua mặt. Bạn đã từng là một lập trình viên, QC, BA hay manager?

giả sử bạn đã dành thời gian học VB6 rất nhiều và là chuyên gia về ngôn ngữ này, khi yêu cầu của công ty thay đổi qua dùng .NET thì nếu chỉ biết VB6 thì qua ngôn ngữ mới xem như bạn học lại từ đầu và sẽ không có “ưu thế cạnh tranh” so với những người trẻ tuối hơn vì những hiểu biết của bạn về ngôn ngữ không thể áp dụng cho công việc hiện tại của bạn.

Việc không có kiến thức nền tảng cũng khiến cho bạn không thể học những kiến thức nâng cao nhanh được, tốc độ học sẽ là hậm dần đều, đến 1 lúc nào đó bạn sẽ không thể nào tiến lên được nữa.
Không chịu suy nghĩ:

Nhiều người dành thời gian để học nhưng thực sự là nhớ. Họ nhớ syntax, nhớ process, nhớ format etc Nói chung là nhớ tất (tôi thực sự thấy mắc cười khi nhiều người dùng những từ hàn lâm như “nghiên cứu” cho chuyện học đặc biệt là với hình thức nhớ này). Rõ ràng là hâu quả của cách học phổ thông đã ăn sâu vào tiềm thức, họ có thể thấy sai trên người khác nhưng lại áp dụng 1 cách vô thức cho mình. Không chịu suy nghĩ, chỏ nhớ mà làm mà lấy bằng thì độ tiếp thu kiến thức nhiều lắm là 50% cũng như kiến thức của bạn sẽ mai một theo thời gian.

Tiếp theo phần 1 bàn về 1 số sai lầm trong cách học, trong phần tôi sẽ viết 1 số đề nghị để học tập, nâng cao kiến thức 1 cách hiệu quả. Nếu bạn thực sự thấy hữu ích cho bạn thì viết vài dòng nhận xét, thực sự tôi rất lấy làm mừng nếu vì bài viết của mình có thể giúp được người khác tốt hơn cũng như trước kia tôi cũng đã từng học rất nhiều từ những người đi trước từ một số thầy cô đáng kính trong đại học những như những người có kinh nghiệm trong nghề CNTT. Từ bạn trong bài viết này chỉ là cách nhân xưng không phải đang chỉ đến người đang đọc :-)

Trước hết xin nhấn mạnh rằng để học tốt và trở thành 1 người thực sự giỏi trong ngành công nghệ phầm mềm thì bạn phải có óc tư duy logic tốt cũng như cách học tốt. Tôi đã từng phỏng vấn gặp nhiều người có tư duy logic rất tốt (thậm chí 1 người là thủ khoa DHBK và đã làm luận án thạc sĩ) nhưng họ đã làm nhiều năm trong môi trường ít thử thách, quanh quẩn bên những dự án coding tầm thường nên họ đã không đạt những skill tương xứng với tiềm năng của họ đồng thời bị sức ì thời gian, tuối tác khiến họ không thể thay đổi cách họ tiếp cận vấn đề, thêm 1 phần nữa ở đặc tính mà tôi gặp ở đa số người Việt là cái tự ái quá lớn (không phải là cái tôi :-)) để nghe những lời khuyên của người khác. Một số trong họ là “sao” trong một tập thể “mù” (ngay cả trong các công ty lớn) cũng khiến họ tự huyễn về mình.

Thêm 1 tính cách để giúp bạn học tốt là biết nhìn mình như “một hạt các giữa sa mạc”. Thế giới có rất nhiều người giỏi, đôi khi không thể phân biệt giữa nhất và nhì, chấp nhận học hỏi lẫn nhau hơn là “giấu nghề” hay “chê bai” thì bạn sẽ đạt kết quả tốt hơn cho bạn.
Tóm lại
Cố gắng giỏi trong lĩnh vực mà bạn chịu trách nhiệm chính trước

Bạn là một developer thì bạn không nên học về những gì cho designer trước khi bạn là 1 developer giỏi, điều tương tự cũng được áp dụng cho QC, BA hay manager. Hãy làm tốt những gì bạn đang đựoc đòi hỏi. Điều quan trọng nhất của developer về viết ra những dòng code đạt chất lượng còn của người designer là thiết kế chương trình đạt chất lượng. Mối quan tâm của từng vị trí là khác nhau nhưng hỗ trợ nhau, ví dụ một chương trình thiết kế tốt là chương trình có thể hỗ trợ cho việc code đạt chất lượng cao. Một developer tốt không phải người đó có biết cách sử dụng API (mà rất nhiều người coi đó là kinh nghiệm), nhiều ngôn ngữ hay đã code nhiều năm mà chính là người có thề viết ra những dòng code dễ đọc, dễ bảo trì, dễ debug và dễ kiểm tra. “Rome không phải xây trong 1 ngày” cũng như bạn không phải là thiên tài để học tất cả trong 1 ngày. Hãy kiên trì cho mục đích của bạn thì sẽ có ngày bạn đạt được mục tiêu của mình.
Học những điều cơ bản

Thử tưởng tượng cho một người chưa học lớp 3 để học đại học, họ không thể thành công được. Lý do? họ không có đủ kiến thức cơ bản. Việc có kiến thức cơ bản sẽ khiến bạn không thể nào tiến xa được. Những kiến thức cơ bản tùy thuộc vào trách nhiệm chính mà bạn đang làm và một số chúng được trang bị cho bạn ở giảng đường đại học. Ngày nay rất nhiều người nói rằng đó là những kiến thức “hàn lâm” và sinh viên ra trường không thể bắt tay làm việc được, điều đó đúng 1 phần là do trình độ của giảng viên đại học, cách bạn học trên giảng đường chứ nhìn chung một số trong chúng rất hay và rất cơ bản, nó là bước đệm cho bạn có thể tiến xa.

Tôi đưa ra một số kiến thức cơ bản cho 1 developer đó là thuật tóan, độ phức tạp của thuật tóan, các khái niệm về lập trình, viết code dễ debug và dễ kiểm tra, nguyên tắc họat động của compiler và cách phân bổ tài nguyên, lập trình đa luồng. Khi chuyên sâu vào 1 ngôn ngữ nào đó thì bạn phải biết thêm các họat động trên môi trường đó, ví dụ như là LTV Java thì bạn cần phải biết cách thức của Class Loader. Thật sai lầm nếu nghĩ rằng developer có nhiều kinh nghiệm sử dụng API là tốt vì viết code không phải là tất cả để đưa ra sản phẩm tốt mà cả thời gian debug, bảo trì (một trong những bài viết sắp tới của tôi là Invisible cost có bàn đến vấn đề này, mọi người nhớ đón đọc :-)) có kiến thức cơ bản bạn sẽ tốn ít thời gian hơn cho những chuyện đó.

Một câu chuyện thiền cũng về vấn đề này:
Trong một buổi giảng kinh cho cho tăng, phật tổ Như Lai chỉ tay lên mặt trăng và nói “Các ngươi thấy gì không?”, chúng chư tăng đồng thanh đáp: “Thấy ạ, đó là mặt trăng”, chỉ có Ana mỉm cười giác ngộ. Phật tổ liền cười và nói “Ana, ngươi thấy cái gì”, Anan liền đáp “dạ, tôi thấy ngón trỏ của Phật tổ”. Khi đang làm việc gì thì bạn có tìm hiểu, học hỏi kiến thức cơ bản như “cái ngón trỏ của Phật Tổ” hơn là thấy “ánh trăng”.

Lời bàn: Có mục tiêu đôi khi là một chuyện rất khó với một số người, kể cả trong cuộc sống lẫn trong lập trình. Nhưng chúng ta đâu chỉ đi tìm mục tiêu, mà còn tạo nên mục tiêu cho mình. Và cuộc sống không chỉ có lập trình. Chúc các bạn tìm, tạo và đạt được mục tiêu của mình
avatar Xman 21/06/2013 12:53
Đây là những yếu tố cần để bạn trở thành một lập trình viên giỏi:

1. Đam mê - đây là yếu tố hàng đầu và quan trọng nhất để thành công. Bạn cần có nó để có thể vượt lên số đông. Tất cả lập trình viên giỏi đều có niềm đam mê mãnh liệt, họ không phải là "siêu nhân", họ không biết hết mọi thứ nhưng bởi vì có đam mê nên họ khao khát học hỏi cái mới và có thể tạo ra các sản phẩm nổi bật giúp ích cho mọi người.

2. Thông minh - không cần là thủ khoa hoặc đạt điểm 10 thì mới gọi là thông minh. Yếu tố này có vẻ chủ quan nhưng ý của tôi ở đây là khi một cá nhân có khả năng hoàn thành một công việc trong một khoảng thời gian nào đó, hoặc có khả năng nảy sinh ra ý tưởng, giải pháp để giải quyết vấn đề. Tất cả chúng ta đều thông minh, không ai ngu ngốc cả, quan trọng là cách bạn hiểu chính mình, hiểu thế mạnh của mình và dựa trên nó. Tất cả lập trình viên đều có điểm mạnh và điểm yếu. Ví dụ: bạn có thể thiết kế giao diện rất tệ, nhưng bạn có thể kiểm tra giao diện của người khác và biết cách cải tiến nó.

3. Chia sẻ - trong lĩnh vực này, chúng ta học bằng cách chia sẻ. Bạn sẽ không thể học hết mọi thứ mà không cần chia sẻ. Càng chia sẻ, chúng ta càng biết nhiều hơn, càng thông minh hơn và càng giỏi hơn. Ta có thể chia sẻ mọi thứ, từ các tài nguyên, thủ thuật, đến cách viết code hoặc viết tài liệu. Cách dễ nhất để cùng lúc chia sẻ và học là tham gia vào các nhóm thảo luận, tham gia các nhóm ngoài sở trường của bạn, ví dụ như nếu bạn là một lập trình viên Java, hãy thử tham gia nhóm thảo luận về CSDL (vd: Oracle, MySQL) ở đó bạn có thể học kỹ hơn về kiến trúc dữ liệu, hiệu suất thực thi, ...

4. Thực hành - nói đến thế giới phát triển phần mềm là nói đến thực hành và kinh nghiệm, bạn càng thử nghiệm nhiều thì bạn càng gặt hái được nhiều kinh nghiệm. Hãy tiếp tục thử nghiệm để thấy bạn có thể sử dụng chúng giúp ích cho dự án công ty hay dự án cá nhân.

5. Thời gian - sử dụng thời gian của bạn một cách thông minh và lên kế hoạch một cách phù hợp. Thời gian là thứ mà bạn không thể mua. Tôi từng thấy một số lập trình viên tiêu phí thời gian của họ vào những việc vô bổ thay vì học những cái mới cho công việc/sự nghiệp của họ, và cũng chính các lập trình viên đó nói với tôi là họ muốn trở thành một kiến trục sư phần mềm trong vòng 3 năm, tôi chỉ biết nói là "Chúc bạn may mắn!".

Các yếu tố trên là các điểm cốt yếu giúp bạn định hướng trở thành một lập trình viên giỏi. Cũng giống như những điều khác trong cuộc sống, nếu bạn muốn đạt được một cái gì đó thì bạn cần phải đầu tư. Trong trường hợp này thì bạn cần phải đầu tư vào chính mình và nhận được kết quả càng sớm càng tốt bởi vì thời gian đang trôi qua và bạn sẽ không bao giờ trẻ lại.
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Máy vi tính
nophoto Hỏi cách update mac os x 10.4 len mac os x 10.5 ?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Cách cài lại Tiger từ Snow Leopard ?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Làm sao chuyển đĩa cài Leopard thành file dmg ?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Laptop, có nên sử dụng đồng thời cả wifi và mạng Lan ???

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Nghịch chơi win7, lỗi đầy hay do máy em hỏng ?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Xin mọi người chỉ giúp cách cài Win trên ibook G4 ?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Phiên bản Windows tối ưu cho MacBook ?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Các bác cho hỏi về VMware Fusion và Parallel với ?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

nophoto Màn hình máy tính bị đỏ cả màn hình khi băt đầu bật máy là bị làm sao?

Đăng lúc: 12:53 - 21/06/2013 trong Máy vi tính

Lê Văn Tùng Laptop của mình tự nhiên mở không lên , bạn mình nói chắc bi hư ram ...bạn nào biết chỉ giúp mình với ?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

nophoto Có chương trình nào khóa USB bằng mật khẩu ko?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

Nguyễn Văn Siêu Làm sao phá password trong CMOS và trong USER?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

Hin Tạo và quản lý đĩa ảo?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

nophoto Ai biết save as trong word 2007, chỉ mình với ?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

nophoto Không cài được kaspersky là thế nào nhỉ ?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

Thu Trang Phần mềm nào nén DVD thành MP4?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

nophoto Hỏi về cách sửa TV box 5821E

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

nophoto Em nên mua dell vostro AVN-1510n D963CN84 2GBCa6C hay vostro AVN-1520n HP8600L15.4N932GFBCa?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

nophoto Máy mình bị mất hết dữ liệu, mình không biết dùng phần mềm nào để khôi phục lại dữ liệu tốt nhất. Có ai biết chỉ giúp mình với ?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

nophoto Tư vấn mình mua laptop....nên chọn hiệu nào ?

Đăng lúc: 12:52 - 21/06/2013 trong Máy vi tính

Rao vặt Siêu Vip