NHỮNG KỸ NĂNG CẦN CÓ ĐỂ TRỞ THÀNH LẬP TRÌNH VIÊN GIỎI

Để giỏi trong bất kỳ lĩnh vực nào điều cần thiết chính là kỹ năng. Đối với nghề lập trình cũng vậy. Sau đây Stanford xin đưa ra một số kỹ năng giúp bạn có thể trở thành lập trình viên giỏi

1.  Kỹ năng tốt về một hoặc nhiều ngôn ngữ như C++, Java và C#.

  • Phải hiểu rõ các cấu trúc điều khiển. Đừng thất bại hay lóng ngóng khi có ai đó có đề nghị bạn in ra màn hình một hình tam giác gồm toàn kí tự X hay một hình nào đó bằng vòng lặp nhé.
  • Phải am hiểu và thành thạo tính đệ quy. Bạn phải biết làm thế bào để biến một vòng lặp thành một nhiệm vụ mang tính chất đệ quy một cách thông minh. Ví dụ: phép nhân sử dụng tính cộng một cách đệ quy rất điển hình.
  • Nếu ngôn ngữ mà bạn đang học là C hay C++, bạn phải biết làm thế nào để làm việc với con trỏ và các tham chiếu của chúng.
  • Hiểu rõ và phân biệt đuợc giữa việc truyền bằng tham trị và truyền bằng tham chiếu khác nhau ra sao.
  • Hiểu cách cấp phát và thu hồi bộ nhớ của ngôn ngữ mà mình đang sử dụng. Biết khi nào một đối tượng bị phá hủy và khi nào cần phá hủy để giải phóng cho bộ nhớ.
  • Biết cách sử dụng tất cả các toán tử bao gồm các toán tử bit-wise.

2. Có kiến thức sâu về OOP.

  • Nếu chỉ có thể viết các Class và tạo ra tính đóng gói và kế thừa thì không thể gọi đó là một sự am hiểu OOP hoàn toàn.
  • Phải hiểu rõ các chức năng như tải đè, ghi đè, tính đa hình làm việc như thế nào.
  • Hiểu rõ làm thế nào các Contructor hay Destructor làm việc với tính kế thừa trong OOP.
  • Phải phân biệt được sự khác nhau giữa giao diện (Interface) và các lớp trừu tượng (Abtract Class).
  • Biết làm thế nào để tải đè các toán tử. Biết tại sao và như thế nào cần tạo và sử dụng các contructor.

3. Biết các cấu trúc dữ liệu phổ biến.

  • Ít nhất nên biết các cấu trúc dữ liệu phổ biến như Stack, Queue, linked list, doubly linked list và trees.
  • Để là một nguời sử dụng tốt các cấu trúc dữ liệu đó, các bạn nên có sự hiểu sâu và rõ ràng về cách thực thi của các phương thức như push, pop, add, delete, peek,...trên những cấu trúc dữ liệu mà tôi đã đề cập ở trên.

4. Biết các giải thuật phổ biến nhất hiện nay một cách chuyên sâu.


Tất nhiên, bạn không cần phải nhớ rõ từng dòng code của các đoạn mã ảo (pseudo codes) nhưng bạn cần phải có những khái niệm rõ ràng về những giải thuật phổ biến trong việc tìm kiếm và sắp xếp.

5. Phải có những khái niệm về điện toán

  • Phải biết processes và threads là gì và làm thế nào chúng lại có liên quan đến nhau và làm thế nào để kiểm soát chúng theo ý mình.
  • Phải có sự hiểu biết về TCP/IP. Đừng nghĩ đó chỉ là nhiệm vụ dành cho nhà quản trị mạng. Tất cả các nhà lập trình đã từng hay sẽ làm việc với môi truờng mạng nên có sự hiểu biết rõ ràng về vấn đề này.

6. Có kĩ năng tốt trong việc gỡ rối (debugging) trong các môi truờng phát triển IDEs.

  • Phải có kĩ năng sử dụng tốt một số các công cụ lập trình như Visual studio/Visual Studio.Net, Eclipse, Netbeans..v.v.
  • Biết làm thế nào để gỡ lỗi đoạn mã.

7. Có kiến thức cơ bản về các bước phân tích, thiết kế và tạo phần mềm.



Tôi có một vài lời khuyên dành cho những bạn mới bước chân vào con đường lập trình như sau:
  • Các bạn nên bắt đầu với ngôn ngữ C++ hoặc Java,tránh bắt đầu với các ngôn ngữ kịch bản:
  • Nếu bạn mới học lập trình trong lần đầu tiên, tránh bắt đầu với ngôn ngữ có sự định kiểu lỏng lẻo như: PHP, ASP, Perl hoặc Visual Basic. Vì nó có thể sẽ phá hủy sự hiểu biết của bạn về sự thực thi của chương trình, về các kiểu dữ liệu, về quá trình cấp phát bộ nhớ...
  • Bắt đầu với C++ hoặc Java luôn là rất tốt. Nếu bạn muốn tôi xác định cho bạn trong việc lựa chọn một trong 2 ngôn ngữ đó, thì có lẽ bạn nên bắt đầu với C++, tin tôi đi, bạn sẽ yêu nó cho đến hết cả phần đời còn lại cho mà xem. Và sau khi bạn đã làm quen được với nó, thì việc tiếp cận và làm chủ các ngôn ngữ khác như C#, PHP, ASP, v.v.. sẽ dễ dàng hơn rất nhiều cho bạn.
  • Nếu bạn hỏi tôi, có cần biết ngôn ngữ C trước khi bắt đầu với C++ không? Hay có nên học C truớc khi học C++ không? thì tôi có thể trả lời bạn rằng, ngôn ngữ C mặc dù rõ ràng giúp ích rất nhiều cho việc học C++ nhưng không cần thiết phải bắt đầu từ C.
  • Nếu bạn muốn trở thành một nhà lập trình giỏi, cố gắng coding 20 giờ mỗi tuần trong bốn năm liên tiếp.
  • Không bao giờ dừng cập nhật các công nghệ mới, cái luôn diễn ra hằng ngày.
  • Có sự hiểu biết về nhiều ngôn ngữ nhưng phải là chủ của một ngôn ngữ. Ý của tôi là phải trở thành "a master of the language" ý nhé.

Chúc các bạn thành công !

Tags: