Lang thang trên mạng đọc được một bài viết có tên là “Những điều trường học không dạy bạn”, bỗng dưng muốn viết một bài tương tự, dành cho dân developer tụi mình. Kinh nghiệm làm việc của mình cũng kha khá, có thể sẽ không đầy đủ, rất mong comment góp ý ủng hộ của các bạn.
Có rất nhiều điều chúng ta không được học ở trường (Nhưng lại vô cùng cần thiết), mình tạm chia ra làm 3 phần.
Đây là phần đầu trong series bài viết “Những điều trường đại học không dạy bạn”:
- Kĩ thuật lập trình
- Cách nâng cao giá trị bản thân
- Thành công và thăng tiến trong môi trường làm việc
Ở phần 1 này, mình sẽ nói về kĩ thuật lập trình.
Ở Việt Nam, đa phần các bạn lập trình viên thường là sinh viên tốt nghiệp ngành Khoa học Máy tính (Computer Science) ở trường đại học, 1 số bạn tự học hoặc học qua 1 số trung tâm.
Mảng Khoa học Máy tính thường nặng về tính khoa học, nghiên cứu. Những kiến thức về hệ điều hành, thuật toán và cấu trúc dữ liệu v….v mà trường dạy là vô cùng cần thiết với các developer, mình không phủ nhận.
Tuy nhiên, code, ngôn ngữ lập trình và design lại khá bị xem nhẹ. Do đó, khi bắt đầu làm việc, đa phần các bạn sẽ thiếu những kĩ năng sau đây:
Cách đọc và viết code
Khi còn ở đại học, khi bạn viết ra code chạy đúng, chạy được, giải quyết xong bài toán tức là bạn giỏi. Trong các kì thi cũng thế. Trong công việc thì khác, chạy đúng là yêu cầu bắt buộc, nhưng code được viết ra còn phải dễ hiểu, dễ đọc, dễ bảo trì và sửa chữa.
Vì sao? Trong ngành này, code không phải chỉ viết 1 lần rồi bỏ đó, ta phải bảo trì, nâng cấp, sửa chữa thường xuyên. Như mình đã nói ở các bài viết trước, hãy chọn cách đơn giản, dễ hiểu, đừng chọn cách thông minh để rồi không ai hiểu.
Ngày xưa mình cũng từng là sinh viên giỏi, từng nghĩ mình code hay này nọ… sau khi đi làm hơn 1 năm rồi, đọc lại đống bùi nhùi trông như là code của mình mới nhận ra ngày xưa mình trẻ trâu thế nào.
Trường đại học dạy ta vô số thứ: lập trình hướng đối tượng, tính bao đóng, tính kế thừa v…v, nhưng chẳng ai dạy các bạn về SOLID – Những điều lập trình viên nào cũng cần nắm rõ; không ai dạy các bạn cách đặt tên hàm, tên biến, cách viết API cho dễ sử dụng; không ai dạy design pattern – một thứ để phân loại lập trình viên junior và senior.
Các bạn hãy đọc 2 cuốn: Code Complete và Clean Code, chỉ cần hiểu và áp dụng khoảng 30-50% những điều trong sách này, các bạn đã giỏi hơn 50% số developer còn lại rồi đấy
Sử dụng IDE, debug
Mình không vơ đũa cả nắm, nhưng một số trường vẫn còn sử dụng phương thức kiểm tra giấy cho các kì thi lập trình. Sau đó giáo viên sẽ đọc code của từng học sinh, thật là cực cả thầy lẫn trò. Sinh viên code C, C++ trên notepad, hoặc 1 số ide, sau đó thì chạy code.
Đến khi đi làm, nhiều bạn không biết sử dụng IDE như Eclipse, Visual Studio,… không biết dùng Nuget, Maven .. Mình thì may mắn hơn, thời gian code chiếm 70% thơi gian học, được sử dụng VS khi học C++, dùng NetBeans khi học Java, cơ mà cũng tới năm 3 mới bắt đầu biết set breakpoint để debug chương trình.
Do đó mình thấu hiểu nỗi khổ của nhiều bạn học lập trình theo kiểu học thuật, không được code đủ.
Testing, unit test
Trong chương trình học của 1 số trường vẫn có môn Kiểm thử phần mềm. Tuy nhiên, nhiều sinh viên CS vẫn ngáo ngơ không biết test case là gì, thế nào là black-box, white-box testing.
Một số câu khoai hơn như: NUnit, JUnit, Jasmine là gì … làm sao sử dụng mock, stub, dùng IoC càng không ai biết. Có người sẽ chu môi: Dào, tao đi code chứ có phải đi làm test đâu.
Điều này hoàn toàn sai nhé! Để làm một developer giỏi, phải chắc rằng code mình viết ra không lỗi. Để đảm bảo code không lỗi, phải có suy nghĩ của một tester, nghĩ ra những case để kiểm thử nó.
Agile Development
Ở trường đại học, chúng ta được học về “quy trình phát triển phần mềm”, học về waterfall, agile v…v (Một số trường không có). Tuy nhiên, chúng chỉ là những kiến thức nhàm chán trên giấy mà ai cũng quên ngay sau khi thi.
Đến khi bắt đầu làm việc, bạn sẽ ngáo ngơ khi vào daily meeting, planning meeting, ko rõ quy trình … vì không biết Scrum, XP là cái khỉ gì (Hồi vào FSOFT mình cũng ngáo ngơ, phải lên scrumtraining để học thêm.
Source code control system
Đây là một thứ khá đơn giản nên nhà trường cho rằng các bạn có thể tự học được. Hãy nhìn cách các nhóm SV năm nhất, năm 2 khổ sở làm bài tập lập trình nhóm: Mỗi người làm một phần, sau đó họp cả team ghép code lại, mất code là mất luôn (Mình cũng từng trải qua cảnh ấy, cũng may về sau đỡ hơn).
Hậu quả là các SV mới ra trường phải được training lại về cách dùng SVN, dùng Git, hoặc TFS (Quảng cáo tí, chương trình Fresher của Fsoft có training cái này). Cuộc sống SV của bạn sẽ dễ thở hơn nếu bạn tự trang bị kiến thức về cách dùng Git, SVN cho mình.
Cách dùng thư viện và framework
Do bản chất của chuyên ngành Computer Science, các trường chỉ dạy 1 số ngôn ngữ như C++, Java để dạy các môn còn lại. Nhiều sinh viên ra trường vẫn không biết dựng 1 trang web như thế nào, ngôn ngữ này có framework gì hay, làm sao để hiểu và sử dụng API của 1 thư viện nào đó.
Các trường chỉ dạy 1 vài mô hình MVC, MVP, MVVP trên giấy, còn cách dùng những thư viện, framework nổi tiếng như: Struts 2, ASP MVC, Ruby on Rails, jQuery … còn tùy vào khả năng tự học của sinh viên. (Bài viết này không nói tới vài bạn có khả năng tự học giỏi, tự tìm hiểu và đã rành rọt vài ba framework khi mới ra trường nhé).
Hẹn gặp lại các bạn ở phần 2, mình sẽ nói tới 1 điều nữa quan trọng không thua gì kĩ thuật lập trình: Cách nâng cao giá trị bản thân.
30s quảng cáo
Đây là một bài viết được trích dẫn từ cuốn sách “Code dạo kí sự – Lập trình viên đâu phải chỉ biết code” do mình viết. Quyển sách bao gồm những kĩ năng từ mềm đến cứng mà mỗi developer phải có, đảm bảo sẽ rất có ích cho các bạn sinh viên hoặc lập trình viên đã đi làm. Các bạn xem thông tin và đặt mua sách tại đây nhé: Sách Code Dạo Ký Sự.
Cảm ơn loạt bài này của bạn. Bài viết hay. Nhiều thứ học hỏi được ở bạn.
LikeLike
Cảm ơn bạn, bài viết rất hay, phản ánh đúng thực trạng hiện nay của phần lớn SV CNTT mới ra trường, hầu hết các bạn đều không biết cách code như thế nào là hay, là khoa học, mà toàn là code theo kiểu rất cao siêu, gì cũng code được, nhưng chỉ mình coder hiểu, người khác nhìn vào thì chịu
LikeLiked by 1 person
Nhiều khi code xong 1 tuần sau nhìn lại chính ngta còn không hiểu đó bạn :D.
LikeLike
Đọc xong bài của anh mới thấy bản thân còn thiếu sót rất nhiều.
Sắp ra trường và cảm thấy hoang mang quạ =.=
Cảm ơn bài viết của anh nhiều lắm!
LikeLike
Cám ơn nhưng chia sẽ hữu ích của anh!
LikeLike
Cảm ơn vì bài viết, bài viết khá hay. 🙂 Mình cũng thấy những kiến thức ở trường là không thể đủ. đòi hỏi sinh viên phải tự học nhiều hơn. Ở trường họ chỉ dạy những thứ rất cơ bản, mà một số môn học khá vô bổ. Nhưng cũng nhiều sinh viên ra trường không làm code, họ vẫn làm về công nghệ nhưng đi theo các hướng như: tester, BA …
LikeLiked by 1 person
Dạ em chào a, a cho em hỏi là năm nhất ngành Truyền thông và mạng máy tính thì em nên học thêm những những thứ căn bản gì trước ạ ? em cảm ơn a
LikeLike
À anh không theo ngành đó nên ko rõ em ơi 😀
LikeLike
bài viết hay quá !!!
LikeLike