Minh Thông

Minh Thông

student/lập trình web/Sửa chữa láp ráp máy tính

Vậy là một mùa xuân mới lại về, do đó cũng là lẽ tự nhiên để chúng ta bắt đầu suy nghĩ về cuộc sống và những lựa chọn nghề nghiệp trong tương lai của bạn. Tôi đã phân tích số liệu thống kê về 'ngôn ngữ lập trình tốt nhất' trong nhiều năm qua, và chúng ta cũng đã nhìn thấy nhiều nguồn số liệu thống kê nổi lên rồi lại mất đi. GitHut - một trong những nguồn dữ liệu ưa thích của tôi - đã không còn được cập nhật kể từ năm 2014. Hiện tại vẫn còn nhiều nguồn số liệu khác đáng tin cậy, và trong bài viết này chúng ta hãy cùng nhau xem xét những số liệu mới nhất này nhé!


Chỉ số TIOBE, tháng 1/2016


Bản báo cáo mới nhất của TIOBE đánh giá mức độ phổ biến của các ngôn ngữ lập trình bằng cách sử dụng số lượng kỹ sư có tay nghề cao và thứ hạng trên các công cụ tìm kiếm. Kết quả xếp hạng là:


  1. Java
  2. C
  3. C++
  4. C#
  5. Python
  6. PHP
  7. VisualBasic.NET
  8. JavaScript
  9. Assembly Language
  10. Ruby
  11. Perl
  12. Delphi
  13. VisualBasic
  14. Swift
  15. MATLAB
  16. Pascal
  17. Groovy
  18. Objective-C
  19. R
  20. PL/SQL

TIOBE cũng tuyên bố rằng các biểu đồ của họ không phải là một chỉ số chính xác hoàn toàn. Một số ngôn ngữ tăng thứ hạng vì chúng vẫn còn được sử dụng và do tương đối lớn tuổi hơn so với những ngôn ngữ khác. Có một vài bất ngờ là: VisualBasic vẫn còn phổ biến? Nó hiếm khi được sử dụng bởi các lập trình viên chuyên nghiệp, nhưng có thể là do nhiều người sử dụng nó cho các ứng dụng ad-hoc đơn giản. Và một điều ngạc nhiên nữa là, tôi không biết bất cứ ai đang sử dụng ngôn ngữ lập trình assembly trong nhiều năm trở lại đây?


Báo cáo của DevPost, tháng 1/2016


Bản báo cáo phân tích của DevPost về công việc của 13.281 sinh viên tham gia vào gần 10.000 dự án trong suốt năm học 2014-2015. Kết quả cho thấy nhiều công nghệ đã được sử dụng, mặc dù nó được sắp xen kẽ với các ngôn ngữ lập trình:


  1. HTML/CSS
  2. JavaScript
  3. Python
  4. Java
  5. C/C++
  6. PHP
  7. Objective-C
  8. C#
  9. Swift
  10. JSON
  11. Ruby
  12. XML
  13. Ajax
  14. Shell
  15. Processing
  16. Lua
  17. CoffeeScript
  18. Go
  19. MATLAB
  20. OpenGL

Kết quả này chủ yếu làm nổi bật những công nghệ mà sinh viên đang tập trung nghiên cứu trong thời gian rảnh rỗi của họ. Các dự án có xu hướng bị chi phối bởi các ứng dụng native, vi điều khiển nhúng (embedded micro-controller) và thiết bị đeo trên người (wearable), đây có thể là các công nghệ nằm trong các thị trường ngách. Ngoài ra, đây là những ngôn ngữ lập trình mà các sinh viên muốn sử dụng. Cho dù chúng có khả thi hay mang lại sự hài lòng hay không lại là một vấn đề khác!


Hãy học lập trình ngay hôm nay!


Tôi sẽ nêu rõ điều này. Một lần nữa:



đừng bao giờ chọn một ngôn ngữ lập trình từ kết quả khảo sát



Nó sẽ giống như việc bạn chọn sống trong một thành phố nào đó bởi vì ở đó có dân số cao hơn so với những thành phố khác. Những số liệu thống kê này là rất thú vị, nhưng chúng không giúp bạn chọn được ngôn ngữ thích hợp nhất đối với hoàn cảnh, các yêu cầu dự án của bạn hoặc các mục tiêu nghề nghiệp mà bạn đang hướng tới.


Hãy quên đi việc lựa chọn một ngôn ngữ và bắt tay vào lập trình một cái gì đó. Không quan trọng việc bạn chọn ngôn ngữ nào. Hãy học những khái niệm cơ bản vì phần lớn các ngôn ngữ chỉ khác nhau về mặt cú pháp mà thôi.


... nhưng đừng mong chờ sẽ trở nên giỏi ngay lập tức


Các nhà phát triển phần mềm thường làm cho công việc lập trình nhìn qua trông có vẻ dễ dàng - nhưng thực ra bất cứ điều gì chỉ trở nên dễ dàng một khi bạn đã học được nó. Thật không may, ngành công nghiệp của chúng ta có khuynh hướng đánh giá thấp những thách thức.


Bạn đã bao giờ nhìn thấy các cuốn sách hoặc khóa học mang tên "Tìm hiểu kỹ thuật hàng không trong 21 ngày" hay "Cách xây dựng cầu cho những thằng đần (idiot)"? Tất nhiên là không, các lập trình viên sẽ cần phải bỏ ra rất nhiều thời gian nghiên cứu mới có thể trở thành chuyên gia. Sự khác biệt chính đó là ngành phát triển phần mềm có một rào cản rất thấp để mọi người tham gia vào, và nếu bạn có viết ra code tồi thì cũng ít khi ảnh hưởng đến bất cứ ai... trừ khi phần mềm của bạn được sử dụng để thiết kế máy bay, hoặc xây cầu!


Lập trình là rất khó. Bạn sẽ có thể tạo ra một vài chương trình đơn giản trong vòng vài ngày, nhưng bạn sẽ cần thu lượm kiến thức trong nhiều tháng để có thể tự tin xây dựng một ứng dụng lớn. Hầu hết các công việc chuyên môn đều đòi hỏi một vài năm kinh nghiệm vững chắc. Thậm chí bạn phải là người học tập suốt đời. Khi chúng ta nhìn lại phần code của các chương trình mà mình đã cẩn thận xây dựng cách đây 6 tháng thì ai cũng đều thốt lên "không biết thằng ngu nào mà lại đi viết những dòng code dở ẹc đến như vậy nhỉ?"


Liệu bạn có thể trở thành một lập trình viên?


Hoàn toàn có thể - nhưng khá ít người sẽ thành công. Nếu công việc này mà dễ dàng thì nhu cầu tuyển dụng các lập trình viên sẽ chẳng bao giờ vượt quá nguồn cung. Tuy nhiên, tôi không tin rằng các nhà phát triển phần mềm được sinh ra với khả năng lập trình bẩm sinh. Bất cứ ai cũng có thể học lập trình. Cũng giống như là bất cứ ai cũng có thể học chơi đàn guitar hoặc học tiếng Nhật... nếu họ dành ra thật nhiều nỗ lực.


Điều quan trọng là bạn phải có niềm đam mê. Nếu bạn cảm thấy phấn khích khi nhìn thấy tên của mình hiện lên trên màn hình hoặc khi di chuyển một quả bóng màu xanh lá cây từ điểm này đến điểm khác, thì lập trình có thể là nghề phù hợp với bạn. Các lập trình viên giỏi nhất thường được thúc đẩy bởi các tác vụ và chủ yếu là tự học. Giáo dục, sách vở và các khóa học sẽ giúp đỡ phần nào, nhưng bạn chỉ học được lập trình bằng cách thực hành nó.


Tôi nên bắt đầu từ đâu?


Nếu bạn tập trung vào phát triển phía client-side, bạn sẽ không thể tiến xa nếu không có một số kiến thức về các trình duyệt, HTML và CSS. Chúng tôi cũng cung cấp khóa học về HTML5 và CSS cho những người mới bắt đầu.


Phát triển các ứng dụng desktop bằng Java hay C# cũng không phải là dễ dàng hơn. Có thể có ít sự phụ thuộc hơn, nhưng nhiều người mới học thường quá lệ thuộc vào các IDE và các công cụ cần thiết mới có thể làm việc được. Việc các IDE hỗ trợ bạn quá nhiều sẽ không có lợi cho việc học tập.


Một ngôn ngữ thông dịch như Python, Ruby hoặc JavaScript (trong Node.js) có thể là một lựa chọn tốt hơn, nhưng một số sẽ rất nhàm chán bởi các dòng lệnh (command line). Nó cũng rất khó để tạo ra bất cứ điều gì có đồ họa thú vị để giữ sự phấn khích của bạn.


Liệu tôi có thể trở thành một lập trình viên giỏi?


Có - theo thời gian. Những lập trình viên giỏi nhất thường phải trải qua nhiều giai đoạn trong hành trình tìm kiếm tri thức của họ:


1. Giai đoạn "tôi không biết gì"
Mọi thứ đều mới mẻ, và không có gì là dễ dàng cả.


2. Giai đoạn "nó bắt đầu có ý nghĩa"
Bạn đã viết một vài chương trình và đang phạm ít sai lầm hơn.


3. Giai đoạn "tôi bất khả chiến bại"
Sự tự tin của bạn phù hợp với năng lực của bạn. Không có thử thách nào dường như quá khó khăn đối với bạn.


4. Giai đoạn "tôi không biết gì", phần II
Đột nhiên bạn nhận ra rằng công việc phát triển phần mềm là vô cùng phức tạp và bạn bắt đầu nghi ngờ về khả năng của mình.


5. Giai đoạn "tôi biết một chút và điều đó cũng OK thôi"
Bạn có những kỹ năng lập trình rất tốt, nhưng nhận ra giới hạn của mình và có thể tìm thấy giải pháp cho hầu hết các vấn đề (thậm chí nếu điều đó có nghĩa là phải thuê một lập trình viên khác).


Theo kinh nghiệm của tôi, sự khác biệt chính giữa các lập trình viên giỏi và lập trình viên vĩ đại là sự tò mò. Một lập trình viên vĩ đại sẽ chẳng bao giờ sử dụng và lắp ráp những thành phần được viết sẵn lại với nhau. Họ muốn hiểu rõ cách thức chúng làm việc như thế nào. Việc hoàn thành một tác vụ trong thời gian ngắn nhất có thể là ít quan trọng hơn.


Hãy xem xét việc viết các thư viện của riêng bạn trước khi sử dụng sản phẩm của người khác. Ví dụ, viết các function của riêng bạn để thao tác với JavaScript DOM hoặc tạo ra các đối tượng để kết nối với cơ sở dữ liệu trong PHP. Sử dụng jQuery hoặc một ORM sẽ cho phép bạn tạo ra một cái gì đó nhanh hơn, nhưng sự hiểu biết về những công nghệ phía dưới là vô giá. Việc sử dụng lại code trở nên ngày càng quan trọng, nhưng đừng sợ phải nghiên cứu sâu hơn trong khi bạn đang học tập.


Cuối cùng, đừng bao giờ sợ chọn sai ngôn ngữ... không có ngôn ngữ nào là sai cả. Có những ngôn ngữ không phải là thích hợp nhất cho một dự án cụ thể, nhưng bạn sẽ chỉ khám phá ra điều đó bằng cách thử và sai. Hãy chọn một dự án thú vị, chọn bất kỳ một ngôn ngữ nào và làm việc với chúng.


Chúc bạn may mắn và sớm trở thành một lập trình viên giỏi!


 - bài viết bởi Hồ Sỹ Hùng


Save