I. Giới thiệu
“Mình muốn học lập trình, nhưng làm thế nào để bắt đầu?”
là câu hỏi mình thường gặp nhất, và đồng thời, cũng có nhiều câu trả lời khác nhau nhất. 5 giây tra Google có thể dẫn bạn đến những video chất lượng như thế này:
Bản thân mình, tuy không kém ai, nhưng cũng chẳng hơn ai - là một học sinh hết sức bình thường với chút ít kiến thức công nghệ thông tin. Tuy nhiên, bởi “vạn sự khởi đầu nan” nên giờ đây, mình muốn chia sẻ “bước đầu tiên” của mình, để các bạn có cái nhìn chung về thế giới công nghệ và lựa chọn cho bản thân một lối đi phù hợp.
II. Giải đáp về lập trình
“Mình có nên học công nghệ thông tin không nhỉ?” thường chính là câu tự vấn đầu tiên. Văn mẫu về “thằng em 96 học IT” khiến các bạn nghĩ rằng ngành công nghệ thông tin thật ngầu, làm việc với máy tính trong phòng điều hòa lại thật nhàn, thật hiện đại và thu nhập thì quả là đáng mơ ước. Nhưng các bạn đắn đo và do dự, nghĩ rằng đó là công việc chỉ của riêng những bậc anh tài với mức IQ và lượng synapse nhất định.
Không có đâu.
Quả đúng là việc lập trình yêu cầu những kĩ năng logic nhất định. Tuy nhiên, đó là thứ có thể tập luyện được. Với kĩ năng Google vừa đủ, mọi người đều có thể viết code.
“Mọi kẻ khờ đều có thể viết code mà máy hiểu được. Chỉ có lập trình viên giỏi mới viết code con người hiểu được.”
- Martin Fowler -
Mặc khác, không thể nói điều tương tự với việc ngồi trước máy tính và sửa lỗi liên tục trên 12 tiếng 1 ngày. Thêm vào đó, tuổi nghề trung bình của lập trình viên lại vô cùng ngắn - sẽ cán mốc cuối vào khoảng 35 đến 40 tuổi. Đó là khi bạn sẽ không còn sức để tiếp tục theo đuổi các công nghệ mới, và phải chuyển sang phần nhân sự hoặc quản lý.
Nếu cảm thấy những điều đó vẫn ổn với bạn, thì chúng ta đến với câu hỏi tiếp theo:
“Mình nên bắt đầu học từ ngôn ngữ nào nhỉ?”
Nếu so sách với việc chọn Pokemon vào khởi đầu chuyến hành trình, thì đây là sự chần chừ khi đứng trước cửa phòng thí nghiệm. Các bạn sợ “một bước sai vạn dặm đau”. Tuy nhiên, với câu hỏi này, mình hoàn toàn có thể trả lời rằng.
Đó là tiếng Anh.
Điều kiện tiên quyết khi học công nghệ thông tin là tiếng Anh. Không cần IELTS hay TOEIC, nhưng bạn cần biết đọc đủ nhanh và hiệu quả, bởi tài liệu, thuật ngữ, hướng dẫn, chú thích - mọi thứ đều được viết bằng tiếng Anh. Còn tài liệu tiếng Việt, hi vọng bạn tìm được phiên bản nào đó không bị lỗi thời ít nhất 5 năm.
Mặt khác, nếu bạn thực sự hỏi về ngôn ngữ lập trình, vậy hãy đặt câu hỏi rằng bạn muốn viết gì? Desktop app? Web app? Android/IOS app? Game? Vậy thì mở Google ra, tìm programming languages for game
chẳng hạn, và bắt đầu tại đó thôi! Ngược lại, nếu bạn vẫn chưa xác định được mình muốn làm gì, bạn có thể tham khảo biểu đồ sau:
Điều quan trọng thực chất không phải ngôn ngữ khởi đầu, mà là những khái niệm về lập trình - biến, hàm, đối tượng, trình thông dịch và trình biên dịch,… Những khái niệm đó là bất biến và hầu như không đổi trong phần lớn các ngôn ngữ lập trình. Khi bạn nắm được một ngôn ngữ, sử dụng những ngôn ngữ khác chỉ là công việc tra Google rồi lắp từ tạo câu - với tiền đề là bạn phải biết từ khóa cần tra.
III. Hành trình công nghệ của mình
Năm lớp 10, mình thi đỗ chuyên Tin, và từ đó giới hạn thời gian sử dụng máy tính của mình được gỡ bỏ. Như mọi chú gà khác, mình bắt đầu từ việc cài Code Blocks, bắt đầu tìm hiểu về cấu trúc dữ liệu và giải thuật trong C++.
Đại loại thì đoạn chương trình đầu tiên của mình trông như thế này:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world" << '\n';
}
Quá trình học chuyên đề đầy đau khổ đã dạy mình về logic và các cấu trúc dữ liệu, và đồng thời, là phong cách code xấu nhất có thể.
Giữa quá trình học chuyên đề, mình cũng tự tìm hiểu về những công cụ mà lập trình viên thực sự sử dụng. Mình bắt đầu vọc vạch Linux, bắt đầu từ Linux Mint. Mình nhảy qua Sublime Text, rồi Atom, và hiện tại đang dừng ở VS Code cùng Neovim.
Kết thúc quá trình học chuyên đề, việc đầu tiên mình làm là dành 1 tuần để nhảy distro - tức là liên tục cài một hệ điều hành Linux, chỉnh sửa sao cho vừa ý, rồi lại xóa sạch ổ đĩa đi để cài một hệ điều hành khác. Mình đã thử Ubuntu, Debian, Elementary OS, Deepin, Fedora, Parrot OS, Manjaro, Zorin OS, Pop!_OS, Puppylinux, Haiku, CentOS, Arch, và Gentoo. Cuối cùng, mình kết luận là mình cần một cái gì đó đơn giản, ngốn ít tài nguyên, bền và đẹp, nên tuần trước mình đã quay lại với Linux Mint.
Sau đó, không vì một lý do cụ thể nào, mình nghĩ rằng mình muốn làm web, và liền đó, mình học làm web. Khởi đầu từ những kiến thức front-end cơ bản trên MDN Web Docs, mình quyết định sẽ làm nên một trang blog cá nhân. Trong quá trình thực hiện, mình đã học được rất nhiều phần về công nghệ web - các ngôn ngữ, framework, công cụ,… Hiện tại thì nó nằm ở đây, với mục đích kỉ niệm: https://hakune-blog.herokuapp.com/.
Và rồi, cũng không vì một lý do cụ thể nào, mình nghĩ rằng mình muốn làm app Android - kéo theo đó là quá trình học Dart và Flutter.
Sau đó, mình cũng đã thử nghiệm với nhiều mảng khác - khoa học dữ liệu (chủ yếu trên Kaggle), lập trình game (mình chọn Unity), blockchain (trên nền tảng Etherium), lập trình nhúng, IoT,… Mỗi ngày đều dành một lượng thời gian đến hại sức khỏe để liên tục viết code và trải nghiệm.
Càng về sau, Python càng tỏ ra thập phần hữu dụng. Cũng bởi vậy, mình đã nghĩ, sao không thử đào sâu vào ngôn ngữ này xem. Và thế là mình làm một vài app CLI đơn giản bằng Python, cũng đã học hỏi được rất nhiều điều.
Rồi một ngày nọ, mình xem Mr.Robot.
“Đây chính là thứ mình muốn làm!”, mình đã nghĩ thế. Và không chút chần chừ, mình đi tìm hiểu những phương pháp và nền tảng để học bảo mật thông tin. Bắt đầu từ Try Hack Me để có cái nhìn cơ bản về những lĩnh vực trong bảo mật thông tin, mình quyết định sẽ thử nghiệm với kiểm thử xâm nhập (penetration testing). Và đó là mình hiện tại.
Một cách trung thực, hơn 1 năm là quãng thời gian tương đối ngắn để có cái nhìn sâu sắc về các lĩnh vực trong ngành IT. Tuy nhiên, mình đã tìm hiểu, trải nghiệm, tìm được hướng đi cho sự nghiệp của mình, và mình tự hào về điều đó.
IV. Tiếp theo là?
Thế giới công nghệ là vô cùng tận. Mỗi ngày Github chào đón các nhà phát triển bằng một quả cầu thể hiện thế giới phần mềm đang tăng tốc nhanh thế nào. Khi bạn mở mắt thức dậy, một công nghệ cũ lại trở nên lỗi thời, và một công nghệ mới lại được sinh ra.
Bởi vậy, cách duy nhất để bắt kịp chính là học. Học liên tục. Học đến khi không thể tiếp tục được nữa - khi đó bạn sẽ trở thành quản lý, trông nom một thế hệ kế tiếp lại liên tục học và phát triển.
Hi vọng câu chuyện nho nhỏ trên của mình đã giúp bạn kiếm tìm được một động lực học tập cho bản thân.
Ngày 7 tháng 3 năm 2022, mình lại ngồi bên máy tính và tạo ra thế giới.