Những điều khó khăn khi tham gia dự án maintain hay vào giữa chừng
This post hasn't been updated for 7 years
1. Source
2. Động cơ
Theo như mình được biết, ở Framgia hiện nay hầu hết các dự án đều ở dạng maintain, hay extend thêm chức năng cho một loại hình dịch vụ gì đó, và đã có không ít các thành viên kêu trời vì gặp khó khăn trong quá trình làm việc. Nào là thiếu tài liệu, nào là code thối, nào là specs không rõ ràng..
Tất nhiên đó đều là sự thực, và là điều mà các thành viên phát triển mới chưa lường trước, chưa chú tâm làm nên mới để lại hậu quả như vậy. Tuy nhiên, trách người thì dễ, mà tự bản thân mình làm ra điều gì cảm thấy tự hào mới khó. Chúng ta hãy cố gắng dừng việc trách móc lại, để làm sao nếu có người maintain đằng sau ta đi chăng nữa, thì họ phải cảm thấy quý trọng và cảm động những thứ mà ta đã để lại.
3. Bài viết
Từ trước đến nay tôi chưa có duyên được vào làm phát triển maintain bao giờ, tuy nhiên dạo gần đây đã có nhiều cơ hội được làm hơn, và từ đó đã rút ra một số bài học.
3.1 Không có bản tổng hợp TỪ VỰNG
Có rất nhiều cách để tổng hợp từ vựng trong 1 dự án, có thể bằng excel hay tiện nhất là sử dụng plugin để quản lý từ vựng của Redmine.
Việc quản lý từ vựng thường bị xem nhẹ trong các dự án, tuy nhiên chắc hẳn các bạn đã hiểu sự khó khăn này khi tham gia 1 dự án giữa chừng hay bắt đầu 1 dự án maintain. Có rất nhiều từ ngữ khó hiểu, mỗi người hiểu theo 1 ý, bạn sẽ cảm thấy như bị lạc lõng tại một quốc gia mà mình không hiểu ngôn ngữ vậy.
3.2 Có nhiều từ vựng khác nhau thể hiện cùng một khái niệm
Khi làm một dự án với công ty nước ngoài (điển hình như Framgia làm việc với nhật), sẽ có rất nhiều tài liệu mà comtor hay BrSE phải dịch ra để cho mọi người đọc, cũng như là có nhiều tài liệu phải tạo ra để gửi cho khách hàng (detail design..). Tuy nhiên nếu không chú ý, tuỳ theo cảm hứng và tuy theo từng người sẽ sử dụng rất nhiều ngôn từ khác nhau, dẫn tới việc ở mỗi loại tài liệu, mặc dù chỉ chung một đối tượng lại sử dụng rất nhiều từ ngữ khác nhau. Những người làm việc đã lâu cùng trong 1 dự án dần dà sẽ ngầm hiểu được, tuy nhiên với những người mới vào chắc chắn sẽ gặp rất nhiều khó khăn. Mặc dù bị bảo đi đọc tài liệu để hiểu về dự án đi, tuy nhiên mỗi tài liệu lại dùng từ khác nhau, gây nên hoang mang và khó hiểu.
3.3 Không có tài liệu nào giúp nắm bắt toàn thể dự án
Thường một người mới vào dự án hay bị bắt phải đọc detail design để hiểu về dự án. Tuy nhiên thứ tài liệu quá chi tiết giúp hiểu về nội bộ xử lý trong system đó chưa phải là cần thiết ngay lập tức. Đối với một người chưa biết gì về dự án đang làm cả, cần thiết phải có tài liệu để giúp họ hiểu qua về hệ thống, nắm bắt được toàn thể dự án là gì và đang hướng tới mục tiêu gì.
3.4 Lưu trữ các loại tài liệu không được update kịp thời với code dự án
Đối với các loại tài liệu không được update mà lại nhiều như nấm, không cần thiết phải coi trọng mà hãy vứt càng nhanh càng tốt. Đối với một dự án mà code rất thối, rất khó hiểu thì tài liệu là rất cần thiết, tuy nhiên nếu code đã được hỉnh lý chuẩn thì thay vì việc nhìn tài liệu, trực tiếp nhìn code sẽ tốt hơn nhiều so với nhìn mấy thứ tài liệu chưa được update kịp thời. Lưu trữ lại những loại tài liệu này còn gây hoang mang khi không biết tài liệu đúng hay code bây giờ đang đúng.
3.5 Khó khăn gặp phải liên quan tới code
Chủ yếu trong giới Java
3.5.1 Constant là private
Hạn chế việc này để tránh trùng lặp constant.
3.5.2 Tên class theo dạng ID
Mất rất nhiều thời gian để tra cứu theo ID và không hiệu quả.
3.5.3 Các dòng code không cần thiết vẫn để comment và giữ lại
Việc này chỉ gây khó nhìn và không hiệu quả.
3.5.4 Lúc nào cũng catch Exception
Việc này làm cho khi xử lý bị crash mà không thể lên tới method trên được, làm cho không hiểu vấn đề gì đã xảy ra.
3.5.5 Object truyền cho đối số của method lại kiêm cả IN/OUT
Ví dụ như tại đối số của method tìm kiếm, điều kiện tìm kiếm và kết quả tìm kiếm được sắp xếp ngang hàng như là cấu trúc của object. Việc này dẫn tới không biết từ đầu tới đâu là IN, từ đâu là OUT.
3.5.6 Xuất ra cả các log không cần thiết
Cần thống nhất cách xuất log với các đồng nghiệp, nên đưa ra chuẩn để làm sao khi ai nhìn vào cũng hiểu ngay lập tức.
3.5.7 Không xuất log
Khi chạy xử lý batch mà chỉ cho xuất tại thời điểm bắt đầu và kết thúc sẽ dẫn tới việc rất lo lắng không biết có đang chạy ổn định hay không, hay là gặp vấn đề gì rồi. Cần cho xuất log một cách hợp lý
3.5.8 Địa ngục với việc có hàng tá xử lý giống nhau
3.5.9 Các đoạn testcode không được update
3.6 Khó khăn với môi trường xung quanh
3.6.1 Tại chỗ anh A có chạy còn của tôi thì không
Có rất nhiều lý do ví dụ như không có tài liệu hướng dẫn cách thiết lập môi trường, dẫn tới thiếu software hay thiếu directory..
Sử dụng provisioning tool để tự động hoá, hay library cần thiết như Maven hay grade.. là rất tốt.
3.6.2 File cài đặt chỉ cho production, lúc phát triển phải edit lại
3.6.3 Dev phải sử dụng chung DB
Nếu không có lý do gì cụ thể, hay cho sử dụng local DB thôi để các member không bị phụ thuộc lẫn nhau.
All Rights Reserved