Không giỏi toán có học lập trình được không? Được. Phần lớn công việc lập trình thường ngày cần tư duy logic, khả năng chia nhỏ vấn đề và sự kiên nhẫn, chứ không cần tích phân hay đại số tuyến tính. Chỉ một số mảng như đồ hoạ, trí tuệ nhân tạo, mật mã mới cần toán sâu.
Chào bạn, đây là Nhà Lập Trình. Mình gặp rất nhiều bạn trẻ học khối xã hội, từng sợ toán từ cấp hai, và nghĩ cánh cửa lập trình đã đóng với mình từ lâu. Tập này mình muốn tách rõ hai thứ hay bị nhập làm một: toán ở trường và cách nghĩ mà lập trình thật sự cần.
Lập trình thường ngày dùng toán đến đâu?
Hãy nhìn vào một ngày làm việc của một lập trình viên làm trang web bán hàng. Họ làm form đăng ký, kiểm tra số điện thoại hợp lệ, lấy danh sách sản phẩm từ cơ sở dữ liệu, sắp xếp theo giá, tính tổng tiền giỏ hàng, gửi email xác nhận. Toán ở đây là cộng trừ nhân chia và so sánh lớn nhỏ.
Phần khó trong ngày của họ nằm ở chỗ khác. Khách nhập số điện thoại có dấu cách thì sao, sản phẩm hết hàng giữa lúc khách đang thanh toán thì sao, email gửi không đi thì làm gì. Đây là tư duy về các tình huống, không phải toán.
Người làm phần mềm quản lý kho, ứng dụng đặt lịch, hệ thống nội bộ công ty cũng tương tự. Đa số việc là sắp xếp dữ liệu, chuyển dữ liệu từ chỗ này sang chỗ kia, và xử lý khi có gì đó không như ý.
Nên nếu bạn từng đạt điểm trung bình môn toán nhưng biết sắp xếp công việc gọn gàng, biết lường trước chuyện có thể xảy ra, bạn đã có sẵn phần lớn thứ cần.
Cái mà người ta gọi là tư duy toán thật ra là gì?
Khi ai đó nói lập trình cần tư duy toán, thường họ muốn nói đến vài thói quen nghĩ, chứ không phải công thức. Thói quen thứ nhất là chia một việc to thành nhiều việc nhỏ, mỗi việc đủ nhỏ để làm được. Nấu một mâm cỗ cũng cần thói quen này.
Thói quen thứ hai là nghĩ theo điều kiện: nếu thế này thì làm thế kia, còn không thì sao. Người bán hàng tính khuyến mãi cho khách, mua trên một mức thì giảm, là thành viên thì giảm thêm, đang nghĩ đúng kiểu này.
Thói quen thứ ba là thấy được quy luật lặp lại. Làm cùng một việc cho mười khách hàng thì có cách làm một lần cho cả mười. Người làm văn phòng nào quen dùng bảng tính kéo công thức xuống cả cột đều đã chạm vào ý này.
Thói quen thứ tư là chính xác. Máy tính làm đúng từng chữ bạn nói, không hiểu ý bạn. Thiếu một điều kiện là chương trình sai. Đây là chỗ nhiều người thấy khó, nhưng nó luyện được bằng thực hành, không cần năng khiếu toán.
Mảng nào thì toán quan trọng thật?
Nói công bằng, có những mảng mà toán là bắt buộc. Làm trò chơi và đồ hoạ ba chiều cần hình học, véc tơ, ma trận để xoay, phóng to, tính va chạm. Làm trí tuệ nhân tạo và học máy cần xác suất, thống kê, đại số tuyến tính để hiểu mô hình đang làm gì.
Làm mật mã và bảo mật chuyên sâu cần lý thuyết số. Làm hệ thống tối ưu như xếp lịch bay, định tuyến xe giao hàng cần toán rời rạc và thuật toán tối ưu. Phân tích dữ liệu nghiêm túc cần thống kê vững để không kết luận sai.
Nhưng những mảng này chỉ là một phần của nghề. Và ngay cả trong đó, nhiều người học toán dần theo nhu cầu, khi đã đi làm và thấy rõ mình cần phần nào, thay vì học hết trước.
Nên câu hỏi hợp lý hơn là: mảng mình muốn làm cần toán tới đâu? Nếu bạn muốn làm trang web cho các cửa hàng, câu trả lời là rất ít. Nếu bạn mơ làm trí tuệ nhân tạo, hãy chuẩn bị tinh thần học lại thống kê.
Sợ toán thường là sợ cách học toán cũ
Có một điều mình quan sát được: nhiều người sợ toán không phải vì kém, mà vì từng bị dạy toán theo kiểu học thuộc công thức, làm bài để lấy điểm, sai thì bị chê. Nỗi sợ đó theo họ tới tận khi đi làm.
Lập trình lại cho bạn một cách tiếp cận rất khác. Bạn thử, máy báo sai, bạn sửa, thử lại. Không ai chấm điểm, không ai chê, chỉ có máy tính kiên nhẫn chạy lại lần thứ một trăm. Nhiều người sợ toán lại thấy thoải mái với kiểu học này.
Một chị học ngành ngôn ngữ ở Huế kể chị từng nghĩ mình không có đầu óc logic. Khi học lập trình, chị nhận ra việc phân tích ngữ pháp một câu văn và việc chia một chương trình thành các phần có nhiều điểm giống nhau đến bất ngờ. Người học ngôn ngữ vốn quen với quy tắc và ngoại lệ.
Thậm chí có người học lập trình xong mới quay lại thấy toán dễ hiểu hơn, vì giờ họ có thể viết một đoạn chương trình nhỏ để thử và nhìn thấy khái niệm chạy trước mắt.
Nếu cần bù toán thì bù thế nào?
Nếu sau một thời gian bạn thấy cần thêm toán, đừng quay lại học từ sách giáo khoa lớp mười. Hãy học đúng phần mình cần, lúc mình cần. Làm trò chơi cần xoay nhân vật thì học phần xoay. Phân tích dữ liệu bán hàng thì học trung bình, trung vị, độ lệch.
Hãy học toán bằng cách lập trình nó. Muốn hiểu xác suất, viết một chương trình tung đồng xu mười nghìn lần và đếm. Muốn hiểu lãi kép, viết chương trình tính số dư qua từng tháng. Khi thấy con số thay đổi trước mắt, khái niệm trừu tượng trở nên cụ thể.
Và đừng so mình với những người đi thi học sinh giỏi toán. Nghề lập trình rộng lắm, có chỗ cho người giỏi toán và có chỗ cho người giỏi hiểu con người, giỏi tổ chức, giỏi giải thích.
Nếu bạn đang chần chừ vì toán, hãy thử viết chương trình đầu tiên trước đã. Rất có thể bạn sẽ phát hiện ra thứ mình sợ bấy lâu nay không phải là thứ đang chặn đường.
Câu hỏi thường gặp
Học công nghệ thông tin ở đại học có cần giỏi toán không?
Chương trình đại học ngành máy tính thường có vài môn toán như toán rời rạc, xác suất, đại số tuyến tính. Bạn cần đủ để qua môn và hiểu nền, không nhất thiết phải xuất sắc, và nhiều người khá lên nhờ chính việc lập trình.
Học khối xã hội có chuyển sang lập trình được không?
Được. Nhiều người làm nghề xuất phát từ ngôn ngữ, kinh tế, luật, báo chí. Kỹ năng đọc hiểu, diễn đạt và phân tích từ khối xã hội rất có ích khi làm việc với yêu cầu và người dùng.
Thuật toán có phải là toán không?
Thuật toán là một cách giải quyết vấn đề theo từng bước, gần với công thức nấu ăn hơn là bài toán. Một số thuật toán phức tạp dùng toán để chứng minh, nhưng dùng và hiểu ý tưởng của nó thì không cần toán sâu.
Lập trình viên web có dùng toán hằng ngày không?
Phần lớn chỉ dùng số học cơ bản và logic điều kiện. Khi làm hiệu ứng, biểu đồ hay tính toán tài chính thì có thêm chút toán, nhưng thường tra cứu được khi cần.
Làm sao biết mình có hợp với lập trình không?
Cách tốt nhất là thử làm một dự án nhỏ trong vài tuần. Nếu bạn thấy thích thú khi gỡ được lỗi và muốn làm tiếp dù hơi khó, đó là dấu hiệu tốt hơn mọi bài kiểm tra năng khiếu.