2010-02-04 20 views
18

Tôi yêu cầu đào tạo Maven tại nơi làm việc, và các ông chủ muốn thuê một người biết Maven đến làm việc với tư cách một nhà tư vấn để chúng ta học Maven từ góc độ thế giới thực thay vì đào tạo quan điểm.Câu hỏi để xác định kiến ​​thức Maven

Tôi đã được giao nhiệm vụ đưa ra các câu hỏi khó khăn khác nhau để hỏi những người thuê tiềm năng để xác định khả năng Maven của họ. Vấn đề là tôi chưa hoàn toàn hiểu Maven (do đó yêu cầu đào tạo).

Bạn sẽ hỏi ai đó để xác định khả năng Maven của họ và mức độ hiểu biết nào mà Maven phải trả lời?

Trả lời

34

Theo tôi, một "Maven tư vấn" nên:

  • Có một sự hiểu biết tốt về cách Maven khác từ các công cụ xây dựng khác như Ant (Maven cung cấp một "lingua franca" cho quản lý dự án).
  • Hiểu rõ nguyên tắc Maven: Quy ước trên Cấu hình, bố cục mặc định, quy ước đặt tên, triết lý của công cụ (một đầu ra chính cho mỗi dự án).
  • Hiểu rõ cách Maven hoạt động: từ nơi mà các quy ước đến từ (siêu POM), vòng đời (chính, sạch, địa điểm), các giai đoạn, các trình cắm bị ràng buộc theo giai đoạn, ảnh hưởng của bao bì, vv
  • Biết cấu hình là gì và cách chúng có thể được sử dụng để xử lý các môi trường khác nhau, cách kích hoạt chúng.
  • Biết cách sử dụng plugin, cách định cấu hình chúng, cách cắm chúng vào bản dựng maven.
  • Biết cách kho lưu trữ hoạt động, sự khác biệt giữa các kho lưu trữ cục bộ và từ xa, phụ thuộc SNAPSHOT là gì.
  • Biết cách phụ thuộc được giải quyết, phụ thuộc transitive là gì, cách kiểm soát chúng, phạm vi phụ thuộc là gì, cách sử dụng dependencyManagement.
  • Biết cách triển khai kiểm tra sức khỏe mã, các plugin cần thiết (plugin Checkstyle, PMD và Findbugs), cách triển khai các loại kiểm tra khác nhau (đơn vị, tích hợp, chức năng), cách đo mức độ phù hợp báo cáo.
  • Biết cách thiết lập maven trong môi trường công ty (sử dụng kho lưu trữ dùng chung, thiết lập CI, công ty POM).
  • Biết cách xử lý scenarii bao bì nâng cao (với plugin lắp ráp)
  • Biết cách xử lý triển khai, các giao thức khác nhau, plugin triển khai, plugin phát hành, độ phân giải SNAPSHOT.
  • Biết cách thiết lập bản dựng Maven cho dự án Java EE, cách thiết lập mô-đun đa mô-đun, mô-đun nào được yêu cầu, cách kiểm tra trong môi trường phát triển, cách xử lý môi trường sản xuất.

Một người nào đó có những kỹ năng này sẽ đưa bạn đi đúng hướng (và rất có thể có trải nghiệm tốt về Maven).

+1

+1 Tư vấn viên Maven cũng phải là một nhà phát triển/kiến ​​trúc sư java có kinh nghiệm. Việc thích ứng với Maven đòi hỏi sự hiểu biết mạnh mẽ về toàn bộ hệ sinh thái Java. Đối với các dự án exsiting, đôi khi cần phải cấu trúc lại cấu trúc mã. – cetnar

+0

@cetnar Chắc chắn là đúng. Có kinh nghiệm trong phát triển, khuôn khổ và các ràng buộc liên quan là một * lớn * cộng. –

+0

giải thích đúng đắn về dàn xếp phụ thuộc là phải –

4

Tôi khuyên bạn nên suy nghĩ về những gì bạn muốn làm với Maven, hoặc tại sao bạn muốn giới thiệu nó vào dự án của bạn. Có thể hỏi ông chủ của bạn vì lý do/mục tiêu của mình khi giới thiệu Maven.

Sau khi bạn đã đặt tên cho các mục tiêu chính lý do tại sao để giới thiệu Maven. Yêu cầu tư vấn tiềm năng cách họ sẽ sử dụng Maven để đạt được các mục tiêu đó.


Ví dụ 1
Goal: Cải thiện chất lượng mã tổng thể trong dự án.

Câu hỏi: Làm cách nào chúng tôi có thể sử dụng Maven để cải thiện chất lượng mã tổng thể của chúng tôi trong các dự án.

Câu trả lời có thể: Maven có một số trình cắm thêm để buộc/đo lường chất lượng mã trong các dự án, chúng tôi có thể tích hợp chúng vào bản dựng của chúng tôi trong thời gian gần như không. (Ví dụ checkstlye, PMD, Cobertura, xradar ...)

Ví dụ 2
Goal: sáng tạo tự động các kịch bản triển khai cho nhiều môi trường đích.

Câu hỏi: Làm cách nào chúng tôi có thể sử dụng Maven để tự động triển khai các tạo phẩm cho một số môi trường đích.

Câu trả lời có thể: Chúng tôi có thể sử dụng các trình cắm thêm Maven để triển khai (ví dụ: Cargo) và sử dụng hồ sơ của maven để xử lý một số cấu hình.

a.s.o.

1

Dưới đây là những câu hỏi tôi sẽ hỏi:

  • Làm thế nào bạn sẽ thực thi việc sử dụng JDK6 cho một nhóm các dự án?
  • Bạn sẽ thực thi việc sử dụng phiên bản cụ thể của một plugin là một phiên bản cụ thể của ?
  • Một số lý do tại sao bạn sẽ sử dụng lắp ráp để xây dựng một bình thay vì plugin jar?
  • Mô tả quá trình phát hành dự án Java2 được tạo thành từ EJB, tệp WAR và hai lọ tiện ích.
  • Cần bao nhiêu kho lưu trữ máy chủ lưu trữ nội bộ của công ty và tại sao?
  • Bạn sẽ cấu trúc một dự án POM được tạo thành từ các dự án con N như thế nào để chúng có thể dễ dàng được sử dụng trong Eclipse?

Tất cả các câu hỏi này có ít nhất hai câu trả lời. Tôi sẽ tìm kiếm một người có thể cung cấp ít nhất hai câu trả lời và chỉ ra những ưu và nhược điểm của mỗi cách tiếp cận. Lý tưởng nhất, người này nên được tinh chỉnh thiết lập để ít gây rối đến cách môi trường của bạn đã hoạt động.

4

tôi sẽ hỏi:

  • Mô tả việc thực hành SCM là gì?
  • Mô tả cơ sở hạ tầng Maven lý tưởng của bạn (máy chủ, kho lưu trữ, CI, plug-in, quy ước, v.v.)?

Cả hai đều là những câu hỏi rất cởi mở, nhưng chúng sẽ mang lại cho bạn cảm giác về các kỹ năng của mình và những gì bạn có thể học hỏi từ anh ấy và những gì anh ấy có thể mang đến cho công ty bạn.

EDIT

Maven chỉ là một mảnh trong chiến lược tổng thể quản lý cấu hình phần mềm (SCM). Một nhà tư vấn tốt nên biết chi tiết của maven vào và ra nhưng cũng biết làm thế nào nó phù hợp trong bức tranh lớn. Cũng giống như bạn mong đợi một nhà tư vấn Java EE trở thành chuyên gia trong một Java nhưng phải biết ý nghĩa của việc cung cấp ứng dụng doanh nghiệp cho một khách hàng.

Trong công ty tôi làm việc, chúng tôi có một anh chàng chịu trách nhiệm về SCM, người đã là người đóng góp Maven. Và quan điểm của anh ta rộng hơn so với "chỉ" maven. Ông chịu trách nhiệm có quy trình xây dựng, cấu hình và phát hành sản xuất. Hai ví dụ:

  • Chúng tôi đã mã hóa số phát hành trong mã java để có thể hiển thị nó trong hộp thoại "về" của ứng dụng dành cho máy tính để bàn của chúng tôi. Hầu hết thời gian chúng tôi quên thay đổi nó sau khi phát hành dẫn đến một sự không phù hợp giữa số phát hành thực tế và hộp thoại về - vấn đề lớn cho các nhà tích hợp trên trang web. Đây là một thực hành tồi. Sau đó, anh ấy thiết lập thứ gì đó để số phát hành trong Maven sẽ chính xác trong tệp manifest và đã dạy chúng tôi đọc tệp manifest từ Java để đảm bảo cả hai khớp.

  • Khi bạn phát hành một mô-đun, ông đã viết kịch bản để không chỉ xây dựng ứng dụng mà còn đóng phiên bản tương ứng trong hệ thống vé (JIRA) và đẩy ghi chú phát hành vào wiki.

Tất cả những gì để nói rằng biết làm thế nào để "mavenize" một dự án rất quan trọng, nhưng quan trọng hơn, anh chàng phải hiểu làm thế nào bạn hiện đang làm việc, những gì được đặt ra và giúp bạn thiết lập một cái gì đó hợp lý để cải thiện của bạn năng suất.

+1

+1 cho "phù hợp với hình ảnh lớn" (như đối với bất kỳ công cụ nào) –

0

Nếu bạn có sự sang trọng, tôi khuyên bạn nên có tư vấn viên tại chỗ trong một ngày, cho anh ta/cô ấy một dự án java hiện có mà bạn đang làm việc và yêu cầu anh ấy/cô ấy "mavenize" nó cho bạn. Ngày hôm sau, ngồi với anh ta/cô ấy và yêu cầu họ giải thích cách biên dịch và xây dựng một cái lọ (hoặc chiến tranh).

Hoặc có thể yêu cầu họ đến phỏng vấn với dự án maven để minh họa. Có thể biên dịch, và xây dựng một cái lọ/chiến tranh ít nhất, imo. Nếu họ có thể chạy thử nghiệm đơn vị, triển khai với tomcat, tích hợp với bất kỳ khung công tác khác nhau như gwt, hibernate, spring, v.v., sau đó tốt hơn nữa.

5

Rất nhiều câu hỏi hay ở đây, đặc biệt là các câu hỏi được đề xuất bởi Pascal Thivent. Tuy nhiên, tôi sẽ đặt một câu hỏi khác:

Hỏi: Sự khác biệt giữa tổng hợp và kế thừa trong Maven là gì?
A: Bạn có thể giải thích ngắn gọn here.

+1

+1 Tôi đã đề cập đến kế thừa tập hợp thừa kế một cách rõ ràng (cách thiết lập xây dựng đa mô-đun) –

+0

+1 điều đó và sự hiểu biết về phạm vi thực sự quan trọng đối với bất kỳ maven không tầm thường nào được thiết lập. – sal