Nhận xét sinh viên học việc, làm việc coding nhóm với dự án.

Dear fresher dev,
Nhận xét sinh viên học việc, làm việc nhóm với dự án nhiều thành viên luôn là bổn phận của mentor. Các bạn xters qua đây sẽ hiểu những project nhiều người các bạn sẽ phải làm việc như thế nào.

Một ví dụ để các bạn chuẩn bị tinh thần:

Cũng không có gì quá to tát.

Về nhóm 5 bạn frontend và 3 bạn backend, ngôn ngữ Java Spring
————-

A có nhận xét chung thế này:

– Căn bản các bạn sinh viên mới đã nắm bắt được những công nghệ từ các anh teamlead truyền đạt. Và có thể (theo cá nhân a nhận xét) làm dự án với những thử thách tương tự.

Về chi tiết (đây là nhưng đánh giá CÓ và CHƯA LÀM ĐƯỢC từ a cảm nhận) nhờ nhận xét thêm từ a Giang, thầy Thọ, Kiên, Thanh:

———————-

A. Học viên mới:

1. Đối với FrontEnd

Cái ĐÃ LÀM ĐƯỢC

– Đã căn bản tự xử lý tốt về GUI, responsive

– Làm tương đối giống với mẫu được giao

– Đã căn bản làm tốt về validation

– Đã căn bản biết gửi lên dữ liệu qua ws, và parse giá trị hiện ra

– Đã căn bản biết viết code rõ ràng, đúng coding convention, đúng khai báo biến

– Đã căn bản tự xây dựng những cách làm sáng kiến và tự giải quyết được vấn đề

Cái CHƯA LÀM ĐƯỢC

– Các bạn chưa làm được UT, profiling sau code, và chưa review chéo nhau nên có những rủi ro sau:

– Anh nghĩ các bạn đang viết quá nhiều hàm js và xử lý trong một file dẫn tới việc một file quá nhiều, quá dài – theo a thây vậy; các bạn nên chia cắt nhỏ ra. Chuẩn như ở bên dưới.

– Các bạn chưa đồng thuận làm cùng một “phương pháp làm”: ví dụ mỗi bạn có một kiểu GUI của riêng mình; mỗi bạn có một kiểu validation của riêng mình; mỗi bạn có một phong cách đặt style css riêng; mỗi bạn có một phong cách viết code (cho dù nó đúng convention có người khai báo biến lớp đầu trang, có người khai báo biến lớp giữa trang); mỗi bạn có một control riêng (mặc dù cùng là time/date pickup)

– Các bạn cần nêu rõ trong một trang code: phải có header để nêu trang code đó viết cái gì; ai viết; và thời gian biết; thời gian cập nhật

– Các bạn chưa thống nhất được kiểu viết làm GUI chung của các form hiện ra; của các common control sẽ dùng; của các behavior (ví dụ khi nào cần đưa ra popup – khi nào cần inline message)

– Các bạn chưa xử lý mã hoá được dữ liệu sau khi login (nếu ko có https – thì chắc hệ thống của mình phơi ra ngoài public khi dữ liệu qua lại)

– Chưa xử lý đc đọc file byte trước khi gửi lên (để tránh trường hợp có file lạ đưa lên – không chỉ đơn giản là định dạng và đuôi mở rộng)

– Các bạn chưa có thói quen 3-4 dòng code comment lại; khi các bạn comment code thì mỗi bạn một phogn cách; kiểu cách comment; ngôn ngữ comment (người viết TV, ng viết TA, người viết TA bị sai..)

– Các bạn chưa đưa ra những util xử lý chung: validation cho cả 4 bạn (hiện mỗi bạn làm một kiểu); convert; trim/clone; chuẩn bị object/json trước khi send…

– Các bạn viết luôn model trong control -> cần tách ra

– Các bạn chưa đưa ra model/entity (mặc dù các bạn bảo vệ là phía frontend xử lý html,css,js thì không cần model – vậy nó chưa trả lời câu hỏi là: khi frontend nhận dữ liệu object nhiều thuộc tính mà lại được liên quan xử lý bởi nhiều người???) bởi vì nếu cứ mỗi bạn xây dựng cho mình một model thì bài toán sẽ trở thành chồng chéo khi dự án có nhiều người cùng tác động tới model đó – khi đó mỗi bạn tự xây dưng model riêng và khi server sửa cái object gửi về là: mỗi bạn lại phải sửa lại cách xử lý nhận diện object nhận.

– Các bạn thuường để các folder: mà a ko hiểu nó là gì ví dụ: folder tên “js” -> ko hiểu cái này để làm cái gì.

– Các bạn chưa mã hoá dữ liệu khi đưa vào localstorage

– Các bạn chưa biết dùng những công cụ như validator của w3school hay zap của owasp, hay chính browser để tìm và scan code của mình sau khi làm xem lỗi cú pháp, lỗi thừa bộ nhớ, lỗi security

– Về tiềm năng sẽ vẫn bị các lỗi như: dư thừa bộ nhớ; gọi đọc quá nhiều một hàm trong một class (tụi e chỉ cần chạy qua một tool profiling; code coverage là ra)

– Vẫn có tiềm năng code của mình làm sao biết chắc được 100% là chạy – và 0% cho những đoạn code không chạy???

2. Đối với BackEnd

Cái ĐÃ LÀM ĐƯỢC

– Đã căn bản tự dựng được ws và validate những cái gì frontend gửi, quản lý trong db

– Đã học được cách phân bổ từng nhánh ws viết riêng cho từng chức năng cho môt bài toán điển hình

– Đã học được cách coding theo convention

Cái CHƯA LÀM ĐƯỢC:
– Các bạn chưa làm được UT, profiling sau code, review chéo nên:

– Các bạn đang viết quá nhiều hàm ws trong một lớp dẫn tới việc một file quá nhiều, quá dài; các bạn nên chia cắt nhỏ ra. Vì mỗi ws là một xử lý business riêng: chúng ta đang thấy nó nhỏ ở hiện tại; nhưng có thể nó to sau này

– Về các đăt biết: cả Bình, Đạt đều đặt rõ khi đọc biến; nhưng Đạt thì đặt quá dài, Bình thì đặt quá ngắn -> tụi e nên thống nhất

– Về cái bền lâu và tổng thể: các bạn chưa có phương cách để:

+ Xử lý các loại connect (connect các loại db, file, ws khác..)

+ Xử lý đưa dữ liệu lên khi frontend là đa dạng: ko phải chỉ đưa api ws nữa mà là: có thể url, có thể là socket; có thể là một post tới ws khác

+ Xử lý chưa dựng được hẳn application service để xử lý cho từng loại đầu cuối (có cái chạy suốt ngày; có cái chỉ phục vụ website..)

+ Chưa xử lý phân tách remote và local interface

– Về tiềm năng sẽ vẫn bị các lỗi như: dư thừa bộ nhớ; gọi đọc quá nhiều một hàm trong một class (tụi e chỉ cần chạy qua một tool profiling; code coverage là ra)

– Vẫn có tiềm năng code của mình làm sao biết chắc được 100% là chạy – và 0% cho những đoạn code không chạy???

– Các bạn chưa biết dùng những công cụ như jprofiler (trial) hay zap của owasp, hay chính server log để tìm và scan code của mình sau khi làm xem lỗi cú pháp, lỗi thừa bộ nhớ, lỗi security

——————

B. Học viên cũ:

(những bạn còn lại a chưa được thỉnh giáo nên ko đánh giá được)

Chúc mọi người bước tiếp và tiến xa hơn.

Tiêu chí 3: Mô hình chuẩn MVC, Chất lượng của code

—————–

Chuẩn

Check 1:Có viết model lưu dũ liệu lấy in/out riêng không?

Check 2:Có viết controller riêng không?

Check 3:Có viết view/UI riêng không?

Check 4:Độ phức tạp của lớp có theo chuẩn không?<50 (chuẩn)- sub check 1Số node- sub check 2Số đường nối (path)- sub check 3

Sô liên kết đối tượng (comp)<xem ví dụ bên>- WMC?Số lượng method trong class20-40- DIT?

Độ sâu mức thừa kế từ đầu<6- Coupling?Từ 1 lớp này (gọi, bị gọi) sang các lớp khác<14- Response?Số lần phản hồi về của đối tượng khi bị gọi17-80- NOM?

Số lần gửi thông tin đi của đổi tượng khi bị gọi<9 each method- GAMA? **Mức gắn kếtto 0- sub check 1Tổng methods- sub check 2

Tổng attribute- sub check 3Tổng methods tác động lên attribute- MHF?Số lượng các attribute thấy được / tổng0.154≤MHF≤ 0.387- AHF?

Số lượng các attribute ẩn/ tổng0.192≤ AHF≤0.355- MIF?Số method thừa kế/ tổng0.25≤MIF≤0.52- AIF?Số attribute thừa kế/ tổng0.633≤AIF≤0.815- PF?Số overriding method/ tổng0.053≤PF≤0.108**

((1/tổng attributes)*tổng các methods tác động attributes – tổng các methods)/(1-tổng cac method)

Nhờ fans comment thêm!