Tóm tắt ngắn gọn như giới thiệu:
Chúng tôi là một nhóm phát triển web Java nhỏ, tạo các ứng dụng sử dụng các khung và thư viện khác nhau như JSF, Hibernate, Seam, tất cả cùng được triển khai trong JBoss AS.
Ban đầu, ứng dụng được kết hợp với nhau và một số tính năng được thêm vào để tạo thành một chương trình giới thiệu để hiển thị cho khách hàng tiềm năng. Một số đánh bóng đã diễn ra, ứng dụng đã được phát hành, nó đã được chấp nhận và hoạt động và khi thời gian trôi qua, các tính năng bổ sung đã được thêm vào, lỗi đã được sửa, lỗi mới xảy ra, như mọi khi.
Do các yếu tố xe buýt cao và đua xe khởi nghiệp, sự phát triển đã vượt quá tầm kiểm soát - ngày càng có nhiều tính năng được thêm vào, chưa hiểu đầy đủ kiến trúc cốt lõi của hệ thống. Nó vẫn hoạt động, nhưng luôn có những cạm bẫy vì hệ thống phát triển từ nơi nó bắt nguồn từ một thứ khác và ban đầu, nhiều phím tắt đã được thực hiện để tăng tốc độ phát triển - bây giờ tất cả điều này quay trở lại và phát triển chậm lại, vì cách giải quyết được sử dụng và nó khá khó để giới thiệu các nhà phát triển mới vào dự án.
Bây giờ, tôi đang trong quá trình dọn dẹp và sắp xếp mọi thứ - cài đặt hệ thống theo dõi lỗi, xây dựng văn hóa kiểm tra / chất lượng, nghĩ cách làm kiểm thử tự động, đánh giá mã (tất cả những thứ chuyên nghiệp ưa thích mà chúng tôi đang thiếu bắt đầu) và thực hiện tái cấu trúc chung như tổ chức các hệ thống phân cấp và chức năng của lớp để giúp sử dụng công cụ dễ dàng hơn. Điều đó làm cho mọi thứ tốt hơn một chút, nhưng vẫn còn rất nhiều việc phải làm. Vì tôi không phải là người ban đầu xây dựng hệ thống (cựu lập trình viên chính còn lại) và không có kinh nghiệm (phát triển được 2,5 năm nay, nhưng đó là kinh nghiệm 'thế giới mở' duy nhất của tôi cho đến nay), tôi không chắc chắn phải làm gì làm
Đây là vấn đề của tôi:
Tái cấu trúc luôn là một cái gì đó tốt và tôi liên tục làm nó để làm cho mọi thứ dễ dàng hơn, nhưng điều khiến tôi bối rối là khi nào, làm thế nào và tại sao tôi nên nâng cấp kiến trúc cơ bản (có nghĩa là, các thư viện mà hệ thống dựa vào, máy chủ ứng dụng, cơ sở dữ liệu, v.v.)
Ví dụ:
Chúng tôi hiện đang sử dụng JBoss 4.2.2 - Tôi đã đọc ở đâu đó về JBoss 7.1, tôi có nên dùng nó không? Làm thế nào người ta có thể đánh giá điều này?
Chúng tôi sử dụng Seam 2.2, thứ dường như là một trình chặn lớn (không hoạt động trên các phiên bản JBoss cao hơn, không hỗ trợ JSF2). Ngoài ra, tôi thấy các nguồn bảo tôi sử dụng các tính năng JEE thay vì Seam.
Về cơ bản, tôi quan tâm đến bất kỳ cách tiếp cận chung nào cho vấn đề này, không chỉ những cách tôi đã đề cập trong các ví dụ trên - vì tôi có thể vấp phải vấn đề này cho một thư viện khác trên một hệ thống khác vào một thời điểm khác (hoặc ai đó có thể gặp phải vấn đề tương tự) .
Vì vậy, vấn đề là gì? Tôi sẽ được cập nhật và chỉ sử dụng các thư viện tiên tiến hay tôi nên ở lại với những gì tôi có? Làm thế nào để tôi nhận ra, công nghệ tôi đang sử dụng đúng là một con ngựa chết và nhảy xuống? Bao lâu thì nên nâng cấp công nghệ như vậy?
Và, một câu hỏi khác bên cạnh chung 'làm thế nào để nâng cấp' - công cụ. Làm cách nào để tôi nhận ra phần mềm của mình có thể được gọi là một phần mềm 'được chế tạo bởi các chuyên gia'?. Có một bài kiểm tra Joel cho phần mềm được thực hiện tốt bên cạnh ý nghĩa của các lập trình viên thông thường không?