Một lập trình viên mới có nên tập trung vào một công nghệ duy nhất cho đến khi anh ta thành thạo nó không? [đóng cửa]


10

Ok, tôi đã dạy cho một người bạn cách lập trình một lúc rồi. Anh ấy là một người học rất nhanh, và anh ấy khá giỏi lập trình cho đến nay. Tuy nhiên, anh ấy có một "vấn đề" tôi tiếp tục cố gắng sửa.

Anh ta nhảy vào và bắt đầu lập trình highlevel mà không học một số điều cơ bản (Anh ta đã tạo ra một ứng dụng web đầy đủ nhưng vẫn không biết phân trang hoặc quản lý phiên).

Đây không phải là vấn đề mặc dù. Anh ta tiếp tục nhảy vào công nghệ mới (Node.js, MongoDB, EC2, v.v.). Tôi đã cố nói với anh ta rằng anh ta nên tìm hiểu một số điều cơ bản về RDMS mà anh ta lựa chọn (MySQL) khi anh ta sử dụng nó hàng ngày trước khi đầu tư nhiều thời gian vào việc học những điều cơ bản của MongoDB (Và có lẽ sẽ chuyển sang một thứ mới).

Tôi có phải là người sai ở đây không, hay anh ta nên cố gắng tập trung vào một việc tại một thời điểm và thực sự giỏi về nó?


6
Âm thanh như một cơ hội tốt để yêu cầu ứng dụng web của anh ấy hỗ trợ các phiên và phân trang. Điều đó có khiến anh ấy học nó không?

Ngoài ra đơn công nghệ nên được học?

@ ThorbjørnRavnAndersen Không phải là một công nghệ đơn lẻ, nhưng ngăn xếp LAMP là thứ anh ta làm việc hàng ngày. Tôi nghĩ rằng anh ta nên tìm hiểu tất cả những điều cơ bản / có liên quan đến chi tiết công việc của mình về MySQL, Apache, PHP và JavaScript.
Brandon Wamboldt

1
Sau đó, về cơ bản bạn đã trả lời câu hỏi của riêng bạn bằng "không".

1
Có phải anh ấy đã học nhiều công nghệ như web, cơ sở dữ liệu, v.v. không? Giới hạn của những gì tạo nên một công nghệ ở đây là gì?
JB King

Câu trả lời:


18

Cá nhân, tôi nghĩ rằng có thể là một ý tưởng tuyệt vời để lấy mẫu các công nghệ và ngôn ngữ khác nhau khi học lập trình. Tập trung vào một công nghệ có lợi ích rõ ràng là làm cho bạn rất giỏi về nó, nhưng nhược điểm rõ ràng là chỉ biết một công nghệ duy nhất.

Nhưng tôi nghĩ nhược điểm tinh vi quan trọng hơn là ngôn ngữ và khuôn khổ thường đi kèm với một ý thức hệ. Có nhiều lập trình viên (có thể là hầu hết các lập trình viên) chỉ áp dụng một ý thức hệ trong mọi thứ họ lập trình. Điều này thường là do họ đã học được một khung trong một ngôn ngữ thực sự tốt và bây giờ họ không thể nhìn thấy bất cứ điều gì mà không có kính bảo hộ trên.

Đặc biệt đối với một người chỉ học lập trình, tôi thực sự không nghĩ rằng đó là vấn đề muốn thử những gì ở ngoài đó, và chờ đợi để tập trung vào một cái gì đó cho đến sau này. Rốt cuộc, sẽ rất khó để viết bất cứ điều gì đáng kể mà không biết một công nghệ tốt.


2
+1 cho đoạn thứ hai. Tôi nói thêm rằng việc xem xét các ngôn ngữ, khung và API khác nhau có thể dạy cho bạn rất nhiều về lý do TẠI SAO các nhà thiết kế đã chọn triển khai một ngôn ngữ / khung / API nhất định theo cách họ đã làm. Giúp người học hiểu sâu hơn về lập trình và phần mềm nói chung. Ít nhất, imho
Jamie Taylor

+1 Có những tình huống bạn sẽ học cách tập trung, chẳng hạn như khi bạn có một công việc lập trình "thực sự". Nhưng làm thế nào để bạn có được một công việc nếu bạn chỉ được tiếp xúc với một khuôn khổ? Học cách viết một cái gì đó trong nhiều khung / thư viện để bạn có thể đệm CV của mình và cho thấy rằng bạn không thiên vị với một công nghệ cụ thể. ;-) Bạn có thể tìm hiểu những thứ như phân trang và sau này của RMDB khi bạn đã đạt được bối cảnh thực tế để làm như vậy.
Spoike

@Spoike Anh ấy có một công việc lập trình "thực sự", vì vậy lý do tôi cố gắng khiến anh ấy tập trung vào công nghệ anh ấy sử dụng hàng ngày cho công việc đó
Brandon Wamboldt

1
@RougeCoder: Cung cấp cho anh ta các nhiệm vụ phù hợp (trang danh sách khổng lồ này, các mục lọc, vẽ sơ đồ với các mẫu được nhóm, v.v.) để cho phép anh ta tìm hiểu cách thực hiện các khái niệm mà bạn muốn anh ta biết. Nếu không có những nhiệm vụ như vậy thì không có bối cảnh để anh ta làm cho kiến ​​thức đó gắn bó.
Spoike

1
Tôi đã từng nghĩ đó là BS, hoặc ít nhất là một sự cường điệu, khi mọi người nói những điều như "học lập trình chức năng khiến bạn nghĩ khác đi". Hóa ra, họ đã cắt giảm ảnh hưởng của nó đối với mã của bạn. Mã của tôi đã hoàn toàn khác và tôi chưa thành thạo với ngôn ngữ chức năng mà tôi chọn cũng như tôi đang cố gắng thay đổi cách viết mã. Nó thực sự là một mở mắt.
Steven Evers

5

Có lý do tốt về cả hai mặt của vấn đề này. Biết " đủ " về rất nhiều công nghệ khác nhau chắc chắn có giá trị. Biết " một chút " về rất nhiều công nghệ khác nhau? Không nhiều lắm.

Kiến thức sâu sắc về các công nghệ cụ thể chắc chắn có thể có giá trị - NẾU có nhu cầu liên tục cho chúng. Biết " mọi thứ cần biết " về một công nghệ cụ thể? ... hầu hết có thể là quá mức cần thiết.

Vì vậy, đó là tất cả trong sự cân bằng. Nếu anh ta kết thúc việc xây dựng các ứng dụng tuyệt vời với nosql, tại sao anh ta phải biết sự khác biệt giữa công cụ InnoDB và công cụ MyISAM?


Chà, sự khác biệt giữa InnoDB và MyISAM về cơ bản là các giao dịch. Nếu anh ta không hiểu các giao dịch, cơ hội nào để anh ta làm việc chính xác với các khái niệm như "tính nhất quán cuối cùng"?
Michael Borgwardt

Ân xá? Không ai nói anh ấy không hiểu các giao dịch, và những gì tôi viết không ngụ ý điều đó ở TẤT CẢ.
pbr

3

Tôi đồng ý một phần. Anh ta cần phải biết các nguyên tắc cơ bản - nhưng anh ta không cần phải ngồi xuống một điều và thực sự giỏi về nó. Không ai làm.

Ngồi xuống với một điều và trở nên thực sự tốt

Tôi hiện đang làm việc với C # và Microsoft XNA để tạo ra một trò chơi. Tôi đang tìm hiểu rất nhiều về XNA khi tôi đi, và trong khi tôi đã khá thành thạo với C #, kiến ​​thức của tôi đang mở rộng từng chút một (hôm nay tôi đã học về các ràng buộc về các tham số loại ).

Tuy nhiên, tôi không cần phải trở nên 'thực sự giỏi' tại XNA hoặc C #. Nếu tôi hoàn thành dự án của mình bây giờ và tiếp tục và không bao giờ sử dụng một trong những dự án đó nữa, tôi sẽ hoàn toàn hài lòng và việc học của tôi sẽ tiếp tục ở nơi khác.

Các nguyên tắc là quan trọng mặc dù

Ít nhất tôi hiểu các nguyên tắc cơ bản. Khi tôi tạo mọi thứ trong C # và XNA, tôi hiểu những gì tôi đang làm - và nếu tôi không, tôi tìm hiểu về nó.

Nếu tôi viết phân trang, tôi sẽ hiểu cách phân trang hoạt động. Nếu bạn của bạn tạo ra một số phân trang và không biết làm thế nào nó hoạt động, đó là một vấn đề. Nếu anh ta không tạo ra phân trang, không có lý do gì anh ta cần phải biết.

Vấn đề ở đây là: anh ta có biết @ $ #! Anh ấy đang làm, hoặc anh ấy là một lập trình viên không có ý tưởng làm thế nào để lập trình?


Bạn nâng điểm tốt. Vấn đề là, với một số thứ anh ta biết anh ta làm gì nhưng với những thứ khác anh ta không làm được (tôi nghĩ anh ta không muốn học nó nên anh ta tiếp tục sao chép nó từ các dự án khác). Ví dụ, anh ấy viết phân trang, tôi đã viết từng mảnh một, nhưng anh ấy vẫn không hiểu. Tôi biết anh ấy có thể hiểu nó, bởi vì đó là một khái niệm siêu đơn giản, và anh ấy đã làm những thứ phức tạp hơn nhiều.
Brandon Wamboldt

Vâng, và đó một vấn đề. Nếu anh ta viết mã, anh ta không hiểu mình là một lập trình viên sao chép và là một lập trình viên không biết mình đang làm gì.
doppelgreener

3

Tôi đoán anh ấy đang thử các ngôn ngữ khác bởi vì anh ấy có thứ gì đó anh ấy muốn xây dựng. Bạn luôn có thể quay lại ngôn ngữ hoặc khung và tìm hiểu thêm.

Có một ranh giới tốt giữa việc học lý thuyết / xây dựng nền tảng và cố gắng duy trì động lực.

Ít nhất anh ta không bị mắc kẹt trong một ngôn ngữ. Đôi khi bạn lấy cái tốt với cái xấu.


3

Tôi thấy thái độ của anh ấy như một tài sản hơn là một trách nhiệm pháp lý. Khả năng nghiên cứu của ông là trên trung bình. Đường cong học tập của anh cũng nông cạn. Tại sao không khai thác những đặc điểm này nếu bạn muốn anh ấy học được điều gì đó.

Tâm trí tò mò của anh ta luôn luôn di chuyển, tại sao không cung cấp cho anh ta hướng. Bắt đầu bằng cách nói với anh ấy tại sao phân trang là một điều quan trọng và cần thiết. Hãy để anh ta xem các trang web với phân trang và trang web mà không có những trang web.

Làm thế nào về việc đưa ra một lời chỉ trích mang tính xây dựng cho những gì anh ta đang làm. "Wow bạn đã làm một cái gì đó tuyệt vời, nhưng sẽ không tốt hơn nếu bạn làm theo cách này với sự nhấn mạnh vào tối ưu hóa và thực hành tốt nhất.

Tôi nghĩ rằng làm một so sánh giữa một thực hành tốt và một thực hành xấu có thể thực sự kích thích tâm trí của anh ấy.

Đừng hạn chế anh ta, cuối cùng anh ta sẽ tìm thấy thứ gì đó anh ta muốn và giải quyết nó trong một thời gian. Nếu tôi là bạn, tôi cung cấp cho anh ấy rất nhiều tài liệu học tập về những điều anh ấy rất say mê.

Tôi nghĩ rằng anh ta đang thực hiện cách tiếp cận từ trên xuống trong khi mặt khác bạn muốn anh ta thực hiện một cách tiếp cận từ dưới lên


1

Tại sao nó xấu?

Ngược lại, tôi nghĩ nó rất tốt! Nó cho thấy sự tò mò và ham học hỏi. Hơn nữa, anh ấy muốn tìm công cụ phù hợp cho công việc phù hợp! Tốt hơn là gắn bó với một công nghệ lựa chọn đầu tiên không đầy đủ. ;)

Trên thực tế, tôi làm điều đó tương tự, như một lập trình viên dày dạn. Và tôi khuyên bạn nên nó. Bất cứ khi nào tôi có một dự án mới, hành vi của tôi là như sau:

  1. khám phá (các công nghệ tiềm năng có thể hữu ích)
  2. thử nghiệm (với những thứ có vẻ hứa hẹn)
  3. chọn công nghệ của bạn (hoặc thử nghiệm thêm một chút cho đến khi bạn biết)
  4. bám sát nó (phát triển ứng dụng của bạn và kéo nó qua)

Tôi nghĩ rằng nó có ý nghĩa hoàn hảo.


1

Cá nhân, nếu ai đó chỉ phải tập trung vào một công nghệ, tôi sẽ nói đó phải là C # / Java, được sử dụng cùng với SQL.

Từ điều này, tôi tin rằng, bạn có thể thích nghi với bất kỳ công nghệ nào khác.

Nhưng gắn bó với một công nghệ có thể hạn chế nếu một chàng trai muốn bước vào môi trường công ty.

Lý tưởng nhất là một nền tảng hướng đối tượng, một nền tảng di động, một nền tảng web và sau đó có kiến ​​thức rất tốt về SQL (hoặc bất kỳ môi trường db nào khác).

Và những điều cơ bản trước, nếu không anh ấy sẽ bị mắc kẹt sau này!


0

Không tệ nếu anh ta là người mới bắt đầu lập trình.

Anh ta sẽ thấy một số thứ hoạt động như thế nào. Nhưng nếu anh ta không hiểu những gì anh ta đang làm thì tốt hơn là đừng làm điều đó.

Tôi gặp vấn đề với bản thân mình, tôi muốn biết tất cả Java, C, C ++, C #, Phyton, ASP.NET ... vv nhưng tôi nhận ra tôi không thể biết tất cả, vì vậy tôi tập trung vào vài thứ và nó rất nhiều tốt hơn.

Vậy anh ta nên làm gì (khuyên anh ta):

  1. Hãy suy nghĩ những gì bạn muốn làm
  2. Khám phá tất cả các tùy chọn
  3. Tìm những gì phù hợp với bạn
  4. Học nó
  5. Không ngừng học hỏi

Tôi sẽ không đồng ý với @arnaud nếu bạn luôn khám phá và tìm hiểu những thứ mới khi một dự án mới ở trước mặt bạn (cũng không hoàn toàn). Mất quá nhiều thời gian để khám phá và học hỏi những thứ mới hết lần này đến lần khác và một số dự án có giới hạn thời gian. Nhưng mặt khác, nếu bạn cần học một số thứ mới đơn giản thì cũng được thôi: D.


0

Tôi đồng ý với bạn, đôi khi dễ dàng có được kiến ​​thức hời hợt về một khuôn khổ hoặc công nghệ hoặc ngôn ngữ cụ thể, nhưng để có được sự hiểu biết thực sự tốt nhất để tham gia vào sự phát triển trong thế giới thực để hoàn thành và duy trì nó - trở thành một người khác đến để được tư vấn. Tốt nhất là trở thành một jack của tất cả các giao dịch, làm chủ một giao dịch thay vì chỉ là một jack của tất cả các giao dịch, chủ của không có giao dịch nào . Có nói rằng, tôi sẽ không ngăn cản anh ta học những thứ mới bởi vì anh ta rõ ràng có một mức độ nhiệt tình tố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.