NỘI DUNG BÀI VIẾT
Xin chào các bạn, trong bài viết này mình sẽ chia sẻ quan điểm của mình về việc dốt toán có thể học được lập trình không? Cùng bắt đầu thôi!
Nhận định hiện nay
Nhiều người cho rằng lập trình là một công việc chỉ dành cho những người tài năng. Một con đường nghề nghiệp chỉ dành riêng cho những người đam mê các hoạt động về trí não hoặc có năng khiếu toán học…
Khi còn học phổ thông, mình thường được nghe thầy cô giáo nói chuyện rằng bạn này có khả năng tư duy logic tốt, học toán giỏi,… chắc chắn sau này sẽ trở thành lập trình viên. Tuy nhiên, trong quá trình làm việc và kiểm nghiệm thực tế, mình đã phát hiện ra một sự thật rất thú vị – không phải 100% lập trình viên đều học giỏi toán như mọi người thường nghĩ.
Mọi người thường hay nhầm lẫn về mối quan hệ giữa toán học và lập trình, bởi vì họ muốn có một câu trả lời dứt khoát là “Có” hoặc “Không” cho câu hỏi “Dốt toán có thể học được lập trình không?”. Thực ra, câu trả lời thường là “còn tùy vào công việc, nhưng hầu như là không”.
Là một lập trình viên, chúng ta dành hầu hết thời gian của mình để viết code. Không phải các kiến thức và công thức toán học mà bạn tích luỹ được khi còn học trên ghế nhà trường sẽ tỷ lệ trực tiếp với kỹ năng lập trình của bạn.
Như thế nào được gọi là lập trình viên giỏi?
Bạn có thể có ý khác, nhưng theo tôi, một lập trình viên giỏi là người:
- Giải quyết vấn đề xảy ra theo cách tốt nhất có thể
- Đam mê, ham học hỏi những kiến thức mới lạ
- Chuyên gia trong một số ngôn ngữ, công cụ và có những cách làm tốt nhất, đúng đắng nhất mà trong tiếng Anh người ta gọi là best practice
- Sử dụng đúng ngôn ngữ lập trình, công cụ để giải quyết đúng vấn đề
- Viết code sạch và code có thể dễ dàng cập nhật, mở rộng, bảo trì, tức làm sao người khác có thể hiểu code của mình một cách dễ dàng
- Xem xét sự cân bằng về hiệu suất, việc xử lý dữ liệu hay tính toán, bảo mật, khả năng bảo trì và khả năng mở rộng
- Là người biết cách làm việc nhóm và giao tiếp tốt
- Hoàn thành công việc được giao đúng thời hạn
Mối liên hệ giữa toán học và lập trình
Chắc chắn bạn đã từng học toán cao cấp ở trường đại học, học cách tính thể tích của khối lập phương với hình cầu trong không gian 3 chiều. Bạn cũng đã học rất nhiều về giới hạn, tích phân, vi phân, đạo hàm,… ở trường trung học.
Nhưng cuối cùng, đó cũng chỉ là rất nhiều công thức mà hiếm khi được sử dụng trong thực tế, chứ đừng nói đến việc ghi nhớ. Trong những công thức đó, không hề có một công thức nào dạy bạn làm thế nào để trở thành một lập trình viên giỏi.
Toán học giúp phát triển kỹ năng phân tích và giải quyết vấn đề. Tuy nhiên bộ não con người phức tạp hơn những gì chúng ta hiểu và toán học không phải là cách duy nhất để phát triển các kỹ năng đó.
Một người biết cách giải các bài toán phức tạp không có nghĩa là họ biết cách giải một bài toán lập trình với code sạch, có thể bảo trì và hoàn thành công việc đúng hạn.
Chắc hẳn bạn đã từng biết các lập trình viên giỏi toán nhưng họ không thể hoàn thành một ứng dụng đơn giản đúng hạn. Họ viết code lộn xộn và thật khó mà mở rộng hay bảo trì.
Vậy toán học chưa chắc đã giúp bạn trở thành một lập trình viên giỏi, bạn có đồng ý không?
Có phải toán học giúp bạn thông minh hơn?
Cũng có một quan niệm khác cho rằng giỏi toán làm cho người ta thông minh hơn. Vậy theo quan niệm này, các bác sĩ y khoa hoặc luật sư ít thông minh hơn chỉ vì họ không giỏi toán học?
Có một sự thật không thể bàn cãi là có những người làm những điều phi thường trên thế giới này và họ không biết toán. Họ là người giải quyết vấn đề xuất sắc, họ phân tích rất giỏi và có thể giải quyết các vấn đề một cách hoàn hảo và đúng thời gian. Và họ không phải là người giỏi toán!
Những kỹ năng kiến thức của lập trình viên có liên quan gì đến toán học không?
Mặc dù toán học rất quan trọng và đã được sử dụng trong thiết kế máy tính, nhưng không phải tất cả lập trình viên đều cần phải giỏi toán. Ngay cả khi bạn đang xây dựng một ứng dụng liên quan đến rất nhiều hình ảnh, video hoặc xử lý âm thanh, bạn cũng không cần quá giỏi về toán học.
Toán học rất kỳ diệu, nhưng đó không phải là một kỹ năng thiết yếu cho các lập trình viên hiện nay.
Lập trình viên thời hiện đại cần giỏi một hoặc hai ngôn ngữ lập trình, thành thạo các cấu trúc dữ liệu và giải thuật, biết cách thiết kế patterns và cơ sở dữ liệu để áp dụng vào dự án. Đây là loại kiến thức điển hình mà bạn cần phải biết để trở thành một lập trình viên giỏi.
Ngoài ra, các lập trình viên cần biết cách sử dụng rất nhiều công cụ để làm việc dễ dàng và hiệu quả hơn. Các công cụ để quản lý source code như Git, IDE như Visual Studio, IntelliJ, Sublime Text,… hay đơn giản là lập kế hoạch các công việc cần thực hiện trong ngày.
Đây là những kỹ năng mà các lập trình viên cần học để thành công trong công việc hàng ngày. Bạn phải biết thiết kế các patterns tốt nhất để phù hợp với yêu cầu, cần biết khi nào thì nên sử dụng cấu trúc dữ liệu nào. Kiến thức về kiến trúc tổng thể của codebase, tools và công nghệ sẽ giúp bạn rất nhiều trong công việc lập trình của mình.
Còn các bài toán tính toán phức tạp không dạy cho bạn bất kỳ kỹ năng nào trong danh sách trên.
Những lĩnh vực lập trình có liên quan đến toán học
Mặc dù hầu hết các lĩnh vực trong công nghệ phần mềm đều không cần dùng đến toán, nhưng không phải là tất cả. Nếu bạn làm trong ngành như Machine learning, Big Data, xử lý ảnh, xử lý tiếng nói, phát triển Game, lập trình robot hay phát triển các ngôn ngữ lập trình thì bạn sẽ cần sử dụng đến toán học.
Trong các lĩnh vực này, bạn phải làm với những việc cần có kiến thức về toán học như giải tích, đại số tuyến tính, lý thuyết đồ họa, xác suất thống kê, toán rời rạc, trí tuệ nhân tạo,…
Tuy vậy, ngay cả những lĩnh vực nói trên, bạn cũng không phải thường xuyên trực chuyển những công thức toán thành code. Thông thường bạn sẽ dùng những hàm thư viện có sẵn để làm việc đó. Các thư viện này sẽ giúp bạn bớt đi việc tự xử lý những tính toán phức tạp và tập trung vào giải quyết những vấn đề ở mức độ cao hơn.
TensorFlow là một tập thư viện như vậy, dành cho machine learning mà bạn có thể tham khảo. Một ví dụ là khi bạn cần giải bài toán Tối Ưu Hóa (gradient descent), bạn sẽ không cần phải viết code phức tạp để giải mà có thể dùng thư viện thích hợp.
Kết luận
Có lẽ bạn đã có câu trả lời rõ ràng cho câu hỏi “Dốt toán có thể học được lập trình không?” rồi chứ?
Lập trình là một công việc đòi hỏi tính sáng tạo. Lập trình viên phải là người có kỷ luật, có tính học hỏi, chín chắn và kiên định. Đó chính là những điều tiên quyết. Từ toán học đến lập trình không phải một con đường dễ như ta tưởng nhưng kể cả với người không có nhiều kiến thức về toán cũng có thể đến với lập trình, chỉ cần sự nỗ lực và đam mê.
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.
Tuy nhiên muốn thi vào trường Tin thì phải giỏi Toán…
Trường chuyên cấp 3 thì bắt buộc rồi nhưng ĐH có thể không =))
Tao dốt toàn bộ các môn trừ những môn ngoại khóa nhưng tao rất thích nghề lập trình muốn học mà giờ muộn mẹ nó rồi. 30 tuổi còn bao việc phải lo (vợ con , gia đình 2 bên). Khi đủ chín chắn nhận ra việc học thì cũng là lúc phải nói chữ QUÁ MUỘN…
Rất đồng cảm với câu chuyện của anh Vang. Quả thực, 30 tuổi là một độ tuổi rất khó để bắt đầu lại một điều gì đó. Nhưng không phải là không thể. Em đã thấy có một cặp vợ chồng 32 tuổi như anh, vì thấy công việc của chồng vất vả, lương thấp mà người vợ đã động viên chồng đi học và chuyển nghề lập trình. Hành trình đến với nghề này của anh ấy cũng rất gian nan nhưng có vợ ở bên cạnh, động viên là một niềm khích lệ rất lớn.
Dù ở bất cứ ngành nghề nào, dù có xuất phát điểm ở đâu đi chăng nữa, nếu có đam mê và sự quyết tâm theo đuổi thì chắc chắn sẽ hái quả ngọt. Chúc anh Vang luôn thành công trên con đường mà mình đã chọn.