Từ trước đến nay, với các bạn muốn theo ngành IT, mình đều có lời khuyên là:
Kiến thức trong ngành thay đổi rất nhanh, các công nghệ rất dễ trở nên lạc hậu, lỗi thời. Do vậy, để theo đuổi ngành này, chúng ta phải chịu khó tự học, tự làm mới bản thân.
Hôm nọ, mình có đọc mẩu truyện tranh ngắn sau, về một cuốn sách khá nổi tiếng trong ngành – Working Effectively with Legacy Code
Mình chợt nhớ ra/ngộ ra rằng kiến thức công nghệ trong ngành IT cũng có 2 loại:
- Loại thứ nhất càng để lâu càng cũ, lạc hậu, trở nên vô dụng
- Loại thứ hai để lâu tận 10 năm, 20 năm cũng chả sao, thậm chí càng ngày càng có giá
Loại thứ 2 là những kiến thức gì vậy, các bạn xem sẽ biết nhé! (Bật mí nhỏ là không phải chỉ có thuật toán như mấy ông thầy trong trường hay nói đâu!
Kiến thức công nghệ – càng để lâu càng cũ
Trong ngành IT, có những thứ rất hay thay đổi:
- Các thư viện/framework: Điển hình như trong JavaScript, Angular/React cứ vài tháng lại ra phiên bản mới, Webpack/Babel vài tháng cũng cập nhật 1 bản.
- Các ngôn ngữ lập trình: C# qua 6, 7 năm cũng tiến hóa từ C# 1.0 tới C# 5.0, bây giờ latest là 7.0 rồi thì phải. Java cũng thế.
- Operation: ngày xưa thì phần mềm chạy trên server của công ty, giờ thì giang hồ chuyển qua dùng Cloud, dùng Docker hết.
- Tooling: Visual Studio thì 1, 2 năm ra một bản mới chẳng thua gì Fifa. Eclipse hay VS Code vài tháng cũng ra một bản cập nhật
Đấy, những kiến thức này rất mau thay đổi:
- Khi C# ra tới bản 7.0, các công ty có thể vẫn xài bản 5.0 hoặc 6.0, nhưng những bản 2.0 chẳng ma nào đụng nữa.
- Khi giang hồ đua nhau xài Angular/React thì jQuery dần dần bị ghẻ lạnh
Tuy chúng dễ lỗi thời nhưng các bạn đừng vội nghĩ là nó vô dụng! Nó là những kiến thức thực tế, hữu ích, dùng trực tiếp trong công việc.
Do vậy, nhiều trường dạy nghề, trung tâm tập trung dạy cái này mà quên dạy những kiến thức nền tảng. Điều này dẫn đến chuyện là đào tạo xong thì làm được, nhưng sau này muốn tìm hiểu thêm, học thêm là bó tay.
Kiến thức nền tảng và kinh nghiệm – Càng lâu càng có giá
Đọc tới đây, hẳn nhiều bạn sẽ lôi câu nói ưa thích của các ông thầy ra
Công nghệ là nhất thời, thuật toán là mãi mãi
Nói thật, câu này nghe thì ngầu ngầu vui tai thế thôi, chứ nếu chỉ học thuật toán không thì cũng không làm lập trình viên giỏi được đâu!
Thật ra, những thứ kiến thức học một lần, dùng cả đời là những thứ như sau:
- Kiến thức nền tảng/căn bản: Đây là những thứ như thuật toán, kiến thức về mạng máy tính, hệ điều hành, OOP
- Kiến thức dạng khái niệm: Những thứ như design pattern, Testing (Unit Test/Autmation TesT), IoC, System Design, Software Architecture
- Kinh nghiệm: Clean Code, SOLID, các Best Practice, CI/CD
- Kĩ năng mềm: Kĩ năng làm việc nhóm, kĩ năng viết document/email/slide, kĩ năng quản lý
Một điều khá hay ho khác là… ngoài việc sống dai, những kiến thức này còn có thể dễ dàng tái sử dụng:
- Dù bạn có nhảy từ C# qua Java hay JavaScript thì vẫn cần biết viết Clean Code, biết SOLID
- Hiểu về mô hình MVC thì code được Spring, Struts, ASP.NET MVC hay Express cũng chơi tuốt luốt
- Đã có khả năng viết Unit Test thì có dùng NUnit, JUnit, hay Jasmine/Mocha/Jest vẫn viết được unit test tốt
- Có dùng công nghệ gì thì cũng không thể thiếu kĩ năng làm việc nhóm, kĩ năng viết document
Do vậy, những cuốn sách về các chủ đề này luôn là những cuốn sách kinh điển. Điển hình là những cuốn sách như Clean Code, Code Complete, The Mythical Man-month, Peopleware, Don’t Make Me Think có tuổi đời rất lâu nhưng vẫn còn giá trị.
Tiếc thay, ở Việt Nam các thầy lại thích tập trung vào thuật toán, nhồi vào đầu sinh viên tư tưởng thuật toán giỏi là code giỏi; mà lại quên (hoặc không biết) truyền đạt cho sinh viên những thứ kiến thức như trên.
Tạm kết
Vậy, làm một developer, bản thân bạn phải làm sao?
- Đừng coi thường những kiến thức mau thay đổi loại 1, chúng là những thứ bạn dùng hàng ngày. Phải nắm vững những kiến thức đó bạn mới code nhanh, làm việc hiệu quả, làm ra sản phẩm tốt được
- Bên cạnh đó, đừng mù quáng chạy theo công nghệ, mà hãy tìm hiểu về vấn đề nó giải quyết, tự rút ra cho mình những khái niệm, concept (kiến thức loại 2). Chúng ta những kiến thức sẽ theo bạn trong cả sự nghiệp lập trình!
Via Toidicodedao