2009-05-14 37 views
10

Tôi tốt nghiệp vào tháng 12 về Khoa học Máy tính và đã có được vị trí Kỹ sư phần mềm. Tôi đã đập đầu vào tường trong 2 tháng cố gắng học Hibernate, Spring và mọi thứ khác đã bị ném vào tôi trong dự án đầu tiên của tôi. Trước khi chấp nhận công việc này, tôi chỉ có kinh nghiệm trong lập trình. Kiến trúc ứng dụng và các công cụ kỹ thuật đã rất khó nắm bắt. Tôi đã hy vọng rằng ai đó sẽ có thể cho tôi biết một nơi tốt để bắt đầu hiểu cách thức các ứng dụng web dựa trên Java hoạt động. Có rất nhiều thành phần và tôi không thể hiểu được mọi thứ diễn ra như thế nào. Vì vậy, câu hỏi của tôi là.Từ nhà khoa học máy tính đến kỹ sư phần mềm

  1. Bạn học cách học công nghệ mới như thế nào?
  2. Cách tiếp cận nào là tốt nhất cho việc học nhiều công nghệ cùng một lúc?
+1

Điều gì về Hibernate và Spring và bất kỳ điều gì khác mà bạn không hiểu? Nó chỉ là mã. – mquander

+19

@mquander - Ahhh sự ngạo mạn của tuổi trẻ. – willcodejavaforfood

+0

Tôi nghĩ rằng đó là sự hiểu biết cách mọi thứ nhấp cùng nhau. Hiện tại tôi đang sử dụng Maven, Flex, Spring và Hibernate. Tất cả chúng đều mới đối với tôi để nó có thể trở nên thực sự khó hiểu. –

Trả lời

21

Bắt đầu với những điều cơ bản.

Điều này có nghĩa là các servlet và một thùng chứa Web, có thể là Tomcat. Bạn nên hiểu vòng đời của servlet cho dù bạn có gặp phải vấn đề gì sau đó.

Tiếp theo, nếu bạn muốn, hãy đưa JSP vào danh sách kết hợp. JSP chỉ là các servlet được tôn vinh (chúng được biên dịch thành mã servlet và sau đó thành bytecode).

Sau đó thêm khung MVC. Nhiều năm trước đây từng là Struts (1). Ngày nay nó khó hơn một chút. Tôi thích Spring MVC nhưng điều đó phần nào cũng được xác định trên Spring. Và tôi nghĩ rằng bạn sẽ tốt hơn (bây giờ) bỏ qua nhiều khuôn khổ loại Ajaxy (như Tapestry hoặc Wicket) hoặc kết thúc nhiều hơn để kết thúc các giải pháp (như Seam) như overcmpolicating vấn đề. Điểm bạn đang cố gắng hiểu ở đây chỉ là khái niệm MVC là gì, nó hoạt động như thế nào và tại sao bạn làm nó.

Sau đó thêm Spring. Vấn đề ở đây là tìm hiểu nguyên tắc Dependency Injection/Inversion of Control (IoC). Đây là một khái niệm cực kỳ quan trọng trong phát triển Java hiện đại và phát triển phần mềm nói chung.

Ở trên thực tế sau cách các công nghệ này phát triển, theo thứ tự chúng phát triển. Họ đã làm như vậy vì một lý do và theo con đường đó sẽ giúp bạn hiểu điều đó.

Đừng nghe bất cứ ai nói với bạn rằng bạn không cần phải hiểu các khái niệm và công nghệ cấp thấp như API servlet thuần túy. Đó là vô nghĩa.

+0

+1. Là một nhà khoa học máy tính đã biến bản thân kĩ sư phần mềm, tôi đồng ý: nhận thức về cấu trúc và hoạt động của toàn bộ chồng, từ trên xuống dưới, là vô giá. –

8

Tôi nghĩ cuốn sách của Mike Gunderloy Coder to Developer có thể đáng xem.

Về việc học một công nghệ mới, thực sự không có cách nào tốt hơn là chỉ sử dụng nó và practice with it nhiều nhất có thể.

7

Cách học của tôi là tự xây dựng thứ gì đó. Tôi thường chọn một cái gì đó tầm thường có thể được thực hiện một cách nhanh chóng và sau đó sử dụng XYZ công nghệ doanh nghiệp của thời điểm này để tôi có thể poke xung quanh và tìm hiểu cụ thể. Trong thực tế, tôi đang làm điều này rất như tôi đang cố gắng tìm hiểu ASP.NET MVC.

1
  1. Bạn chỉ cần bắt đầu làm việc với các công cụ để cảm nhận chúng.
  2. Tôi sẽ xem trên web và bắt đầu đọc sách và trang web về các công nghệ bạn đang sử dụng.
  3. Tôi sẽ bắt đầu tìm kiếm trên web những cuốn sách về kỹ nghệ phần mềm nói chung bạn nên đọc. There are questions here surrounding this topic.
  4. Hãy hỏi các kỹ sư khác rằng bạn làm việc với các câu hỏi về cách họ làm việc và tại sao họ làm theo cách đó.
2
2

lý thuyết & thực hành

  1. đọc (ví dụ: Mùa xuân trong hành động là tuyệt vời, blog, vv)
  2. thực hành (ví dụ: viết một số mã, nhận được phản hồi)
  3. goto 1
2

Tôi thực sự thích cuốn sách này khi di chuyển từ asp.net để jsp Head First Servlets & JSP, Second Edition.

Lớp sơn lót tuyệt vời cho người biết lập trình và web nhưng không nhiều về cách jsp, servlets và mvc hoạt động cùng nhau.

3

Khi bạn là chuyên gia về công cụ và ngôn ngữ/công nghệ mà bạn đang sử dụng, một nhóm trẻ mới sẽ sử dụng các công cụ mới hơn và ngôn ngữ/công nghệ mới hơn. Sau đó, bạn sẽ phải học những người đó để kiếm việc làm. Vì vậy, làm quen với quy trình này

+0

25+ năm chính xác những gì bạn đã nói! +1 – Taptronic

2

Chỉ cần tiếp tục. Nó không phải là bất thường để chi tiêu 2 tháng trên một công việc mới như là một lập trình viên và vẫn cảm thấy như bạn đang chìm vào cát lún. Tôi đã có trường hợp mà nó đưa tôi lên đến 6 tháng trên một công việc mới để có được một giai đoạn mà tôi cảm thấy như tôi cuối cùng đã biến góc và đó là sau 10 năm kinh nghiệm như một porgrammer. Mặc dù trong trường hợp đó, việc nắm bắt cơ sở mã cũng giống như cố gắng giải mã chữ tượng hình Ai Cập.

1

Kiểm tra thực tế: khi một người mới tham gia vào lực lượng lao động, bạn đang trải qua quá trình tương tự mà những người khác đã làm. Bạn đang bước vào một hệ sinh thái hoàn toàn khác với hệ sinh thái mà bạn đã học được trong một khoảng thời gian nhiều năm. Sẽ có một đường cong học tập bất kể bạn làm công việc gì và các nhà tuyển dụng giỏi hiểu nó.

Để giải quyết câu hỏi của bạn một cách nhanh chóng:

Làm thế nào để bạn đi về học một công nghệ mới?

Đọc, thực hành, phạm sai lầm, lặp lại. Sản phẩm có giá trị nhất của quá trình này sẽ là các câu hỏi cụ thể mà bạn có thể hỏi đồng nghiệp mới của mình (và trên Stack Overflow). Hãy nhớ rằng, đặt câu hỏi hay thực sự khiến bạn trông thông minh hơn. Yêu cầu các câu hỏi chung chung hoặc "Tôi không hiểu" chỉ khiến bạn khó chịu ....

Phương pháp nào tốt nhất để học nhiều công nghệ tại cùng một lúc?

Tạo danh sách ưu tiên những thứ bạn cần tìm hiểu và sau đó làm việc trong danh sách. Bạn không thể tìm hiểu tất cả thương mại web trong một ngày cuối tuần. Tuy nhiên, bạn có thể tìm hiểu về các khía cạnh cụ thể của Hibernate vào buổi chiều. Đọc cơ sở mã mới của bạn với một IDE trong tay và bắt đầu khám phá các API thực sự là được sử dụng. Nếu bạn chỉ có thể tập trung vào các điểm liên quan của tất cả các công cụ mới này, bạn có thể thực sự thấy mình đang tiến bộ nhanh hơn mong đợi.

-1

RTFM !! Nghiêm túc, ĐỌC và ĐỌC và ĐỌC. Sau đó áp dụng, ĐỌC, làm cho những sai lầm, ĐỌC, quay lại để tìm ra những gì bạn đã làm sai, ĐỌC, sửa, ĐỌC, áp dụng một lần nữa và hơn và hơn và hơn.

Tôi đã nói ĐỌC chưa? :-) Tôi nghiêm túc đấy. Đọc tất cả mọi thứ bạn có thể có được bàn tay của bạn trên. Google là bạn của bạn. StackOverflow là bạn của bạn. Có những cuốn sách tuyệt vời và các bài đăng như this one mô tả chúng và hơn thế nữa! Chúc may mắn!!

+3

RTFM có vẻ không phù hợp ở đây. Rất nhiều dự án mã nguồn mở được sản xuất sẵn sàng có tài liệu nghèo nàn (không đầy đủ/không thân thiện) (tôi không có ý nghĩa gì đặc biệt ở đây). Trong thực tế, nếu anh ta đập đầu vào tường, có lẽ anh ta đã đọc tài liệu. – user54579

1

Tôi đã ở cùng vị trí của bạn cách đây 2 năm. Bạn thực sự không thể được mong đợi để tìm hiểu các khuôn khổ và kiến ​​trúc phổ biến trong khi bạn đang đi học - bạn đang ở đó để học các lý thuyết khoa học máy tính và cách lập trình. Hy vọng rằng, trong quá trình làm việc bạn có thể dành thời gian để học Spring, Hibernate, vv, nhưng nếu không, bạn sẽ cần phải dành thời gian cho riêng bạn.

Nếu những khung công tác này mới mẻ đối với bạn, tôi khuyên bạn nên có một cuốn sách để học tập có phương pháp và "hướng dẫn" như trái ngược với googling ngẫu nhiên hoặc cố đọc tài liệu tham khảo. Tôi chắc chắn sẽ làm điều này cho Hibernate. Đây là cách tôi đã học được cách sử dụng J2EE phổ biến lúc đầu, nhưng bây giờ tôi có thể đọc tài liệu đi kèm với các khung công tác.

Dù sao, bạn sẽ bắt đầu nhận thấy rằng tất cả các công nghệ J2EE có liên quan phần nào và bạn sẽ nhận được một chút các công nghệ liên quan khác trong khi học một công cụ cụ thể. Ví dụ, học JSF đi đôi với JSP.

2

Tôi phải trải qua những thứ như thế này khoảng một năm trước khi tôi bắt đầu công việc của mình. Giải pháp của tôi là đọc từng phần mã nguồn của tôi mà tôi có thể nắm được. Nếu bạn gặp rắc rối với mùa xuân, điều này đặc biệt hữu ích. Theo dõi tất cả các tập tin cấu hình whats xảy ra và nơi nó liên quan đến mã, nơi thay đổi công cụ và lý do tại sao. Đối với hibernate, chơi xung quanh với nó và đọc tài liệu chú thích (đó là phần khó nhất đối với tôi).

Tình nguyện viên cuối cùng cho bất kỳ dự án ngẫu nhiên nào xuất hiện, đặc biệt nếu bạn chưa bao giờ làm việc với những công nghệ đó. Tôi đã làm việc trên nhiều dự án trong năm qua mà không liên quan gì đến công việc hàng ngày của tôi và đã học được nhiều hơn từ những dự án đó hơn bốn năm của tôi ở đại học.

Chúc may mắn

+1

Hãy cẩn thận với câu trả lời đó ... Rõ ràng việc đọc không phải là một hành động được đề nghị. – Taptronic

1

Điều đầu tiên để băm là Đặc tả Servlet vì nó mô tả tất cả các tính năng cơ bản mà ứng dụng web java thực chất tuân thủ. Nó không phải là ánh sáng đọc, nhưng chỉ là một nắm bắt chung sẽ giúp bạn có được QUITE đến nay.

3

Tất cả các câu trả lời tốt, và trong khi bạn đang phải vật lộn với nó, có lẽ bạn có thể gửi một phản hồi ít để các giáo sư của bạn:

  • Thế giới thực sẽ thực sự đánh giá cao nếu họ chú ý nhiều hơn một chút với những gì thế giới thực cần.
1

Không sử dụng Hibernate cho đến khi bạn biết JDBC kỹ lưỡng.

Bạn không nói có hay không có bất kỳ nền tảng nào trong cơ sở dữ liệu quan hệ hoặc SQL. Cả hai đều rất cần thiết.

Tôi yêu mùa xuân, nhưng bạn nên nhận ra rằng bạn không cần phải nuốt toàn bộ điều để có được lợi ích từ nó. Ví dụ, bạn có thể nhận được rất nhiều mileage trong giao diện người dùng web Spring bằng cách sử dụng các JSP và mô-đun JDBC. Để lại Hibernate cho đến bây giờ cho đến khi bạn cảm thấy thoải mái với Spring.

Giải quyết vấn đề, đặc biệt là trong khoa học máy tính, là phân tích các vấn đề lớn thành các vấn đề nhỏ hơn. Thu nhỏ kích thước của vấn đề của bạn và tập trung vào một điều. Các ứng dụng web với JDBC, sau đó là Spring, sau đó Hibernate sẽ là tiến trình được đề xuất của tôi.

2

Thành thật mà nói, nếu bạn có thể trải qua khoa học máy tính tại uni, lực lượng lao động thực sự dễ dàng hơn, chỉ khác nhau. Bạn sẽ không bao giờ phải khủng hoảng bộ não của bạn cứng như bạn phải làm ở uni, dù sao thì đây cũng là trải nghiệm của tôi. Không có nhiều sự khác biệt giữa một nhà khoa học máy tính và kĩ sư phần mềm, sự khác biệt rất tinh tế nhưng khá hoán đổi cho nhau.

Lời khuyên của tôi sẽ đảm bảo bạn thông thạo XHTML/CSS/Javascript/SQL trước khi chuyển sang khung học tập và thư viện kịch bản ưa thích như hibernate, jQuery, v.v. không, những nền tảng cốt lõi này sẽ cho phép bạn hiểu những gì đang thực sự xảy ra khi các khung hình ưa thích của bạn tự động tạo mã trên khắp nơi và vân vân.

Tôi biết những người đã truy cập thẳng vào ORM mà không biết SQL sâu. Họ yêu ORM, nhưng họ không thực sự hiểu những gì đang xảy ra bên dưới và họ đấu tranh khi ORM nhỏ lạ mắt tạo ra một số SQL thực sự không hiệu quả, bởi vì họ không có đầu mối làm thế nào để ghi đè lên và viết của riêng họ.

Cũng lưu ý rằng ngủ đông và một số khung công tác như vậy có thể có nhiều đốm màu và không phải lúc nào cũng là cách tốt nhất để đạt được các tác vụ đơn giản. Chúng có thể cực kỳ quá mức đối với rất nhiều thứ. Một lần nữa, trước tiên hãy quay lại với bánh mì và bơ của bạn. Xây dựng một cái gì đó mà không có một khuôn khổ. Nếu bạn sau đó biết rằng bạn đã trải qua rất nhiều mã lặp đi lặp lại, tăng gấp đôi, cắt và dán, bảo trì cao, sau đó học các bài học này và sau đó chuyển sang một khung phù hợp với nhu cầu của bạn.

Nhưng một khi bạn đã quen thuộc với crap này, bộ não khoa học máy tính của bạn sẽ đá vào turbo và bạn sẽ thấy nó khá dễ dàng.

0

Tìm một người cố vấn bạn tôn trọng và làm như họ làm.

Là một sinh viên tốt nghiệp CS trẻ tuổi, tôi đã may mắn được kết nối với một kiến ​​trúc sư giàu kinh nghiệm. Bây giờ, đây là điều bạn cần biết về kiến ​​trúc sư giàu kinh nghiệm, họ (chúng tôi) lười biếng. Họ (chúng tôi) sẽ cho phép bạn lấy rất nhiều thứ ra khỏi đĩa của họ, cho phép bạn làm điều đó và sau đó cho bạn biết tại sao nó sai. Tận dụng quy trình đó nếu bạn có thể.

0

Một điều tôi làm khi học các công nghệ hoặc kỹ thuật mới là viết một ứng dụng ví dụ nhỏ. Có một số hướng dẫn hay cho Hibernate, Spring MVCMaven. Điều quan trọng là để hạn chế số lượng những thứ bạn cố gắng tại một thời điểm - nó sẽ được dễ dàng hơn để tìm ra Maven, ví dụ, nếu bạn tập trung vào Maven mà không ném Spring và Hibernate vào hỗn hợp. Một khi bạn cảm thấy thoải mái với một điều, bạn có thể bắt đầu một dự án vi mô khác.

Có người cố vấn cũng giúp ích.Bạn sẽ tìm thấy chính mình trong các tình huống (kỹ thuật và phi kỹ thuật) mà bạn cần ai đó để nói chuyện. Đừng ngại hỏi lời khuyên từ những người có kinh nghiệm hơn mà bạn làm việc cùng.

1

Tôi đến từ Khoa học máy tính & Bằng kỹ sư về kỹ nghệ phần mềm. Tôi có một kỹ thuật mà tôi sử dụng khi cố gắng học các công nghệ mới. Nó thường như thế này

  1. Tôi thường cố gắng đọc qua một số tài liệu về công nghệ và ghi chú các điểm chính.
  2. Tôi cố gắng để có được bàn tay của tôi trên một hướng dẫn và thực hiện nó.
  3. Sau khi hướng dẫn đang chạy như nó nên, tôi thực hiện sửa đổi cho đến khi tôi cảm thấy thoải mái.

Tôi không thể đảm bảo rằng nó sẽ làm việc cho bạn, nhưng nó giúp tôi rất nhiều.

Các vấn đề liên quan