Kết hợp hiệu ứng Einstellung [đóng]


17

Các Einstellung Hiệu lực thi hành đề cập đến "khuynh hướng của một người để giải quyết một vấn đề được đưa ra trong một cách cụ thể mặc dù có 'tốt' hoặc các phương pháp thích hợp hơn giải quyết vấn đề."

Là một lập trình viên có nhiều kinh nghiệm, làm thế nào một người có thể chống lại xu hướng này để luôn tiếp cận giải quyết vấn đề từ những con đường "đã thử và đúng" từ kinh nghiệm trong quá khứ?

Để đưa ra hai ví dụ cụ thể, tôi đã xây dựng các ứng dụng web trong một thời gian dài, đủ lâu để sử dụng rộng rãi các khung Javascript (ví dụ jQuery) và các khung ứng dụng web tốt hơn (ví dụ ASP.NET MVC). Nếu tôi có công việc của khách hàng trong thời gian khủng hoảng hoặc các vấn đề cấp bách từ miền vấn đề hoặc quy tắc kinh doanh, tôi có xu hướng chỉ sử dụng những gì tôi biết để cố gắng đạt được giải pháp. Điều này liên quan đến những thứ rất xấu như

document.getElementById 

hoặc sử dụng ASP.NET với các điều khiển ràng buộc mẫu (DataList / Repeater) thay vì tìm ra cách tìm kiếm lại mọi thứ với cách tiếp cận ASP.NET MVC.

Một kỹ thuật tôi đã sử dụng trong quá khứ là có các dự án cá nhân tồn tại đơn giản để khám phá những công nghệ mới này nhưng điều này rất khó để duy trì. Những cách tiếp cận khác có thể được đề nghị?


Bạn có làm việc một mình không?
Apalala

3
hãy cẩn thận về bandwagon "MVC", nó có chỗ đứng của nó. Nếu một giải pháp Webforms hoạt động thì hãy để nó.
Darknight

Câu trả lời:


4

Đâ là một câu hỏi tuyệt vời. Và tôi nghĩ rằng không chỉ các lập trình viên cao cấp gặp phải vấn đề này - giải quyết nó sớm có thể là một cách tuyệt vời để người học tăng tốc phát triển kỹ năng của họ.

Có hai mặt của vấn đề này - một mặt xấu và một mặt thực sự tốt .

Xấu - Chọn sai giải pháp

Dưới đây là một ví dụ - như một nhà phát triển có kinh nghiệm, bạn có thể chỉ thực sự giải quyết được hai vấn đề trước đây, vấn đề MộtB . Tại thời điểm này, bạn biết có những vấn đề bạn không biết, nhưng với ống kính của kinh nghiệm của riêng mình, rất nhiều những gì bạn nhìn thấy trông giống như nó có thể là một hoặc B .

Cùng đến một vấn đề mới. Để bạn, vấn đề này ngoại hình mới như vấn đề Một , vì vậy bạn giải quyết nó theo cách bạn thường giải quyết Một . Một cái gì đó không cảm thấy đúng, và nó mất nhiều thời gian, và khi bạn làm việc bạn kết thúc nhận ra đây là một vấn đề mới, C . Đó là một biến thể của A mà bạn không biết đã tồn tại.

Vậy bạn phải làm gì để không phạm sai lầm này nữa? Hai điều:

  1. Tìm hiểu những gì khác nhau về vấn đề mới này. Chỉ ra những cách tiếp cận có thể đã làm việc khác nhau và tại sao.
  2. Danh mục vấn đề này đi và chuyển sang giải quyết nhiều vấn đề mới.

Điều này sẽ giúp bạn tự nhiên giải quyết vấn đề này. Tại thời điểm bạn có 10 năm kinh nghiệm, bạn đã quen thuộc với các vấn đề từ A đến Z và tiết mục giải pháp của bạn rất rộng.

Tốt - Hiệu quả

Trong thế giới thực, với thời hạn và nguồn lực hạn chế, sử dụng những gì bạn biết không phải lúc nào cũng xấu:

  1. Khi bắt đầu quá trình giải quyết vấn đề, bạn so sánh vấn đề mới với tất cả các vấn đề bạn biết.
  2. Bạn sẽ cố gắng nhận ra các dấu hiệu và quyết định xem vấn đề này sẽ như thế nào.
  3. Nếu không thể thực hiện một trận đấu 100%, một nhà phát triển có kinh nghiệm sẽ cân nhắc rủi ro dành nhiều thời gian hơn để khám phá trước những rủi ro của việc thực thi có thể thiếu sót. Nếu nguy cơ lãng phí thời gian quá cao, thì bạn chỉ cần tiếp tục với những gì bạn biết.

Đó không phải là điều xấu - đó là sử dụng phân tích rủi ro để chọn hiệu quả trên độ chính xác 100%. Nó được thực hiện mỗi ngày và tất cả chúng ta sẽ bị trói buộc vào những thứ không đưa chúng ta đến bất cứ nơi nào nếu chúng ta không làm điều đó.

Để trả lời câu hỏi của bạn:

Là một lập trình viên có nhiều kinh nghiệm, làm thế nào một người có thể chống lại xu hướng này để luôn tiếp cận giải quyết vấn đề từ những con đường "đã thử và đúng" từ kinh nghiệm trong quá khứ?

  1. Tiếp tục tìm kiếm và lập danh mục các vấn đề mới
  2. Nhận tốt hơn trong việc lựa chọn giải pháp phù hợp cho vấn đề; thay vì chỉ biết giải pháp nào, hãy biết tại sao nó đúng.
  3. Thực hành và trau dồi kỹ năng ra quyết định của bạn . Đôi khi hiệu quả là sự lựa chọn đúng đắn và việc nhận ra những thời điểm đó sẽ tốt hơn sẽ dẫn đến những lợi thế trong thế giới thực.

Tôi thích câu trả lời này, cảm ơn vì đã đặt thời gian.
David ở Dakota

9

Dành 20% thời gian làm việc của bạn để cải thiện kỹ năng của bạn / làm mọi việc ngay thay vì nhanh chóng. Nếu không, bạn từ từ bắt đầu tụt lại phía sau. Điều này có thể có nghĩa là bạn sẽ hoàn thành công việc ít hơn trong ngắn hạn, nhưng về lâu dài, khoản đầu tư đó sẽ được đền đáp.

Phần khó là chống lại áp lực để cắt góc trên này. Cho đến khi thói quen ăn sâu, đừng cắt góc đó. Khi bạn đang ở thời điểm mà bạn coi khoản đầu tư này vào các kỹ năng của mình là "bình thường", thì bạn có thể chọn thỉnh thoảng lướt qua một dự án. Trong khi đó, đừng xem xét thời gian này là tùy chọn và hình thành ước tính của bạn cho phù hợp.


2
nếu bạn có thời gian cho nó, hãy tăng 20%. Tôi thậm chí còn chưa có kinh nghiệm, nhưng tôi đã nhận ra điều này: làm đúng luôn luôn có kết quả cuối cùng. Ngoài ra, bạn càng hiểu biết nhiều về việc làm đúng, bạn sẽ càng nhanh chóng hoàn thành đúng và cuối cùng (đó là điều tôi hy vọng; P) cả hai sẽ hợp nhất với nhau và bạn sẽ có thể làm được mọi thứ đúng VÀ VÀ Nhanh.
stijn

btw những gì xảy ra với tôi thường xuyên hơn không: bắt đầu một cái gì đó, biết rằng nó không hoàn toàn đúng, sau đó 2 ngày sau đó mất một khoảng thời gian điên rồ bởi vì điều mà tôi biết là sai ngay từ đầu bây giờ cần tái cấu trúc để làm cho đúng, sau đó tất cả.
stijn

1
Hoặc 50% khi công việc ở mức thấp, hoặc thậm chí nhiều hơn giữa các dự án. Không có gì tôi từng nghiên cứu đã bị lãng phí. Tất cả đã được sử dụng sớm hơn sau đó, ngay cả khi chỉ có ý kiến ​​được thông báo khi có vấn đề.
Apalala

5

Phát triển phần mềm, theo quan điểm của tôi không phải lúc nào cũng là tìm kiếm giải pháp tuyệt đối * tốt nhất *, mà là hoàn thành công việc. Vì vậy, có thể nếu bạn không luôn luôn giải quyết vấn đề theo cách tốt nhất, đó không phải là ngày tận thế.

Tuy nhiên, nếu bạn cảm thấy rằng làm mọi thứ theo cách tốt nhất là quan trọng, thì tôi nghĩ rằng đặt cược tốt nhất sẽ được phát triển như là một phần của một nhóm. Thảo luận về thiết kế và làm mã đánh giá với các đồng nghiệp. Vì mọi người thường có nền tảng và sở thích khác nhau, giữa hai hoặc ba người, bạn nên có một số cách giải quyết vấn đề và giải pháp khác nhau.


Giữ cho bản thân bận rộn với công việc thường xuyên có nghĩa là giữ cho bản thân năng suất như anh chàng đã học được công nghệ "tốt nhất" tiếp theo. Tôi sắp tính ba thập kỷ cho thương mại, và hầu hết những gì tôi nhớ về tất cả là học tập, nghiên cứu và nghiên cứu nhiều hơn nữa.
Apalala

+1 cho lập trình (ít nhất là lập trình chuyên nghiệp) là về viết mã hoàn thành công việc thay vì mã hoàn hảo về mặt lý thuyết, đó là một tác phẩm nghệ thuật.
jwenting

3

Là một lập trình viên có nhiều kinh nghiệm, làm thế nào một người có thể chống lại xu hướng này để luôn tiếp cận giải quyết vấn đề từ những con đường "đã thử và đúng" từ kinh nghiệm trong quá khứ?

Tái cấu trúc thường xuyên. Tái cấu trúc yêu cầu chúng tôi xem xét kỹ mã mà chúng tôi đã viết trong quá khứ. Chúng ta có thể sử dụng thời gian này để xem mã cũ với một phối cảnh mới. Miễn là bạn theo kịp các thay đổi công nghệ lớn, người ta có thể cập nhật khi bạn thấy cần thiết.

Nếu tôi có công việc của khách hàng trong thời gian khủng hoảng hoặc các vấn đề cấp bách từ miền vấn đề hoặc quy tắc kinh doanh, tôi có xu hướng chỉ sử dụng những gì tôi biết để cố gắng đạt được giải pháp.

Tốt Bạn đang tập trung vào nhu cầu của khách hàng hơn là mục tiêu của riêng bạn. Con đường để đi.

Điều này liên quan đến những thứ rất xấu như

document.getEuityById

hoặc sử dụng ASP.NET với các điều khiển ràng buộc mẫu (DataList / Repeater) thay vì tìm ra cách tìm kiếm lại mọi thứ với cách tiếp cận ASP.NET MVC.

Không có gì sai với Webforms. MVC không có nghĩa là để thay thế Webforms. Đây không phải là thời gian để tìm hiểu một công nghệ mới. Nhớ hình tam giác. Tái cấu trúc khi bạn có thời gian. Ngoài ra, xem tuyên bố đầu tiên.

Một kỹ thuật tôi đã sử dụng trong quá khứ là có các dự án cá nhân tồn tại đơn giản để khám phá những công nghệ mới này nhưng điều này rất khó để duy trì. Những cách tiếp cận khác có thể được đề nghị?

Cái gì khó duy trì? Hy vọng rằng bạn không duy trì các dự án được thiết kế để bạn học hỏi. Nếu vậy, ném các dự án mẫu đi. Không có gì sai khi tạo một dự án cho mục đích học tập. Đây là một điều rất tốt. Xem tuyên bố đầu tiên.

Đã thử và đúng! = Xấu. "Hiệu ứng Einstellung" được đưa ra khỏi bối cảnh ở đây. Các thử nghiệm đề cập đến những người tối ưu hóa "mở một cái lọ". Phương pháp "mở bình" của mọi người bị hạn chế và không tăng cường theo thời gian (không bao gồm bất kỳ nội dung Sci-Fi nào). Trong phần mềm, cách tốt nhất để "đạt được nhiệm vụ X" không thay đổi theo thời gian.


2

Một cái gì đó giúp suy nghĩ bên ngoài hộp là có một thực tế thực tế để làm điều đó. Edward De Bono đã viết nhiều cuốn sách về tư duy bên và các chủ đề liên quan.

Nhưng tại bất kỳ điểm quyết định nào, điều quan trọng nhất là đánh giá và chấp nhận rủi ro. Waltzing with Bears của De Marco và Lister là một trong những cuốn sách hay nhất về chủ đề này khi áp dụng vào phát triển phần mềm.

Lập trình cực đoan và các phương pháp nhanh nhẹn khác đề xuất rằng người ta chỉ nên tiếp tục và thử nghiệm các giải pháp (tăng đột biến) mới như một vấn đề thường xuyên. Tôi làm thí nghiệm với các công nghệ khác nhau trong quá trình khởi động dự án, và điều đó đã giúp tôi tiết kiệm nhiều lần khỏi việc bị thổi phồng vì sự thật và đã cố gắng, và đôi khi để khám phá ra một viên ngọc công nghệ mới.


1

Là một nhóm, bạn có thể thay đổi nhóm bằng cách nhận ra sự tuyệt vời của mô hình. Tôi thường sử dụng người mới cho việc này, vì họ không bị cuốn vào cách làm việc bình thường. Đây có phần là một câu trả lời của người quản lý - nhưng ngay cả khi là một kỹ sư giàu kinh nghiệm, tôi nghĩ bạn có thể nhận ra rằng quan điểm của người khác có thể ít sai lệch hơn và vì vậy hãy cân nhắc với một thứ hạng ít nhất là nặng như ý kiến ​​của bạn (thậm chí có thể nhiều hơn).


1

Bạn có chắc chắn rằng đó không chỉ là những gì bạn sẽ đặt thay vì tài liệu.getEuityById thực sự là một sự lãng phí thời gian cho dù bạn có thích nghi với nó như thế nào?

Chỉnh sửa: Tôi mới nhận ra, cả hai ví dụ của bạn đều là về các công cụ, điều này có thể là do bạn coi việc thay đổi công cụ của mình là cột mốc lớn nhất trong sự phát triển kỹ năng của bạn. Một lập trình viên giỏi cần ít hơn một ngôn ngữ hoàn chỉnh Turing để làm việc kỳ diệu của mình, điều đó không có nghĩa là các công cụ không quan trọng, nhưng những gì bạn đang sử dụng không hẳn là một công cụ dưới cùng. Nếu việc chuyển từ công cụ này sang công cụ khác là tiến bộ lớn nhất mà bạn có thể nghĩ đến thì có thể là về cơ bản bạn đã bị đình trệ trong các khu vực ít định lượng hơn.


1
Tôi không chắc ý của bạn là gì; Tôi đã đề cập đến việc sử dụng các bộ chọn jQuery như một cách tiếp cận tốt hơn. Sử dụng DOM thẳng hoạt động tốt, nhưng jQuery là một cách tiếp cận tốt hơn nhiều. Vì vậy, để rõ ràng, cả hai công việc, một đơn giản là tốt hơn so với người khác.
David ở Dakota

1
Vâng, $("#id")ngắn hơn, nhưng cuối cùng chỉ là một bí danh document.getElementById("id")với một số chi phí trên đầu. Bạn có biết rằng nó sẽ cải thiện quy trình làm việc của bạn? Hoặc bạn vừa được thông báo rằng jQuery tốt hơn rất nhiều lần mà bạn tin nó?
aaaaaaaaaaaa

1
@eBusiness - Bạn có biết rằng $("#id")cuối cùng chỉ là bí danh cho document.getElementById("id")? Hay bạn vừa được nói rằng rất nhiều lần bạn tin điều đó? Tôi hy vọng rằng mỗi khi bạn sử dụng, getElementByIdbạn nhớ xử lý trường hợp IE và Opera trả về các phần tử theo tên thay vì trường hợp khi Blackberry 4.6 trả về các nút không còn trong tài liệu.
Nick knowlson

Nếu bạn đang sử dụng cùng một mã định danh cho tên và id của các đối tượng khác nhau hoặc mã của bạn không thể 'nhớ' những đối tượng mà nó đã xóa thì sử dụng jQuery là thực tế. Nếu không, nó chẳng là gì ngoài việc làm giảm tốc độ mã của bạn xuống. Tôi không nói rằng những gì jQuery làm là sai, nhưng nó không tốt hơn cho mọi mục đích.
aaaaaaaaaaaa

1
Tôi biết rằng tôi đã châm ngòi cho điều này, nhưng tôi nghĩ rằng chúng ta đang di chuyển quá xa vào một jQuery so với JavaScript flamewar.
aaaaaaaaaaaa

1

Là một lập trình viên có nhiều kinh nghiệm, làm thế nào một người có thể chống lại xu hướng này để luôn tiếp cận giải quyết vấn đề từ những con đường "đã thử và đúng" từ kinh nghiệm trong quá khứ?

Tự giác

Hãy nhận biết xu hướng, điểm yếu và điểm mạnh của bạn.

Quyết định có ý thức

Đưa ra quyết định của bạn rõ ràng và có ý thức. Đừng nhảy để làm một cái gì đó mà không có ý nghĩ về cách bạn sẽ làm nó.

Học và áp dụng

Tiếp tục tìm hiểu các kỹ thuật mới và xem xét nơi chúng có thể được áp dụng. Khi bạn gặp phải tình huống có thể áp dụng, hãy phân tích lợi ích chi phí. Đôi khi lợi ích cho việc thử một cái gì đó mới vượt xa lợi ích của một giải pháp đã biết.

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.