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 biết cách lập trình


1050

Tôi tốt nghiệp bằng Khoa học Máy tính nhưng tôi thấy các trang web như Stack Overflow và các công cụ tìm kiếm như Google và không biết tôi thậm chí bắt đầu viết thứ gì đó như thế nào. Trong một mùa hè, tôi đã có cơ hội làm việc như một nhà phát triển iPhone, nhưng tôi cảm thấy như tôi chủ yếu dán các thư viện mà những người khác đã viết với rất ít hiểu biết về các cơ chế xảy ra bên dưới mui xe.

Tôi đang cố gắng nâng cao kiến ​​thức của mình bằng cách nghiên cứu các thuật toán, nhưng đó là một quá trình dài và đau đớn. Tôi thấy các thuật toán khó và với tốc độ tôi đang học một thập kỷ sẽ trôi qua trước khi tôi thành thạo tài liệu trong cuốn sách. Với tình hình hiện tại của tôi, tôi đã dành một tháng để tìm việc nhưng các kỹ năng của tôi (C, Python, Objective-C) tương đối nông và không được mong muốn ở thị trường địa phương, nơi C #, Java và phát triển web cao hơn nhiều nhu cầu. Điều đó không có nghĩa là cơ hội C và Python không tồn tại nhưng chúng có xu hướng đòi hỏi hơn 3 năm kinh nghiệm mà tôi không có. Điểm trung bình của tôi là OK (3.0) nhưng không đủ cao để áp dụng cho các công ty lớn như IBM hoặc quay trở lại để học cao học.

Về cơ bản, 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 đã học được cách lập trình. Tôi nghĩ rằng việc tham gia một công ty và lập trình toàn thời gian sẽ cho tôi cơ hội phát triển kỹ năng và học hỏi từ những người có kinh nghiệm hơn bản thân mình, nhưng tôi đang cố gắng tìm việc và bắt đầu thực sự thất vọng.

Tôi sẽ bỏ mạng lưới của mình rộng hơn và nhìn xa hơn thành phố tôi đã lớn lên, nhưng những người khác trong tình huống tương tự đã cố gắng làm gì? Tôi đã làm việc chăm chỉ nhưng không đủ tự tin để tự mình ra ngoài và viết ứng dụng của riêng mình. (Nghĩa là trở thành một nhà phát triển độc lập trong thị trường ứng dụng iPhone.) Nếu không có gì bật lên, tôi sẽ cần xem xét nâng cấp và học các kỹ năng phổ biến hơn hoặc thử một cái gì đó liên quan đến lề như CNTT, nhưng đã nỗ lực hết mình. như copping ra.

Câu trả lời:


533

Cách tốt nhất để học lập trình là viết chương trình.

Hai gợi ý:

  • phát triển một trò chơi
  • phát triển một trang web

Các thuật toán, trong khi hữu ích, và nên được hiểu, thực sự đóng vai trò thứ hai đối với thiết kế phần mềm. TDD / Mẫu thiết kế / Kiến trúc / Tái cấu trúc / Kiểm tra đơn vị / Quá trình đặt mã cùng nhau / vv có xu hướng là các kỹ năng quan trọng hơn nhiều.

Ngoài ra, tốt hơn nhiều để làm điều này trong thời gian của riêng bạn. Đừng chờ đợi để làm việc này ra công việc. Tôi thấy những người có xu hướng làm tốt hơn là những người sớm trong sự nghiệp nỗ lực phát triển kỹ năng của họ trong thời gian của họ. Thông thường bởi vì họ thực sự đam mê phát triển phần mềm

  • Một điều nữa là " Đọc sách và mẫu " và đừng xấu hổ khi hỏi. Nếu bạn muốn học bạn nên hỏi :)

70
Đồng ý +1. Và nếu bạn KHÔNG MUỐN làm công cụ này vào thời gian riêng của mình, đây có thể không phải là con đường sự nghiệp tốt nhất cho bạn. Nếu bạn kết hợp mọi thứ ngay bây giờ, bạn có thể xây dựng một danh mục đầu tư có thể bổ sung GPA của bạn.
Chris

68
@Chris, -1. Điều đó giống như nói rằng một luật sư không làm việc chuyên nghiệp cho những người nghèo khổ vào thời gian của anh ta là sai nghề nghiệp. Nhiều lập trình viên mà tôi biết sẽ tốt hơn khi dành ít thời gian hơn để lập trình và có nhiều thời gian hơn để làm hầu hết mọi thứ khác.

21
thực sự rất nhiều luật sư khi cắt răng, được trả lương cao và bỏ thêm rất nhiều giờ chỉ để vượt lên.

22
Bạn thực sự không thể so sánh một công việc luật sư với một công việc lập trình viên. Với lập trình, bạn có thể tự mình có được kỹ năng; bạn không cần bất kỳ nhà tuyển dụng hoặc khách hàng để cải thiện phần đó.

31
Thực sự, bạn cần ngừng suy nghĩ lập trình là đặc biệt. Luật sư có thể tự làm việc / học hỏi giống như chúng ta có thể. Họ có thể bắt đầu với những công việc được trả lương thấp và làm việc nhiều giờ, nhưng nhiều lập trình viên cũng vậy ... dòng "nếu bạn không lập trình như một sở thích thì bạn không nên làm lập trình viên" thực sự rất chủ quan.

388

Tôi cảm thấy như tôi chủ yếu dán các thư viện mà người khác đã viết

Mặc dù tôi hiểu lý do tại sao bạn cảm thấy như đây không phải là "lập trình thực", nhưng sự thật là công việc tích hợp chiếm một tỷ lệ đáng kể trong khối lượng công việc điển hình cho một lập trình viên công ty. Kinh nghiệm của bạn có thể có giá trị hơn một chút so với bạn nghĩ :)


126
+1 cho keo dán. Không ai sẽ thuê một nhóm các chuyên gia để xây dựng một ngôi nhà mới và mong đợi họ phát minh ra các kỹ thuật hoàn toàn mới trong việc xây dựng nhà trong quá trình này. Trên thực tế, bất kỳ ai quan tâm đến việc quản lý rủi ro và ngân sách có thể sẽ thích họ không làm điều đó.
Dan Bryant

14
Tôi đồng ý có một số trường hợp cạnh ngoài đó nhưng tôi sẽ nói rằng 75-80% công việc lập trình ngoài kia là loại mà bạn chỉ dán các thư viện với nhau.

15
Và không có sai khi chỉ dán các thư viện lại với nhau. Đó là những gì làm cho bạn hiệu quả!

10
Chắc chắn giống như 90% công việc của tôi là kết nối mã của người khác (thư viện hoặc mã kế thừa) hoặc duy trì mã cũ hơn. Nhưng tôi dành nhiều thời gian để học các mẩu và phần khi tôi đi, để bây giờ tôi biết có bao nhiêu thư viện đó hoạt động, và có sự hiểu biết sâu sắc hơn nhiều về những gì diễn ra dưới cái mũ nói chung. Hãy là người học suốt đời và cuối cùng bạn sẽ chọn được tất cả.
CodexArcanum

53
Khi tôi không dán các thư viện lại với nhau, tôi thường tạo các thư viện mà sau này tôi sẽ dán lại với nhau.

238

Đầu tiên, cảm ơn bạn cho một câu hỏi rất trung thực. Có một số cách để giải quyết các vấn đề trong tầm tay. Dưới đây là một vài lời khuyên, mà tôi cho là rất hữu ích cho tôi trong quá khứ và vẫn tiếp tục sử dụng chúng để mở rộng kiến ​​thức của tôi.

  1. Tìm hiểu, tìm hiểu và tìm hiểu thêm. Đây có lẽ là mẹo quan trọng nhất tôi có thể cung cấp cho bạn. Không bao giờ ngừng học tập . Biết một ngôn ngữ là tốt, biết nhiều ngôn ngữ thậm chí còn tốt hơn. Có kiến ​​thức về các ngôn ngữ khác sẽ giúp bạn trở thành một lập trình viên tốt hơn và sẽ giúp giải quyết các tác vụ nhất định dễ dàng hơn và sẽ giúp bạn có kiến ​​thức tốt hơn về các cấu trúc dữ liệu phổ biến.

  2. Bắt đầu nhỏ .

  3. Bắt đầu một dự án sở thích trong thời gian rảnh rỗi của bạn. Đừng làm điều gì đó bạn có thể hoàn thành khá dễ dàng. Tham gia vào một dự án trong đó bạn không biết bắt đầu từ đâu. Ném mình vào tận cùng. Lợi ích của việc này là bạn sẽ học được những điều bạn chưa từng biết đến và khi bạn hoàn thành nó, bạn sẽ cảm thấy một niềm tự hào và thỏa mãn to lớn. Đây là những gì giữ cho tôi đi.

  4. Có một niềm đam mê đích thực cho những gì bạn làm. Mặc dù mọi người sẽ không đồng ý với tôi về điều này. Tôi không tin rằng bạn có thể xuất sắc trong lĩnh vực này nếu bạn chỉ coi đó là một công việc 9-5. Phải có một niềm đam mê để làm điều đó.

  5. Giúp đỡ những người khác trên SO! Cách tốt nhất để hiểu là cố gắng dạy nó cho người khác.

  6. Nghiên cứu các chương trình người khác và cố gắng tìm ra cách họ làm việc, sau đó thực hiện các kỹ thuật tương tự trong các chương trình của riêng bạn. Cố gắng đọc nó và hiểu nó, sau đó tự mình làm nó dựa trên sự hiểu biết đó, thay vì sao chép và dán.

  7. Giữ ở đó . Đôi khi mọi thứ có thể trở nên rất bực bội, nhưng rất bổ ích khi hoàn thành. Nếu bạn không hiểu điều gì đó, hãy nghỉ ngơi, xóa suy nghĩ của bạn và thử lại. Hãy hỏi chúng tôi tại SO! Chúng tôi là một bó sẵn sàng :)

  8. Không bao giờ ngừng học hỏi các công nghệ mới.

  9. Đọc một số sách. Tôi hiểu là một sinh viên, bạn sẽ có rất nhiều việc đọc. Dưới đây là một vài cuốn sách thực tế mà bạn có thể tìm thấy rất hữu dụng hy vọng - Lập trình viên thực dụng: Từ Journeyman đến Master - Hoàn thành mã: Cẩm nang thực tế về xây dựng phần mềm


13
Thêm mã sạch vào danh sách cần đọc của bạn, nó khá tốt.

7
"Biết một ngôn ngữ là tốt" -> sai. Biết một ngôn ngữ là không đủ. Biết nhiều ngôn ngữ là tốt, học nhiều ngôn ngữ thậm chí còn tốt hơn.
Denilson Sá Maia

10
"Bắt đầu nhỏ" không chỉ đề cập đến việc lựa chọn các dự án có thể tiếp cận, mà còn bắt đầu triển khai các phần khả thi trong một dự án. Một dự án của tôi bắt đầu với một thử nghiệm nhỏ trong thị sai, và tôi nghĩ rằng "đó trông giống như một ngôi sao khá tuyệt vời cho bối cảnh của một trò chơi". Thêm một con tàu ... thêm một người ngoài hành tinh ... thêm một vài tên lửa, điều khiển bàn phím và phát hiện va chạm (từng vấn đề đơn giản, một mình) ngay sau đó, tôi đã có một trò chơi thương mại mà tôi đã bán thời gian) một chút tiền mặt tốt. Mặt khác "viết một trò chơi" là một nhiệm vụ mơ hồ, không thể chấp nhận được. Mỗi lần một bit.
mmc

2
@Denilson OP đã tuyên bố rằng cô ấy không cảm thấy mình biết cách lập trình. Biết một ngôn ngữ cho một người không chắc chắn về lập trình là tốt. Danh sách của tôi chỉ áp dụng cho bối cảnh này.

7
@Denilson, bạn có thể học nhiều ngôn ngữ mà không cần học một ngôn ngữ trước không?
Péter Török

141

Bắt đầu một dự án cá nhân. Rắc rối với trường học là điều phức tạp nhất bạn đã làm là có một dự án mất 15 tuần đến một năm và liên quan đến một vài người khác. Miền vấn đề được hiểu rõ (giáo sư của bạn không cung cấp cho bạn bất kỳ nhiệm vụ nào không phù hợp với học kỳ của bạn.) Đây không phải là một thứ xa xỉ trong thế giới thực.

Nếu bạn phải làm một cái gì đó quan trọng, bắt đầu để kết thúc, mà bạn có thể đam mê, bộ não của bạn sẽ bắt đầu bao bọc quá trình. Miễn là đây chỉ là một nghề nghiệp và bạn không có tình yêu với nó, bạn vẫn sẽ cảm thấy như bạn chưa làm được.


Tôi đã chia ngày của tôi giữa 1) gửi sơ yếu lý lịch 2) đọc sách nhưng có vẻ như 2) có thể tốt hơn để viết mã. Tôi nghĩ rằng rất nhiều nhà tuyển dụng không muốn mạo hiểm khi thuê một người có rất ít kinh nghiệm trong ngành để thực tập tôi không có vẻ gì thực sự hấp dẫn ngay bây giờ.

5
+1. Tôi đồng tình hoàn toàn. Bắt đầu một ứng dụng nhỏ, sau đó thêm chức năng khi bạn thấy bạn muốn. Khi tòa nhà tiếp tục và bạn bắt đầu nhận ra những gì có thể được thực hiện nhiều hơn, bạn có thể thêm nó vào.

11
"Miền vấn đề được hiểu rõ (giáo sư của bạn không cung cấp cho bạn bất kỳ nhiệm vụ nào không phù hợp với học kỳ của bạn.)" Đây là một trong những vấn đề lớn nhất với giáo dục khoa học máy tính. Có một vài chương trình CS hoặc kỹ thuật phần mềm giải quyết vấn đề này, nhưng hầu hết không khiến bạn phải suy nghĩ ngoài luồng. Bạn thực sự cần phải thực hiện các dự án của riêng bạn. Nếu bạn không biết Stackoverflow được xây dựng như thế nào, hãy thử tự tạo một bản sao. Bạn sẽ học được nhiều hơn bất kỳ lớp học có thể dạy cho bạn.
Matt Olenik

ý tưởng tuyệt vời. Nhưng bắt đầu với một cái gì đó nhỏ với các chức năng cốt lõi và từ từ thêm vào nó. Nó sẽ có nhiều động lực theo cách này hơn là cố gắng để có được một ứng dụng hoàn hảo khổng lồ. Tôi cũng nghĩ rằng bạn sẽ không bao giờ tìm thấy nhiều thông tin và hướng dẫn như sự giàu có của thông tin trong sách
Xster

@Xster, ý tôi là thế. Nhiệm vụ viết một ứng dụng "câu hỏi và trả lời" có chức năng rất cơ bản là một nơi tốt để bắt đầu.
Matt Olenik

106
  1. Bắt đầu với một trong những ngôn ngữ theo yêu cầu, sử dụng một dự án như K. Nicholas nói.
  2. Đừng tự đo lường bằng StackOverflow. Điều đó sẽ làm bạn nản lòng.

81
+1 cho # 2 - không so sánh bản thân và kiến ​​thức của đám đông.
gf

8
StakOverflow chính nó là một sản phẩm điêu luyện. Chưa kể, có những người đóng góp với nhiều thập kỷ kinh nghiệm trong một loạt các sản phẩm khổng lồ.

6
Tôi sẽ không coi đó là một điều xấu khi đo lường bản thân trước StackOverflow, có rất nhiều người thông minh ở đây. Một số thông minh hơn bạn từng có. Tuy nhiên đó là những người khiến bạn muốn tiếp tục học hỏi.

15
Này, tôi biết tại sao tôi nghiện SO! Thật tuyệt vời vì hàng tá lý do. Nhưng thật khiêm tốn khi liên tục tiếp xúc với tất cả những điều bạn không biết. Người ta phải cẩn thận một chút để không cảm thấy nản chí, chỉ vậy thôi.

@Georg - Trò chơi hấp dẫn tuyệt vời. KGS Smandoli

72

Tôi không thể giúp đỡ với tình hình công việc của bạn, nhưng tôi hy vọng tôi có thể giúp bạn phát triển các kỹ năng của mình và cũng đặt cảm xúc của bạn về các kỹ năng của riêng bạn vào quan điểm.

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 biết cách lập trình.

Có thể là những người hướng dẫn của bạn có điều gì đó phải xấu hổ. Cũng có thể cảm giác của bạn về việc không biết cách lập trình là tự nhiên và phù hợp với giai đoạn này của cuộc sống và giáo dục của bạn. Dưới đây là một số ý tưởng có thể giúp:

  • Nhiều nhà tuyển dụng không quan tâm các khóa học trên bảng điểm của bạn hoặc thậm chí GPA của bạn là gì. Thay vào đó họ muốn biết những gì bạn có thể làm, và đặc biệt là những gì bạn đã xây dựng. Đối với một công việc tốt, những gì bạn đã xây dựng quan trọng hơn công nghệ (C, C #, những gì có bạn) trong hồ sơ của bạn.

  • Nếu bạn không có cơ hội xây dựng một số dự án thú vị trong quá trình giáo dục, hãy xấu hổ với những người chỉ dẫn của bạn. Nhưng bạn có thể xây dựng những dự án đó ngay bây giờ. Quét các trang web cho các vấn đề thú vị. Các sinh viên học kỳ hai của chúng tôi vừa hoàn thành "Tìm kiếm bài hát", chúng tôi đã thu được một lượng lớn lời bài hát cho một trang web, họ xây dựng một chỉ mục đảo ngược, bạn cung cấp từ khóa và nó hiển thị cho bạn lời bài hát có chứa những từ đó, theo ngữ cảnh. Đó không phải là Google mà là nó được thực hiện trên cùng các nguyên tắc với các cấu trúc dữ liệu tương tự và bạn có thể bắt đầu xây dựng nó ngay bây giờ.

Tôi đã làm việc chăm chỉ nhưng không đủ tự tin để ra ngoài và viết ứng dụng của mình.

Có lẽ bạn đã không làm việc chăm chỉ về các loại vấn đề đúng? Thật tốt khi tìm thấy vấn đề

  • Là kết thúc mở
  • Có nhiều hơn một giải pháp tốt
  • Có nhiều giải pháp tồi

Nếu bạn giải quyết các loại vấn đề này, bạn học cách đưa ra lựa chọn, sống với hậu quả và nếu mọi thứ không hoạt động, hãy quay lại và xem lại lựa chọn của bạn. Bạn sẽ học được nhiều điều từ những thất bại của bạn hơn là từ những thành công của bạn, nhưng bạn sẽ có được sự tự tin hơn từ những thành công của bạn hơn là những thất bại của bạn.

Vấn đề tốt với các thuộc tính như những gì tôi liệt kê ở trên giống như vàng, ngoại trừ việc nếu bạn gặp vấn đề tốt từ người khác, họ sẽ không mất gì cả. Quét web cho các vấn đề tốt, và thực hành, thực hành, thực hành. Nếu các vấn đề Euler là nơi bạn phải bắt đầu, thì chúng cũng ổn cho người mới bắt đầu. Nhưng bạn sẽ sớm muốn xây dựng các dự án nhỏ hoặc vừa mà bạn nghĩ là thực sự tuyệt vời . Nếu bạn hào hứng với thứ gì đó bạn đã xây dựng, điều đó sẽ gây ấn tượng với nhà tuyển dụng tiềm năng. Nếu bạn không hào hứng, thật khó để thuê bạn.

Peter Norvig báo cáo rằng phải mất mười năm để trở thành một chuyên gia . Tất nhiên bạn không cảm thấy như một chuyên gia ngay sau khi nhận được bằng cấp của bạn. Tôi sẽ cho bạn biết một bí mật nhỏ: Hầu hết các thành viên của khoa Harvard (tôi là một trong tám năm) cảm thấy như họ không thực sự thuộc về Harvard, họ không biết đủ, và đó chắc chắn là một sai lầm họ đã được thuê Những loại cảm giác này rất, rất phổ biến đối với những người thực hiện chuyển đổi từ trường học đến nơi làm việc, hoặc từ một loại công việc khác. Rất phổ biến có một tên cho nó: "hội chứng kẻ mạo danh."

Mặc dù bạn có bằng cấp, trường đại học của bạn vẫn sẽ nói chuyện với bạn. Nếu bạn có bất kỳ giáo sư thực sự tốt, họ có thể vẫn quan tâm đến bạn. Họ chắc chắn quan tâm rằng một trong những sinh viên của họ đã tốt nghiệp với điểm trung bình B và vẫn cảm thấy cô ấy không thành thạo các kỹ năng cơ bản trong giao dịch của mình. Vì vậy, tìm kiếm một hoặc hai trong số các giáo sư năng nổ nhất, thông cảm nhất từ ​​chương trình của bạn, và nhận được một số trợ giúp tìm kiếm các vấn đề tốt. Sau đó, đặt bản thân bạn phụ trách các kỹ năng, kiến ​​thức và cảm xúc của bạn về chúng. Xây dựng một chút gì đó mỗi ngày và đừng lãng phí bất kỳ thời gian xây dựng quý giá nào của bạn vào bất cứ thứ gì không thực sự tuyệt vời. Cuối cùng, tôi hứa, bạn sẽ lấy lại cảm giác phấn khích về lập trình, và theo đó, bạn sẽ có thể xây dựng sự tự tin vào chính mình.


Tôi phải đồng ý. Đi ra ngoài và chứng minh với các nhà tuyển dụng tiềm năng của bạn rằng bạn BIẾT C, Python, Objective-C và xây dựng một ứng dụng độc lập làm một việc gì đó. Mọi người thường chọn trò chơi vì tùy thuộc vào trò chơi, chúng có thể liên quan đến việc thiết kế và triển khai đầy thách thức và rất nhiều thư viện xung quanh đều miễn phí. Nếu bạn tạo trò chơi cho Windows, GDI / + hoặc DirectX đều là những
lib

Phần "Hầu hết các thành viên của khoa Harvard (tôi là một trong tám năm) cảm thấy như họ không thực sự thuộc về Harvard, họ không biết đủ, và đó chắc chắn là một số sai lầm mà họ đã thuê." của hiệu ứng Dunning của Kruger =)

2
+1 để xây dựng một cái gì đó: nó khiến bạn khác biệt với đám đông, đặc biệt nếu đó là thứ gì đó hữu ích.

5
@Alex, không bao giờ đi qua nhân sự. Nếu bạn may mắn, một người mà bạn biết sẽ biết ai đó nơi bạn muốn làm việc.
Norman Ramsey

1
Bạn biết đấy, bây giờ bạn đề cập đến nó, đó là cách tôi thường tìm được việc làm. Tôi đoán có lẽ trong tương lai tôi nên tập trung nhiều hơn vào các công việc trong (hoặc ngoài rìa) mạng của mình và dành cho bản thân sự phẫn nộ của các máy quét từ khóa.

59

Có một cảnh trên một Luật & Lệnh cũ, trong đó DA phàn nàn rằng cô không học được gì về cách làm công việc của mình tại trường luật, rằng cô không học được gì về thế giới thực. Giáo sư mà cô ấy phàn nàn trả lời: "Đó là một trường luật chứ không phải trường luật sư."

Điều tương tự cũng áp dụng cho khoa học máy tính. Có lẽ bạn đã không học cách đóng góp ngay lập tức cho một số dự án bạn thấy trực tuyến, nhưng có lẽ bạn đã phát triển nền tảng bạn cần để thành công lâu dài.

Đầu tiên, có được một công việc, bất kỳ công việc. Trở nên tự lập. Đặc biệt trong nền kinh tế hiện tại, tôi sẽ không bao giờ có lỗi với bất kỳ ứng cử viên nào khi làm việc tại một hiệu sách hoặc bất cứ điều gì trong khi họ tìm kiếm việc làm phù hợp hơn. Tôi có câu hỏi cho những người ngồi xung quanh không làm gì.

Tìm một dự án, bất kỳ dự án. Có rất nhiều dự án áp dụng trên github.com chẳng hạn.

Tin tốt là sớm hơn bạn nghĩ, sẽ không có ai quan tâm bạn đã đi học ở đâu, điểm trung bình của bạn là gì, hoặc bất cứ điều gì tương tự.

Treo ở đó! Nó có thể khó khăn để đi, nhưng bạn sẽ vui mừng về trải nghiệm một ngày.


8
Gần đây chúng tôi có một cuộc thảo luận tại nơi làm việc về điều này. Bạn có thực sự nghĩ rằng nhận được một công việc không liên quan đến sự nghiệp của bạn sẽ giúp cv của bạn không? Nếu bạn cần nhặt trái cây vì lý do tài chính, tốt thôi nhưng tôi không nghĩ nó có chỗ trong cv của bạn nếu bạn đang cố gắng xây dựng sự nghiệp như một lập trình viên. Nếu bạn không có những hạn chế tài chính tốt hơn để tham gia vào một dự án mà không phải bồi thường kinh tế hoặc cố gắng thành lập doanh nghiệp của riêng bạn. Tham gia vào các dự án nguồn mở hoặc một cái gì đó liên quan đến lĩnh vực này, ngay cả khi tôi là một kỹ thuật viên lĩnh vực tốt hơn nhiều theo quan điểm của tôi.

1
@piotr - Chính bạn đã nói điều đó - "Nếu bạn không có bất kỳ ràng buộc tài chính nào." Bất kỳ sinh viên tốt nghiệp đại học gần đây sẽ có vấn đề này trừ khi họ sống với mẹ và cha. Tôi đồng ý với David M - nếu bạn không thể tìm được việc làm trực tiếp trong lĩnh vực của mình, hãy kiếm một số công việc. Cho thấy rằng bạn không chỉ ngồi một chỗ. Sau đó, khi bạn không làm việc vào ban ngày, hãy tiếp tục học vào ban đêm và hiểu về lĩnh vực của bạn thông qua các dự án, v.v ... Tất nhiên, cũng được gọi và gửi sơ yếu lý lịch.

Bất kỳ công việc có vẻ tốt hơn trên một sơ yếu lý lịch sau đó một khoảng cách làm.
Jim C

Khi bắt đầu sự nghiệp, một công việc không liên quan tốt hơn là không có công việc, theo ý kiến ​​của tôi. Tuy nhiên, tôi không đồng ý rằng bất kỳ công việc nào tốt hơn trong sơ yếu lý lịch hơn là không có công việc. Nếu có một lý do chính đáng cho "không có việc làm", thì nó có thể tốt hơn "bất kỳ công việc nào". Tôi đã tự nguyện trải qua thời gian thất nghiệp kéo dài, nhưng tôi có những lý do hợp lý để tôi có thể giải thích mạch lạc.

5
piotr: "Bạn có thực sự nghĩ rằng nhận được một công việc không liên quan đến sự nghiệp của bạn sẽ giúp cv của bạn không?" Chắc chắn rồi. Tôi nghĩ rất nhiều về một lập trình viên làm việc xây dựng trong thời gian chết hơn là một lập trình viên ngồi ở nhà cả ngày. Nó cho thấy một đạo đức công việc. Tôi chưa bao giờ muốn thuê một thiên tài đơn độc ngồi ở nhà viết mã một mình. Họ không có xu hướng biết cách làm việc tốt với người khác hoặc làm phần bẩn của công việc.

59

Bạn đã xem ProjectEuler chưa? Tôi đã tự dạy Python bằng cách thực hiện các vấn đề trên trang web đó. :] Nếu bạn sau khi học Java hoặc C #, bạn có thể dùng thử. Ngoài ra, tôi cũng khuyên bạn nên thử lập trình GUI.

Biên tập:

Đây là một chủ đề tuyệt vời về SO cho nhiều liên kết bạn có thể xem xét để thực hành mã hóa:

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net


4
Tôi đã nghe rất nhiều về trang web nhưng chưa bao giờ có thời gian để thử các vấn đề, nhưng ngày nay dường như điều duy nhất tôi có là thời gian rảnh nên tôi cũng có thể tiếp tục bận rộn.

44
Project Euler rất ít được sử dụng cho một lập trình viên mới muốn xây dựng kiến ​​thức lập trình. Nó hướng tới việc tìm ra cách giải các bài toán bằng thuật toán mã hóa. Bạn có thể làm một triệu trong số đó mà không trở thành một lập trình viên giỏi (có lẽ bạn sẽ trở thành một nhà toán học tuyệt vời). Viết các thuật toán tuyệt vời không phải là ưu tiên cao đối với hầu hết các công việc lập trình.

1
Tôi không đồng ý Charles - Euler sẽ cung cấp động lực để hiểu các khái niệm nhất định và thực hiện theo chúng.
Broam

Sử dụng nó như Xavier Ho có vẻ thú vị và hữu ích. Đó là, làm cho mình thành thạo những điều cơ bản của một ngôn ngữ mới. Tôi nghi ngờ rằng PE sẽ giúp bạn lập trình (ở quy mô nhỏ) HOẶC toán học; vì vậy bạn có thể lao vào một trong hai cách. Những điểm này sang một bên, tôi đồng ý với Charles.

6
pythonchallenge.com là chìa khóa! Trong khi Euler là các vấn đề toán học cần giải quyết bằng lập trình, thì pythonchallenge là các vấn đề lập trình thuần túy
Xster

48

Tôi đoán từ tên người dùng của bạn rằng bạn là phụ nữ ... Nếu không, hãy thoải mái bỏ qua điều này, hoặc điều chỉnh nó theo quan điểm của riêng bạn.

Theo kinh nghiệm của tôi, phụ nữ tốt nghiệp đại học ngành khoa học máy tính tự coi mình kém năng lực hơn nhiều so với các đồng nghiệp nam có kỹ năng tương tự. Người ta có thể nói rằng phụ nữ (hay chính xác hơn là phụ nữ mà tôi biết) chỉ đơn giản là trung thực hơn so với những thiếu sót của chính họ, nhưng cuối cùng, họ gặp khó khăn hơn khi bán mình cho nhà tuyển dụng.

(Tôi đã dành phần lớn thời gian ở trường học với cảm giác thất bại hoàn toàn so với các bạn cùng lứa, và cuối cùng tốt nghiệp đứng đầu lớp.)

Vì vậy, lời khuyên của tôi sẽ là trung thực với chính mình và tiếp tục làm việc chăm chỉ để phát triển các kỹ năng của bạn. Nhưng đừng xem thường những gì bạn biết khi tìm việc và đừng kiềm chế bản thân khi xin việc "tiếp cận".

  • Tìm một người cố vấn có thể cung cấp cho bạn một đánh giá thực sự về giá trị của bạn.
  • Thực hiện các cuộc phỏng vấn giả, và học cách dự đoán sự tự tin, năng lượng và niềm đam mê.
  • Khi bạn thực hiện một cuộc phỏng vấn, hãy nói về các dự án cá nhân của bạn và đặt câu hỏi kỹ thuật. Ổ đĩa của bạn để học và năng lượng của bạn là tài sản tốt nhất của bạn.

Được thêm vào như một suy nghĩ sau:

  • Khi bạn giành được công việc đầu tiên, đừng sợ phải thương lượng mức lương của bạn. Quá nhiều phụ nữ chỉ chấp nhận lời đề nghị đầu tiên một cách biết ơn, và không bao giờ có được những gì họ xứng đáng.

Điều này có liên quan ....
Paul Nathan

+1, tất cả các điểm tốt. Tôi gặp phải tình cảm tương tự với các đồng nghiệp nữ khi tôi còn đi học.
Heather M

6
Không chỉ là một điều phụ nữ; Những người đã có năng lực hoặc có khả năng thấy rằng họ cần phải phát triển (Yay you!) Có xu hướng đặt câu hỏi về năng lực của chính họ hơn những người không bắt đầu nghi ngờ về sự bất tài của chính họ. Có một tên cho hiện tượng này. Hiệu ứng Dunning của Kruger. Trải nghiệm của bạn ở trường là một thành công phi thường nếu bạn rời khỏi trường để có thể tiếp tục con đường học tập suốt đời của mình, trong bất kỳ sự chăm sóc nào bạn kết thúc. Tôi chúc bạn may mắn nhất !!!
Warren P

1
Warren: Hoàn toàn đúng; rất nhiều đồng nghiệp nam ít nói thẳng của tôi có cùng một vấn đề. Ở nhiều nền văn hóa trên thế giới, kể cả ở Bắc Mỹ, các bé gái không được khuyến khích cạnh tranh mạnh mẽ và thể hiện kỹ năng của mình nhiều như các bé trai, vì vậy tôi đã thấy đặc điểm đó thường xuyên hơn ở phụ nữ. Nhưng nó chắc chắn không chỉ là một thứ nữ tính.

Câu trả lời tuyệt vời, tôi hoàn toàn đồng ý. Ngoài ra, tôi nhận thấy trong lớp tốt nghiệp của mình, những người phụ nữ đã làm điều đó thường là những sinh viên hàng đầu. (Có nghĩa là, thật đáng buồn, rất nhiều phụ nữ bỏ học có thể đã khiến các lập trình viên hoàn toàn có năng lực ...)

39

Rất nhiều người đã nói rằng bạn nên bắt đầu một dự án cá nhân. Theo tôi, đây là lời khuyên tốt nhất ở đây. Tôi sẽ thêm một số điều tôi không thấy khi tôi đọc các câu trả lời khác ...

  • Chọn cái gì trong một khu vực mà bạn đam mê về . Nơi tốt nhất để tìm thấy điều này có thể là lợi ích của bạn ngoài khoa học máy tính. Đó có thể là một tổ chức phi lợi nhuận mà bạn tham gia, một sở thích mà bạn đam mê, một môn thể thao mà bạn làm.

  • Tìm một cộng tác viên . Viết mã một mình là khó, vì vậy một điều khác sẽ giúp ích rất nhiều là nếu bạn tìm thấy một người bạn để cộng tác với bạn trong dự án này. Điều này làm cho nó rất nhiều niềm vui và giữ cho bạn có động lực. Trong bài đăng trên blog gần đây của mình, Jeff Attwood nói về điều chính xác này trong kinh nghiệm xây dựng SO. http: //www.codinghorror.com/blog/2010/05/on-usiness-rem Remote.html

  • Chọn một cái gì đó khiêm tốn (ban đầu) . Dự án lý tưởng sẽ bắt đầu với một cái gì đó nhỏ. Nếu mục tiêu ra khỏi cổng quá tham vọng thì nó sẽ trở nên quá nan giải. Đã thực hiện phát triển cho PC, điện thoại, hệ thống nhúng và web, tôi sẽ nói rằng web là nơi tốt nhất để tìm kiếm thứ gì đó có thể đạt được mà người khác có thể bắt đầu sử dụng ngay lập tức.

  • Nếu có thể, hãy chọn một cái gì đó mà người khác sẽ sử dụng . Ngay cả khi bạn chỉ có mười "khách hàng", cảm giác có người khác sử dụng thứ mà bạn đã xây dựng giống như một loại thuốc. Vô cùng thỏa mãn. Học hỏi từ khách hàng và trả lời họ cũng là một kinh nghiệm học tập có giá trị.

Nếu dự án này là một lao động của tình yêu mà bạn vui vẻ làm việc sâu vào ban đêm, và sau đó nhảy ra khỏi giường vào sáng hôm sau để quay lại với nó, thì những điều tốt đẹp sẽ theo sau. Bạn sẽ học, sự tự tin sẽ phát triển. Và một khi bạn có một cái gì đó mà mọi người có thể nhìn thấy, nó sẽ trở thành khởi đầu cho danh mục đầu tư của bạn. Không có gì gây ấn tượng với các lập trình viên và (đàng hoàng) tuyển dụng các nhà quản lý hơn một cái gì đó thực sự.


Nếu có thể, hãy chọn thứ gì đó mà người khác sẽ sử dụng ... đó là cách tốt nhất để nhận phản hồi
balalakshmi

34

Một vài bình luận, từ góc nhìn của một người đã là nhà phát triển trong hơn 20 năm qua:

Tôi thấy các trang web như Stackoverflow và các công cụ tìm kiếm như Google và không biết tôi thậm chí bắt đầu viết những thứ như thế ở đâu.

Chúng là sản phẩm của các nhóm, chủ yếu dựa trên các thư viện và cơ sở hạ tầng (.net, java, asp.net, v.v.) được sản xuất bởi các nhóm khác và được hỗ trợ bởi kinh nghiệm và tài nguyên. Rằng bạn, cá nhân, không biết bắt đầu từ đâu để làm điều gì đó tương tự là hoàn toàn dễ hiểu. Đừng lo lắng về điều này.

Trong một mùa hè, tôi đã có cơ hội làm việc như một nhà phát triển iPhone, nhưng tôi cảm thấy như tôi chủ yếu dán các thư viện mà những người khác đã viết với rất ít hiểu biết về các cơ chế xảy ra bên dưới mui xe.

Rất nhiều công việc phát triển bây giờ là như thế, tôi sợ. Nhưng có rất nhiều phạm vi để thực hiện công việc thú vị 'trên đỉnh' của những thư viện đó. Và đừng lo lắng về việc tìm kiếm các thuật toán khó khăn - gần như chắc chắn bạn sẽ không bao giờ phải thực hiện một danh sách nhanh, danh sách liên kết hoặc bất cứ điều gì trong sự nghiệp của bạn. Đó là những gì các thư viện dành cho.

Về cơ bản, 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 đã học được cách lập trình.

Biết cách lập trình và biết cách hoạt động như một nhà phát triển chuyên nghiệp là hai điều rất khác nhau. Bạn chỉ cần một số kinh nghiệm, tốt nhất là làm việc với các nhà phát triển khác trên các hệ thống trong thế giới thực. Cố gắng thêm C # hoặc Java vào bộ kỹ năng của bạn - không có nhiều khác biệt giữa chúng để kiến ​​thức có thể chuyển được. Coi chừng trở nên quá chuyên môn quá sớm. Bạn có thể phải chấp nhận rằng bạn sẽ không kiếm được nhiều tiền ngay lập tức, vì vậy hãy giữ chi phí cá nhân của bạn ở mức thấp trong một thời gian nếu bạn có thể.

Bắt đầu làm việc với dự án bạn đã đề cập, nhưng cũng như tăng kiến ​​thức lập trình của bạn, hãy thử sử dụng nó là một cách để có kinh nghiệm về các kỹ năng liên quan như kiểm soát phiên bản, kiểm tra đơn vị và tích hợp, và thậm chí viết tài liệu đơn giản. Những loại kỹ năng này là những gì phân biệt một nhà phát triển với một lập trình viên, và là một màn trình diễn tốt cho một nhà tuyển dụng tiềm năng. Có rất nhiều công cụ miễn phí có sẵn (phiên bản rõ ràng của Visual Studio, github, nunit, ứng dụng Google) có thể trợ giúp.

Từ những gì bạn đã viết, có vẻ như bằng cấp CS của bạn đã dạy bạn cách suy nghĩ về các vấn đề kỹ thuật. Bạn dường như cũng có một mức độ hiểu biết về bản thân tốt, bao gồm về giới hạn kỹ thuật và kinh nghiệm hiện tại của bạn. Sử dụng những điều này như là lợi thế. Bây giờ không phải là thời điểm tốt để tham gia vào thị trường việc làm, nhưng nếu bạn làm việc chăm chỉ, bạn sẽ ổn thôi. Đừng lo lắng, học hỏi, rút ​​kinh nghiệm, luôn cập nhật, cố gắng làm những việc bạn thích.

Chúc may mắn!


"Bạn gần như chắc chắn sẽ không bao giờ phải thực hiện quicksort, danh sách được liên kết hoặc bất cứ điều gì trong sự nghiệp của bạn" Ở vị trí hiện tại của tôi, tôi đã phải thực hiện một quicksort cho một danh sách liên kết bằng văn bản tùy chỉnh. Tôi đã không phải thực hiện danh sách mặc dù. Có giá trị nhất định trong việc biết làm thế nào những điều cơ bản hoạt động.

Tôi đồng ý rằng một nhà phát triển giỏi nên biết cách các cấu trúc dữ liệu và thuật toán cơ bản này hoạt động và có thể thực hiện chúng. Tôi đã phải cuộn danh sách liên kết của riêng mình một vài lần nhưng không bao giờ (may mắn cho tôi) phải viết một bản tóm tắt. Quan điểm của tôi là OP không nên lo lắng quá nhiều về các thuật toán mà cô ấy có thể đã học trong thời gian học vì nhiều ngôn ngữ / nền tảng (.net, Java, C ++, v.v.) có thể sẽ bao gồm các triển khai được viết sẵn.

31

Lập trình không phải là tất cả về sự hiểu biết của bạn về các thuật toán hoặc điểm trung bình của bạn trong thời gian học đại học. Lập trình là về khả năng suy nghĩ vượt trội, mong muốn và sẵn sàng học hỏi và quan trọng nhất là sự sáng tạo.

Theo ghi chú cá nhân, tôi vừa tốt nghiệp đại học vào tháng 5 năm ngoái và tôi có điểm trung bình khủng. Tôi đã tập trung nhiều hơn vào đời sống xã hội của mình hơn là học thuật và tôi đã phải trả giá.

Tuy nhiên, trong cuộc phỏng vấn xin việc gần đây của tôi ở trường đại học, ( tôi chỉ mất chưa đầy một năm để hạ cánh ), tôi đã thể hiện sự sáng tạo, niềm đam mê học hỏi và kỹ năng phân tích, điều đó đã giúp tôi có được công việc.


27

Lưu ý: Tôi hy vọng bài viết này sẽ được hạ cấp. Đây không phải là một câu trả lời cho poster gốc mà là một quan sát trên hầu hết các ý kiến ​​tôi đã đọc ở trên.

Những câu trả lời tôi đang đọc ở trên thực sự làm tôi sợ. Dường như có một cảm giác gần như phổ quát rằng độ comp.sci là vô dụng hoặc không liên quan, hoặc không dạy bạn bất cứ điều gì. Có độ comp.sci thực sự trở nên tồi tệ như vậy, hay đây chỉ là không khí nóng từ các nhà phát triển mà không có bằng cấp cố gắng biện minh cho sự thiếu hụt của họ?

Nghiêm túc mà nói, những gì họ đang dạy người trong trường đại học ngày nay? Khi bạn làm bằng CS (ít nhất là khi tôi còn là sinh viên) khi bạn tốt nghiệp, bạn sẽ nắm bắt tốt về thiết kế trình biên dịch, comp. độ phức tạp, phương pháp chính thức và logic, toàn bộ sở thú về cấu trúc và thuật toán dữ liệu, nghiên cứu hoạt động cơ bản (LP, v.v.), cơ sở dữ liệu, mã hóa và bảo mật, thuật toán lập lịch, giao thức mạng, phát triển internet, thiết kế hệ điều hành và nhân, thuật toán song song và cấu trúc dữ liệu, thuật toán số và nhiều hơn nữa. Toàn bộ lô thường được đứng đầu bởi một dự án lập trình lớn tạo thành một phần của luận văn cuối cùng. Đừng nói với tôi rằng sinh viên tốt nghiệp comp.sci không có đủ chương trình thực hành.

Tôi cũng đánh giá cao thực tế là một số độ comp.sci truyền thống bỏ qua một số khía cạnh của chu trình phát triển phần mềm, có lẽ bạn sẽ không nghe nhiều về thảo luận về TDD, thử nghiệm đơn vị. Nhưng hãy trung thực một cách tàn nhẫn: nó không thực sự là khoa học tên lửa, phải không? Bạn sẽ không nghe về SCRUM hoặc phân tích điểm chức năng. Dạy các khóa học chi tiết về các vấn đề cơ bản như vậy sẽ khá dư thừa, mặc dù nhiều bằng cấp hiện nay có một khóa học về thiết kế hệ thống, nơi họ cho sinh viên biết về cách thức những thứ này hoạt động.

Cấp, bạn có thể không phải là một chuyên gia về .NET, PHP hoặc các tiêu chuẩn công nghiệp hiện tại khác nhưng điều đó không liên quan. Trong 5-10 năm nữa, ngôn ngữ của sự lựa chọn sẽ thay đổi. Chỉ vì bạn học lái xe trong Peugeot không có nghĩa là bạn không nên lái Fiat, và điều tương tự cũng nên áp dụng cho các ngôn ngữ lập trình. Cần một vài tháng thực hành với một vài cuốn sách hay để có thể làm việc với bất kỳ ngôn ngữ nào.

Chắc chắn nếu bất cứ điều gì là lãng phí thời gian thì những "chứng chỉ" tốn kém này về cơ bản liên quan đến việc tham dự một kỳ thi trắc nghiệm điện tử và hỏi bạn về những chi tiết vụn vặt (thường là vô nghĩa) của một kiến ​​trúc hoặc ngôn ngữ cụ thể. Họ có xu hướng đo lường năng lực của một lập trình viên bằng kiến ​​thức của anh ấy / cô ấy về các trường hợp lập trình bệnh lý nhất định.

Tôi đã làm việc trong ngành CNTT ở nhiều công ty khác nhau và tôi cũng đã tham gia vào quá trình phỏng vấn cho các nhà phát triển phần mềm khác. Chúng tôi đã đặt ra một số câu hỏi fizzbuzz thông thường, nhưng chủ yếu nhắm vào những người không được đào tạo chính thức hoặc thực tập sinh. Tôi chưa bao giờ gặp một sinh viên tốt nghiệp comp.sci không có khả năng trả lời một câu hỏi lập trình cơ bản và không cơ bản.

Lưu ý tôi sống ở châu Âu và chỉ biết về bằng đại học châu Âu. Tuy nhiên tôi khá chắc chắn rằng tiêu chuẩn đại học ở Mỹ cao hơn nhiều so với EU.


4
Đây là cùng một cách mọi người cảm thấy về tất cả các độ một khi họ nhận được chúng. Trường học nói chung chuẩn bị cho bạn một loạt các tình huống. Khi bạn bắt đầu làm việc, sau đó bạn có thể trở nên chuyên biệt hơn và bạn có thể cảm thấy như mình đã lãng phí tất cả năng lượng đó ở trường, nhưng làm thế nào bạn biết bạn sẽ thực sự làm gì? An toàn hơn để tìm hiểu về rất nhiều thứ mà bạn có thể xây dựng hơn là chưa bao giờ tìm hiểu về nó.

1
Tôi thấy cả hai mặt của tranh luận. Tôi đã gặp một số độ CompSci thực sự thông minh, nhưng tôi cũng đã gặp một số người có bằng CompSci hiện đang làm việc trong một trung tâm cuộc gọi vì họ không thực sự quan tâm đến CompSci. Tôi đã học được rất nhiều trong các khóa học CompSci của mình, nhưng tôi phải thừa nhận hầu hết các kỹ năng kỹ thuật đã đưa tôi vào công việc mà tôi đã học ở trường vào thời gian của mình. Khi tôi phỏng vấn cho các công việc kỹ thuật phần mềm, họ thường kiểm tra kiến ​​thức của bạn về các công nghệ cụ thể, chiến lược giải quyết vấn đề và kỹ năng giao tiếp. Không ai trong số đó được dạy rõ ràng ở trường đại học.
Cerin

1
Tôi đã gặp hàng chục sinh viên CS - trong khi phỏng vấn họ - điều đó không thể giải thích bất kỳ thuật toán sắp xếp nào, ngay cả khi phải suy nghĩ trong năm phút. Có lẽ tiêu chuẩn đại học ở đây trong các tiểu bang không được áp dụng hoàn toàn trên bảng. Như @Chris S chỉ ra, thật dễ dàng để lướt qua một mức độ mà không học được gì nhiều.
Dean J

Bạn đang trộn lẫn hai thứ ở đây. Tôi thấy việc làm bằng cấp cực kỳ hữu ích - tôi biết nó giúp tôi trở thành một lập trình viên giỏi hơn nhiều, nhưng tôi không bao giờ có thể tìm ra chính xác lý do tại sao (có lẽ là sự kết hợp của một ít kiến ​​thức và cách tiếp cận tốt hơn để giải quyết vấn đề). Điều đó nói rằng, có rất nhiều sinh viên tốt nghiệp ngoài kia (từ một trường đại học khá có uy tín) thậm chí không thể tìm ra cách thực hiện (9,5) ECC với bảng tra cứu 512 byte. Những lập trình viên giỏi là những người vượt ra ngoài tôi không hiểu điều này, nhưng tôi có thể làm bài kiểm tra đố.

1
vấn đề thú vị, nhưng tại sao bạn lại làm một bài kiểm tra ECC bình thường;), ngoại trừ phần cứng, tất nhiên Nhưng đó là một ví dụ điển hình về công cụ tự khai trương mà bạn không / không thể? học tại compSci

24

Sự khiêm tốn của bạn sẽ phục vụ bạn tốt. Các tâm mới bắt đầu là hữu ích cho tất cả các loại học tập, dù có bao nhiêu giáo dục và kinh nghiệm chúng tôi có.

Làm việc thông qua các bài tập, như những người khác đã đề xuất - tại Project Euler và các nơi khác.

Tìm ra giải pháp để giúp đỡ những người khác ở đây trên SO. Bài tập tìm hiểu câu hỏi, xác định những gì bạn biết có thể áp dụng và cuối cùng là đưa ra câu trả lời sẽ giúp xây dựng sự tự tin của bạn, vì các bài tập xây dựng kỹ năng của bạn.

Gắn bó với nó; bạn sẽ ổn thôi.


9
Sự khiêm tốn sẽ phục vụ bạn tốt, trừ khi điều đó không xảy ra - để bước chân vào cửa ( kể cả trong một dự án cá nhân), bạn cần một lượng tương ớt nhất định, thậm chí bạn có thể cần phải tự tin một cách phi lý.

@Ian, tôi khiêm tốn chấp nhận sự sửa sai của bạn. ;-) Nghiêm túc - đó là một điểm tốt, và một bài viết tốt. Tôi không thích kết luận, rằng phụ nữ nên là những kẻ khốn nạn giống như đàn ông, nhưng thật khó để tranh luận với tính thực tế của nó.
Carl Manaster

@Carl - quá nhanh chóng của một kết luận :-) Tuyển nhân viên / quản lý ăn sự kiêu ngạo / tự đề cao. Đặc biệt là khi đánh giá các ứng cử viên cho các vị trí kỹ thuật mà họ không bắt đầu hiểu các yêu cầu của. Tôi đã thấy nhiều người đàn ông rất có trình độ trong cùng một chiếc thuyền với những người phụ nữ nghèo này, khi một người quá tự tin, tự quảng cáo xuất hiện và đánh cắp chương trình. Tôi không nghĩ chúng ta có thể coi đó là một chiến thắng để khuyến khích nhiều phụ nữ tự tin hơn. Nơi mà chúng ta có thể làm tốt nhất, IMHO, là bằng cách đào tạo nhân sự để đưa ra quyết định tốt hơn, hoặc bằng cách làm lại quá trình.

23

Tốt nghiệp với bằng cấp khoa học viễn tưởng không còn khiến bạn trở thành một lập trình viên tuyệt vời hơn là tốt nghiệp chương trình âm nhạc khiến bạn trở thành một nhạc sĩ tuyệt vời.

Không có thay thế cho thực hành, thực hành, thực hành và kinh nghiệm. Chương trình 8 giờ một ngày và trong 5 năm bạn có thể hiểu rằng bạn thiếu ngay bây giờ.


6
Đó không phải là một chiếc Catch-22 phải không? Chương trình toàn thời gian để có được công việc bạn muốn.
Jim Schubert

16
Không, trong 5 năm bạn sẽ nhận ra mình chẳng biết gì cả :)
Earlz

1
@Earlz, Và những gì bạn làm cuối cùng cũng biết là đã lỗi thời.
Dan Bryant

4
Thật vậy - với tất cả các "trường Java" (có thể có hoặc không xảy ra ở đây), thật dễ dàng để quên rằng khoa học máy tính không phải là lập trình. Tôi biết những người đã lấy bằng CS và đến trường y, và các nhà sinh vật học cuối cùng là lập trình viên. Tuy nhiên, không ai từng hỏi tại sao bằng cấp sinh học không biến họ thành bác sĩ phẫu thuật: mọi người đều biết rằng nghiên cứu sinh học không phải là thực hành y khoa.

1
@Earlz làm thế nào rất Zen :)
Tullo_x86

23

Một câu hỏi thẳng thắn, câu trả lời tuyệt vời - Tôi sẽ nhanh chóng nói chuyện :)

Các câu trả lời cho đến nay đã khiến tôi cười một chút - chúng có khả năng tôn vinh sự vĩ đại của chính chúng ta một cách trớ trêu. Tôi đến SO vì tài liệu kém và lỗi trong khuôn khổ. Rõ ràng có vàng khác ở đây nhưng nó đáng để giữ sự khiêm tốn của bạn, ngay cả khi bạn trở thành một nhà phát triển vĩ đại - và tôi nói điều đó từ quan điểm của sự kiêu ngạo lịch sử cá nhân (?).

Hãy nhớ rằng bạn có thể không (có thể không) được thuê bởi một kỹ thuật viên mặc dù những người quản lý và nhân sự giỏi hơn sẽ sử dụng một kỹ thuật viên để đánh giá bạn.

Nhà tuyển dụng có một kế hoạch cho nhân viên của họ, cố gắng và nhận thức kế hoạch đó toàn bộ thông qua và đặt mình vào đó một cách tôn trọng, có lẽ cung cấp cho nó một chút quay vòng và nâng cao cá nhân. Khó khăn và cơ hội có thể nảy sinh khi một nhà tuyển dụng không thực sự có kế hoạch cụ thể - hỏi những câu hỏi hay và giúp họ chỉ định kế hoạch thực sự có thể khiến bạn bị mắc kẹt trong những tình huống này.

Người kinh doanh có thể (đúng) hoang tưởng về các nhà phát triển bảo trợ họ vì chúng ta thường phải quản lý nhận thức của họ một chút để giúp họ đưa ra quyết định mà họ không hiểu - và tôi nói rằng, nói thẳng ra, để cho bạn thấy viễn cảnh KHÔNG phải có hoặc phát triển các đồng nghiệp phi công nghệ của bạn. Tôi khiêm tốn nghĩ rằng việc hiểu rằng đây thường là bản chất của mối quan hệ giữa công nghệ và phi công nghệ là quan trọng - và thật khó để tránh, những gì chúng ta làm là khó hiểu.

Trở nên chuyên nghiệp, cởi mở và tôn trọng sẽ có được công việc - nếu bạn không biết gì về chuyên môn, tôi chắc chắn có những nơi để làm việc đó trên web - tôi ước ai đó đã chỉ ra điều đó cho tôi khi tôi bắt đầu. :)

Điều cuối cùng mà tôi muốn nói là, khi bạn phát triển và kiến ​​trúc tốt hơn, và bạn có vẻ như bạn đã bước vào con đường này, bạn có thể thấy mã chuyên nghiệp của bạn có thể trở nên cực kỳ không thỏa mãn, ngay cả khi đó là giải pháp phù hợp.

Tôi không chắc giải pháp là gì nhưng hãy cố gắng tìm một lối thoát và ít tham gia vào công việc, nó sẽ giúp bạn tăng tốc và sống một cuộc sống tốt hơn - đặc biệt cẩn thận khi cố gắng nỗ lực thêm để thực hiện một cái gì đó "đúng" - rất nhiều thời gian bạn sẽ tạo ra sự phức tạp cho đồng nghiệp của mình và bạn sẽ gần như không bao giờ có thể đưa vào lượng thời gian bạn cần để nhận ra nó trong khung thời gian của dự án. Một triệu chứng của điều này là "tối dần" - khi bạn không muốn giải thích những gì bạn muốn làm với bất cứ ai. Nhiều nhà phát triển giỏi nhất có thể giải thích bản chất những gì họ đang làm với một giáo dân - đây là một kỹ năng tuyệt vời để học và tôi đã thấy nó giải phóng về mặt trí tuệ để thực hành.

Heh, và khi ước tính, để bắt đầu, hãy chia nhiệm vụ của bạn thành các bit, tổng cộng thời gian và sau đó nhân đôi nó (nó được gọi là, chia, chinh phục, diễu hành về nhà;)

Chúc may mắn! Tôi rời trường với mong muốn trở thành một người hướng dẫn trượt tuyết và cuối cùng trở thành một nhà phát triển chính. Tôi chắc chắn bạn sẽ làm tốt bất cứ điều gì bạn cuối cùng cũng làm.


10
Câu đầu tiên của bạn nói rằng bạn sẽ bấm chuông ngắn gọn ... nhưng bạn có một trong những câu trả lời dài nhất ở đây. ;)

+1 cho "chia nhiệm vụ của bạn thành bit, tổng thời gian và sau đó nhân đôi nó (được gọi là, chia, chinh phục, diễu hành về nhà;)" ... mặc dù trong nhiều công việc bạn nên tăng gấp bốn lần vì các nhà quản lý sẽ mong đợi nó được thực hiện một nửa thời gian và thêm một dự án khác nên được thực hiện trong cùng một khung thời gian mà không cho phép mở rộng ước tính của bạn. Tôi thậm chí đã nghe nói về "nhân hai và tăng đơn vị (1 giờ => 2 ngày, 1 ngày => 2 tuần, 1 tuần => 2 tháng, 1 tháng => 2 quý, 1 quý => 2 năm, .. .) và sau một số kinh nghiệm làm việc thực tế, nó không buồn cười như tôi vẫn nghĩ

chỉ cần in cái này và dán lên tường
Câu hỏi

22

Vâng, đó là điều khá bình thường - hầu hết các trường học, ngay cả những trường có uy tín, đều làm tốt công việc giảng dạy khoa học máy tính và một công việc khủng khiếp là dạy phát triển phần mềm. Điều này đang dần trở nên tốt hơn, nhưng vẫn còn một chặng đường dài để đi.

Dù sao, có vẻ như bạn đang làm hầu hết những điều đúng:

  • Chương trình ngoài công việc
  • Đọc sách về phát triển phần mềm (Hoàn thành mã, Mẫu thiết kế, Tháng huyền thoại, v.v.).
  • Tiếp tục học các công nghệ mới - trường học nên dạy bạn cách học ngôn ngữ, chứ không phải ngôn ngữ. Tìm hiểu các khung công tác mới, IDE, apis, thư viện, công cụ xây dựng, v.v.
  • Đi vòng quanh trên các trang web như SO và ở đây. Tương tác với những người có kinh nghiệm một cách thường xuyên là một trong số ít các lối tắt cho trí tuệ.

1
Thành thật mà nói, Tháng huyền thoại là một chút đánh giá quá cao, phải không? (Nhưng tôi thực sự thích loại sách "* in a Nutshell").
Camilo Martin

2
@Camilo không đồng ý. Tháng huyền thoại là về chủ đề của công nghệ phần mềm, trong khi những cuốn sách ngắn gọn chỉ nói về một công nghệ duy nhất. Cuối cùng, bạn sẽ cần một sự hiểu biết về các vấn đề phần mềm con người với phát triển phần mềm. MMM là một trong những bài đọc bao gồm chủ đề.
Brian Wigginton

21

Câu hỏi thực sự tuyệt vời. Tôi chắc rằng có rất nhiều người đang trải qua chính xác những gì bạn đã mô tả trong tất cả các lĩnh vực của cuộc sống và công việc.

Đầu tiên - không còn lo lắng về những thứ ngoài tầm kiểm soát của bạn. Bạn không được phép căng thẳng hoặc thậm chí nghĩ về trường học, những gì bạn đã làm hoặc không học hoặc bạn đã học tập tốt như thế nào.

Thứ hai - chuyên. Sẽ luôn có nhu cầu cho những người thực sự giỏi trong những gì họ làm ngay cả khi những gì họ làm xảy ra là tối nghĩa. Bạn cần chọn ngôn ngữ lập trình yêu thích của mình và quyết tâm hoàn toàn làm chủ ngôn ngữ đó và ngôn ngữ của bạn biến nó thành ngôn ngữ của riêng bạn. Bạn đã có rất nhiều lời khuyên tuyệt vời về cách cải thiện kỹ năng lập trình nhưng cuối cùng không có gì có thể so sánh với việc tìm kiếm cuốn sách có thẩm quyền về chủ đề này và tự nhốt mình trong phòng trong vài ngày trong khi bạn không làm gì ngoài việc đọc từng trang và viết ra mọi ví dụ mà cuốn sách đưa ra.

Thứ ba - quảng cáo bản thân. Trong lịch sử khoa học máy tính, bước này chưa bao giờ dễ dàng hơn ngày nay. Các câu trả lời mà bạn đưa ra và các câu hỏi mà bạn hỏi về SO là sơ yếu lý lịch của bạn. Hãy tự mình trở thành cơ quan hàng đầu về SO cho ngôn ngữ mà bạn đã quyết định thành thạo. Chịu trách nhiệm cho bất kỳ câu hỏi nào đi qua máy chủ này với thẻ của bạn trên đó, ngay cả khi nó có nghĩa là hàng giờ nghiên cứu sâu rộng và đưa ra câu trả lời muộn. Tìm kiếm tài liệu lưu trữ và đọc qua mọi câu hỏi từng được hỏi về SO về chủ đề của bạn. Khắc phục thông tin sai, cung cấp câu trả lời và biến thể của riêng bạn cho câu trả lời và kết hợp một vài câu trả lời hiện có thành một câu trả lời tốt hơn. Lũ lụt SO với một dòng bất tận của ý kiến của bạn, câu trả lời và chỉnh sửa, nên bạn raison d'être (cộng với niềm vui của nó vì bạn nhận được điểm danh tiếng).

Thứ tư - làm việc trên hình ảnh công cộng của bạn. Tự tin là điều cần thiết để hạ cánh công việc tốt nhất. Các công ty muốn những người là đồng nghiệp, cộng tác viên và nhà truyền thông tuyệt vời. Nếu bạn nghĩ rằng đây có thể là một vấn đề, hãy nói với bạn bè của bạn rằng bạn cần họ để tăng cường cái tôi của bạn và tắm cho bạn bằng những lời bổ sung vô tận, sau đó đến thư viện địa phương của bạn và chọn một trong những thứ này .


2
+1 để đề cập đến tầm quan trọng của kỹ năng hợp tác / giao tiếp. Hầu hết sinh viên tốt nghiệp thiếu chúng.
Denis Otkidach

1
Tôi không đồng ý với chuyên môn, mọi công nghệ sẽ chết vào một ngày nào đó vì vậy nếu bạn chuyên quá nhiều, bạn sẽ không có việc làm ... ok, một số công nghệ (=> COBOL) chết rất chậm, cho phép bạn có đủ thời gian để chuyên về công nghệ mới nhưng nó vẫn có rủi ro.

1
Chuyên ngành có vị trí của nó, nhưng tôi không chắc rằng ra khỏi trường đại học là thời gian chính xác. Tôi cũng tranh luận về cung và cầu - một phần của mánh khóe chuyên môn là tìm ra ngách cần lấp đầy, chứ không phải cái đã đầy. (và trên mặt trận COBOL - một vài năm trước, người bạn cùng ngồi trên máy bay của tôi trông như ở độ tuổi từ giữa đến cuối năm 20, nhưng đang đối phó với một dự án chuyển hệ thống kế thừa ... và như tôi đã hiểu nó, họ vẫn gắn bó với COBOL, phải chuyển sang phần cứng mới - vì vậy có khả năng sẽ có một thế hệ lập trình viên mới của COBOL ngoài kia)

21

Được rồi, vì vậy đã xem tin tức về tin tặc này và tôi giống như "HOLY CRAP THAT'S ME !!"

Vì vậy, tôi đã tốt nghiệp vào tháng 12 năm ngoái với tấm bằng CS và cảm thấy rằng bằng cách nào đó tôi đã vượt qua được các lớp học của mình và có được một tấm bằng mà không thực sự kiếm được nó. Cảm giác như tất cả các bạn cùng lớp của tôi có kỹ năng mã hóa đáng kinh ngạc và tất cả những gì tôi có thể làm là tạo ra các chương trình Java cơ bản. Học cách viết mã và trở thành một lập trình viên giỏi chỉ mất rất nhiều thời gian. Có rất nhiều thứ để học hỏi và lời khuyên của tôi là hãy dành nó một chút thời gian. Bạn sẽ học được những điều khi bạn đi. Giống như mọi người khác đã buồn, cách tốt nhất để học là làm đặc biệt là với mã hóa. Chưa kể có quá nhiều về việc xây dựng các ứng dụng mà họ thậm chí không bận tâm kể cho bạn về trường học. Đừng cảm thấy tồi tệ, chỉ cần biết rằng có rất nhiều thứ để bạn học hỏi và nhận ra rằng sẽ mất thời gian để học nó.

Tôi nghĩ bạn chắc chắn nên nhìn qua thành phố nơi bạn lớn lên. Có rất nhiều công ty đang tuyển dụng sinh viên tốt nghiệp CS, và không phải tất cả trong số họ yêu cầu hoặc mong đợi bạn trở thành một lập trình viên tuyệt vời ngay khi ra trường. Có rất nhiều cuộc phỏng vấn tôi đã thực hiện khi tôi không được hỏi bất kỳ câu hỏi mã hóa nào (cũng có rất nhiều câu hỏi yêu cầu tôi giải thuật toán và viết mã). Áp dụng tại các công ty quan tâm đến khả năng học hỏi của bạn nhiều hơn những gì bạn đã biết (theo kinh nghiệm của tôi, các công ty lớn hơn quan tâm đến vấn đề này vì nó sẽ không ảnh hưởng đến họ nhiều nếu bạn không thể loại bỏ mã ngay lập tức).

Tôi không biết liệu mã hóa có phải là thứ bạn muốn làm và theo đuổi hay không, nhưng cũng có rất nhiều công việc không mang tính kỹ thuật đòi hỏi nền tảng kỹ thuật. Bạn có thể xem xét các lựa chọn đó.

Tôi sẽ không tập trung vào việc học các ngôn ngữ như C # hoặc Java và tập trung vào các nguyên tắc lập trình. Bạn sẽ có thể chuyển các kỹ năng mã hóa tốt và áp dụng chúng bằng bất kỳ ngôn ngữ nào (điều này rất quan trọng đối với tuổi thọ trong sự nghiệp của bạn..Java sẽ không nóng mãi mãi). Mặt khác, biết "các kỹ năng nóng" có thể giúp tìm được việc làm. Kỹ năng phỏng vấn là THỰC SỰ quan trọng. Thực hiện mọi cuộc phỏng vấn bạn nhận được, ngay cả khi nó chỉ để thực hành.

Dù sao, đừng nghĩ rằng các công ty lớn như IBM nằm ngoài tầm với của bạn. Tôi đã cảm thấy giống như bạn vài tháng trước và bây giờ tôi làm việc tại IBM. Điểm trung bình của tôi cũng không tuyệt lắm. Tôi vẫn mải mê lập trình nhưng tôi biết mình sẽ khá hơn với thời gian. Chỉ cần tự tin vào khả năng học hỏi của bạn!


1
Tôi muốn nói rằng các công ty lớn như IBM có nhiều khả năng hơn so với nhiều nơi khác - họ có đủ người ở đó để họ có thể đào tạo nguồn tài năng của mình, không giống như những nơi nhỏ hơn mà bạn dự kiến ​​sẽ hoạt động. Và luôn luôn có thực tập - có thể hơi muộn khi tốt nghiệp, nhưng nhiều cơ quan chính phủ mang đến thực tập mùa hè ... vì vậy bạn có thể nhận được 'NASA' hoặc tương tự trong hồ sơ của bạn.

20

Wow, rất nhiều câu trả lời trước đây.

Làm thế nào về một phản ứng hoàn toàn khác nhau ...

Hãy điều chỉnh lại vấn đề của bạn dưới dạng con người.

"Tôi đã tốt nghiệp lớp thụ thai và tôi sắp chào đời. Mẹ tôi đang đăng quang và tôi sẽ được sinh vào sáng mai. Nhưng khi tôi nhìn vào các vận động viên như Usain Bolt, tôi nghĩ" làm sao tôi có thể chạy nó Nhanh?".

Nhưng bạn ở đây, bạn là một con người đầy bản lĩnh, bạn đã đi học, bạn có thể đi bộ, nói chuyện và nếu bạn đã thực hiện một khóa học máy tính, bạn khá thông minh để khởi động. Không có gì phải xấu hổ cả.

Bây giờ, Usain Bolt đã được sinh ra và sau đó đột nhiên bắt đầu những lúc điên rồ trên đường đua, hoặc đó là một lượng lớn để tiếp tục với cuộc sống, tìm hiểu những gì anh ta quan tâm, tiếp theo là một lượng ứng dụng đáng kinh ngạc và sau đó đột nhiên " Bế! " anh ấy đã ở đó.

Nhiều khả năng là cái sau. Vì vậy, đừng cho bản thân một khoảng thời gian khó khăn vì không biết bạn nên làm gì. Phải mất thời gian để tìm ra những gì phù hợp với bạn. Đó là cho bạn , không phải những gì cha mẹ bạn nghĩ, không phải những gì đồng nghiệp của bạn nghĩ. Điều gì là phù hợp với bạn . Những gì thắp sáng ngọn lửa của bạn . Điều khiến bạn nghĩ * vâng điều này thật tuyệt "ngay cả khi những người khác nghĩ rằng đó là quần.

Không có gì lạ khi bắt đầu (và / hoặc) rời khỏi văn bằng của bạn mà không biết bạn muốn làm gì.

Đối với tôi, tôi học giỏi ở cấp độ O (bằng cấp của Vương quốc Anh) nhưng tôi không thể nói xấu về cấp độ A (bắt buộc phải vào Đại học để làm bằng cấp). Vì vậy, tôi đã đi đến một nơi ít hơn để làm bằng cấp của mình (và kết quả là không phải bằng cấp tôi sẽ thích). Nhưng tôi đã dập tắt nó (vẫn không có đầu mối gì tôi muốn làm nghề nghiệp) và học được rất nhiều về điện tử và những thứ mà hầu hết những người làm phần mềm không bao giờ học được. Trong thời gian này tôi làm việc tự do như một nhà văn trò chơi máy tính.

Kết quả cuối cùng? Sau khi đạt được bằng cấp của mình (với sự khen thưởng), tôi bước vào một công việc với một cuộc phỏng vấn xin việc với mức lương cao hơn so với những người làm việc điện tử thẳng và tôi đã không thay đổi mái tóc của mình hoặc mặc một bộ đồ. Gì? Ở tuổi 23, chuyện đó rất quan trọng (bây giờ nhìn lại, ở tuổi 44, tôi cười vì điều đó, nhưng đó là sự tẻ nhạt của tuổi trẻ đối với bạn).

Công ty đó đã phá sản và sau đó tôi bắt đầu nghiêm túc hơn. Nhưng có lẽ đã không được vài năm nữa trước khi tôi đột nhiên tìm thấy (một cách tình cờ) điều thực sự khiến tôi quan tâm. Hóa ra là các công cụ phần mềm cấp thấp. Đáng lẽ ra rõ ràng - tất cả các trò chơi trên máy tính mà tôi viết đều được viết bằng cách lắp ráp, tôi luôn thích những thứ cấp thấp mà không ai có thể có được. Nhưng để thấy rằng đó là một tương lai, điều đó sẽ trưởng thành hơn và không có gì ngạc nhiên khi nó không thực sự xuất hiện cho đến giữa những năm 20 tuổi của tôi.

Tôi thường ấn tượng (và ngạc nhiên) rằng những người trẻ tuổi, thường vẫn còn ở tuổi thiếu niên, dường như biết họ muốn làm gì. Nhưng câu hỏi thực sự là, họ vẫn đang làm điều đó ở tuổi 27? Hoặc họ đã thay đổi khóa học vì những ý tưởng ban đầu của họ không đúng với họ?

Về mặt làm thế nào để tôi làm một cái gì đó ấn tượng như THAT (bất kể đó là gì, Google, SO)? Vâng, bạn làm điều đó trong khối, giống như bạn làm phần mềm và mọi thứ khác trong cuộc sống. Bạn bắt đầu với những điều cơ bản, có được kinh nghiệm trong đó. Nếu bạn đủ tốt, bạn tiếp tục và có thêm kinh nghiệm, v.v. hoặc bạn từ bỏ nó bởi vì bạn nhận ra rằng bạn không đủ tốt hoặc nó nhàm chán như địa ngục (đó là lý do tại sao tôi không thực hiện giao tiếp mặc dù luôn luôn như vậy là một mỏ vàng. Đối với tôi, nó thật nhàm chán!).

Bằng mọi cách, hãy nhìn vào đồng nghiệp của bạn, nhìn vào người lớn tuổi của bạn, kiểm tra các lựa chọn và sở thích của họ. Nhưng kiểm tra của riêng bạn là tốt. Thông thường những gì từ cái nhìn đầu tiên có vẻ điên / bonkers thực sự là thỏa thuận. Làm cái gì mà bạn thấy thú vị (thay vì chỉ trả tiền các hóa đơn) là SO nhiều bổ ích.

Vâng, tôi biết là một người 23 tuổi, bạn tập trung vào chiếc Audi TT và căn hộ mát mẻ và do đó bị cám dỗ bởi tiền bạc thay vì sự lựa chọn nghề nghiệp hợp lý, nhưng đôi khi nghiêm túc bạn sẽ nhận ra chiếc xe tuyệt vời không bị phá vỡ trở thành - cô gái đó nên thích bạn vì bạn là ai chứ không phải bạn lái xe.

Nghiêm túc, suy nghĩ về nó. Các giải pháp không tuyệt vời có thể chỉ là câu trả lời đúng.


-1: Bạn có thể thắt chặt vấn đề này một chút và tập trung hơn vào câu hỏi và ít hơn về bản thân?
Jim G.

2
Nó không phải là về "tôi", mà là về cách tôi đi từ đây đến đây mà không biết ban đầu "ở đây" ở đâu. Tôi chỉ sử dụng trải nghiệm của bản thân làm ví dụ vì tôi biết trải nghiệm của mình tốt hơn trải nghiệm của người khác. Nếu bạn đọc nó như về tôi, bạn đọc nó từ quan điểm sai. Thông thường nếu bạn "thắt chặt" mọi thứ khi bạn đặt nó, bạn sẽ không cung cấp nền tảng cho quan điểm được thể hiện và khiến người đọc bối rối. Tôi có thể đã viết "Tôi không biết tôi muốn làm gì khi tôi tốt nghiệp, nhưng bây giờ tôi làm blah blah". Điều đó sẽ không truyền cảm hứng cho bất cứ ai tiếp tục - không có "lý do thực sự để tin" (TM).

Câu trả lời tốt, Stephen. Chỉ từ một POV khác với các câu trả lời khác ở đây.

+1, Ước gì tôi có thể thêm 1000 phiếu để đưa ra câu trả lời hàng đầu này. Chạm vào tôi!

18

Ngoài những lời khuyên tuyệt vời do người khác đưa ra, tôi sẽ thêm việc tham gia vào các sự kiện dành cho nhà phát triển trong khu vực của bạn. Tìm kiếm các cuộc gặp gỡ, nhóm người dùng, trại bar, trại mã, v.v ... Điều này sẽ giúp bạn kết nối với các nhà phát triển khác, có được công việc, theo kịp các công nghệ mới và cung cấp cái nhìn thực tế về mức độ kỹ năng của các nhà phát triển khác.


Tôi muốn kêu vang trong cái này. Làm cái này. Tôi mới ra khỏi một trường công nghệ làm việc trong hồ sơ y tế tại một bệnh viện. Tôi bắt đầu đi đến các cuộc họp .NET địa phương. Mất một thời gian, nhưng cuối cùng cũng giành được một vị trí tại một công ty phát triển hỗ trợ máy chủ và ứng dụng. Mặc dù không phải là mục tiêu cuối cùng của tôi trong cuộc sống, nhưng nó lại đánh bại các tập tin y tế.

17

Thực hiện theo quy tắc 10.000 giờ.

Để trở thành bậc thầy của một cái gì đó, bạn cần thực hành ít nhất 10.000 giờ. Vì vậy, dành 10.000 giờ lập trình, và bạn sẽ trở thành một bậc thầy về nó. Nếu bạn chưa dành 10.000 giờ để lập trình và bạn không cảm thấy mình là bậc thầy của nghề thủ công, đừng nản lòng, hãy dành nhiều thời gian hơn cho việc viết mã.

Cũng lưu ý rằng có thể bạn sẽ mất khoảng 3 năm rưỡi để làm điều này nếu bạn lập trình 8 giờ mỗi ngày. Nếu bạn chỉ lập trình trong giờ làm việc, có thể bạn sẽ mất khoảng 4 năm. Nếu bạn chưa dành nhiều thời gian này trong quá trình lập trình 3/4 năm, thì có lẽ bạn sẽ không cảm thấy mình là bậc thầy.


1
và bạn phải chắc chắn rằng bạn không làm đi làm lại nhiều giờ! Đẩy mình tiếp tục học tập.
Froome

+1 cho quy tắc 10k. Lần đầu tiên nghe về nó, nhưng nó có vẻ tiếp thị tuyệt vời và rất thực tế.

14

Chỉ cần một vài suy nghĩ, nếu tôi có thể.

Wendy nói rằng người ta có thể tốt nghiệp với bằng CS, nhưng ít có ý tưởng về thực hành lập trình. Đó không phải là cực kỳ rắc rối, thậm chí khủng khiếp? Điều đáng lo ngại là sự gian lận đã nhấn chìm các khoa tiếng Anh trong thập niên 70: văn học không phải là một tập hợp các ý tưởng mà người ta có thể hiểu và tích hợp, mà là một loạt các 'văn bản' mà học sinh phải trừu tượng hóa và 'giải cấu trúc' ( http: / /www.answers.com/topic/deconloyment ). Hạnh phúc thay, thủy triều thai nhi đang trỗi dậy, có thể bởi vì những người hướng dẫn đã quét sạch trong làn sóng cỏ dại của nó đang nghỉ hưu.

Cách đây nhiều năm - nhiều thập kỷ trước - khóa học đầu tiên về CS đã dạy tôi ngôn ngữ lắp ráp (trước khi C được phát minh) sử dụng các vấn đề thực tế như sắp xếp, băm và tìm kiếm (và, vâng, đệ quy). Khóa học thứ hai của tôi đã dạy thiết kế và hiện thực hóa một trình biên dịch làm việc trực tiếp thực sự. Tôi là một sinh viên bán thời gian tại MIT và hai khóa học đó là tất cả những gì tôi cần để bắt đầu được trả tiền với tư cách là một lập trình viên; và để trở nên có năng suất hơn hai hoặc ba tháng sau.

Vì vậy, sáng nay, nghe thấy tiếng khóc của Wendy, tôi nghĩ rằng chắc chắn MIT, ở tất cả mọi nơi, không thể làm loãng các dịch vụ của mình và đánh lừa học sinh của mình (trong bối cảnh thực hành lập trình) khá là vô dụng. Nhưng khi tôi nhìn vào chương trình giảng dạy EE / CS của MIT, tôi thấy đó chỉ là những gì đã xảy ra:

http://student.mit.edu/catalog/m6a.html

Tôi đặc biệt lưu ý rằng bộ phận sử dụng Python như một / ngôn ngữ giảng dạy! Ý tôi thực sự là! Có vẻ như bằng cấp CS tại MIT có nghĩa là đủ điều kiện để một sinh viên trở thành giáo viên của CS tại MIT. Nói về đệ quy!

Sau đó, tôi đã xem qua đóng góp này cho Mã hóa kinh dị ( http: //www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) và nghĩ rằng nó rất quan trọng của cuộc trò chuyện này:

"Tôi là người đến muộn trong cuộc thảo luận này [về dự đoán thành công trong các ứng cử viên lập trình viên], nhưng theo kinh nghiệm của tôi khi là một sinh viên đại học CS 30 tuổi nở muộn, tôi thấy các lớp lập trình là vô dụng, và ít được dạy như chưa được dạy. Tôi chỉ đến một trường cao đẳng cộng đồng và sau đó là Đại học Illinois ở Chicago, nhưng các lớp lập trình giới thiệu là:

"1. Hướng đối tượng, khiến học sinh ít hoặc không hiểu về các phương pháp thủ tục, và

"2. Các lớp học hết. Các lớp học chủ yếu bao gồm các mô tả về các loại vấn đề khác nhau và toán học đằng sau chúng, thay vì ayntax và cấu trúc, mà mọi người được cho là chỉ đọc cuốn sách.

"Mã hầu như không được thừa nhận trực tiếp cho đến khi lõi Cấu trúc dữ liệu, và sau đó nó vẫn phụ thuộc vào người hướng dẫn mà bạn có, một số rất nhẹ mã và một số mã nặng. Bạn có thể nói rằng đó là một sự cám dỗ lớn đối với giáo viên về ánh sáng mã tại thời điểm này, bởi vì nếu họ tập trung vào mã, họ cũng sẽ phải tập trung vào việc dạy các sinh viên đã tham gia khóa học về khoa học máy tính trong hai năm để lập trình.

"Vì mã hóa là sở thích của nhiều người trẻ, tôi nghĩ rằng các tổ chức giáo dục đã dựa vào đó để thiết lập các đường cong học tập dự kiến ​​của họ, khiến những người không có kinh nghiệm lập trình khi họ vào trường không có lựa chọn nào khác ngoài lừa đảo như điên, tiêu hết về thời gian rảnh rỗi của họ để học mã, hoặc chuyển đổi chuyên ngành. Và đó không hẳn là sự thiếu hụt trong suy nghĩ trừu tượng trong kinh nghiệm của tôi, bởi vì tất cả mọi người tôi biết, người đã bỏ học CS đều kết thúc ở Kỹ thuật điện, không có gì để bắt đầu Trên mặt trận trừu tượng. Họ vẫn không biết cách lập trình, trong khi làm toán mà tôi không thể tạo ra đầu hay đuôi. Những ký ức ngớ ngẩn nhất:

"1. Java là ngôn ngữ lập trình bắt buộc. Tôi sẽ không bash Java ở đây, nhưng sẽ không tốt nếu học sinh phải học bộ sưu tập rác của riêng mình? Và sẽ không phải là một điều hay để học, ngay cả khi chúng tôi không bao giờ quyết định lập trình bằng ngôn ngữ với họ một lần nữa?

"2. Học một lớp cốt lõi về lý thuyết hệ điều hành, sau khi bị Java sử dụng và phát hiện ra nó ở C (dĩ nhiên) mà không có một lớp C nào trong khuôn viên trường?

"Tất nhiên, tôi ba mươi tuổi và cũng là một trong những người luôn lập trình, vì vậy tôi không gặp vấn đề gì, nhưng tôi đã thấy nhiều người mà tôi biết là giỏi trừu tượng hơn tôi (từ lớp Compus, DiffEQ và các lớp vật lý trước đây ) và sự đau đớn hoàn toàn của họ khi cố gắng hoàn thành một chương trình đã được xếp chồng lên họ. "

Chỉ là một vài điểm dữ liệu, nhưng, như những người khác đã nói, ám ảnh.

- Pete


Tôi quá mệt mỏi với quan điểm mờ nhạt này.
Andres Jaan Tack

Python là một trong những ngôn ngữ giảng dạy tốt nhất trong sự tồn tại
Casebash

@Icplben, Pete hoặc Jamaal từ tiền mã hóa.com?
Zaki

14

Thứ nhất, treo ở đó!

Thứ hai, đây là một số điều giúp tôi:

  1. Giữ công việc tìm kiếm của bạn vượt ra ngoài khu vực bạn quan tâm. Chắc chắn là ok để xác định lại vị trí. Cơ hội tuyệt vời để ra ngoài và nhìn thấy một nơi mới!
  2. Bởi vì kinh nghiệm còn thấp, tôi nghĩ người phỏng vấn muốn chắc chắn rằng bạn là người sẽ hào hứng và tràn đầy năng lượng khi làm việc và giải quyết vấn đề. Vì vậy, tôi chắc chắn rằng tôi quan tâm đến tiền mã hóa cho công ty. Mà tôi đã;)
  3. Đặt câu hỏi cho người phỏng vấn của bạn. Nghiên cứu công ty và có một số tài liệu sẵn sàng trong cuộc phỏng vấn. Những mẫu thiết kế nào bạn sử dụng? Tại sao công nghệ X thay vì công nghệ Y? Tôi cảm thấy điều này giúp bạn trở thành một người trong suốt cuộc phỏng vấn và cho bạn cơ hội nghỉ ngơi.
  4. Mã cho vui ở nhà! Nó không phải là thành công, nhưng chỉ cần viết mã có thể sử dụng một kỹ thuật bạn đã đọc về hoặc một công nghệ như cơ sở dữ liệu.

Thứ ba, tôi đã ở trong một chiếc thuyền tương tự như bạn khi tôi tốt nghiệp một lần nữa, ở đó và tiếp tục tìm kiếm. Công việc đầu tiên của bạn là ra khỏi đó.


14

Rất ít người tốt nghiệp bất kỳ ngành học nào là một chuyên gia về một cái gì đó họ chỉ đơn thuần nghiên cứu. Khoa học máy tính không phải là cách đặc biệt trong vấn đề đó. Không có gì đánh bại kinh nghiệm thực nghiệm và bạn chỉ có được điều đó từ việc phát triển phần mềm hoàn chỉnh cho khách hàng thực sự, với tất cả các yêu cầu, hạn chế về thời gian, thay đổi và làm việc theo nhóm.


1
Thật không may, đó là sự thật. Cử nhân là vô dụng, ngoại trừ như một huy hiệu mà bạn quản lý để vượt qua. Điều đó nói rằng, giáo trình comp sci là khủng khiếp ở cấp độ đại học. Chương trình giảng dạy của CM yêu cầu 5 môn toán, nhưng kết hợp ngôn ngữ chính thức, tự động và khả năng tính toán vào một khóa học và đó là một môn tự chọn.
MIA

4
Đồng ý 100%. Tại sao bạn sẽ là một chuyên gia trong một cái gì đó mà bạn vừa đủ điều kiện cho ??
Alex Feinman

13

Tôi đã tìm thấy trang web độc ác này vào một ngày khác http://99designs.com/ Theo thiết kế trang web hoặc thiết kế khác, bạn có thể tìm thấy một số dự án liên quan đến phần mềm.

Đây sẽ là một cách tuyệt vời để có được mã hóa, phát triển một số kỹ năng mới, gặp gỡ một số người mới có thể là nhà tuyển dụng tiềm năng và bạn thậm chí có thể kiếm được một số tiền.

Tôi đã tìm thấy có giá trị lớn cho các nhà tuyển dụng trong việc cho thấy rằng mặc dù bạn không có một công việc mà bạn không ngồi trên mông của bạn. Cho thấy rằng bạn đã ra khỏi đó và thực hiện một số dự án, tốt nhất là những dự án bạn có thể thể hiện tại một cuộc phỏng vấn.


Tôi đã chia ngày của tôi giữa 1) gửi sơ yếu lý lịch 2) xem lại sách nhưng tôi chưa làm việc với bất kỳ dự án nào. Đó là một trang web rất thú vị. Nó có vẻ được nhắm đến các nghệ sĩ và nhà thiết kế hơn là các nhà phát triển phần mềm nhưng tôi sẽ phải điều tra thêm.

Tôi sẽ không lo lắng quá nhiều về những cuốn sách. Như đã đề cập ở nơi khác, cách chắc chắn duy nhất để học là làm. Đừng nản lòng khi phải mất một thời gian để tìm việc. Thật không may, nhưng đôi khi tìm được cái đúng phải mất nhiều tháng. Hãy tiếp tục cố gắng :) Tôi đồng ý với bạn, trang web được nhắm mục tiêu nhiều hơn vào nghệ thuật / thiết kế, mặc dù nếu bạn quan tâm đến các trang web, có một số trong số đó. Ưu điểm là bạn có thể thực hiện một dự án mà không cần phải có ý tưởng và bạn có thể được trả tiền, nếu không, bạn có thể xem sourceforge.net để biết các ý tưởng dự án khác

13

Đừng lo lắng. Rome đã không được xây dựng trong một ngày.

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.

BIÊN TẬP: #! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End

12

Đầu tiên, đừng lo lắng rằng bạn không thể mã google. Google đã được thực hiện trong một số năm bởi rất nhiều lập trình viên rất có kinh nghiệm. Điều đó giống như hoàn thành một văn bằng nghệ thuật thị giác, và tự hỏi làm thế nào bạn có thể làm The Last Supper.

Để săn việc, đừng đổ mồ hôi theo yêu cầu. Chỉ cần gọi cho họ và nói rằng bạn không có nhiều năm, nhưng bạn vẫn muốn đăng ký. Nếu họ thực sự muốn trải nghiệm, hãy hỏi xem có nhiều vị trí cấp dưới hơn không - họ có thể tạo một vị trí mới chỉ dành cho bạn. Hầu hết các công việc được tạo ra cho một người cụ thể. Hãy chắc chắn rằng bạn liên hệ với người quản lý dự án, không phải bộ phận nhân sự. Nhân sự thường không tạo ra việc làm mới, họ thường chỉ sàng lọc ứng viên cho các công việc hiện tại. Google là bạn của bạn trong trường hợp này;)

Đừng cố mã hóa một ứng dụng web (như google hoặc chồng tràn) trừ khi bạn muốn đầu tư khoảng 6 tháng. Đó là một đường cong học tập lớn. Bạn cần học cách quản lý VCS, chạy máy chủ web, mã hóa HTML và CSS, hệ thống cơ sở dữ liệu và ngôn ngữ ứng dụng web. Thật tàn bạo. Hầu hết các công nghệ này không thể chuyển nhượng được trừ khi bạn muốn thực hiện công việc web.

Nếu bạn muốn làm các ứng dụng web, bạn có thể xem xét việc cài đặt một ứng dụng web đơn giản (như IP dựa trên django này cho ứng dụng tra cứu quốc gia - http://www.coulix.net/blog/2006/aug/17/ip- country-flags-django-bình luận / ). Bạn có thể mua sắm với mã giảm giá dreamhost $ 90 (để bạn có thể làm việc trên một máy chủ web thực sự) và cố gắng thiết lập mọi thứ. Đừng lo lắng quá nhiều về bảo mật hoặc hiệu suất (nhưng hãy sử dụng ssh) - đó chỉ là một dự án học tập.

Nếu bạn muốn làm công cụ trên máy tính để bàn, bạn có thể xem pygame.


Tôi nghĩ phiên bản đầu tiên của google đã được thực hiện trong một thời gian ngắn? Giống như trong một mùa hè hoặc một cái gì đó tương tự
Earlz

Apache chạy trên Linux trên máy tính để bàn của bạn là một "máy chủ web thực sự", không cần phải chi tiền. Bạn nghĩ gì về các công ty lưu trữ đang chạy?
TMN

@TMN, bởi máy chủ web, tôi có nghĩa là một ngăn xếp phần cứng và phần mềm sản xuất. Tôi biết rằng DH sử dụng Apache và MySQL, nhưng phát triển trên máy chủ sản xuất có những lợi thế (mọi thứ được thiết lập, bao gồm cả những thứ khó khăn như thư và họ đăng ký tên miền cho bạn) và những nhược điểm (như không có root, và bạn phải có Được sử dụng để phát triển từ xa). Sử dụng một máy chủ sản xuất làm cho bạn đi sâu vào công việc web.

11

Bạn có thể đọc tất cả về lập trình, nhưng bạn sẽ không học cách thực sự lập trình cho đến khi bạn khỏe .. bắt đầu lập trình!

Tôi muốn giới thiệu bạn bắt đầu một dự án cá nhân. Bạn muốn tạo cái gì? một trò chơi? Một blog? Nó không thành vấn đề. Chỉ cần làm một cái gì đó!

Sau đó, sau khi thực hiện một số mã hóa thực tế một chút (vài tuần hoặc vài tháng), tôi khuyên bạn nên cố gắng đóng góp cho các dự án nguồn mở. Dự án cá nhân giúp bạn tìm ra cách lập trình khi mục tiêu chưa được đặt ra cho bạn (biết cách thực sự thiết kế một cái gì đó không thường được dạy ở trường). Đóng góp cho các dự án hiện tại dạy cho bạn làm việc theo nhóm và tuân theo các tiêu chuẩn mã.

Tôi sẽ không lãng phí thời gian để đọc nhiều thứ khác. Tôi muốn nói nhiều nhất là bạn có lẽ nên đọc khoảng 20% ​​thời gian và viết mã 80% còn lại. (tất nhiên, theo thời gian, ý tôi là thời gian của bạn dành cho việc lập trình những thứ liên quan)


9

Chà, đây là hai xu của tôi ... cùng với trích dẫn từ một vài nguồn khác.

Một phần lớn đáng ngạc nhiên của các ứng viên, ngay cả những người có bằng thạc sĩ và tiến sĩ về khoa học máy tính, đã thất bại trong các cuộc phỏng vấn khi được yêu cầu thực hiện các nhiệm vụ lập trình cơ bản.

- Dan Kegel qua Jeff Atwood

http: //www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

Đây là một vấn đề mà tôi đã thấy rất nhiều, thậm chí đến mức những người có nhiều năm "kinh nghiệm" trong hồ sơ xin việc của họ không thể thực hiện các nhiệm vụ đơn giản. Cá nhân, tôi nghĩ rằng các viện giáo dục chịu trách nhiệm phần lớn cho việc này, từ các giảng viên không biết vấn đề này hoặc không thể dạy nó cho các cố vấn, những người nên chỉ đạo sinh viên chỉ muốn kiếm tiền đặc biệt mà không cần tiền một lợi ích hợp lý trong chính lĩnh vực này.

Từ âm thanh của câu hỏi của bạn, bạn sắp ra khỏi trường đại học cảm giác như bạn vừa bị trói buộc trong một vài năm của cuộc đời để có được một mảnh giấy. Đó là cách mà rất nhiều cơ quan tuyển dụng xem bằng cấp ngày nay cho các lập trình viên. Họ muốn những người đã chứng minh rằng họ có thể lập trình, không chỉ là người có một mảnh giấy. Nhưng thực tế là bạn đang đặt câu hỏi này ngay từ đầu cho thấy tôi mong muốn thực sự học lập trình.

Một trong những điều tốt nhất bạn có thể làm để học đã được chỉ ra nhiều lần, đó là công cụ lập trình. Thật không may, mặc dù điều này hoàn toàn sẽ tăng kiến ​​thức và sự hiểu biết của bạn về công nghệ, nhưng nó không có khả năng giúp bạn tìm việc trừ khi đó là thứ bạn có thể đưa vào sơ yếu lý lịch của mình.

Tôi khuyên bạn nên bắt đầu bằng cách xây dựng cho mình một vài ứng dụng với mục đích cụ thể, tìm ra những gì bạn có thể làm và điều gì sẽ thách thức bạn tiến lên phía trước, sau đó đi đến một số nơi bạn có thể nhận công việc tự do. Đừng mong đợi được trả một số tiền lớn cho công việc tự do mà bạn chọn trên web, bạn đang tìm cách thêm nó vào sơ yếu lý lịch của bạn chứ không phải ví của bạn. Khi bạn đã có 3-5 mặt hàng mà bạn có thể chỉ vào và nói "Tôi đã xây dựng nó" hoặc "Tôi đã thiết kế chức năng đó cho họ", sau đó liệt kê tất cả những thứ đó ra và tìm một công ty tuyển dụng (họ MỌI NGƯỜI .. . các công ty săn đầu người) và làm việc với một vài người của họ để hợp lý hóa sơ yếu lý lịch của bạn để nó làm nổi bật trình độ học vấn và sự tháo vát của bạn trong việc tìm kiếm công việc phải làm và giảm thiểu khía cạnh thiếu kinh nghiệm của bạn.

Điều lớn nhất cần nhớ khi bạn nói chuyện với các nhà tuyển dụng tiềm năng (tôi luôn thấy mọi người rối tung lên) và một điều mà BẤT CỨ LÚC NÀO nên chú ý đến, đó là trong khi bạn hoàn toàn không muốn bán khống mình hoặc giảm thiểu những gì bạn CÓ THỂ làm, đừng OVERSELL cho mình và khiến họ tin rằng bạn có thể làm những việc mà bạn không biết làm thế nào. Nhà tuyển dụng luôn có một sở trường là yêu cầu bạn làm những việc mà bạn không biết và đó là công việc của bạn vào thời điểm đó để tìm ra nó, nhưng nếu bạn nói với họ rằng bạn đã có thể, chắc chắn bạn sẽ ăn lời sau .

Nhưng điêu tôt đẹp nhât se đên vơi bạ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.