Don’t/Do reinvent the wheel

Mình theo dõi DNH đã lâu. Mình cũng đọc qua kha khá bài tập và đồ án của các trường ĐH/CĐ ở Việt Nam. Nhận xét chung là mình thấy các bạn sinh viên VN được tự do dùng các Framework/Library này kia. Mấy cái project các bạn làm khá là cao siêu. Đọc qua thấy dùng apache, .NET MVC này kia nhìn rất thích. Các bạn có thể xác nhận điều này được không?

Mình học ở Mỹ, code cái gì cũng phải tự làm. Đến stack, queue, hàm sort muốn dùng thì cũng phải tự viết. Nhiều khi thầy còn không cho cứ bắt dùng linked list. Đến h trong trường mình không được học 1 cái gì ấn tượng (kiểu React, Angular, Django này kia). Mấy cái đó mình tự học nhưng mới ở mức cơ bản (sinh viên năm 3 rồi). Được 1 cái kiến thức nền mình khá là vững. Thầy đứng nói code chức năng này kia hoặc đc đưa 1 cái UML mình làm đc luôn, không gặp vấn đề lớn gì. Mấy cái project của mình thì mấy bạn ở VN chắc code 1 buổi là xong. Trong khi đó, mình được dạy thiết kế kiến trúc, design pattern khá phức tạp và làm rất mất thời gian. Ví dụ: Tetris thiết kế và code trong nửa học kì.

Mình không biết sau này đi xin việc thì ntn. Mình có đi quá chậm không? Người ta có lí do nên mới dạy như vậy nhưng mình cứ “reinvent the wheel” hoài nên có chút nản nên muốn chia sẻ 1 chút.

2 Likes

Học nền tảng như bạn mới đúng, đừng bắt chước Việt Nam chỉ làm mì ăn liền thôi, đại học mà học kiểu mì ăn liền thì không đi sâu đi xa được.

Một ví dụ cụ thể luôn khi mình tức quá chửi “đồ con lợn” vào mặt một SV học về CNTT ra mà khi tạo thư mục đặt tên là cha, bên trong tạo thư mục con không được mà không biết vì sao, cho rằng Windows bị hỏng nên ngồi cài lại hệ điều hành. Có điên không cơ chứ?

Khi bạn có nền tảng rồi, lúc đi làm người ta sẽ có người hướng dẫn, kèm cặp và/ hoặc có đào tạo để sử dụng một nhóm công cụ “mì ăn liền” nào đó, ráp vào xài là dễ dàng, nó không có khó/ phức tạp gì so với những cài nền tảng mà bạn học.

Bạn để ý mà xem, cái giải thuật nén file mới quan trọng chứ còn phần mềm để làm việc đó sử dụng thư viện có sẵn thì nhiều bát ngát, nhưng ai nắm giải thuật mới là đơn vị làm chủ mọi thứ.

4 Likes

10 năm trước lúc anh học 2-3 năm đầu cũng có đâu có dùng đâu em. tự code Js, code stack, queue. Năm cuối mới dùng công nghệ nhiều.
Học như em mới dễ làm ra những thứ hay ho. VN outsource hoài, đưa gi làm đó nên tụi nhỏ cũng học công nghệ nhiều để làm được việc nhanh, .hiếm prod làm từ đầu.
Muốn tìm hiểu công nghệ thì tự tìm hiểu thôi.

5 Likes

Hi there,

Ừ cậu, bên bọn tớ được phép dùng tự do các framework/library. Tuy nhiên:

  • Đây là các đồ án/bài tập lớn cho các môn học liên quan tới web. Với các môn cơ sở như cấu trúc dữ liệu giải thuật, network, compiler construction, computer architechture… bọn tớ vẫn dùng C hoặc ASM và cài đặt bằng tay tất cả các cấu trúc dữ liệu cơ bản.
    Có thể có 1 số trường sẽ cho phép cậu cài đặt mấy cấu trúc dữ liệu bằng ngôn ngữ khác, nhưng cơ bản là vẫn phải làm manually.
  • Bọn tớ cũng không được giới thiệu các cutting-edge technology như React, Angular, etc, thậm chí là git.
    Điều này cậu cần hiểu, ở Đại học bọn tớ cũng được dạy các kiến thức nền tảng quan trọng. Những cutting-edge technology kia thường sẽ dễ dàng bắt nhịp hơn nếu cậu có nền tảng tốt, và bọn tớ đều phải tự học các công nghệ đó. Ở trường tớ thì không có dạy.
    Tớ biết có một số trường dạy các môn lập trình với C#/PHP/Java/etc, tuy nhiên đều ở mức độ cơ bản, và vẫn phải tự học nhiều.

Ngoài ra:

  • Bọn tớ cũng phải học kỹ UML, software engineering (như software design, OOP principle, design pattern, refactoring, etc), software development progress (các mô hình cơ bản như waterfall, increment lẫn nâng cao như Scrum), database design (RDB và tự nghiên cứu NoSQL), etc.
  • Tất cả các đồ án của bọn tớ đều phải làm nhóm và tốn thời gian cài đặt. Việc này rèn cho bọn tớ cách làm việc nhóm, document, áp dụng các quy trình bọn tớ được học để làm, mà không có bất cứ hướng dẫn thêm.

Về cơ bản, cậu có thể thấy chương trình học của cậu và của bọn tớ không khác nhau mấy. Và tất cả những cutting-edge technology thì bọn tớ đều phải tự học.

Về việc đi làm, lúc ra trường, cậu sẽ được kỳ vọng là có hiểu biết cơ bản về software engineering + đã tự học các công nghệ mới. Nếu cậu nắm chắc kiến thức nền tảng lúc ra trường thôi, cậu đi hơi chậm chút, tuy nhiên cũng không sao, vì theo kinh nghiệm của tớ thì tớ đánh giá cao 1 fresher có nền tảng tốt hơn những fresher biết nhiều công nghệ, nhưng không có nền tảng tốt.
1 sai lầm mà các bạn mới học lập trình là underrate các kiến thức nền tảng đó! :smile: Trong hàng chục năm, cái máy bay không có thay đổi nhiều về kiểu dáng, kích thước, đều có chung 1 nền tảng lý thuyết khí động học. Nếu cậu biết kỹ thuật hàng không 50 năm trước, cậu vẫn có thể làm việc với các máy bay thời hiện đại. Phần mềm cũng vậy, những công nghệ mới cũng không có nhiều đột phá về mặt nền tảng lý thuyết, nên logic mà nói, nếu cậu biết software engineering từ 50 năm trước, cậu cũng sẽ dễ bắt kịp với các quy trình/modern software engineering thôi.

Vậy nên, đừng lo lắng quá. Cậu mới năm 3, đây là thời điểm tốt để cậu bắt đầu tự thử nghiệm về các công nghệ mới. Thử đi nhé cậu! :smile:

10 Likes

Tuyệt, cái ông trí tuệ nhân tạo này kinh dị thật, một lát ổng sẽ đủ điểm để nắm quyền Admin của cái diễn đàn này. Ngày mà con người bị một con robot dẫn dắt là không còn xa :smiley:

3 Likes

Thêm cái này của Mr Thái Dê En cho các bạn ngấm https://vnexpress.net/so-hoa-hay-la-chet-4209189.html

ông ấy không dạy một công nghệ cụ thể, mà dạy phương pháp suy nghĩ của giới công nghệ, tức tư duy số. Công nghệ tốt cỡ nào rồi sẽ trở nên lỗi thời, nhưng nếu biết cách học và thay đổi nhanh sẽ không bao giờ lạc hậu

5 Likes

Vừa nãy đọc xong cái đó. Tình cờ dễ sợ haha

Cám ơn bạn. Câu trả lời của bạn lúc nào cũng tâm huyết.
Lúc đầu mình nghĩ là khi học sẽ đc dạy những cái to bự nhưng tới h mới nhận ra là mấy cái đó phải tự học. Thêm vào đó là mình đọc qua những lớp mình sẽ học năm cuối thì cũng ko có 1 cái project nhóm gì. Tất cả đều là 1-man-army project. Rồi đi đọc bài đăng tuyển thực tập sinh toàn yêu cầu cutting edge technology. Cuối cùng khi ngồi nhìn lại thì thấy mình đi chậm quá, đến h đầu toàn lý thuyết. Hi vọng mọi chuyện sẽ ổn khi mình học xong. :smiley:

2 Likes
  1. Kiến thức nền tảng là quan trọng nhất. Có nội công thâm hậu thì học môn võ công nào cũng nhanh cả. Giống Trương Vô Kỵ có Cửu Dương Thần công rồi thì luyện môn nào cũng vài ngày tới vài giờ là xong.
  2. Không phải tất cả các trường đại học/ cao đẳng ở Việt Nam đều dạy nền tảng kỹ càng và bất cứ đâu cũng vậy. Bạn cứ hình dung thế này: Trung cấp nghề dạy chủ yếu là thực hành để có tay nghề ra làm được việc liền, cao đẳng sẽ dạy vừa lý thuyết vừa thực hành; còn đại học thì lại nặng về lý thuyết hơn so với các trường loại trên. Lý do người ta tạo ra các chương trình đào tạo khác nhau nhằm phục vụ mục tiêu đào tạo (đào tạo công nhân kỹ thuật cao hay đào tạo kỹ sư??), và phù hợp với trình độ của sinh viên. Bạn đang được đào tạo trên con đường chông gai và khó khăn nhất, và khi ra trường, khả năng phát triển của bạn là tốt nhất.
  3. Không nhất thiết phải đáp ứng toàn bộ nội dung của các Bài đăng tuyển mới được trúng tuyển. Bạn chỉ cần thỏa mãn 1 hoặc 2 tiêu chí trong 7-8 tiêu chí đã là được gọi phỏng vấn rồi. Đây là 1 vấn đề “gap” giữa HR và Engineer mà không phải ai cũng biết. Vì kỹ sư luôn tư duy theo hướng “À, mình phải thỏa mãn hết requirement mới được đậu”.
    Có thể bạn ngạc nhiên, nhưng cơ hội việc làm của sinh viên mới ra trường luôn cao hơn người đã có kinh nghiệm.

Chúc bạn học tốt và thành công.

8 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?