2012-01-20 41 views
5

Xin lỗi nếu câu hỏi này quá mở cho trang web, nhưng nó dường như là nơi tốt nhất để hỏi nó.Tài nguyên để xây dựng kỹ năng phần mềm kỹ thuật

Tôi là một lập trình viên tự học với ít môn toán trong nền giáo dục của mình và đã trải qua quá trình 10 năm chuyển từ kịch bản web và phát triển web sang phần mềm trung gian và cấp dữ liệu . Kết quả là có những lĩnh vực kiến ​​thức và kinh nghiệm của tôi mà phần nào còn thiếu.

Sau khi xem xét gần đây với người quản lý của tôi, nó đã được chỉ ra với tôi rằng khắc phục những khoảng trống là tất cả những gì đang đứng giữa tôi và quảng cáo cho vai trò kỹ sư cao cấp. Tuy nhiên để có được điều đó, tôi sẽ phải tìm cho mình một cách tiếp cận có cấu trúc để học và chứng minh rằng tôi đã thực hiện trên những gì tôi cần biết.

Cá nhân tôi sẽ xác định các khu vực yếu kém của mình như sau. Hãy nhận biết rằng vấn đề trong nhiều trường hợp không phải là tôi không hiểu, về mặt kỹ thuật, làm thế nào những điều này làm việc nhưng tôi không thấy nó ở đâu hoặc không thích hợp để áp dụng chúng. Ví dụ tôi biết giao diện là gì và về mặt kỹ thuật, nó là gì, nhưng tôi có một thời gian khó phân biệt khi thích hợp để sử dụng một giao diện, ví dụ, một nhóm các lớp OO có liên quan kế thừa từ một lớp cơ sở. Vì vậy, đó là loại sự thiếu hiểu biết về thiết kế phần mềm tốt hơn là sự thiếu hiểu biết về kỹ thuật - tôi không gặp khó khăn khi đánh giá cao, tiêu hóa và làm việc trên những thứ như hệ thống ghép đôi lỏng lẻo.

  • Giao diện
  • đại biểu
  • Design Patterns
  • Kiến trúc mạng & giao thức

Ngoài ra tôi chưa bao giờ làm một số thứ ở mức độ thấp như các trình biên dịch và như vậy. Đôi khi tôi tự hỏi liệu nó có tạo ra sự khác biệt lớn về khả năng viết mã không chỉ hiệu quả mà còn được tối ưu hóa tốt hơn nếu tôi có kiến ​​thức tốt hơn về loại tài liệu này.

Thỉnh thoảng lo lắng rằng tôi không thể xác định điểm yếu trong kỹ năng của mình vì tôi không biết cách đặt câu hỏi phù hợp với tôi. Vì vậy, với hy vọng rằng tôi đã đặt câu hỏi đúng cách, tôi muốn đề xuất của bạn về:

  • Từ âm thanh của những gì tôi hiện đang thiếu là có chủ đề nào khác mà tôi nên nghĩ đến?
  • Một số tài nguyên tốt để học tài liệu này ở đâu?
  • Có bất kỳ khóa học có cấu trúc, tự học nào mà tôi có thể thực hiện qua đó có liên quan không? Tôi không, thật đáng buồn, có thời gian để có một bằng cấp chính thức.

Chúc mừng, Matt

+0

Matt Tôi cũng sẽ tham dự buổi họp mặt buổi tối dựa trên mạng. Tôi cố gắng để có được mọi người (như bạn tôi có con nhỏ). Nhưng http://dotnetdevnet.com/ và http://cms.vbug.net/Regions/VBUG-Bristol/Bristol-Events.aspx là địa phương và rất tốt. –

+0

Matt, Tôi hiện đang ở trong tình huống tương tự. Bất kỳ lời khuyên nào dựa trên kinh nghiệm của bạn. – jaamit

Trả lời

8

tôi đã tự dạy coder cách đây không quá lâu để tôi có thể liên quan đến vị trí của bạn. Kể từ đó tôi đã vận chuyển 10 triệu ứng dụng LOC, vì vậy tôi phải phát triển sự phân biệt. 3 điều giúp tôi có được kĩ nghệ phần mềm: sách, mã và con người.

Trước hết, kỹ thuật tốt là về vẻ đẹp, vẻ đẹp của thiết kế thanh lịch, của một chủ nghĩa mecanism hiệu quả. Bạn cần phải phát triển ý nghĩa đó cho cái đẹp và làm điều đó bạn cần thấy nó và thảo luận về nó.

Sách như SICP, Refactoring, Head First Design PatternsBeautiful Code là tất cả về mã đẹp/tốt hơn. Phần lớn thời gian họ không nói về ngôn ngữ (hoặc về ngôn ngữ kỳ lạ). Mã hoàn thành cũng thú vị nhưng bằng cách nào đó mức độ thấp hơn.

Đọc mã trực tuyến cũng là một cách hay để giáo dục sở thích của bạn. Tôi không có ví dụ trong tâm trí nhưng đây là một common question, bạn nên dễ dàng tìm thấy một số ý tưởng. Ngoài ra, xây dựng một ứng dụng đầy tham vọng (một trò chơi, người lập mô hình 3D, máy chủ web, cơ sở dữ liệu) là một thực tiễn tốt: bạn có khả năng làm lại nó 2 hoặc 3 lần để có kiến ​​trúc tốt hơn.

Mọi người cũng rất quan trọng. Nếu bạn tìm thấy một/một vài kiến ​​trúc sư phần mềm đam mê thảo luận, bạn sẽ có thể đối đầu với quan điểm của bạn về cái đẹp. Tôi vẫn đang tiêu hóa một số cuộc thảo luận mà tôi đã có với người quản lý của mình cách đây vài năm.

Điều này "tăng tốc" là một quá trình liên tục, vì vậy đừng nản chí và chỉ tiến lên phía trước. Một ngày, bạn sẽ thấy mã xấu xí với một triển khai thay thế rõ ràng, một trong những bạn có thể thảo luận và so sánh khách quan tốt hơn so với bản gốc.

1

Có một dự án thú cưng nằm xung quanh mà bạn có thể liên tục tái cấu trúc đi một chặng đường dài trong tự học.

Nói chung, tôi sẽ xem xét một số khóa học mở do MIT hoặc Caltech đưa ra và những thứ tương tự. Chọn một chủ đề mà bạn cảm thấy sẽ mang lại lợi ích cho bạn, và ném một bài học về. Hãy thử và hiểu các khái niệm tốt nhất có thể. Khi bạn tiếp tục viết mã và tái cấu trúc dự án thú cưng của mình, bạn sẽ tự nhiên bắt đầu thêm những thứ bạn đang học.

Bạn đã đề cập chưa bao giờ chạm vào trình biên dịch - cung cấp cho khóa học đó một cảnh quay và xem vị trí của bạn. Với hàng tá chương trình CIS đầy đủ trên YouTube, thật dễ dàng để tìm một người hướng dẫn bạn thích học hỏi. Tôi sẽ ném ra Giới thiệu về thuật toán như được dạy bởi Leiserson và Demaine như là một điểm ra mắt:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/

Bạn đề cập đến "tôi không, thật đáng buồn, có thời gian để lấy một bằng cấp chính thức." Chính thức hay không, nó sẽ mất một đầu tư tốt thời gian để làm cho điều này xảy ra. Chọn tuyến đường tốt nhất cho bạn và gắn bó với nó. Hãy chắc chắn rằng bạn đang đưa các bài học của bạn vào thực tế để củng cố và phát triển hiểu của bạn.

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