fbpx
Friday, March 29, 2024
HomeHướng nghiệpCông nghệ thông tinNhững điều trường Đại Học không dạy bạn - P1. Kĩ thuật...

Những điều trường Đại Học không dạy bạn – P1. Kĩ thuật lập trình

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”:

Ở 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é).

Comments

comments

RELATED ARTICLES

Most Popular