Tôi có nên trở thành một lập trình viên giỏi ngay sau khi học đại học?


28

Bản sao có thể có:
Tôi đã tốt nghiệp bằng Khoa học Máy tính nhưng tôi không cảm thấy mình thậm chí còn gần như là một lập trình viên chuyên gia

Gần đây tôi đã tốt nghiệp đại học, và sau đó tôi đã gia nhập một nhóm phát triển nơi tôi là nhà phát triển ít kinh nghiệm nhất có thể với một vài điều khoản công việc dưới vành đai của tôi. Trong khi đó, phần còn lại của đội đang rung chuyển 5-10 năm kinh nghiệm.

Tôi là một học sinh rất giỏi và là một lập trình viên khá giỏi khi làm bài tập và bài kiểm tra đóng chai. Tôi đã làm việc với một số dự án thành công, nhưng bây giờ tôi đang làm việc với một cơ sở mã lớn hơn nhiều, và đường cong học tập cao hơn nhiều.

Tôi đã tự hỏi có bao nhiêu nhà phát triển khác bắt đầu sự nghiệp của họ trong các đội và rời đi như họ hút. Khi nào điều này thay đổi? Làm thế nào tôi có thể tăng tốc quá trình? Các tiền bối của tôi đang giúp tôi nhưng tôi muốn trở nên tuyệt vời và thể hiện giá trị của mình bây giờ.

Câu trả lời:


50

Điều thú vị về phát triển phần mềm là không quan trọng bạn giỏi đến mức nào - luôn có một người tốt hơn hoặc ít nhất là đủ khác biệt để vẫn dạy bạn điều gì đó. Cũng không có gì lạ khi nhìn vào mã được viết vài tháng trước và nghĩ rằng nó thật tệ, bất kể mức độ kinh nghiệm của bạn.

Đối với tôi, một khi tôi nhận ra khoảng cách giữa kỹ năng của mình và kỹ năng của đồng nghiệp, tôi bắt đầu học như chưa từng học trước đây - đọc mã của người khác, bài đăng trên blog, sách, chú ý đến cách đồng nghiệp của tôi hoàn thành mọi việc, v.v. Đại học đã chuẩn bị cho tôi về khoa học máy tính, nhưng không thực sự phát triển phần mềm. Đã gần 4 năm sau, và tôi là một nhà phát triển phần mềm mạnh hơn nhiều so với trước đây. Vì vậy, chỉ cần treo ở đó và học hỏi nhiều nhất có thể từ những người xung quanh bạn. Nó sẽ trở nên tốt hơn.


+1. Tôi cũng rất thích trở thành người hút một thứ gì đó trong đội và điều đó buộc tôi phải điều chỉnh kiến ​​thức của mình.

27
+1University prepared me for computer science, but not really for software development.
George Marian

1
Tôi hy vọng tôi có cùng trải nghiệm khi tôi hoàn thành uni và nhận được công việc đầu tiên (oh chờ, thứ hai) trong kinh doanh lập trình.
gablin

4
@George: Điều tồi tệ hơn là rất nhiều sự phát triển phần mềm trong thế giới thực nằm dưới chiếc ô "IT", thường sôi sục khi đập các giao diện người dùng xấu xí vào các bảng cơ sở dữ liệu. :( Không chính xác một cái gì đó trường đại học có thể chuẩn bị cho bạn.
Adam Paynter

@adam Hoàn toàn đúng. Mặc dù đôi khi tôi hiểu sự cần thiết của nó, cách tiếp cận "đủ tốt" chỉ khiến tôi phát điên.
George Marian

23

Không. Tôi đã học được nhiều hơn về lập trình / công nghệ phần mềm trong 6 tháng đầu tiên làm việc sau khi rời trường đại học so với những năm trước. Tuy nhiên, điều đó không có nghĩa là trường đại học là một sự lãng phí thời gian, nó đã chuẩn bị tâm trí của tôi và cung cấp kiến ​​thức nền tảng để xây dựng.

Sau đó, một lần nữa, bây giờ nhìn lại, tôi vẫn không thực sự biết mình đã làm gì 6 tháng.


4
Nói tốt, các giáo sư của tôi luôn nói rằng "Có một sự chênh lệch lớn giữa ngành công nghiệp và học thuật." Khó tin cho đến khi bạn bước ra thế giới thực và nhận ra thực tế là có!
Chris

Điều này. Đây chính xác là lý do tại sao một kỳ thực tập, không được trả lương hoặc bất cứ điều gì bạn có thể nhận được, rất có giá trị. Địa ngục, ngay cả một thực tập không lập trình cũng có giá trị kinh nghiệm cao hơn bất kỳ lớp học đơn lẻ nào, bởi vì bạn học được một số cạm bẫy của việc làm việc - với -people-.
Kzqai

10

Giáo dục cung cấp cho bạn một nền tảng để phát triển, nhưng nó sẽ không giúp bạn phát triển phần mềm trong cuộc sống thực. Điều đó đi kèm với kinh nghiệm. Tôi chắc chắn đã ở trong hoàn cảnh giống như bạn khi tôi mới bắt đầu lập trình cho một công việc. Miễn là bạn tiếp tục học, đọc sách, bài đăng trên blog và áp dụng những gì bạn học được trong công việc , bạn sẽ tiến bộ. Điều quan trọng là áp dụng những gì bạn học. Chỉ cần đọc sẽ không giúp, bạn phải tích cực áp dụng kiến ​​thức mới.


+1 để áp dụng những gì bạn học. Tôi quên đề cập đến phần đó. :)
Adam Lear

7

Tôi chắc chắn nghĩ rằng tôi đã, nhưng tôi đã không.

Tin tôi đi, đến một lúc nào đó trong sự nghiệp bạn sẽ quay lại và làm việc với một số mã mà bạn đã viết, nhưng đã không chạm đến trong nhiều năm và rất muốn rằng không có nhà phát triển chuyên nghiệp nào từng thấy mã đó hoặc biết bạn đã viết nó. Điều đó có nghĩa là bạn đang phát triển.


4

Theo một số cách, chọn ngôn ngữ lập trình cũng giống như chọn ngôn ngữ tự nhiên. Bạn có thể học một lượng lý thuyết hợp lý ở trường. Bạn học ngữ pháp và các yếu tố cơ bản của từ vựng, và bạn nghĩ bạn khá giỏi, cho đến khi bạn thấy mình trong một cuộc trò chuyện thực sự với người bản ngữ, và sau đó bạn hoàn toàn lạc lối.

Cách bạn thực sự học ngôn ngữ, đến mức bạn có thể tự mình nói chuyện với người bản ngữ, bằng cách thực sự nói ngôn ngữ, mỗi giờ mỗi ngày. Điều này thường có nghĩa là sẽ sống ở một nơi mà nó được nói. Và đó là khi một điều thú vị xảy ra. Mặc dù những gì bạn học được ở trường là vô giá trị, nhưng trên đường phố của một quốc gia nước ngoài, nó mang lại cho bạn một nền tảng lý thuyết tốt, vững chắc, giúp việc học ngôn ngữ thực tế dễ dàng hơn rất nhiều. (Đó là kinh nghiệm của tôi với tiếng Tây Ban Nha, ít nhất.)

Lập trình là cách tương tự. Những gì bạn học được ở trường không chuẩn bị cho bạn công việc bạn sẽ cần phải làm như một lập trình viên thực thụ, nhưng (giả sử bạn ở một trường có thẩm quyền không làm mọi thứ giảm đi vì lợi ích của sự nổi tiếng), nó giúp chuẩn bị tâm trí của bạn để đến lúc thực sự học cách trở thành một lập trình viên giỏi, những khái niệm cơ bản bạn cần đã có sẵn. (Đó là kinh nghiệm của tôi với lập trình, ít nhất.) :-)


2
Câu trả lời hay, nhưng tôi sẽ không đi xa để nói rằng "những gì [tôi] đã học ở trường là vô giá trị". Tôi biết tuy nhiên những gì bạn đang nhắm đến.
gablin

4

Rất nhiều lập trình viên giỏi bước ra từ các ngành khoa học máy tính ở trường đại học, chủ yếu là những người đã đi vào họ.

Vấn đề của khoa học máy tính là, như mọi người đã thảo luận ở trên, không giống như lập trình. Rất nhiều thứ tôi học ở trường đại học về cơ bản tôi chưa sẵn sàng - có rất nhiều thứ giống như vô nghĩa học thuật trên trời khi tôi nghe bài giảng về nó, nhưng vài năm sau tôi ước tôi đã chú ý đến nó nhiều hơn khi cuối cùng tôi lại học được một loạt những thứ mà tôi đã nộp đơn là vô dụng. Tôi thực sự nghĩ rằng người ta có thể sử dụng một vài năm lập trình trong môi trường thương mại trước khi bắt đầu bằng cấp về khoa học máy tính nếu đó là điều bạn muốn làm.

Ngoài ra tôi nghĩ rằng thường xuyên ở trường đại học, bạn không nhất thiết phải biết cách học. Rất nhiều điều tôi đã học được do nhầm lẫn hoặc học hỏi từ các nhà phát triển khác chắc chắn là những điều mà các giảng viên và sinh viên tốt nghiệp của tôi biết ở trường đại học nhưng tôi không biết sẽ hữu ích khi hiểu chúng. Hỏi mọi người về những vấn đề bạn gặp phải trong khi bạn đang học cách làm một cái gì đó (và điều này áp dụng cho bất cứ điều gì thực sự) làm cho quá trình học tập trơn tru hơn và ít đau đớn hơn. Hầu hết những điều bạn có thể học cho bản thân hoặc từ người khác - cho rằng nhiều bài học tôi đã học cho bản thân mình đã học được từ những sai lầm đau đớn của mình, tôi chọn học từ người khác khi tôi có thể ...


2

Tôi xin trích dẫn Brian Hurt của bài

Khoa học máy tính và lập trình là những thứ riêng biệt

người cũng đề cập đến lập trình đại học và bài báo xuất sắc của Joel Spolsky có tiêu đề Ai đã giết kỹ sư phần mềm

Tất cả các cuộc thảo luận này mô tả thực tế khá tốt và, theo tôi, trả lời câu hỏi của bạn là "Không", bởi vì trường đại học sẽ không biến bạn thành một lập trình viên giỏi. Bạn cần phải tự làm cho mình một lập trình viên giỏi.

Tôi không có bằng về CS, nhưng tôi đã lập trình và phát triển phần mềm chuyên nghiệp được 8 năm rồi. Tất cả các kỹ năng lập trình tôi có, tôi đã tự học.


1

Không, tôi đã giả vờ là một lập trình viên và học nó một cách khó khăn. Tôi đã có khách hàng đầu tiên là freelancer và đã chiến đấu rất tệ với C / C ++, và cuối cùng đã giành chiến thắng. Tôi nhớ rằng phải mất vài giờ để hiểu rằng làm malloc trên một cấu trúc là không đủ để phân bổ bộ nhớ cho các con trỏ trong cấu trúc.


Bằng cấp ban đầu của bạn là gì? Có phải công việc khó khăn của bạn cuối cùng đã được đền đáp?
rwong

Tôi là một kỹ sư điện tử, tôi khá giỏi về Matalb, nhưng với rất ít kiến ​​thức về C / C ++ và Java. Tin hay không công việc lập trình thực sự đầu tiên của tôi là viết trình điều khiển cho Windows CE và chuyển nó sang thiết bị này: eurotech.com/EN/innovation.aspx?pg=weaabilities . Tôi đã có một chút giúp đỡ của công ty, nhưng về cơ bản, tôi đang làm việc một mình ở nhà, mất thời gian lớn cho những việc rất nhỏ. Nhưng bạn cá là tôi đã không quên bất cứ điều gì! Tôi vẫn đang học nhưng bây giờ tôi sở hữu một startup đang thực hiện một chương trình lớn thực sự ... vì vậy nó đã được đền đáp.
martjno

1

Tôi là một lập trình viên khá giỏi khi tốt nghiệp đại học. Tôi cũng đã có một lời mời làm việc hấp dẫn nhiều tháng trước khi tôi tốt nghiệp (mà tôi đã có thể từ chối cho một người thậm chí còn ngớ ngẩn hơn).

Điều quan trọng là tôi đã làm rất nhiều việc với tư cách là một người có sở thích, với công việc phát triển web trong năm học và thực tập mùa hè chất lượng với IBM ("nhóm tốc độ ExtremeBlue" và chương trình ExtremeBlue phù hợp). Kinh nghiệm chuyên nghiệp tốt sẽ cho phép bạn bỏ qua một chút các công cụ cấp nhập cảnh sau khi bạn tốt nghiệp.

(Điều đó nói rằng, tôi vẫn nhận được nhiều hơn ở chương trình trong sáu của tôi tháng đầu hoặc lâu hơn tại một Bất Job (tm). Không phải là tôi đã được thực hiện sau đó, nhưng điều đó khi nó đã thực sự thể hiện rất nhiều.)


1

Tôi có thể cho bạn một câu trả lời ngược lại, khi tôi đi thẳng từ trường trung học đến nơi làm việc. Tôi bắt đầu làm việc như một lập trình viên tự suy nghĩ và tôi gần như ngay lập tức làm việc hiệu quả với dự án mà chủ nhân của tôi đưa cho tôi. Tôi đã có một số đồng nghiệp có bằng khoa học máy tính mới và họ không làm việc gì cả.

Theo thời gian, một số đồng nghiệp tốt nghiệp đã cải thiện kỹ năng của họ rất nhiều, trong khi những người khác thì không, và điều đó không liên quan đến điểm trung bình của họ.


1

Đại học không dạy bạn trở thành một lập trình viên thực tế. Tôi đoán điều này tương tự với rất nhiều công việc so với các chương trình cấp bằng của họ. Tôi sẽ không nói rằng tôi không có gì ngoài bằng cấp của mình, nhưng nó ít hữu ích hơn nhiều so với việc dành 4 năm thực sự cho công việc.

Nhưng nó ổn mà. Mỗi công việc tôi đã bắt đầu, tôi có thể không đủ điều kiện. Nếu bạn tự tin vào khả năng của mình và tận tâm học tập thì bạn có thể bước lên và thực hiện công việc.


1

Tôi không nghĩ rằng tôi đã học được bất kỳ sự thật nào về lập trình nói chung mà tôi ít nhất không được tiếp xúc với đại học. Chắc chắn, tôi đã chọn ngôn ngữ lập trình mới ở đây và ở đó, học API mới, cơ sở mã mới và công cụ mới, nhưng các khái niệm chung đều có mặt ngay khi ra trường.

Những gì bạn làm với kinh nghiệm là một loại bản năng giúp tăng tốc độ bạn thu hẹp trong một lỗi được báo cáo hoặc dẫn bạn đến cách mạnh mẽ nhất để viết mã mới. Khi bạn là người mới, bạn vẫn có thể sửa lỗi tương tự hoặc thực hiện cùng một tính năng, nhưng sẽ mất nhiều thời gian hơn và bạn có nhiều khả năng phải quay lại và sửa nó cho một vấn đề không lường trước được.

Đó là lý do tại sao điều quan trọng là có được nhiều đồng nghiệp có kinh nghiệm để tư vấn cho bạn. Đi đến họ và nói, "Đây là cách tôi nghĩ rằng điều này nên được xử lý. Bạn có thể nghĩ ra một cách tốt hơn?" Điều đó mang lại cho bạn lợi ích cả về kinh nghiệm tìm ra nó cho bản thân và học hỏi từ kinh nghiệm của người khác.


0

Tôi là một lập trình viên giỏi hơn các giáo viên của tôi ở trường đại học.

Sau đó, tôi đã học được các thực hành lập trình tuyệt vời khi tôi bắt đầu làm việc.


0

Một lập trình viên giỏi luôn học hỏi ... học một cách khác để làm điều này hoặc cách tốt hơn để làm điều đó. Bất cứ lập trình viên nào của bạn phải dạy bạn, tôi sẽ lắng nghe.


0

Một trong những điều không ai đề cập đến là các vấn đề bạn đưa ra để giải quyết ở trường được cố tình làm cho ngớ ngẩn để dễ dàng xem cách sử dụng như kỹ thuật cụ thể mà bạn đang được dạy. Bạn thường biết kỹ thuật nào mà bạn phải sử dụng cho vấn đề cụ thể đó bởi vì đó là kỹ thuật bạn vừa trình bày trong lớp. Các dự án toàn học kỳ là một ít bette, r nhưng vẫn còn hạn chế về phạm vi và độ phức tạp so với thế giới thực.

Các dự án thực tế rất lộn xộn và phát triển qua nhiều năm (phần mềm của chúng tôi đã hơn mười năm và đã thay đổi liên tục trong thời gian đó) và được nhiều người khác nhau chạm vào với nhiều cấp độ kỹ năng khác nhau. Bạn vẫn có thể chạm vào phiên bản cơ sở dữ liệu 10 năm tuổi và không thể sử dụng bất kỳ kỹ thuật SQL mới hơn nào cả. Bạn có thể đang sử dụng một công cụ tuyệt vời 8 năm trước, nhưng bạn không học ở trường vì nó bị áp đảo bởi thứ khác. Nhưng công ty không muốn trả nhiều tháng cho nỗ lực phát triển để thay thế hoàn toàn.

Bạn đang bị mắc kẹt trong một thế giới nơi thời gian để phát triển bị hạn chế nghiêm trọng bởi những gì khách hàng sẽ trả cho và những gì, đôi khi (OK usuaully), thời hạn là gì.

Bạn có thể bị hạn chế sử dụng các công cụ mà khách hàng yêu cầu cụ thể. Bạn có thể có những yêu cầu mơ hồ hoặc những yêu cầu ít có ý nghĩa. Bạn có thể đang giao dịch với một lĩnh vực kinh doanh rất phức tạp mà bạn không biết gì và do đó thậm chí không thể đánh giá nếu các yêu cầu có ý nghĩa.

Các vấn đề trong thế giới thực không thể so sánh với các vấn đề sạch đẹp mà chúng đưa ra cho bạn ở trường. Nếu bạn không bối rối và cảm thấy lạc lõng trong hầu hết năm đầu tiên, tôi sẽ lo lắng cho bạn.


0

Điều tồi tệ hơn thế ... sau một vài năm làm công việc này, bạn sẽ cảm thấy khá tốt về những gì bạn đã học được. Nhưng sau đó, bạn sẽ thay đổi công việc và công ty mới của bạn (hoặc thậm chí là nhóm mới trong cùng một công ty) sẽ làm những việc khác nhau và bạn sẽ cảm thấy như mình quay lại ngay tại quảng trường. Sẽ có mã khác nhau, tiêu chuẩn mã hóa khác nhau, công cụ khác nhau và quy trình khác nhau và sau hai ngày, bạn sẽ tự hỏi liệu bạn có thực sự học được gì ở công việc cuối cùng không. Bạn sẽ vượt qua cảm giác ra khỏi nước nhanh hơn lần này, nhưng sẽ vẫn mất nhiều thời gian hơn bạn muốn.

Có một khoảng thời gian thích ứng mỗi khi bạn chuyển đổi công việc. Nó sẽ ngắn hơn khi bạn có được kinh nghiệm, nhưng nó luôn ở đó.

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.