Làm thế nào để trở thành một chuyên gia về Python, PHP và Javascript? [đóng cửa]


8

Vì vậy, tôi đã lập trình được khoảng 9 tháng nay và tôi đã tự học một số Python, một số PHP và một số Javascript.

Tôi muốn trở nên tốt hơn ở những ngôn ngữ này - tôi có thể hack thứ gì đó, nhưng rất nhiều thứ như OOP, sử dụng danh sách theo những cách hiệu quả nhất, v.v., đã bị mất đối với tôi.

Những cách tốt nhất để trở thành một lập trình viên "chuyên gia" là gì? Nó phụ thuộc vào sắc thái của ngôn ngữ, hay nói chung hơn? Có môn toán nào tôi nên học cùng với nó không? Rõ ràng rất nhiều phụ thuộc vào những gì bạn muốn làm với nó - cho đến nay tôi hầu như đã thực hiện các ứng dụng nội bộ quy mô nhỏ cũng như lập trình web. Làm thế nào để tôi tìm hiểu về thiết kế chương trình tốt?


1
Xin chào Andrew, tôi xin lỗi vì điều này đã được di chuyển ở đây một cách không cần thiết, nhưng phạm vi này quá rộng để phù hợp với kiểu hỏi đáp của Stack Exchange.

1
tiếp tục hack trong khoảng 111 tháng nữa ...
Steven A. Lowe

Câu trả lời:


16

Giải pháp duy nhất là Kinh nghiệm . Bạn sẽ trở thành một chuyên gia khi bạn sẽ mã hóa rất nhiều (như thực sự rất nhiều ) trong các ngôn ngữ này. Phát triển các dự án sẽ khiến bạn phải đối mặt với các vấn đề, vì vậy bạn sẽ phải tìm giải pháp và một ngày nào đó bạn sẽ thấy đủ giải pháp cho các vấn đề mà bạn sẽ gọi cho mình là một chuyên gia .

Viết mã, đọc mã, xem lại mã, tất cả những điều này sẽ giúp bạn biết cách viết mã với một thiết kế tốt. Bạn không thể chỉ dựa vào một đoạn mã bạn thấy trên Internet để nói rằng bạn biết đâu là thiết kế tốt cho những gì bạn đang cố gắng đạt được. Bạn cần nhìn vào rất nhiều người trong số họ để biết đâu sẽ là giải pháp tốt nhất cho vấn đề của bạn.


10

Chuyên môn, giống như tình bạn, là một sản phẩm của thời gian. Trích dẫn yêu thích của tôi về chủ đề này (tôi quên nguồn):

"Phán đoán tốt là kết quả của kinh nghiệm. Kinh nghiệm là kết quả của phán đoán tồi."

Đặt giờ trong, nghiên cứu nghề của bạn. Phấn đấu không chỉ cho các giải pháp ngay lập tức, mà còn cho vẻ đẹp và hiệu quả.


1
+1 "không phải là giải pháp tức thời, mà là vẻ đẹp & hiệu quả"
Raynos

1
+1 Câu trích dẫn gói gọn ý nghĩa của trải nghiệm một cách hoàn hảo. :)
Daveo

3

Trước hết, điều quan trọng là phải hiểu lập trình ở cấp độ bất khả tri. Biết các nguyên tắc, khái niệm, phương pháp và như vậy sẽ giúp bạn về lâu dài. Dưới đây là một số liên kết đến một số cuốn sách hay để giúp bạn:

Sách:

Chỉ cần nhớ khi bạn hôn cũng sẽ khô ráo hơn nếu bạn muốn có một mối quan hệ vững chắc hơn với lập trình. :)


1

1) Bạn đang ở đúng nơi. Các diễn đàn cộng đồng như trao đổi ngăn xếp là một cách tuyệt vời để tìm kiếm thông tin.

2) Tìm ra OOP trước khi tiếp tục. Đó là một điều cần thiết trước khi chuyển từ kịch bản sang phát triển nâng cao hơn. net.tutsplus.com là một trang web tốt để tham khảo và tôi đã tìm thấy hướng dẫn này tại đây: http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/

3) Khi bạn đã học OOP và thực hành sử dụng nó, hãy tải xuống một khung với tài liệu tốt và làm theo hướng dẫn "Bắt đầu" (khung là tập hợp các công cụ giúp bạn phát triển ngôn ngữ nhanh hơn). Symfony là một ứng dụng tốt cho PHP và bạn có thể làm theo hướng dẫn tại đây: http://www.symfony-project.org/getting-started/1_4/en/ . Họ cũng có một hướng dẫn "Jobeet" để bạn làm theo cùng với

4) Cùng với # 3, tìm hiểu mẫu MVC (Model View Controller). Đây là một mẫu lập trình phổ biến được sử dụng trong nhiều khung khác nhau. Đó là điều bắt buộc nếu bạn muốn chuyển từ người mới bắt đầu sang trung cấp.

Chúc may mắn!


Oh và waring công bằng - Rất nhiều trong số những món đồ mà tôi đã liệt kê không thể học được trong một ngày bởi người mới bắt đầu. Sẽ mất một chút thời gian và thực hành, vì vậy đừng nản lòng.
Greg H

Tôi không đồng ý với điểm 3. Tư vấn cho ai đó kiểm tra và sử dụng khung sẽ không giúp họ tự học lập trình. Liên quan đến điểm 4, chỉ MVC là một khái niệm có ý nghĩa trên web chứ không phải là một mẫu.
Daveo

Đúng, một khung sẽ không giúp bạn cải thiện ngôn ngữ, nhưng nó sẽ giúp bạn phát triển tốt hơn nói chung. Nó cũng cung cấp một cách để tìm hiểu các tiêu chuẩn ngành để phát triển web.
Greg H

1
Và php và python chủ yếu được sử dụng cho các công nghệ web, vì vậy tôi cho rằng đây là nơi anh ấy đang bắt đầu. Đây là một mô hình kiến ​​trúc rất tốt để học nếu bạn đang thực hiện phát triển web.
Greg H

@Daveo một khung là một hướng dẫn để giúp bạn đi đúng hướng. Ban đầu, thật khó để viết mã chính xác mà không sử dụng một số loại cơ chế hướng dẫn. Một khuôn khổ là một người đàn ông nghèo thay thế cho một người cố vấn thực sự. Đó là bánh xe huấn luyện của bạn trên chiếc xe đạp của bạn, một khi bạn cảm thấy thoải mái, bạn ngừng sử dụng khung và thực hiện đúng cách
Raynos

1

Làm việc trên một dự án mã với các lập trình viên giỏi hơn bạn

Protip: điều này dường như hoạt động cho bất cứ điều gì bạn muốn cải thiện, không chỉ là mã!

Nhưng nghiêm túc, nếu bạn có thể tìm thấy những người tài năng sẵn sàng nói với bạn khi bạn làm sai, hãy cố gắng thực hiện một dự án với họ.

Đọc những điều được viết bởi các lập trình viên giỏi hơn bạn

Daveo liên kết với một số cuốn sách tốt. Bạn cũng có thể tìm thấy nhiều blog được viết bởi những người quan tâm đến việc trở thành lập trình viên giỏi hơn (và bản thân họ thường là những lập trình viên khá tuyệt vời).


0

Trở thành một lập trình viên chuyên gia có lẽ là một khả năng chung để lý luận và giải quyết các vấn đề lập trình, cả nhiệm vụ phổ biến và không phổ biến. Đây có thể là ngôn ngữ độc lập, nhưng tôi muốn nói rằng bạn cũng nên rất thành thạo với ít nhất một vài ngôn ngữ lập trình và công cụ của họ.

Không có công thức kỳ diệu để trở thành một chuyên gia, ngoại trừ công việc khó khăn: đọc hướng dẫn, google nhiều, lắng nghe chuyên gia, giải quyết vấn đề, viết mã nhiều, làm việc trong các dự án hiện có với người khác và thường có được nhiều kinh nghiệm trong thế giới thực .

Tất cả điều này là lời khuyên độc lập ngôn ngữ.


0

Tất nhiên có một số cách tiếp cận sẽ dẫn đến thành công. Như đã nói Kinh nghiệm là điều quan trọng nhất, nhưng nó phụ thuộc vào bạn cần bao nhiêu thời gian để gọi cho mình một chuyên gia. Tuy nhiên, thời gian sẽ được đo bằng năm hoặc thậm chí nhiều thập kỷ.

Tôi bắt đầu học lập trình 15 năm trước và tôi nghĩ rằng những cải thiện tốt nhất trong kỹ năng của tôi là do những lý do sau:

  1. Áp lực là xấu. Giữ một tâm trạng tốt và quên đi những vấn đề không thể giải quyết hôm nay chỉ để trở lại với họ vào ngày mai (và tự hỏi tại sao ngày hôm nay dường như quá phức tạp).

    Tôi bắt đầu lập trình khi tôi còn là một đứa trẻ và không ai bắt tôi phải học bất cứ điều gì. Đừng hiểu lầm tôi: Bạn không cần phải bắt đầu từ khi còn bé để thành thạo ngôn ngữ lập trình. Động lực rất riêng của bạn - mà không buộc bản thân phải đạt được một mục tiêu không thực tế trong một khoảng thời gian quá ngắn - sẽ là chìa khóa để thành công.

    Bạn cũng sẽ không phải viết hệ điều hành của riêng mình như Linus đã làm. Không ai mong bạn có một trang web thành công được hàng trăm người dùng truy cập mỗi ngày. Đoạn trích đơn giản về các dự án của bạn sẽ cho thấy (sếp của bạn, khách hàng của bạn, đồng nghiệp của bạn ...) rằng bạn biết những gì bạn làm.

  2. Bám sát một chủ đề cho đến khi bạn (gần như) thành thạo nó. Học những điều cơ bản.

    Làm chủ là một cái gì đó không thể đạt được. Không thể biết tất cả mọi thứ. Nhưng hãy chắc chắn để học những điều cơ bản, và đừng đánh giá thấp các khái niệm về ngôn ngữ lập trình, mô hình hoặc quy tắc cú pháp nhất định hoặc thực tiễn tốt nhất.

    Nhưng xin vui lòng: không chỉ chấp nhận nó nếu bạn nghe hoặc đọc KHÔNG BAO GIỜ hoặc LUÔN. Bất cứ khi nào ai đó nói về việc không bao giờ làm điều gì đó, đừng ngần ngại hỏi tại sao. Có một lý do tại sao có quy tắc. Nhưng chỉ có lý do sẽ cho bạn biết nếu nó là một điều tốt cho tình huống của bạn hay không. Điều gì là tốt trong một ngôn ngữ có thể là vấn đề trong ngôn ngữ khác.

  3. Cứ tiến về phía trước.

    Đừng ở cùng một chủ đề trong nhiều thập kỷ. Sau 10 năm Javascript, sẽ có rất ít người có thể dạy cho bạn một cái gì đó mới. Nhưng trong 10 năm nữa sẽ không có ai nói về Javascript ... tại sao? ah bây giờ bạn có tôi Dự đoán liên quan đến tương lai luôn dễ bị lỗi;)

    Tuy nhiên, sau vài tháng hoặc nhiều năm thu thập kinh nghiệm trong một lĩnh vực, bạn sẽ thấy rằng những thứ bạn học sẽ không nhiều như lúc bắt đầu "nhiệm vụ" của bạn. Sẽ có lúc mọi người bắt đầu yêu cầu bạn giúp đỡ khi họ gặp vấn đề (vấn đề thực sự, không phải xin vui lòng làm công việc bài tập về nhà của tôi).

    Đây là một chỉ số tốt cho thấy bạn đã trở thành một chuyên gia. Tại thời điểm này hãy tự hỏi nếu vẫn còn tiềm năng để phát triển bản thân. Hoặc có thể có một cái gì đó mới mà bạn muốn đặt tay lên, nhưng không ai cho phép bạn vì bạn chỉ là con gà hoàn hảo cho chiếc lồng này.

  4. Đi chơi với bạn bè, vợ, chó ...

    Nó sẽ cho tâm trí của bạn nghỉ ngơi. Các vấn đề như Android so với Iphone, Flash so với Silverlight, Ứng dụng so với chương trình ... sẽ trở thành vấn đề tốt nhất cho nhu cầu của bạn chứ không phải là trung tâm của sự tồn tại của bạn.

    Có một cuộc sống xã hội (mặc dù không gây nhiễu với Facebook) cũng sẽ giúp giữ hoặc thậm chí cải thiện các kỹ năng mềm của bạn. Nếu bạn biết cách khiến đồng nghiệp đồng ý với giải pháp tốt nhất (không nhất thiết là của bạn) có thể đáng giá hơn việc biết hàng trăm ngôn ngữ lập trình.

  5. Sử dụng bộ não của bạn

    Đừng viết cho tôi một lá thư trong 10 năm nói với tôi rằng tôi đã làm hỏng cuộc sống của bạn. Nếu bạn hài lòng với một chiến lược hoàn toàn khác hoặc tìm ra việc trở thành một nông dân hoặc tổng thống Hoa Kỳ thì đáng để bạn dành phần còn lại của thời gian: làm điều đó.


0

Tôi đề nghị trở thành một thành viên của trang web như Topcoder hoặc Usacogate , nơi bạn có thể từng bước tìm hiểu và giải quyết vấn đề thuật toán. Ví dụ, hoàn thành khóa đào tạo Usacogate sẽ không giúp bạn trở thành một chuyên gia khoa học máy tính, nhưng nó mang lại cho bạn rất nhiều kỹ năng để giải quyết nhiều vấn đề thực tế. Nó dạy bạn kiểm tra và yêu cầu bạn cung cấp các giải pháp hiệu quả.

Tuy nhiên, một lựa chọn khác để có thêm kinh nghiệm là học một ngôn ngữ của một mô hình khác. Ví dụ, Haskell là một ngôn ngữ lập trình chức năng. Học nó có thể giúp bạn tiếp cận vấn đề từ một quan điểm khác ngay cả trong các ngôn ngữ khác. Ví dụ, Python có thể được lập trình theo kiểu rất chức năng.


0

Trái với một số câu trả lời, kinh nghiệm không phải là yêu cầu duy nhất để trở thành một "chuyên gia". Tôi nghĩ rằng hầu hết mọi người trong mọi ngành công nghiệp (không chỉ lập trình) không trở thành chuyên gia trong lĩnh vực của họ. Họ trở nên có năng lực và hiệu quả, nhưng họ không trở thành bất cứ nơi nào gần như tốt nhất có thể.

Lý do là kinh nghiệm là không đủ. Bạn cần lời khuyên của chuyên gia. Bạn cần học cách làm mọi thứ từ một người là chuyên gia.

May mắn cho chúng tôi, có rất nhiều tài nguyên để lập trình viên trở thành chuyên gia. Có lẽ tốt nhất là sách. Một tài nguyên nổi bật khác là lập trình viên.StackExchange.

Dành phần lớn thời gian của bạn để viết mã, nhưng cũng dành một số thời gian để đọc và tích hợp kiến ​​thức từ các cuốn sách như Clean Code http://www.amazon.com/Clean-Code-Handbook-Software-Ccraft Skill / dp / 0132350882 . Bạn có thể tìm thấy những cuốn sách hay nhất bằng cách phân tích các đánh giá trên Amazon, kiểm tra trang web này và Stack Overflow.

Nếu bạn đầu tư đủ thời gian để tìm hiểu và sử dụng thông tin trong 2 hoặc 3 cuốn sách mỗi năm, nó sẽ giúp tăng đáng kể kỹ năng của bạn. Ngoài ra, tìm ra một cách để ghi lại và nhắc nhở bản thân về mọi thứ bạn học. Nếu không sẽ rất khó để thực sự biết và sử dụng thông tin.

Hãy chú ý đến các chủ đề mà các lập trình viên chuyên gia quan tâm: các mẫu thiết kế, kiểm thử đơn vị, lựa chọn nghề nghiệp, v.v. Hãy nhìn thế giới (hoặc ít nhất là công việc của bạn) từ quan điểm của một lập trình viên chuyên gia.

Khi bạn được giao một nhiệm vụ để viết mã, hãy dừng lại và suy nghĩ về nó một chút. Hãy tự hỏi mình một số câu hỏi. Tôi đã học được những gì có thể giúp tôi? Những rủi ro là gì? Đâu là cách tiếp cận lí tưởng nhất? Một số thuật toán khác nhau tôi có thể sử dụng là gì? Sẽ mất bao nhiêu thời gian để chương trình thực hiện? Điều gì có khả năng là nút cổ chai CPU? Những chức năng có thể thay đổi hoặc được thêm vào?

Hi vọng điêu nay co ich.

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.