2010-11-04 2 views
11

Tôi đã tốt nghiệp đại học gần một năm trước. Kể từ đó tôi đã làm việc với nhiều công nghệ khác nhau, chẳng hạn như PHP, JQuery, ASP.NET, C# vv Gần đây tôi đã chuyển sang một công ty mà powerbuilder đang được sử dụng để phát triển.Chuyên môn hóa cần thiết trong phát triển phần mềm

Vấn đề là tôi chưa nắm vững bất kỳ ngôn ngữ nào ở trên. Tôi có thể làm việc với những người đó nhưng khi nói đến những công việc phức tạp, tôi thường phải vật lộn với nó bởi vì tôi không có đủ kiến ​​thức sâu sắc về nó. Sau khi nhìn vào powerbuilder trong một vài ngày tôi cảm thấy rằng điều này sẽ xảy ra một lần nữa bởi vì hầu hết các mã ứng dụng đã được thực hiện bằng cách sử dụng một số loại thư viện đòi hỏi một số kỹ năng nâng cao về powerbuilder.

Câu hỏi của tôi là tôi có thể làm việc trên các công nghệ khác nhau mà không cần làm chủ một công nghệ nào không?

+0

Không phải là nơi thích hợp cho câu hỏi này, nhưng tôi nghĩ bạn cần chuyên sâu vào một khu vực/ngôn ngữ/nền tảng cụ thể. Mỏ của tôi là C# /. NET. – leppie

+0

Tốt hơn trên [Lập trình viên] (http://programmers.stackexchange.com). Mặc dù tôi tin rằng bạn sẽ tìm thấy các câu hỏi tương đương đã được yêu cầu ... – dmckee

Trả lời

6

Nếu bạn chọn chuyên môn, bạn đang sử dụng chi phí cơ hội bằng cách tự làm cho mình không khả dụng cho các loại công việc khác. Điều này là tốt nếu bạn có thể tự tin rằng chuyên môn bạn đã chọn sẽ kéo dài trong một khoảng thời gian hợp lý. Tuy nhiên, bạn có thể đảm bảo (cùng với cái chết và thuế) rằng phần mềm sẽ thay đổi. Bạn sẽ luôn luôn được yêu cầu để tìm hiểu một số khuôn khổ mới hoặc cách tiếp cận để duy trì hiện tại.

Vì vậy, để tránh việc tìm kiếm chính mình tại một điểm chết trí tuệ (các máy tính vẫn đang được sử dụng ở bất kỳ đâu?), Bạn nên áp dụng một học thuyết về học tập liên tục. Việc học thường rất thú vị và hầu như luôn dẫn đến niềm vui khám phá ra một số công cụ hoặc thiết kế mới. Và không bao giờ giữ kiến ​​thức này cho chính mình (nó chỉ có một nửa cuộc đời của 18 tháng anyway). Chia sẻ những gì bạn đã học được với người khác.

Vì vậy, để trả lời câu hỏi của bạn: không chuyên.

4

Theo cuốn sách Pragmatic Programmer, một trong những lời khuyên cho một lập trình viên tốt là:

Invest Regularly in Your Knowledge Portfolio 
Make learning a habit. 

này có nghĩa là bạn liên tục phải sử dụng, hoặc tìm hiểu về các công nghệ mới. Trong khi trở thành một bậc thầy trong một công nghệ cụ thể có thể được khen thưởng, công nghệ đến và đi, ngày nay nhanh hơn bao giờ hết. Một chủ trong một ngôn ngữ lập trình cụ thể, công cụ hoặc API có thể làm cho bạn trở thành một guru ngày hôm nay, nhưng có thể có nghĩa là không có gì vào ngày mai.

IIRC họ cũng đề nghị các nhà phát triển làm chủ một số công nghệ, nhưng vẫn thông thạo nhiều - ít nhất là trong ý thức nghe về chúng, chơi xung quanh với họ, có thể tham gia vào cuộc trò chuyện về họ.

Vì vậy, tôi sẽ nói có - chuyên môn hóa là cần thiết, nhưng điều này không có nghĩa là bạn nên bỏ qua các miền bên ngoài của chính mình.

+2

Nói cách khác: http://www.agilemodeling.com/essays/generalizingCác chuyên gia.htm –

+0

Tôi ước tôi có thể upvote nó, nhưng tôi không có ủy quyền cần thiết : ( –

+0

Bây giờ tôi có đặc quyền: -d –

3

Không có 'câu trả lời đúng' cho câu hỏi này ngoài có thể, 'nó phụ thuộc'.

Bạn sẽ tìm thấy việc tìm kiếm việc làm tốt hơn nếu bạn chuyên môn dễ dàng hơn, như bạn gọi nó. Tôi sẽ nghĩ về nó nhiều hơn khi làm việc với một ngôn ngữ/khuôn khổ cụ thể. Hơn nữa, điều quan trọng là phải giải quyết các vấn đề khó khăn và đạt được kinh nghiệm, không phụ thuộc vào ngôn ngữ được chọn.

Khi bạn đã chấp nhận ở trên là một sự thật và chuyên môn, thì tôi khuyên bạn nên phân nhánh và học các ngôn ngữ mới. May mắn thay, ngôn ngữ trở nên dễ học hơn khi bạn có nhiều kinh nghiệm hơn.

Tuy nhiên, hơn bất cứ điều gì, bạn phải xem xét việc giữ cho mình quan tâm trong một khoảng thời gian dài. Đó là chìa khóa thực sự. Nếu bạn quan tâm, bạn sẽ tiếp tục học hỏi và đạt được kinh nghiệm. Có lẽ điều đó có nghĩa là bạn làm điều gì đó không liên quan đặc biệt đến hầu hết các công việc, chẳng hạn như viết một trình biên dịch ngôn ngữ. Hoặc có thể bạn sẽ thấy rằng sự vội vã làm việc cho các khách hàng lớn trong các dự án lớn là quan trọng hơn một ngôn ngữ/khuôn khổ cụ thể.

Vậy đó là điều đó - chỉ cần tiếp tục quan tâm và tiếp tục tìm hiểu. Và, nếu có thể, hãy tập trung vào điều mà bạn quan tâm, vì điều đó sẽ giúp bạn dễ dàng tìm được việc làm hơn nữa.

+0

Tôi ước mình có thể upvote nó, nhưng tôi không có sự cho phép cần thiết: ( –

+0

+1 để giúp HEAVEN'S TEAR) –

2

Điều quan trọng là phải chuyên về ít nhất một ngôn ngữ lập trình/nền tảng, đặc biệt là từ rất sớm trong sự nghiệp của bạn. Bởi chuyên ngành tôi có nghĩa là đọc một cuốn sách về nó, bao gồm để trang trải, và có bàn tay rộng rãi về kinh nghiệm phát triển cho nó, tại nơi làm việc hoặc tham gia vào một dự án mã nguồn mở.

Ý tưởng đằng sau điều này là khi bạn chuyên về một ngôn ngữ, bạn sẽ học được nhiều khái niệm mà bạn có thể chuyển sang các ngôn ngữ/nền tảng khác nhau. ví dụ: Thầy của một ngôn ngữ có thể làm chủ một ngôn ngữ khác một cách dễ dàng. Thêm vào đó, bạn bắt đầu chuyển từ khi bắt đầu một nhà phát triển sang một nhà phát triển/kiến ​​trúc sư, và bạn cần đưa ra quyết định về nền tảng nào để sử dụng, ưu điểm và nhược điểm của mỗi nền tảng và do đó không.

Vì vậy, lời khuyên của tôi là cố gắng nắm vững ít nhất một ngôn ngữ, cùng với các công cụ và khung công cụ của nó. Sau đó bạn có thể chuyển sang các nền tảng khác nhau. Điều quan trọng là sử dụng nền tảng phù hợp cho dự án hiện tại, bạn sẽ cần phải xác định trường hợp đó theo từng trường hợp, với sự hỗ trợ của nhà phát triển cấp cao.