Những gì một nhà phát triển phần mềm cao cấp thành thạo về kỹ thuật có thể nghiên cứu để tiếp tục cải thiện [đóng]


15

Giả sử bạn đã lập trình được hơn 10 năm. Bạn biết nhiều ngôn ngữ, với một vài trong số đó ở mức rất chi tiết. Bạn đã thiết kế kiến ​​trúc cho các giải pháp, làm việc và giao các dự án lớn hơn. Bạn đã nghiên cứu các mẫu, thực tiễn tốt nhất, hướng dẫn mã hóa hiệu quả, thử nghiệm đơn vị, đa luồng, v.v.

Và sau đó bạn dần dần phát triển một cảm giác rằng hầu hết những cuốn sách bạn đọc, cung cấp thông tin ngày càng ít giá trị trên 100 trang văn bản. Vì vậy, họ bắt đầu cho lợi nhuận giảm dần. Bạn vẫn học, nhưng bạn không còn cải thiện bằng những bước nhảy vọt.

Tại sao việc học trở nên kém năng suất so với trước đây?

Trước đó, nó được sử dụng để thay đổi cách suy nghĩ của bạn, dạy cho bạn những điều mới và mở rộng tầm nhìn của bạn mà sau này cải thiện nghề nghiệp hiện tại của bạn hoặc cho phép phát minh / quản lý / xây dựng một cái gì đó mới. Tại sao nó không còn là trường hợp?


9
Theo faq , các câu hỏi về những gì bạn nên làm tiếp theo (dự án, sách, công nghệ hoặc ngôn ngữ) không có chủ đề. Tôi có thể hiểu quan điểm của bạn, nhưng bạn không thể biết mọi thứ cần biết liên quan đến phát triển phần mềm. Vấn đề của bạn là bạn đã chán, có lẽ rơi vào lối mòn trí tuệ. Điều truyền cảm hứng cho bạn để thoát ra khỏi lối mòn đó phụ thuộc rất nhiều vào bạn , và có lẽ sẽ là một cái gì đó hoàn toàn khác với người khác. Nhưng đây là câu trả lời: ra khỏi vùng thoải mái của bạn . Tìm hiểu về các hệ thống nhúng, toán học, đồ họa hoặc bất cứ điều gì bạn quan tâm.
Caleb

2
Tôi không thấy câu hỏi này bị giới hạn như những gì OP nên làm tiếp theo. Đó là về phương pháp tiếp cận chung mà các chuyên gia có sẵn để tiếp tục nghiên cứu của họ. Có lẽ nó có thể được diễn đạt tốt hơn, nhưng nó không đọc như " tôi nên làm gì tiếp theo" với tôi.
Frank

3
Chà, thật lòng tôi không biết câu hỏi nào không lạc đề ngày nay. Gần đây thật khó để tìm thấy bất kỳ cuộc thảo luận thú vị nào ở đây. Ok, w / e, chỉ cần khóa chủ đề này ...
Coder

2
Tôi tin rằng câu hỏi có thể được chỉnh sửa để mở lại. Theo như tôi có thể nói, vấn đề được trình bày: "lợi nhuận giảm dần ... nghiên cứu các mô hình, thực tiễn tốt nhất, hướng dẫn mã hóa hiệu quả, kiểm tra đơn vị, đa luồng ..." là chủ đề khá dành cho lập trình viên
gnat

2
Bạn sẽ có được sự hiểu biết đầy đủ hơn về một chủ đề khi bạn cố gắng dạy nó cho người khác.
JeffO

Câu trả lời:


23

Đầu tiên, mặc dù cách đặt câu hỏi của bạn, không có kết thúc cho bất kỳ nghiên cứu nào, đặc biệt là không phải trong lĩnh vực của chúng tôi, nơi những điều mới xuất hiện nhanh hơn bạn có thể đọc về chúng. Điều đó đang được nói, khi bạn muốn cải thiện, có những loại sau đây mà tôi xem xét. Để có lợi ích / ROI nhất, bạn nên chọn thứ gì đó từ khu vực yếu nhất của bạn.

Kiến thức nền tảng

Mặc dù biết ngôn ngữ lập trình và có kinh nghiệm thực tế, người ta thường có các lĩnh vực (đặc biệt là tự học) trong đó các vấn đề cơ bản cơ bản vẫn chưa hoàn thành. Hãy suy nghĩ về những thứ như cấu trúc dữ liệu, thuật toán, chiến lược bộ đệm, hàm băm, ...

Lưu ý rằng điều này cũng bao gồm nền tảng của các ngôn ngữ lập trình - mọi thứ từ trình biên dịch, kỹ thuật tối ưu hóa và hệ thống loại, cho đến lý thuyết danh mục, đơn nguyên và tương tự.

Nếu bạn được dạy tốt, như đã duy trì bằng cấp đại học trong vài năm, thì có khả năng bạn đã mạnh về hạng mục này (tất nhiên là không hoàn thành khóa học, nhưng là một cơ sở vững chắc). Mặt khác, hãy thử đọc một vài cuốn sách trong các lĩnh vực này để tìm hiểu xem có bất cứ điều gì bạn thậm chí không biết bị thiếu trong tiết mục của mình không. Thể loại này là dễ nhất để ước tính quá mức bản thân bạn trong.

Kiến thức nghịch lý

Tôi luôn luôn ngạc nhiên khi các lập trình viên xuất hiện, những người nghĩ rằng họ là những người hiểu biết, nhưng hoàn toàn không biết gì về các mô hình chính thống. Nếu bạn nghĩ rằng hướng đối tượng là kết thúc của nó, thì đây là thể loại của bạn để cải thiện. Nếu bạn nghĩ lập trình chức năng cũng tồn tại và thậm chí có thể đã nghe nói về lập trình logic, thì đó vẫn là một lựa chọn tốt. Có nhiều mô hình ngoài kia và tìm hiểu về chúng có tác dụng sâu sắc trong việc mang đến cho bạn một cái gì đó giống với một cái nhìn mới về thế giới lập trình.

Đừng quên: thường có những lý lẽ (khá triết học trong bản chất của họ) về những gì có thể được coi là một mô hình hay không. Đừng để bị theo dõi bởi những thứ này. Mục tiêu của bạn là mở rộng tầm nhìn của bạn và điều đó có nghĩa là tìm hiểu về những điều này, cho dù người khác có tự coi X là một mô hình hay không, không có gì khác biệt với điều đó.

Kiến thức chuyên môn

Đơn giản nhất trong số chúng - và ít hữu ích nhất cùng một lúc. Tất nhiên, bạn có thể cam kết với một công nghệ duy nhất và tìm hiểu tất cả mọi thứ, nhưng bạn nên chuẩn bị để trả giá. Thời đại công nghệ và họ làm như vậy với một tốc độ ngày càng tăng, điều đó gần như đảm bảo rằng thời gian đầu tư ở đây sẽ vô giá trị trong vài năm nữa.

Ngoài ra vấn đề giảm trở lại tỏa sáng ở đây. Bởi bản chất là một chuyên gia về một cái gì đó có nghĩa là bạn phải dành vô số thời gian cho chủ đề hẹp đó, và do đó, theo định nghĩa, bạn sẽ mất nhiều thời gian để tìm hiểu một cái gì đó mới và điều mới đó sẽ là một mảnh ghép nhỏ bé sẽ không thay đổi quan điểm của bất cứ ai về bất cứ điều gì.

Kiến thức tên miền

Có thể bởi vì đó là miền của công việc của bạn, hoặc đơn giản dựa trên sở thích cá nhân của bạn, nhưng là một chuyên gia về khoa học máy tính một miền nhất định là rất có giá trị và bổ ích. Tôi không nói về các lĩnh vực phụ của CS ở đây, như đồ họa máy tính hoặc AI. Thay vào đó, lưu ý rằng máy tính đã ảnh hưởng đến cuộc sống của mọi người và điều đó khiến mọi lĩnh vực khác phải tuân theo máy tính và một lĩnh vực bạn có thể vào.

Cái này rõ ràng rơi vào loại "bên ngoài lĩnh vực của bạn", nhưng nó không phải là một "toán học" bên ngoài sắc nét, mà là một lĩnh vực ứng dụng. Cân nhắc về y học: Tôi không ủng hộ bạn trở thành bác sĩ. Tuy nhiên, học các nền tảng của y học để áp dụng kiến ​​thức hiện có của bạn về khoa học máy tính vào các vấn đề của lĩnh vực đó thực sự đáng giá. Điều này bao gồm từ các kỹ thuật trực quan, qua robot, đến các hệ thống chuyên gia và quản lý dữ liệu đơn thuần cho kế toán / quản trị. Mặc dù bạn đã làm tất cả những điều đó trước đây, nhưng thực hiện nó trong một tên miền khác có thể sẽ trở thành một trải nghiệm hoàn toàn mới.

Mặc dù vậy, hãy ghi nhớ rằng đây là một cách thay đổi triệt để theo hướng của bạn hơn các danh mục khác. Bạn có thể không có bất kỳ liên hệ nào với lĩnh vực đó trong công việc hàng ngày của bạn, điều này khiến cho việc này rất khó khăn. Nó thậm chí có thể có nghĩa là chuyển đổi công việc. Ngoài ra, bạn sẽ cần một số loại chứng nhận về tên miền mới của mình - rốt cuộc bạn là một người mới hoàn toàn với miền đó và bạn phải cạnh tranh với những sinh viên tốt nghiệp từ các nghiên cứu liên ngành, đã bắt đầu hành trình trở thành chuyên gia trong lĩnh vực đó.

Kiến thức bổ trợ

Như Mike Brown đã thêm, đó cũng là lĩnh vực kiến ​​thức mà theo một cách nào đó đi kèm với công việc hiện tại của bạn, nhưng không thực sự cần thiết. Bạn không cần phải là người quản lý dự án để tìm hiểu về quản lý dự án, nhưng như thường lệ, kiến ​​thức bổ sung sẽ cung cấp cho bạn cái nhìn sâu sắc hơn về cách bên kia đánh dấu. Người ta thậm chí có thể khái quát điều này đến mức tập trung vào các kỹ năng mềm. Tôi đoán tất cả những người đã làm việc trong một dự án thực sự với những người khác đều biết giá trị của những điều này.


+1, đặc biệt là đối với "Kiến thức tên miền" - đó là điều ít nhất làm việc với tôi.
Doc Brown

1
Tôi đồng ý 100% với những gì bạn nói. Tôi rất quan tâm đến kiến ​​thức nền tảng sâu sắc hơn. Để đạt được hiệu quả mà tôi đã đăng ký vào một khóa học về trình biên dịch ngay bây giờ. Những gì bạn không chạm vào là những gì tôi phân loại là kiến ​​thức bổ sung: thiết kế đồ họa, quản lý dự án, v.v.
Michael Brown

+1 cho mô hình - Tôi đã làm OOP / thủ tục trong ~ 10 năm (và cảm thấy mệt mỏi với nó) và sau đó tôi bắt đầu học lập trình chức năng và đôi mắt của tôi đã mở ra một thế giới hoàn toàn mới.
paul

9

Tôi nghĩ rằng phần mềm luôn phát triển và vì thế có sự nhấn mạnh vào sự cải tiến liên tục. Tôi hiểu bạn đến từ đâu, gần đây tôi cảm thấy hơi giống và hiện tôi đang theo đuổi MCSM trong SQL Server.

Tìm hiểu ngôn ngữ hoặc khung mới tiếp theo hoặc những gì hiện đang "nóng". Mỗi năm có một công nghệ, khuôn khổ hoặc ngôn ngữ xuất hiện hoặc đạt đến khối lượng quan trọng mà nó trở thành một từ thông dụng theo đúng nghĩa của nó. Tôi có thể nghĩ một vài trong số này trong vài năm qua: node.js, Ruby, jQuery. Điều này cũng có thể sẽ tác động đến cách suy nghĩ của bạn đối với các nền tảng khác, ví dụ, hãy xem ROR đã làm gì với Java với Grails.

Luôn có chỗ để cải tiến. Tôi nghĩ rất khó có khả năng bạn có thể là một chuyên gia về mọi thứ, và tôi đã đọc rất nhiều và tôi luôn học hỏi. Tôi đồng ý với những gì bạn nói về việc học ít hơn và ít hơn trên 100 trang, nhưng điều này sẽ được mong đợi khi bạn là một chuyên gia về chủ đề.

Về những gì bạn có thể làm, đây là một số gợi ý:

  1. Theo kịp các thay đổi của cộng đồng và những gì mọi người đang "tham gia". Tìm hiểu các ngăn xếp mới, ít nhất là bạn có đủ để giới thiệu chúng khi thích hợp

  2. Tham gia vào các trang web Hỏi & Đáp như thế này, nơi bạn có thể truyền đạt kiến ​​thức của mình cho người khác. Nếu bạn dành thời gian để đọc những đóng góp của những người khác, bạn có thể sẽ học được điều gì đó, và ít nhất bạn sẽ có thể nhìn thấy những quan điểm mà người khác có.

  3. Chọn một sở thích có một số liên quan đến công việc của bạn. Có rất nhiều sở thích với trò chơi chéo, nghĩ về AI, tư duy lego, RaspPi, v.v.

  4. Cũng như cố gắng tăng chiều rộng kiến ​​thức của bạn, hãy nhìn vào việc tăng chiều sâu. Ví dụ: tìm hiểu cách thức hoạt động của EF dưới vỏ bọc, để bạn có thể chẩn đoán các trường hợp góc kỳ lạ đó thay vì chỉ sử dụng khung.

  5. Theo đuổi chứng nhận cấp cao nhất chỉ để chứng minh bạn biết công cụ của mình

Cá nhân, tôi sẽ cho bạn biết những gì mở tâm trí của tôi tại thời điểm này. Tôi đang đọc 97 điều Mọi kiến ​​trúc sư phần mềm nên biết và tôi chỉ biết một phần nhưng nó đã đưa ra rất nhiều lời khuyên hiền. Cuốn sách là miễn phí để đọc trực tuyến tại liên kết tôi cung cấp.

Xét về sở thích mà cuối cùng tôi đã chọn, tôi đã tham gia chẩn đoán xe (rõ ràng là với máy tính), điều đó giúp tôi duy trì hoàn toàn chiếc xe của mình. Tôi thực sự thực sự tận hưởng thời gian tôi làm việc với đôi tay của mình.


Thật buồn cười, tôi biết một trong những tác giả của 97 điều;)
Michael Brown

Đó là một cuốn sách hay.
Sam

Không có gì. Thật tuyệt phải không.
Sam

1

Sau một thời điểm nhất định, bạn đã học đủ về một chủ đề cụ thể mà bạn cảm thấy thoải mái khi tiếp thu kiến ​​thức mới trên cơ sở đặc biệt. Khi bạn cảm thấy không còn nhiều điều để tìm hiểu về lĩnh vực chính của mình, đã đến lúc bắt đầu có được kiến ​​thức bổ sung bổ sung cho kiến ​​thức chính của bạn.

Đối với tôi, tôi đang say mê UX và thiết kế đồ họa bởi vì tôi cảm thấy điều đó sẽ giúp tôi trở thành một nhà phát triển tốt hơn để cung cấp không chỉ các cấu trúc thanh lịch trong mã mà cả các giao diện thanh lịch cho người dùng cuối.

Các chủ đề khác bạn có thể tiếp cận bao gồm quản lý dự án, phân tích kinh doanh, quản trị hệ thống và cải tiến quy trình phần mềm. Nếu bạn thấy mình làm việc trong một tên miền cụ thể, có thể có ý nghĩa để đi sâu hơn vào miền đó. Ví dụ, gần đây tôi đã làm việc rất nhiều trong lĩnh vực dịch vụ tài chính. Tôi đã đăng ký các khóa học về Coursera xung quanh mô hình tài chính và những điều tương tự sẽ giúp tôi nói chuyện với khách hàng của mình về các điều khoản của họ.

Luôn luôn có nhiều thứ để học, nó chỉ cần suy nghĩ bên ngoài hộp.


0

Có hai phần cho câu hỏi này: tại sao nó khó học hơn và bạn có thể làm gì?

Phần đầu tiên khá đơn giản - các chủ đề nâng cao hơn khó hơn. Việc học lập trình cũng khó như học, việc học cách thiết kế chương trình tốt cũng khó hơn và học cách thiết kế các ứng dụng lớn còn khó hơn. Thực tế của vấn đề là các chủ đề nâng cao khó hơn, nếu không chúng sẽ không được nâng cao. Bạn sẽ cần dành nhiều thời gian hơn để học chúng; thêm thời gian thực hành để làm chủ chúng

Đối với những gì bạn có thể làm, bạn dường như tập trung vào các khía cạnh kỹ thuật để trở thành một kỹ sư phần mềm cao cấp. Bạn có thể làm nhiều thứ hơn để giúp nhóm của bạn tạo ra phần mềm hơn là học ngôn ngữ và khung. Các kỹ năng mềm, như tư vấn cho các nhà phát triển khác, yêu cầu đàm phán, quản lý dự án, thiết kế chương trình, tầm nhìn giao tiếp, thực hiện các chỉ tiêu nhóm ... Tất cả những điều quan trọng cần thiết để tạo ra một nhóm các nhà phát triển hiệu quả trong việc tạo ra phần mềm, không chỉ cho bạn.


-3

Mỗi lần tôi vào trang web Lambda The Ultimate , tôi thực sự không / không thể nghĩ như mình đang biết - tất cả trong lĩnh vực khoa học máy tính.

LtU sẽ cung cấp cho bạn một điểm khởi đầu tốt cho mô hình và kiến ​​thức lý thuyết còn lại để học.

"Bạn càng biết nhiều, bạn càng biết bạn biết ít như thế nào."


1
Làm thế nào mà trả lời câu hỏi, "Tại sao việc học trở nên kém năng suất so với trước đây?"
gnat

Bởi vì khi tôi đến đó, có những bài viết với 90% những điều mới tôi phải học. Đó chính xác là những gì OP đang phàn nàn: Tỷ lệ những điều học được bằng số dòng đọc trở nên quá thấp trong trường hợp của anh ta. Bạn cũng không biết trang này sao?
Stephane Rolland

@gnat, và bạn nhầm câu hỏi , có tiêu đề: "Điều gì một nhà phát triển phần mềm cao cấp thành thạo về kỹ thuật có thể tiếp tục cải thiện"?
Stephane Rolland

Bạn đã đọc nội dung của câu hỏi sau tiêu đề?
gnat

@gnat Tất nhiên, tôi đã đọc câu hỏi của anh ấy: đó thực sự là một tuyên bố nếu OP chỉ hỏi tại sao : sau 10 năm, một kỹ sư phần mềm cao cấp đọc những cuốn sách không còn thay đổi tầm nhìn bởi vì một người cao cấp biết rất nhiều. Vâng, tôi đã đọc nó. Tôi đã mỉm cười. Tôi nhắc lại bản thân mình "Bạn càng biết nhiều, bạn càng biết bạn biết ít như thế nào."
Stephane Rolland
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.