2008-08-22 29 views
8

Đường dẫn của tôi đến nhà phát triển 'toàn thời gian' - được nêu là nhà phân tích sử dụng VBA với Excel, Access và sau đó lên C#. Tôi đã đi học đại học bán thời gian một lần tôi phát hiện ra tôi đã có một niềm đam mê mã hóa không kinh doanh.Tăng kỹ năng tôi nên học?

Tôi làm hầu hết mã hóa của mình trong C#, nhưng là nhà phát triển ASP.NET, tôi cũng viết bằng HTML, JavaScript, SQL, v.v. . các nghi phạm thông thường.

Tôi muốn tiếp tục di chuyển về phía trước, tìm cạnh sẽ đưa tôi đến cấp độ tiếp theo, công việc tiếp theo và tất nhiên là nhiều tiền hơn. Quan trọng nhất là tôi chỉ muốn học cái gì đó mới và thách thức tôi.

Tôi đã dành thời gian gần đây để học LINQ, nhưng đã tự hỏi tôi nên học gì tiếp theo? Cái gì đó trên .NET Framework hay một công nghệ ngôn ngữ mới?

Trả lời

6

Nếu bạn muốn trở thành một trong những tốt nhất mà bạn cần phải chuyên môn hóa. Nếu bạn trở nên rất giỏi trong nhiều kĩ năng thì bạn có thể không bao giờ trở nên thực sự xuất sắc trong một kĩ năng. Tôi biết vì tôi đã tự mình thực hiện tuyến đường này và thấy khó kiếm việc làm. Sau khi tất cả, những người muốn một người có khả năng ở nhiều ngôn ngữ khi có một người trội ở những điều cụ thể mà họ cần. Nếu một công ty phát triển trong C# thì ai sẽ muốn ai đó OK ở C# nhưng cũng giỏi C, Visual Basic, Perl và Cobol, khi tất cả họ thực sự muốn là nhà phát triển C# tốt nhất có thể cho số tiền họ có thể mua được.

Sau khi tất cả, bạn sẽ chỉ được sử dụng cho một, có thể là hai kỹ năng của bạn. Có rất ít việc làm cho những người giỏi 10 hoặc 15 kỹ năng.

Nếu bạn đang tìm kiếm một kỹ năng mới thì có thể kiểm tra các bảng công việc và tìm kỹ năng nào là cần thiết, nhưng hãy lưu ý rằng hương vị của tháng trong năm nay có thể thậm chí không xuất hiện trong năm tới , mà sẽ làm cho tất cả những nỗ lực đó để tìm hiểu kỹ năng vô ích và lãng phí.

Những gì tôi sẽ nói là:

  1. làm một việc, và làm điều đó tốt. Điều này có thể bao gồm các kỹ năng hỗ trợ (C#, ASP.Net, SQL, LINQ, v.v.).
  2. Nếu bạn muốn chọn thứ gì đó khác, hãy chọn thứ gì đó bổ sung.
  3. Có thể quan trọng nhất, chọn thứ bạn sẽ thích. Có lẽ Ruby on Rails là hương vị hiện tại của tháng, nhưng nếu bạn không thích làm điều đó, thì đừng làm thế. Thực sự, nó không phải là giá trị nó. Bạn sẽ không bao giờ muốn, trên giường chết của bạn, rằng bạn đã làm việc nhiều hơn trong một cái gì đó bạn không thích.

Một hướng khác bạn có thể xem là có thể không dành cho một kỹ năng phát triển cụ thể, nhưng tìm kiếm một thứ khác, có thể là các kỹ năng mềm như quản lý con người, hiểu biết kinh doanh tốt hơn hoặc thậm chí nhìn vào những thứ như kỹ năng văn học. kỹ năng. Tất cả những điều này sẽ giúp cho phép bạn làm những gì bạn muốn làm nhiều hơn, và cắt giảm những thứ bạn thực sự không thích, do đó giúp làm cho công việc của bạn thú vị hơn.

Xin lỗi vì sự lo lắng ở đây. Hy vọng bạn vẫn còn tỉnh táo :)

+2

Mặc dù tôi đồng ý rằng bạn nên tập trung vào một ngôn ngữ cụ thể, tôi vẫn nghĩ rằng nếu bạn thông thạo các ngôn ngữ cấp thấp hơn như C và C++, nó sẽ giúp bạn trở thành một lập trình viên giỏi hơn trong các ngôn ngữ cấp cao hơn như C# hay Java ... Tôi vẫn nghĩ rằng ít nhất bạn nên cố gắng học các ngôn ngữ khác. Ngoài ra, không phải mọi ngôn ngữ đều phù hợp với mọi công việc cụ thể, vì vậy càng biết càng nhiều, bạn càng có thể áp dụng cho các nhiệm vụ cụ thể ... sẽ giúp bạn làm việc hiệu quả hơn, và người sử dụng lao động như vậy. –

+1

Tôi đồng ý rằng chuyên môn là quan trọng nhưng tôi không hoàn toàn đồng ý với bạn. Tôi làm việc trong nhóm thu thập dữ liệu tại một công ty phân tích và nhóm của chúng tôi có SDK cho tất cả các nền tảng di động (chỉ có 3 ngôn ngữ và 4 môi trường thời gian chạy) cũng như các dự án trong C#, C++, Java và JavaScript. Bất kỳ nhà phát triển nào có nguyên tắc cơ bản thực sự tốt đều có thể trở nên thành thạo trong bất kỳ ngôn ngữ/thời gian chạy nào một cách nhanh chóng. Tôi vẫn nghĩ rằng bạn nên chuyên môn nhưng hiểu biết sâu sắc về phần mềm có giá trị hơn là biết .NET. Tôi vẫn khuyến khích mọi người học nhiều thứ tiếng. – evanmcdonnal

0

Check-out OOAD & UML lẽ ...

Ooo! Và DDD - chắc chắn.

(Vâng, tôi chỉ phải ném vào các liên kết Wikipedia bắt buộc! Đây là lần đầu tiên tôi làm như vậy, và bây giờ tôi cảm thấy bẩn!)

2

Yeah, tôi càng nhận được vào phần mềm, tôi bắt đầu thấy bản thân tôi tập trung ít hơn vào ngôn ngữ và nhiều hơn nữa trên thiết kế ..

Có các bit khuôn khổ chúng tôi cần để có được đầu của chúng tôi nhưng hầu hết thời gian (nhất không phải tất cả) bạn có thể tìm những người như-và- khi bạn cần chúng ..

Nhưng đầu thiết kế tốt? Đó là mất nhiều năm kinh nghiệm để bắt đầu nhận được nó làm việc ngay ..

Và đó là những gì mà công ty thực sự trả tiền cho .. "Xây dựng nó và họ sẽ đến" và tất cả những gì ...

0

Tại sao không bạn trao đổi ngăn xếp và nhìn vào ngăn xếp LAMP?

Hoặc ngôn ngữ chức năng như haskell như thế nào?

Hoặc viết DSL?

Hoặc một ứng dụng cho điện thoại của bạn?

+0

Điểm trao đổi ngăn xếp là gì? Cho dù đó là gì? –

1

Khi bạn tiếp tục thu được nhiều kinh nghiệm hơn về ASP.Net, C#, v.v., hãy kiểm tra cạnh tranh và xem nó có tạo ra ý tưởng về cách bạn có thể làm tốt hơn trong những gì bạn đang làm hay không. Hãy xem một cái gì đó như Rails hoặc Django có thể thay đổi cách bạn nhìn vào thiết kế hoặc xây dựng ứng dụng của bạn.

1

Nếu bây giờ bạn thành thạo các ngôn ngữ và công nghệ bạn sử dụng, hãy bắt đầu dành nhiều thời gian hơn để tập trung vào thiết kế, kiến ​​trúc giải pháp và tích hợp hệ thống. "Bức tranh lớn hơn" sẽ khiến bạn khác biệt với những người đương thời của mình.

Xem một số sách của Martin Fowler như "Mẫu kiến ​​trúc ứng dụng doanh nghiệp" hoặc "Thiết kế hướng mạng" của Eric Evans.

1

Có thể tìm hiểu thêm về khả năng sử dụng (thực hành tốt nhất, thử nghiệm, v.v.) nếu bạn chưa làm như vậy.

Steve Krug's "Don't Make Me Think" là một cuốn sách hay để bắt đầu. Jakob Nielsen luôn có những nội dung thú vị.

0

@ Michael DSL = Domain Specific Language

Đối với những gì bạn nên tìm hiểu, điều đó phụ thuộc vào những gì bạn đang quan tâm.

Bạn đang tìm kiếm thử thách bản thân trong khi ở trong cùng một môi trường (web-centric các ứng dụng)? Tôi khuyên bạn nên tìm hiểu về kiến ​​trúc Apache và LAMP (Linux, Apache, MySQL, PHP) và thử thách bản thân để xây dựng một ứng dụng web mà bạn có thể dễ dàng xây dựng với ASP .NET bằng cách sử dụng nó.

Bạn muốn tìm hiểu điều gì đó hoàn toàn khác? Hãy thử Prolog hoặc LISP và xem bạn có thể làm gì với những thứ đó.

Có thể bạn muốn tham gia phần mềm nhúng? Tìm hiểu C để bắt đầu.

Bạn có nhiều cách để cải thiện kỹ năng của mình và mỗi cách có con đường sự nghiệp gắn liền với chúng. (À, có thể không phải là Prolog, nhưng thật thú vị!)

1

Bạn càng biết nhiều ngôn ngữ, bạn càng có nhiều thị trường. Hãy xem và xem những ngôn ngữ phổ biến hơn (không phải là cơ sở người hâm mộ) là gì, sau đó thêm vào một số công nghệ tiên tiến chưa được sử dụng nhiều, được làm tròn bằng kỹ năng lập trình chung.

Với kỹ năng của bạn Tôi muốn giới thiệu (như xa như ngôn ngữ):

  • Java như là một điểm khởi đầu
  • Đối với Net thêm vào Net MVC (bạn có LINQ hay đó sẽ là đây cũng)

Ngôn ngữ kỹ năng thuyết bất khả tri:

  • Design Patterns (bao gồm các MVC)
  • Domain Driven Design
  • Test Driven Thiết kế
1

Dưới đây sẽ là gợi ý của tôi:

1) Design Patterns - Đây là thực sự gọn gàng cũng như là rất hữu ích trong một số trường hợp.

2) AJAX - Giả sử bạn chưa thực hiện một số điều này, đây là một phần thú vị của Phát triển web từ quan điểm của tôi.

3) Xác định phần nào của chuỗi bạn thích nhất: Công việc front-end (HTML, CSS, Javascript), phần mềm trung gian (C# cho các phần logic nghiệp vụ) hoặc back-end (MS-SQL với các thủ tục lưu sẵn) , chỉ mục, trình kích hoạt và tất cả nội dung đó). Nếu nó là tất cả của nó sau đó cố gắng ở lại nơi mà nhóm làm phát triển web là nhỏ như nếu không bạn có thể được yêu cầu để lựa chọn.

4) Thiết kế và phân tích thuật toán - Bạn có biết các thuật toán sắp xếp khác nhau không? Bạn có biết các kỹ thuật khác nhau để tạo một thuật toán hay không, ví dụ: tham lam, đệ quy, phân chia và chinh phục, lập trình động, sử dụng các kiểu dữ liệu tùy chỉnh như đống trong heapsort vv. Điều này có thể mới và tuyệt vời.

5) Xác định xem có một phần của quá trình phát triển mà bạn ưu tiên không: Nhà phân tích, nhà thiết kế, lập trình viên, người thử nghiệm, trình gỡ lỗi? Tất cả có thể có các mức độ khác nhau ở gần mã, IMO.

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