Tại sao các nhà phát triển cần cập nhật các công nghệ và phương pháp luận? [đóng cửa]


28

Tôi luôn đưa ra lời khuyên rằng các nhà phát triển cần cập nhật những công nghệ mới nhất - những thứ như webrtc, cập nhật trên html5 và css3 và các thư viện js mới, các phương pháp phần mềm như TDD, DDD và BDD.

Câu hỏi là tại sao ? Tại sao chúng ta cần liên tục cập nhật bản thân? Chúng ta không thể chỉ gắn bó với những gì chúng ta biết và trở nên tốt hơn với nó?


16
Trong phát triển phần mềm, có một sự thúc đẩy để làm cả hai: tìm hiểu sâu về một số công nghệ và theo kịp các công nghệ mới luôn thay đổi. Đây là một phần lý do tại sao thật khó để tìm các nhà phát triển tốt.
joshin4colours

2
Để giải quyết các phiếu bầu gần đây, tôi nghĩ đó là một câu hỏi công bằng và tôi không thể tìm thấy một bản sao chính xác trên trang web. Chỉ cần cố gắng để mắt đến những câu trả lời kém để chúng ta có thể làm sạch chúng.
maple_shaft

4
Tôi không thấy lý do tại sao các lập trình viên như một lớp phải "cập nhật" với "công nghệ web" mới nhất cho bất cứ điều gì cả hai khái niệm đó thực sự có ý nghĩa trong thực tế. Một trí óc tò mò và học hỏi liên tục chắc chắn rất quan trọng cho sự phát triển cá nhân trong bất kỳ ngành nghề nào, nhưng vấn đề nan giải giả định rằng "công nghệ web" là trục duy nhất cho sự phát triển cá nhân khiến điều này trở nên quá tải cho câu hỏi của tôi. Nhìn một cách nghiêm túc vào các câu trả lời được bình chọn cao - có ai trong số họ thậm chí trả lời câu hỏi ngoài việc đưa ra các bình luận khích lệ và động viên để "ở lại trong trò chơi" không?
bmike

1
@bmike: Tôi đồng ý với bạn: tất nhiên một trí óc tò mò sẽ muốn học những thứ mới mọi lúc. Trong trường hợp này, công cụ mới có nghĩa là thứ bạn không biết, có thể là ngôn ngữ lập trình thú vị đã tồn tại được 40 năm hoặc lâu hơn (ví dụ Lisp). Ngành công nghiệp thúc đẩy chúng tôi cập nhật và xem xét những thứ mới nhất thú vị, hiệu quả hơn theo mặc định. Quan điểm chính của tôi: học một công nghệ mà bạn không cần chỉ vì nó mới là một sự lãng phí thời gian.
Giorgio

1
@RobertHarvey Không phải là nếu câu hỏi là "Làm thế nào?" hay cái gì?" như đó sẽ là NC. Nó đang hỏi TẠI SAO và cá nhân tôi cảm thấy điều đó có liên quan và có thể trả lời được.
maple_shaft

Câu trả lời:


42

Bề mặt công nghệ mới cho một lý do. Thông thường lý do đó là vì họ hiệu quả hơn hoặc mạnh mẽ hơn trong việc hoàn thành một nhiệm vụ cụ thể.

Vẫn còn giá trị để gắn bó với công nghệ cũ vì lợi ích của các hệ thống cũ, nhưng cuối cùng khi chúng đến cuối đời, bạn sẽ đứng sau trò chơi.

Bỏ qua các lý do kinh doanh, việc không ngừng học hỏi các công nghệ mới giúp bạn luôn tự tin và sẽ mở rộng tầm nhìn về các cách tiếp cận nhiệm vụ khác nhau, ngay cả trong các công nghệ cũ, v.v.


3
+1: học các công nghệ mới thường hữu ích, ngay cả khi bạn không bao giờ trực tiếp áp dụng công nghệ đó: các quan điểm và quan điểm mới mà nó cung cấp chắc chắn có thể được áp dụng bằng công nghệ "cũ".
Joachim Sauer

7
Mặt khác, nhảy ở mọi công nghệ mới cũng có thể phản tác dụng, bởi vì nhiều trong số chúng biến mất nhanh như bề mặt.
Gordon Bell

@GordonBell - Đúng ... Tôi không thể nói cho ai khác, nhưng tôi thường không thử nghiệm các vùng nước với các công nghệ mới cho đến khi chúng ít nhất có dấu hiệu hoặc tiềm năng trở thành 'chính thống' - mang lại lợi ích của nhiều tài liệu để giúp giáo dục và cơ sở người dùng, v.v.
Ẩn danh

Họ thường phát sinh để đáp ứng nhu cầu trong học viện, nhưng không phải trong thế giới thực. Bạn phải viết luận án của bạn về một cái gì đó .
dbracey

@dbracey: Phải, và hai mươi năm sau, một số công ty lớn có thể tìm thấy luận điểm này trong khi các nhà nghiên cứu đã phát triển thành một số công nghệ trưởng thành và bắt đầu bán nó như một công nghệ mới .
Giorgio

27

Mặc dù chắc chắn có thể xây dựng sự nghiệp trên một chồng công nghệ duy nhất nếu bạn gặp may mắn 1 , nhưng gần như chắc chắn rằng công nghệ sẽ thay đổi nhiều lần trong suốt thời gian bạn làm việc rất thành công. Bạn có thể (và bạn nên) cải thiện những gì bạn đã biết, nhưng học những điều mới trước thời hạn sẽ giúp bạn cắt giảm quá trình học tập khi sự thay đổi công nghệ tiếp theo đến với ngành công nghiệp của bạn.

Có một khía cạnh ít rõ ràng với nó, quá: học hỏi những điều mới rất thường xuyên giúp bạn nhìn thấy những điều mà bạn đã biết từ một góc độ khác nhau, trong cùng một cách mà học một ngôn ngữ mới sẽ giúp bạn tìm hiểu những điều thêm về ngôn ngữ hiện tại của bạn 2 .

Cuối cùng, không nên đánh giá thấp một giá trị giải trí thuần túy của việc học những điều mới: đối với tôi, nó đập khi xem TV trên tay.


1 Ví dụ: bằng cách chọn COBOL trên PL / I khi bắt đầu sự nghiệp vào năm 1965.

2 Điều này hoạt động cho các ngôn ngữ tự nhiên và lập trình như nhau.


1
+1 @dasblinkenlight Tôi thích câu nói này: "... học những điều mới trước thời hạn sẽ giúp bạn cắt giảm thời gian học tập khi sự thay đổi công nghệ tiếp theo đến với ngành công nghiệp của bạn." Đây là lý do tại sao tôi đang học Opa ngay bây giờ
Anthony

12

Chúng ta không thể chỉ gắn bó với những gì chúng ta biết và trở nên tốt hơn với nó?

Bạn có thể , nhưng thực sự rất dễ rơi vào cái bẫy không bao giờ muốn học bất cứ điều gì mới. Triển vọng công việc của bạn giảm dần, đồng đội của bạn ngừng muốn làm việc với bạn vì bạn là "lập trình viên hoàn toàn mất liên lạc".

Chủ yếu, bạn cần giữ một sự cân bằng. Cố gắng học mọi thứ mới mọi lúc sẽ khiến bạn trở nên nghèo nàn ở nhiều thứ, được coi là một người thích mày mò. Tìm hiểu một số điều tốt và ít nhất tập trung vào việc biết những gì tồn tại, ngay cả khi bạn không thể sử dụng nó một cách hiệu quả.


2
Không có gì làm tôi bực mình hơn trong công việc, hơn là phải bị mắc kẹt trong một nhóm với một lập trình viên viết mã như anh ta đã làm cách đây 10 năm. Các khuôn khổ đã phát triển. Các công cụ đã phát triển. Bạn không muốn làm cho công việc của bạn dễ dàng hơn? Bạn không thấy thợ mộc sử dụng máy khoan cầm tay và tay cầm cả ngày khi họ có dụng cụ điện bây giờ. Họ đã tiến hóa. Và giống như mọi nghề nghiệp, các công cụ mới được phát minh để giải quyết nhu cầu. Không sử dụng công cụ mới và cố gắng hack một cái gì đó theo cách cũ thường gây bất lợi cho chất lượng của những gì đang được xây dựng. Có thể trong mã hoặc trong gỗ.
CaffGeek

2
"Các khung đã phát triển. Các công cụ đã phát triển. Bạn không muốn làm cho công việc của mình dễ dàng hơn sao?": Có vô số cách giải quyết vấn đề nhất định và đôi khi một công cụ hoặc ngôn ngữ mới không tốt hơn mà chỉ tương đương với công cụ cũ. Nhưng bạn có nhiều kinh nghiệm hơn với cái cũ để bạn có thể làm việc hiệu quả hơn với nó. Chúng tôi giả sử quá thường xuyên rằng MỚI == TỐT HƠN. Thay vào đó, chúng ta nên luôn luôn thách thức tuyên bố này.
Giorgio

2
@Giorgio - Đó là một điều để có sự hoài nghi lành mạnh về 'điều lớn tiếp theo'. Đó là một cách khác để đặt đầu của bạn vào cát khi tiến bộ thực sự vượt qua bạn. Sau này là cách quá phổ biến.
Telastyn

4
@Telastyn: Tôi sẽ chỉ định 50% cho cả hai thái độ: đôi khi tôi có ấn tượng rằng một công nghệ mới được thúc đẩy chỉ vì nó mới. Và nó chỉ là một cách thay thế (không phải là một cách tốt hơn) để làm việc. Vì vậy, chúng tôi phải mất nhiều tháng để thành thạo với công nghệ mới và sau đó chúng tôi lại làm việc hiệu quả như trước đây. Nhưng tất nhiên, bạn đã đúng rằng việc vùi đầu vào cát cũng là sai và người ta phải luôn đề phòng những điều mới.
Giorgio

@Giorgio, làm thế nào để bạn biết liệu cách mới có tốt hơn hay không nếu bạn không tìm hiểu hoặc thử nó?
CaffGeek

7

Chà, có lẽ là do bạn là nhà phát triển web và các công nghệ trong lĩnh vực đó rất biến động với ngôn ngữ, nền tảng, công cụ và phương pháp luận ngày càng phổ biến. Đó là một lĩnh vực rất RẤT cao cấp. Nếu bất kỳ lớp nào bên dưới nó bị thay đổi, điều đó sẽ thay đổi vị trí trên cùng. Và, thẳng thắn, nó mới (ish). Các lĩnh vực mới có rất nhiều chỗ cho sự đổi mới.

Cá nhân, tôi làm việc trên các thiết bị nhúng, học C và điều đó hoạt động khá tốt đối với tôi.

Nhưng tôi vẫn học những điều mới một cách thường xuyên. Các socket, thư viện SQL, ncurses, các đối tượng trong C. Và các phương thức được kết hợp lỏng lẻo với các công nghệ. Kiểm tra đơn vị đã được dạy một cách khủng khiếp tại trường của tôi, và bây giờ tôi chỉ quấn đầu quanh nó. Tôi mới nghe nói về việc tiêm phụ thuộc vào một ngày khác và nhận ra đó chính xác là cách tôi giải quyết vấn đề cuối cùng của mình với đơn vị kiểm tra chức năng điều khiển.

Hầu hết các lập trình viên không phải là công nhân nhà máy làm điều tương tự mỗi ngày. Những công việc đó có thể (và nên) được tự động đi. Không ai trả tiền cho việc thực hiện sắp xếp bong bóng khác. Nó đã được thực hiện.


+1: Câu trả lời hay. Người ta nên tìm hiểu các công nghệ mà người ta cần hoặc thấy hữu ích. Các công nghệ mới rất quan trọng và người ta nên nhìn xung quanh để biết chuyện gì đang xảy ra. Nhưng MỚI không nên là tiêu chí duy nhất để chọn những gì chúng ta học. Ngoài ra, nếu C phù hợp với nhu cầu lập trình của bạn, tôi đồng ý rằng nó có thể là một ngôn ngữ tốt để làm việc cùng, ngay cả khi nó đã tồn tại trong một thời gian dài.
Giorgio

Điều này cũng chỉ ra rằng các công nghệ mới thường có nhiều lớp hơn các công nghệ cũ hơn hiện có. VM của bạn được triển khai trong cái gì? C hoặc C ++.
dbracey

Tiêm phụ thuộc chỉ là một tên mới cho một ý tưởng rất cũ.
MarkJ

6

Tôi muốn nói rằng bạn có thể bỏ qua rất nhiều những gì ngoài kia. Phần lớn là sự cường điệu và mốt và những cái tên mới cho công nghệ cũ. Những tiến bộ thực sự sẽ sớm được thay thế bằng những tiến bộ mới hơn mà không thực sự phụ thuộc vào những cái cũ, mặc dù bộ tính giờ cũ nói rằng bạn nên hiểu cái cũ để hiểu cái mới. Nếu bạn rời khỏi lĩnh vực này trong 10 năm, khi bạn quay lại, bạn sẽ chỉ chậm hơn 2 năm.

Điều đó nói rằng, phát hiện ra các kỹ thuật mới thực sự có thể là khó khăn. Tôi rất vui vì tôi đã không bỏ lỡ OOP, nhưng nó chắc chắn trông giống như một vài từ buzz. Và bạn thường cần sử dụng công nghệ hiện tại để thực hiện một công việc, ngay cả khi mọi người sẽ quên nó trong 3 năm.

Sự cường điệu và nhầm lẫn của công nghệ phần mềm nhân lên sự thay đổi mà chúng ta phải đối phó hàng ngày. Nhưng công nghệ điện tử thực sự đang phát triển nhanh chóng và đẩy phần mềm đi cùng với nó. Có rất nhiều thay đổi thực sự ngoài kia. Chúng ta vẫn lái những chiếc ô tô, lái những chiếc máy bay và bay vào vũ trụ bằng chính những chiếc xe chúng ta đã sử dụng vào năm 1965. Nhưng phần cứng điện tử từ năm 1995 đã lỗi thời một cách vô vọng.

Vì vậy, câu trả lời sâu sắc cho câu hỏi của bạn là các nhà khoa học và kỹ sư làm việc với điện đã rất bận rộn. Phần mềm cần phát triển để tận dụng phần cứng. Tệ hơn (hay đúng hơn - tốt hơn?), Tôi nghĩ phần mềm bị bỏ lại phía sau bởi phần cứng. Nếu tất cả mọi người phần cứng đã nghỉ hưu vào ngày mai, phần mềm sẽ phát triển mạnh mẽ trong ít nhất hai thập kỷ tới.

Nếu bạn cần công nghệ mới để thực hiện một công việc, bạn cần học nó. Nếu có cơ hội, đó là một công nghệ mới vẫn còn tồn tại 20 năm kể từ bây giờ, bạn cần để mắt đến nó - và nếu bạn xem 20 công nghệ chết cho mọi người sống, bạn đang làm rất tốt. Và bạn thực sự có thể bỏ qua mọi thứ khác. Ngoại trừ một chút khói rõ ràng sẽ làm nền tảng cho tất cả các phần mềm của năm 2020.


+1: Tôi đồng ý với bạn về sự cường điệu. Rất nhiều sự đổi mới là (không may) cường điệu và chúng ta nên chọn các công nghệ mới mà chúng ta dành thời gian rất cẩn thận. Một trong những cường điệu của thời điểm này là lambdas (mà, BTW, tôi coi là một khái niệm rất hữu ích): mọi ngôn ngữ hiện đại đều phải có chúng (C #, C ++, Java?) Nếu không nó không còn tuyệt nữa! Nhưng lambdas đã tồn tại được 50 năm và không ai quan tâm khi những ngôn ngữ này được thiết kế ban đầu. Bây giờ họ đang được thêm vào như một suy nghĩ lại chỉ để làm theo sự cường điệu mới nhất. ;-)
Giorgio

@Giorgio: Tôi hy vọng không phải Java. Lambdas là một ví dụ tốt (mặc dù đơn giản và ít rắc rối hơn so với một số). Tôi sử dụng chúng trong C #, và tôi yêu chúng, nhưng người duy nhất sẽ hối hận vì không biết họ là ai, người được bảo phải sửa mã đầy đủ.
RalphChapin

Bạn có ý nghĩa gì bởi "Tôi hy vọng không phải Java"? Rằng họ sẽ không được giới thiệu? Tôi thích và sử dụng lambdas (trong Scheme, Haskell): chúng là một khái niệm khá dễ dàng. Nhưng trong C #, C ++ và Java, dường như chúng là một bổ sung muộn mà bằng cách nào đó không phù hợp với phần còn lại của ngôn ngữ. Tôi nghi ngờ rằng các nhà phát minh không biết bất kỳ Lisp nào nhưng họ đã quyết định rằng lambdas không thuộc về các ngôn ngữ này. Bây giờ họ đã trở thành phải. Vì vậy, tôi thích lambdas rất nhiều, nhưng trong C #, C ++ và Java, chúng dường như chỉ là một sự cường điệu được sử dụng để bán các trình biên dịch, sách mới, v.v.
Giorgio

1
@Giorgio: Java là (hoặc đã) chứ không phải là một ngôn ngữ tối giản. Bạn không cần phải biết nhiều (ví dụ như lambdas) để hiểu những gì người khác đã viết. Tôi thích nó. C # là một ngôn ngữ tối đa. Mỗi dòng mới có thể giới thiệu công nghệ mà bạn chưa từng thấy trước đây. Đó là một vụ nổ để viết, ít để đọc. Không cần lambda, mặc dù chúng giúp ích nhiều hơn cho C # so với Java vì lý do cú pháp. Nhưng họ thật tuyệt và họ tiết kiệm được một vài dòng mã. Nói cách khác, bạn đã đúng. Nhưng đó là C #, không phải Java. Chưa.
RalphChapin

1
@iconoclast: Với 20 năm kinh nghiệm làm lập trình viên, tôi không coi mình là người mới bắt đầu. Tuy nhiên, thực tế rằng Java là (một) ngôn ngữ tương đối đơn giản và sạch sẽ giúp tôi làm việc hiệu quả hơn (tôi có thể phát triển phần mềm phức tạp hơn với ít nỗ lực hơn). Tôi nghĩ rằng đó là một quan niệm sai lầm rằng một ngôn ngữ đơn giản dành cho người mới bắt đầu: một ngôn ngữ đơn giản sẽ cho phép bất kỳ lập trình viên nào có bất kỳ mức độ kinh nghiệm nào tập trung hơn vào các khía cạnh phát triển nhất định (ví dụ: quản lý một kiến ​​trúc phức tạp, tái cấu trúc) vì họ mất ít thời gian hơn để xử lý các khía cạnh khác (ví dụ: quản lý bộ nhớ, cú pháp mật mã, v.v.).
Giorgio

3

IMHO, bạn cần tìm một sự cân bằng. Điều đó đòi hỏi kỹ năng và kinh nghiệm.

Bạn cần tìm một hoặc hai ngôn ngữ mà bạn chuyên về, cập nhật các thay đổi về khung / phong cách phát triển trong ngôn ngữ này và giữ cho kỹ năng của bạn luôn được chú ý.

Nhưng bạn cũng phải xem ngôn ngữ này phát triển như thế nào và hiểu toàn bộ động lực phát triển phần mềm. Java sẽ tồn tại trong vòng 10 năm nữa, liệu Phyton có ở lại không, liệu PHP có được thay thế bằng .NET và Mono không?

Đây là quy mô lớn, câu hỏi chiến lược, câu trả lời sẽ cho phép bạn trở thành chuyên gia có giá trị cao trong lĩnh vực của mình, đồng thời có một bản sao lưu vững chắc (1 hoặc 2 ngôn ngữ) và biết khi nào nên chuyển từ nền tảng chính của mình.

IMHO, theo tất cả các ngôn ngữ hiện đại đang được phát triển mỗi ngày là một trong những vấn đề lớn nhất đối với toàn ngành. Chúng tôi có rất nhiều ngôn ngữ chưa phát triển, chưa phát triển và hầu như không có chuyên gia về chúng và những người lãng phí thời gian cho chúng hiếm khi là những chuyên gia thực sự trong 1 ngôn ngữ. Chủ yếu là họ viết mã đó là sự pha trộn của tất cả các ngôn ngữ và không có gì đúng. Đồng thời, số lượng năm nhân lực lãng phí cho các ngôn ngữ không chuẩn này có thể được sử dụng để cải thiện một số khung và thông số kỹ thuật cốt lõi.


2

Như những người khác đã chỉ ra, nhiều công nghệ mới xuất hiện để giải quyết các nhu cầu mới và do đó chúng giúp giải quyết các vấn đề nhất định dễ dàng hơn. Do đó, bạn nên luôn cập nhật và ít nhất là biết những gì đang diễn ra trong lĩnh vực của bạn và hiểu những công nghệ mới nào phù hợp với bạn.

Mặt khác, tôi nghĩ rằng đôi khi cũng có một yếu tố cường điệu trong một số đổi mới nhất định: Một số ý tưởng đã rất cũ nhưng chỉ trong những năm gần đây, chúng đang được thúc đẩy để trở thành xu hướng. Đôi khi tôi có ấn tượng rằng một ngôn ngữ lập trình mới (hoặc một phiên bản mới) bị đẩy chỉ vì "mới là tốt hơn" và một công nghệ mới có nghĩa là sách mới, công cụ lập trình mới, trình biên dịch mới, khóa học lập trình mới, hay nói cách khác, doanh thu.

Vì vậy, có thể xảy ra việc bạn phải học một công nghệ mới mà không thấy bất kỳ lợi thế thực sự nào so với công nghệ bạn đã sử dụng trước đây, nếu không, bạn có nguy cơ bị loại khỏi thị trường vì kỹ năng của bạn có vẻ lỗi thời . Tùy thuộc vào bạn để theo dõi sự phát triển của các công nghệ mới và cố gắng hiểu những công nghệ nào có thể giúp bạn làm việc hiệu quả hơn và những công nghệ nào thuận tiện để làm cho CV của bạn trông đẹp hơn.

Điểm mấu chốt: Tôi nghĩ bạn nên cố gắng học những gì bạn thực sự thấy hữu ích, bất kể nó mới hay cũ.


2

Bởi vì "gắn bó với những gì bạn biết" đại diện cho một thất bại để "trở nên tốt hơn về nó". Bạn không cần phải áp dụng mọi thực tiễn và khuôn khổ mới đi kèm nhưng ít nhất bạn nên có một ý kiến ​​có căn cứ về những điều phổ biến. Trong phát triển web chỉ cần đặt câu hỏi sẽ trông khủng khiếp đối với một người phỏng vấn. Web dev tràn ngập những xác chết nghề nghiệp của những người muốn ngừng học hỏi những thứ mới sau năm 2000 và đó là điều nên làm vì họ tạo ra nhiều công việc hơn cho phần còn lại của chúng tôi. Tránh xa dev nếu nó không làm bạn quan tâm. Đó là tỷ lệ $ / giờ tệ hại nếu phần mà bạn học các công cụ mới cảm thấy như công việc.


Bởi vì "gắn bó với những gì bạn biết" thể hiện sự thất bại trong việc "cải thiện nó".: Một cách để đọc điều này là bằng cách gắn bó với cùng một công nghệ trong một thời gian dài hơn, bạn sẽ có kiến ​​thức sâu hơn về nó, trong khi nhảy từ một công nghệ cứ sau hai hoặc ba năm tới sẽ chỉ cho phép bạn có kiến ​​thức hời hợt, tức là bạn sẽ không bao giờ thực sự quen thuộc với bất kỳ ai trong số họ.
Giorgio

Tôi sẽ không hiểu JavaScript cũng như tôi làm nếu tôi không phân nhánh một chút và hiểu nó từ góc độ về cách các ngôn ngữ khác thực sự hoạt động hoặc để mắt đến các khái niệm thực tiễn tốt nhất hiện nay và khám phá những gì mọi người đang làm mui xe của khuôn khổ và thư viện của họ. Tôi không nghĩ rằng thực sự có thể cải thiện như một nhà phát triển ở mức hợp lý nghề nghiệp mà không cần tiếp xúc thường xuyên với các ý tưởng mới.
Erik Reppen

Reppen: Tôi hoàn toàn đồng ý với bạn về điều này.
Giorgio
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.