Đạt trạng thái lập trình trung gian [đã đóng]


32

Tôi là một kỹ sư phần mềm có lập trình vị trí trong VBA (mặc dù tôi không dám xem đó là trải nghiệm 'thực', vì nó là bản dùng thử và lỗi!), Perl w / CGI, C # và ASP.NET. Hai thứ hai là sau đại học, với lối vào 'thế giới thực' của tôi. Tôi mới ra trường được 2 năm và đã có 5 năm kinh nghiệm (tổng cộng) trên các ngôn ngữ tôi đã đề cập. Tuy nhiên, khi nói đến sơ yếu lý lịch của tôi, tôi chỉ có thể đặt 2 năm xuống cho C #, và chưa đến một năm cho ASP.NET.

Tôi cảm thấy như mình biết C #, nhưng tôi vẫn phải dành thời gian để đi 'Phương pháp này làm gì?', Trong khi một số kỹ sư cấp cao hơn có thể nói ngay: "Ồ, Phương pháp X làm điều này, mà không bao giờ nhìn vào đó phương pháp trước. " Vì vậy, tôi biết theo kinh nghiệm rằng có một vịnh ở đó, nhưng tôi không chắc chắn làm thế nào để bắc cầu. Tôi đã bắt đầu lập trình trong Project Euler và tôi đã chọn một cuốn sách về các mẫu thiết kế, nhưng tôi vẫn cảm thấy như mình dành mỗi ngày để giẫm nước, thay vì tiến về phía trước.

Điều đó không có nghĩa là tôi không cảm thấy mình đã tiến bộ, điều đó chỉ có nghĩa là cho đến khi tôi đến mỗi ngày, tôi vẫn nhìn thấy đỉnh núi cách xa.

Câu hỏi của tôi là: Làm thế nào bạn vượt qua cao nguyên này? nó đã mất bao lâu? Những phương pháp bạn có thể đề nghị để hỗ trợ tôi trong việc này?

Tôi đã đọc qua Code Complete , Tháng huyền thoạiCLR qua C #, phiên bản 2 - câu hỏi của tôi là: Tôi phải làm gì bây giờ?


Chỉnh sửa : Tôi chỉ tìm thấy câu hỏi này trong các dự án cho một lập trình viên trung cấp. Tôi nghĩ rằng nó thêm vào cuộc thảo luận (mặc dù nó không thay thế câu hỏi của tôi). Như vậy, tôi đang thêm nó vào câu hỏi dưới dạng "Để biết thêm thông tin".


2
Gần đây tôi đã chơi với Project Euler và nó chỉ bao gồm khá nhiều kỹ thuật hạn chế. Tất cả đều tối ưu hóa tốt chức năng bằng cách phân biệt hoặc lập trình động, nhưng nó sẽ không giúp bạn viết GUI hoặc ứng dụng web. Các bài toán khó được thiết kế để làm bài toán khó, không khó viết.

Rất vui, vì tất cả những điều đó: Tôi không có gì chống lại nó, nó chỉ không được thiết kế để giúp bạn học một ngôn ngữ ngoài các kiểu dữ liệu cơ bản, cấu trúc và có thể một vài kỹ thuật tối ưu hóa nếu như tôi muốn có giải pháp của bạn 0,1s nếu có thể.

@Gortok, tôi đồng ý rằng có nhiều điều cụ thể bạn có thể làm để nâng cao kỹ năng của mình, nhưng điều đó chắc chắn phụ thuộc vào loại chương trình bạn làm. Chẳng hạn, các nhà phát triển Windows cần các kỹ năng khác nhau từ các lập trình viên của các thiết bị nhúng. Tôi nghĩ rằng câu hỏi khi được hỏi thực tế là quá rộng để có được câu trả lời hay.
Nathan Fellman

1
Tôi đã lập trình từ năm 2 tuổi. Tôi đã thất bại trong việc trở thành lập trình viên hàng đầu thế giới, và bây giờ tôi ghét cuộc sống của mình. Tôi ước gì mục tiêu của tôi là trở thành ngôi sao khiêu dâm hàng đầu thế giới.

Bạn không cảm thấy mình tiến bộ vì trực giác của bạn đang nói với bạn về một khoảng cách giữa thực tiễn học tập và thực tiễn kinh doanh (thế giới thực). Và trực giác của bạn là chính xác. Thực hành học tập là tất cả về các vấn đề và bài tập nhỏ khép kín. Doanh nghiệp đang sửa một lỗi hoặc thêm một tính năng / trang web, v.v. vào một người khổng lồ (thông thường). Thực hành học thuật là đệ quy. Kinh doanh là dễ đọc và duy trì. Thực hành học thuật là toán và kiến ​​thức khoa học máy tính. Kinh doanh là kỹ năng con người, và phân tích yêu cầu nhiều như mã hóa. Sẽ đặt điều này như một câu trả lời nhưng Q đã bị đóng.
Brad Thomas

Câu trả lời:


41

Xin chúc mừng!

Từ mô tả của bạn, bạn một nhà phát triển trung gian.

Giai đoạn này sẽ kéo dài khoảng 3-8 năm, tùy thuộc vào sự sẵn lòng của bạn để tìm hiểu ở trên và ngoài vấn đề của thời điểm này

Để tăng tốc quá trình, đọc, lướt web, viết blog, đi đến các cuộc họp nhóm người dùng, tìm một người cố vấn, nghiên cứu độc lập, các dự án phụ về mã và vùi mình vào các công nghệ mới. Điều này có thể cạo một hoặc hai năm thời gian.

Hoặc bạn có thể có một cuộc sống bên ngoài lập trình ;-)

Nghiêm túc, duy trì hiện tại và hướng nội, nhưng tắt điều #% $ @ mỗi giờ và sau đó

Phụ lục: khi bạn đi ra ngoài, hãy nhớ mặc quần.


17
và hãy cẩn thận khi trích dẫn Tolkien, đó là một hobbit khó phá vỡ
Steven A. Lowe

1
Ông Lowe chơi tốt, chơi tốt.
kemiller2002

1
Nghiêm túc, có một cuộc sống bên ngoài lập trình. Một: có nhiều thứ để đời hơn mã. Hai: nhiều có thể được học từ các ngành khác.
kemiller2002

1
+1 - Hoàn thành tốt. Không có gì thay thế thực hành (hoặc một khiếu hài hước tốt).

15

Một trong những cách tốt nhất để lên núi là viết một cái gì đó cho chính mình vì bạn muốn. Các lập trình viên giỏi nhất có câu trả lời tuyệt vời cho câu hỏi 'chương trình thú vị nhất bạn viết trong thời gian rảnh rỗi là gì'. Nếu bạn không viết bất kỳ mã nào trong thời gian rảnh rỗi, bạn không yêu thích thủ công của mình đủ để cải thiện nó.


8
Tôi không thích lý thuyết này, Mọi người có công việc toàn thời gian và sau đó là các trách nhiệm khác. Không có trách nhiệm cho rằng những người không có dự án phụ không thích lập trình đủ hoặc là lập trình viên tồi. Như câu trả lời được chấp nhận, Có một cuộc sống bên ngoài lập trình.

10
Tôi không đồng ý --- những lập trình viên giỏi nhất giống như những nhà văn giỏi nhất: họ thực sự không thể ngăn mình làm những gì họ làm tốt nhất.
Norman Ramsey

2
Họ có thể không thể dừng lại, nhưng cuộc sống có thể, và vì một số ý chí.
Shannon Severance

@ShannonSeverance, Đối với nhiều người, nó sẽ không chỉ cho một số người.
Pacerier 6/2/2015

9

Bạn phải trải qua giai đoạn ấu trùng.

Mặc dù bây giờ tôi lập trình trong VB.NET trên Windows, tôi đã trải qua giai đoạn ấu trùng trên Linux x86 với ngôn ngữ chính là ngôn ngữ chính.

Trong một thời gian, bạn phải cống hiến hết mình cho nghề cho đến khi bạn thành thạo nó. Những gì được gọi là bản năng của một lập trình viên bậc thầy là những hành vi thực sự học được. Đó là một nền văn hóa chia sẻ. Các lập trình viên phải suy nghĩ giống nhau, và thích máy móc.

Cừu trở nên giống như những người chăn cừu và những người chăn cừu như cừu, nhưng không phải là rất dài trên thế giới. Với [cây và] Mọi người nhanh hơn và gần hơn, và họ cùng nhau bước qua các thời đại. - Tolkien

Biết và hiểu. Các kỹ năng lớn nhất không phải là những kỹ năng ràng buộc với một ngôn ngữ cụ thể, nhưng có thể được áp dụng cho hầu hết mọi ngôn ngữ. Biết các khái niệm, tìm kiếm chúng trong cả vấn đề và ngôn ngữ, sẵn sàng phát minh ra những điều mới khi cần thiết.

Đây là con đường dẫn đến sự vĩ đại.


2
Nó bằng cách nào đó liên quan đến cheetos? Hình ảnh trong đầu của tôi liên quan đến cheetos.

2
lol "Không dễ dàng gì đâu!"
gnovice

Giai đoạn ấu trùng hay giai đoạn ấu trùng? ;)
Brad Thomas

9

Tôi đã lập trình từ năm 8 tuổi ... Tôi sẽ 33 tuổi vào đêm Giáng sinh. Tôi vẫn thấy ngọn núi xa xa. Cho dù bạn đến bao xa, luôn có nhiều thứ để học.

Nhận các mô hình trong vành đai của bạn và tìm hiểu cách ngôn ngữ bạn hiện đang mã hóa để thực hiện các mô hình đó. Lập trình là một kinh nghiệm suốt đời luôn có nhiều thứ để học. Đó là niềm vui của nó, cho dù bạn thành thạo đến đâu, luôn có nhiều hơn thế.

Một cách tôi tìm thấy để học những điều mới mà tôi thường không học là dành thời gian ở đây và các diễn đàn lập trình khác như Bytes và Experts Exchange nơi mọi người đặt câu hỏi. Nếu bạn có thể trả lời câu hỏi, hãy tiếp tục, nếu bạn không thể, sau đó thử và tự mình tìm ra cách hoàn thành nhiệm vụ, không chỉ OP sẽ đánh giá cao nỗ lực và hỗ trợ của bạn, mà bạn cũng sẽ học được điều mới.

Tôi thấy rằng tôi học được nhiều hơn bằng cách giúp người khác tìm ra câu trả lời cho những điều tôi chưa biết hơn bao giờ hết bằng cách lập trình những thứ hàng ngày mà tôi làm hàng ngày.


9

Trạng thái lập trình trung gian ngụ ý rằng bạn đang di chuyển ra khỏi tâm lý "gõ nhanh hơn" và đi vào cõi muốn xây dựng các hệ thống thực sự như một nghề nghiệp. Đây là một thay đổi chuyên nghiệp lớn và, thẳng thắn, nó không thực sự về kỹ năng kỹ thuật. Làm việc ở cấp độ trung gian (còn gọi là "nhà phát triển") đòi hỏi một bộ kỹ năng con người tiên tiến đáng kể.

Dưới đây là một số triệu chứng bạn có thể nghĩ về:

  1. Bạn có nhận được vào cuộc chiến chỉnh sửa trực tuyến? Nếu vậy, bạn có thể cho thấy rằng bạn muốn tranh luận về các chi tiết bên trong vùng thoải mái của bạn hơn là bạn muốn cố gắng hiểu quan điểm của người khác.
  2. Bạn có nghĩ ngôn ngữ là những thứ thực sự khác nhau? Cả C # và Java đều mang các nền tảng và tài nguyên của riêng họ vào bảng nhưng cả hai đều là các mô hình tính toán hiệu quả. Bạn có thể học một ngôn ngữ và nền tảng mới đủ nhanh để được trả tiền để làm việc không?
  3. Bạn vẫn nghĩ về các nhiệm vụ phần mềm như gõ? Nếu bạn được giao một nhiệm vụ tại nơi làm việc, tại sao? Mã này sẽ được sử dụng để làm gì? Nó sẽ là một phần của hệ thống nào? Thông tin đó có thể thay đổi đáng kể giải pháp đề xuất của bạn.
  4. Bạn đã bỏ lại giai đoạn biết tất cả của cuộc đời mình chưa? Bạn đang lắng nghe phần còn lại của đội hay bạn chỉ đang cố nghĩ về điều tiếp theo muốn nói?
  5. Bạn có nhận ra rằng "kéo tất cả sáng hơn" để tạo ra một giải pháp lỗi vào phút cuối không còn ấn tượng nữa? Sau tám giờ đầu tiên, bạn có thể dễ dàng tưởng tượng rằng phần còn lại của thời gian chỉ được sử dụng để gõ lỗi.

Tóm tắt tốt nhất mà tôi có thể đưa ra là lập trình viên trung cấp (hay "nhà phát triển") đã học được cách làm việc hiệu quả hơn trong tám giờ làm việc để họ có thể đi về nhà và có một cuộc sống ngoài công việc.

Điểm thưởng được trao nếu bạn quản lý để tìm một người phối ngẫu và sinh sản ....


8

Những gì bạn đang làm bây giờ rất tuyệt, nhưng nếu bạn muốn tăng tốc đáng kinh ngạc, bạn có thể làm thêm hai điều:

1) "Dạy" - Một cách đơn giản để làm điều này là bắt đầu một blog và cố gắng đóng góp một cái gì đó hữu ích một cách thường xuyên (có lẽ hàng tuần). Nhằm mục đích về những điều bạn đã học gần đây, hoặc bạn chưa biết . Điều đó có nghĩa là bạn sẽ buộc mình phải nghiên cứu, hiểu và tái hiện.

BTW, Bạn có thể dễ dàng đăng ký tài khoản SingingEels mà bạn nhận được một blog miễn phí trên một cộng đồng phát triển hiện có.

2) Viết nhiều chương trình nhỏ - Theo đó, ý tôi là khoảng 1 mỗi tuần. Bạn có thể sử dụng điều này trong giao lộ với ... hoặc chỉ để giải trí. Những gì tôi đã làm khi là một nhà phát triển trẻ chỉ là chọn ngẫu nhiên (tôi không đùa) một không gian tên trong khung .NET. Trong đó, chọn một lớp mà bạn chưa từng thấy / sử dụng trước đó và tạo một chương trình nhỏ sử dụng nó.


8

Cố gắng

Đọc thêm sách Chọn những tiêu đề lớn từ Amazon và đọc chúng. Ví dụ, tác giả của Code Complete đã viết một cuốn sách tuyệt vời về phần mềm tham gia - Phát triển phần mềm nhanh, mua một cái và đọc nó.

Học một ngôn ngữ lập trình khác Một ngôn ngữ kịch bản như python / ruby ​​rất đáng để nghiên cứu. Hoặc có thể là một ngôn ngữ lập trình chức năng :) Điều này có thể thay đổi suy nghĩ của bạn về lập trình. Bạn có thể biết rằng một số mẫu GOF không cần thiết cho những loại ngôn ngữ đó.

Tham gia một cộng đồng Mọi người có thể trao đổi suy nghĩ của họ bằng cách lắng nghe người khác và thuyết trình.


4

Tìm lập trình viên thông minh và học hỏi từ họ. Bắt chước họ. Lưu ý những điều họ làm khác với bạn.

Công ty của bạn có đánh giá mã? Đó là một trong những cách tốt nhất để học. Bạn có thể ngạc nhiên trước những gợi ý mà các lập trình viên tiên tiến hơn đưa ra và những điều họ nghĩ trong khi viết mã.


3

làm thế nào về việc tham gia vào dự án nguồn mở đang diễn ra khác, để ít nhất công việc của bạn sẽ có giá trị với ai đó và bạn có thể học hỏi và tương tác với các nhà phát triển tiên tiến hơn khác đang làm việc trong thế giới thực.

để ít nhất bạn không bị giới hạn trong những gì bạn muốn học hoặc loại dự án mà bạn muốn làm. và nó đã là một công cụ miễn phí mà bạn đang sử dụng, bạn có thể tự hào rằng bạn thực sự giúp làm cho nó tốt hơn.

và nó cũng xuất hiện tốt với sơ yếu lý lịch của bạn. :)

Vì vậy, nếu điều đó vẫn khiến bạn có một chút thời gian rảnh, tại sao không giữ một blog ghi lại quá trình học tập, kinh nghiệm của bạn và những gì không. ai biết được, bạn có thể là người tiếp theo trên phần mềm hoặc mã hóa kinh dị: p


-1

Để trở thành một nhà phát triển C #, hãy đọc hai điều sau đây. Lưu ý rằng trọng tâm của những cuốn sách này tập trung nhiều hơn vào ngôn ngữ (C #) chứ không phải khung (.NET) ..

  1. Essential C # : link dành cho phiên bản mới nhất. Tôi thực sự đã đọc cái trước đó (C # 4.0) nhưng tôi giả sử càng mới càng tốt. Cuốn sách này có một số điều cơ bản là tốt nhưng hãy kiên nhẫn đọc bìa sách đó để che.
  2. C # in Depth : link là một lần nữa cho phiên bản mới nhất sẽ được phát hành sau 10 - 15 ngày. Tôi chỉ đọc lướt qua cuốn sách nhưng các đồng nghiệp đã đọc nó rất quan tâm đến vấn đề này.

Bạn đã đọc CLR qua C # , nếu không đó có lẽ là đề xuất thứ ba của bất kỳ ai cho các nhà phát triển C #.

Những điều này cũng sẽ giúp bạn trở thành một nhà phát triển tốt hơn: Nguyên tắc thiết kế khunglàm việc hiệu quả với Mã kế thừa .


quan tâm để giải thích tại sao xuống cấp?
Asim Ghaffar
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.