Làm thế nào để trở thành một lập trình viên thành công mà không cần bằng CS [đóng]


46

Tuyên bố miễn trừ trách nhiệm (Vui lòng đọc trước khi nhảy để trả lời):

Tôi đã thấy một số câu hỏi tương tự như câu hỏi tôi muốn hỏi, vì vậy đây là một số câu hỏi tương tự .

IMHO Họ không hoàn toàn là những gì tôi đang hỏi, họ cũng không thấu đáo như tôi hy vọng (tôi không có ý gạt bỏ câu trả lời cho các câu hỏi dưới đây, tôi cũng không làm mất uy tín của người hỏi, tôi chỉ muốn là một kỹ lưỡng hơn một chút):

Bằng cấp CS có thể mang lại lợi ích cho một lập trình viên lớn tuổi?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certutions-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

Tầm quan trọng của bằng cấp CS khi xin việc phát triển?

Hãy để tôi rõ ràng, tôi không hỏi như sau:

  • Cách dạy bản thân lập trình từ đầu (không có bằng CS)
  • Cách tiếp thị bản thân như một nhà phát triển phần mềm giỏi (không có bằng CS)
  • Làm thế nào để có được một công việc lương cao như một nhà phát triển phần mềm (không có bằng CS)

Một bối cảnh nhỏ:

Bây giờ tôi đã từ chối, hãy để tôi giải đáp thắc mắc của tôi, bắt đầu với một lịch sử ngắn gọn về kinh nghiệm của tôi với tư cách là một nhà phát triển phần mềm.

Trước hết, tôi đã vô cùng may mắn. Tôi đã được trao một số cơ hội việc làm (một vài dự án PHP / MySQL phụ trợ nặng và một số ứng dụng WP7 trong XAML / C #) qua đó tôi thực sự học được mọi thứ tôi biết về phát triển phần mềm. Gần như tất cả các công việc phát triển phần mềm tôi từng làm là những công việc mà tôi không đủ điều kiện để có (và tôi đã nói rõ với chủ lao động trước khi họ thuê tôi). Tôi không muốn cho mình tín dụng khi không đến hạn, nhưng tôi sẽ nói rằng sự khiêm tốn hoàn hảo với sự khiêm tốn .

Trong gần như mọi công việc phát triển mà tôi có, tôi đã vượt quá sự mong đợi của chủ nhân và được chứng minh là một tài sản quý giá. Tất nhiên có ngoại lệ 1 . Nhưng quan điểm của tôi là tôi khá thông minh và có thể tự dạy mình những điều tôi cần biết để thành công trong công việc. Với mỗi công việc tôi có, tôi ngày càng bị kéo dài.

Tôi theo học tại khuôn viên Seattle của Đại học Washington , và hiện đang học năm thứ tư với hai năm còn lại, làm việc với bằng Toán. Trong các công việc khác nhau tôi đã có (xem sơ yếu lý lịch của tôi nếu bạn muốn danh sách đó) Tôi cũng đã từng đi học như một sinh viên toàn thời gian.

Như tôi nghĩ rằng hầu hết các nhà phát triển sẽ đồng ý, nghiên cứu các khóa học đại học ed chung điển hình, bao gồm giới thiệu chương trình khóa học TUYỆT ĐỐI lu mờ so với viết mã thực, xây dựng thực 2 sản phẩm, làm việc với tuyệt vời mọi người, và tích cực làm ảnh hưởng đến cuộc sống của người dùng 3 .

Vì vậy, ... mọi thứ diễn ra ... Tôi đã dành nhiều thời gian và sức lực của mình để làm việc thay vì tập trung vào việc học. Có những lúc tôi biểu diễn rất kinh khủng , nhưng phần lớn tôi đã có thể giữ vững phong độ với điểm số của mình.

Tuy nhiên, chương trình khoa học máy tính tại UW rất , rất , rất , rất cạnh tranh.

Vì vậy, không có gì ngạc nhiên khi tôi bị chương trình từ chối. Hai lần. Trớ trêu thay, cùng một cửa sổ nửa giờ trong đó tôi nhận được luôn luôn lịch sự, mặc dù đau lòng thông báo từ chối thông qua email, tôi nhận được một cú điện thoại từ Amazon cung cấp cho tôi một mùa hè thực tập 4 là một SDE.

Khi tôi nhìn xung quanh những người khác ở tuổi tôi (21), người có cùng mục tiêu với tôi trong phát triển phần mềm, tôi thấy mình cảm thấy khá tốt về nơi tôi đang học, tôi đang học gì, tôi là ai và những gì Tôi có thể làm. Tất nhiên có rất nhiều, rất nhiều, rất nhiều, những người 21 tuổi xuất sắc hơn tôi, tôi không có ý nói tôi nổi bật trong một đám đông, chỉ đơn thuần là tôi cảm thấy mình không hề lạc hậu về sự tiến bộ của bạn bè bình thường .

Tôi cảm thấy tự tin về khả năng thành công của mình trong thế giới phần mềm. Quan trọng hơn, tôi cảm thấy tự tin vào khả năng và mong muốn tiếp tục phát triển, học hỏi và khiêm tốn một cách ngại ngùng khi tôi thực sự cần nó.

Bằng toán

Tôi thấy mình theo đuổi bằng cấp Toán với mục đích duy nhất là có bằng cấp. Có những người nói rằng tôi nên bỏ học và bắt đầu làm việc ngay bây giờ (như tôi đã có cơ hội để làm), và có những người nói rằng tôi nên thực sự hoàn thành bằng cấp của mình. Tôi đã quyết định đi trước với tấm bằng của mình vì những lý do hoàn toàn khác so với một trong hai trại có xu hướng đưa lên, vì vậy xin đừng khuyến khích tôi bằng cách này hay cách khác về vấn đề đó. Hãy xem xét vấn đề "đóng" :)

* DEEP BREATH * ... xin lỗi, điều này dài hơn tôi dự đoán.

Đây thực chất là câu hỏi của tôi:

  • Làm thế nào để tôi xác định một cách khách quan những lĩnh vực học tập, kiến ​​thức chung và các kỹ năng khác mà tôi có được thông qua bằng cấp CS mà tôi có thể hoặc không thể thiếu bây giờ?
  • Làm thế nào để tôi sắp xếp các kỹ năng này theo thứ tự quan trọng nhất?

  • Cách tốt nhất (trong hai năm tới) để bổ sung cho giáo dục của tôi để đạt được các thuộc tính đó theo cách phù hợp hoặc thậm chí vượt qua trình độ của một sinh viên CS từ một trường đại học hàng đầu là gì?

Dưới đây là các bước mà tôi đang thực hiện:

  1. Hỏi cộng đồng phát triển (bài này)
  2. Theo đuổi cố vấn với các nhà phát triển dày dạn, những người có chung con đường sự nghiệp với tôi
  3. Xác định mục tiêu "học tập" ngắn hạn và dài hạn và các đề cương tiếp theo phác thảo các chủ đề học tập
  4. Tiếp tục viết mã và làm việc trên các dự án mà tôi đam mê

Nếu bạn đã đạt được điều này, bạn xứng đáng với một cookie :) Tôi đánh giá cao bạn mang theo tôi.

Vậy ... cộng đồng phát triển, những nhà phát triển dày dạn, những sinh viên cùng nhóm với tôi, bạn có lời khuyên gì?

Ngoài ra ... xin vui lòng ghi nhớ từ chối trách nhiệm của tôi ở đầu bài này về những gì tôi KHÔNG yêu cầu.

Cập nhật:

Tôi nhận ra rằng tôi đã không cung cấp các thông số cụ thể cho những gì tôi cho là "câu trả lời" thành công cho (các) câu hỏi của mình. Tôi nghĩ rằng câu hỏi rất mơ hồ và có thể đảm bảo một số câu trả lời "đúng".

Sau một khoảng thời gian hợp lý tôi sẽ chọn câu trả lời phù hợp với các thuộc tính sau:

  • Giải thích lý do đằng sau câu trả lời của họ
  • Có thể nói từ một số cấp độ kinh nghiệm (có thể là tuyển dụng / tương tác với hoặc là một người có / đang ở trong đôi giày của tôi)
  • Là ngắn gọn nhưng kỹ lưỡng, đưa ra các nguyên tắc rộng tốt nhất là kết hợp với các ví dụ cụ thể
  • Cuối cùng, xem xét độ dài phù hợp với những điều trên dường như sẽ yêu cầu, xin vui lòng làm cho nó trở thành một câu trả lời được truyền đạt tốt mà dễ đọc. Những người khác có thể quan tâm đến điều này trong tương lai tôi hy vọng sẽ được giải trí cũng như được giáo dục bởi phản ứng.

Vì vậy, có một số tham số cho "chính xác". Tôi nghĩ chúng rất cao, nhưng tôi đã thiết kế chúng như một bản phác thảo cho những gì tôi hình dung câu trả lời "tốt nhất" sẽ là gì. Rõ ràng được cho đủ thời gian tôi sẽ chọn câu trả lời phù hợp gần nhất làm "câu trả lời".


(1) - Tôi đã làm việc trên một phiên bản trước của trang web này và trong khi chúng tôi không có thông tin rõ ràng 
      nói về nó, tôi cảm thấy rằng tôi không thể làm tốt lắm (điều này có thể 
      bằng chứng là họ đã thay đổi hoàn toàn trang web của họ)
(2) - Đầu tiên, vâng, đó là một sản phẩm thực sự (mặc dù tôi đang viết bài đăng này trên Chrome ...) và
      nó đá đít. Thứ hai, tôi là một nhà phát triển thực tập trung học đang thử nghiệm, đã viết bằng chứng về
      mã khái niệm cho một số tính năng mới cho IE8 ... vì vậy nó đã được một thời gian trước đây.
(3) - Tại thời điểm đăng bài này, tôi là nhà phát triển đã viết ứng dụng này, tôi không còn
      chịu trách nhiệm về cơ sở mã của nó
(4) - Thực tập của tôi sẽ bắt đầu vào tháng 6 năm 2012 và tôi sẽ làm việc trong Cửa hàng trực tuyến 
      đội.

17
Thế giới cần nhiều lập trình viên hơn với bằng cấp toán học. Nuff nói.
Pieter B

1
Thị trường cho các nhà tâm lý học và các dịch vụ tư vấn hoặc tư vấn cá nhân khác phải rất lớn. Tôi đang dự tính thay đổi công việc ....
Ingo

16
Bắt đầu bằng cách chỉnh sửa câu hỏi này và cắt nó một nửa.
JeffO

8
Tài khoản và cách ưu tiên những gì bạn đang thiếu. Tất cả ba câu hỏi được bao phủ hoàn toàn bởi câu hỏi trùng lặp. Nếu bạn không thích câu trả lời, hãy đưa ra một tiền thưởng : đó là những gì họ đang ở đó.

7
@PaulHazen Ngoài ra, nếu bạn không quan tâm đến các câu hỏi bạn đã liệt kê (đó là bản sao của câu hỏi trước đó), hãy sửa lại câu hỏi của bạn để chỉ hỏi về điều gì đó mới. Câu hỏi của bạn bị ảnh hưởng bởi quá nhiều thông tin, hầu hết trong số đó có lẽ không cần thiết đối với vấn đề bạn đang gặp phải và nên được ghép nối để hỏi về một vấn đề rất cụ thể mà bạn đang gặp phải những câu hỏi khác.

Câu trả lời:


17

OK, tôi thấy quá hấp dẫn khi không trả lời câu hỏi của bạn, vì vậy tôi ở đây ...


Một vài điều về tôi đầu tiên


Tôi 26 tuổi , và nhờ có cha tôi (btw, một nhà toán học và hiện đang làm giáo sư) Tôi đã có cơ hội từ giai đoạn rất sớm của cuộc đời mình để ở quanh máy tính. (trở lại năm 1986 khi tôi được sinh ra, mặc dù không phải là điều phổ biến nhất trong những ngày đó, chúng tôi luôn có một hoặc hai máy tính ở nhà). Điều đó đang được nói, và - rõ ràng là do bản tính tò mò và thiên hướng giải quyết vấn đề / toán học của tôi - không lâu sau khi tôi thấy mình yêu thích lập trình. Đầu tiên với Pascal, ở tuổi 7-8 và sau đó là khá nhiều thứ khác chỉ theo sau.

Đầu tiên, hãy để tôi nói rằng, khi còn đi học, tôi luôn xuất sắc trong mọi thứ liên quan đến toán học, đơn giản vì tôi thích nó, và thành thật mà nói tôi có thể dễ dàng làm theo ví dụ của cha tôi và cũng trở thành một nhà toán học. Nhưng điều đó đã không xảy ra.

Điều gì đã xảy ra có lẽ là sai lầm lớn nhất trong cuộc đời tôi (cho đến nay): Bạn sẽ gọi nó là gì khi một người yêu thích mã , người nói hơn 15 ngôn ngữ và đã viết hàng ngàn dòng mã (từ trình biên dịch đến hạt nhân và web khuôn khổ) ở tuổi 18, đột nhiên (lý do vẫn còn quá mơ hồ trong tâm trí tôi, nhưng nói chung, ngay cả khi tinh tế, ảnh hưởng của môi trường của bạn không bao giờ là không đáng kể) quyết định theo đuổi nghề Y ? Tôi đoán một "sai lầm".

Kết quả? 5 năm sau (lúc 23 tuổi) và 1 năm trước khi hoàn thành văn bằng Med (vẫn làm việc trong các dự án lập trình nguồn mở cá nhân như một sở thích mọi lúc), tôi quyết định tôi đã có đủ và quyết định nghỉ việc. Và không chỉ tôi ghét lĩnh vực mới này (Y học), mà còn có điều gì đó đáng lo ngại trong toàn bộ tình huống này, một cơn ngứa vô độ ẩn sâu bên trong ... ( nó sẽ ra sao nếu ...? ) Hơn nữa, tôi mới nhận ra rằng sở thích của tôi , thứ mà tôi coi là tuyệt vời nhưng thậm chí còn không tưởng tượng được là một công việc thực sự, không chỉ mang lại một số tiền mà còn mang lại cho tôi rất nhiều thứ + giữ cho tôi hạnh phúc như một cá nhân. Vì vậy, tôi quyết định nghỉ việc. (= sự lựa chọn tốt nhất, ngay cả khi hơi muộn, tôi đã từng thực hiện).

Vì vậy, bây giờ tôi đang ở đây, một bác sĩ tâm thần một thời (chính xác là một bác sĩ tâm thần suy sụp thần kinh chính xác; thật ngu ngốc!) Sẽ lấy bằng CS (thực sự là năm thứ 3 của tôi; và, thành thật mà nói, theo đuổi nó để không bị thiếu những bằng cấp điển hình đáng sợ đó ...) và một chuyên gia hạnh phúc hơn làm việc về một thứ mà tôi ngưỡng mộ và chắc chắn là chủ đề mà tôi phải cung cấp nhiều nhất.


Một vài quan sát (từ kinh nghiệm của riêng tôi)


  • Lập trình là một trong số rất ít lĩnh vực mà những người thực sự giỏi sẽ luôn tìm thấy con đường của họ, bất kể điều gì. Và điều này chắc chắn KHÔNG phải là vấn đề về bằng cấp điển hình (thành thật mà nói, nếu tôi có một công ty và muốn tuyển dụng lập trình viên, tôi có thể dễ dàng nói ai giỏi trong vài phút - bất kể anh ta có bằng cấp hay không)

  • Điều cần thiết để trở thành một lập trình viên giỏi là: trí thông minh định hướng toán học (nhưng KHÔNG phải là toán học) và niềm đam mê (điều đó sẽ khiến những giờ học bất tận trở thành niềm vui thay vì gánh nặng; và, ngay cả khi tôi không nhận ra điều đó, hãy tin tưởng tôi, tôi đã nghiên cứu TẤN tài liệu về chủ đề này trong cuộc sống của tôi, hoàn toàn là của riêng tôi) . Giáo dục chính quy là một điều tốt đẹp, nhưng nó hơi bị đánh giá cao. Các thành phần cốt lõi của thành công là hai đầu tiên.

  • Toán học chắc chắn là nơi CS ra đời. Nhưng CS không chỉ là toán học nữa. Tôi luôn có một bộ não định hướng toán học mạnh mẽ, nhưng tôi không phải là một bậc thầy toán học. Và thành thật mà nói, trong lập trình hàng ngày, (trừ khi bạn đang xây dựng một công cụ đồ họa hoặc một thứ gì đó quá cục bộ) rất có thể bạn sẽ không bao giờ cần bất cứ thứ gì ngoài số học đơn giản (cộng, trừ, nhân, chia, modulo) và một vài thứ về mảng. (nhiều người sẽ không đồng ý với tôi, có thể là các nhà toán học hoặc các lập trình viên quá thiên về học thuật, nhưng chắc chắn thành thạo tính toán KHÔNG phải là điều cần thiết để trở thành một lập trình viên giỏi). Có một nền tảng toán học tốt có thể sẽ giúp bạn, nhưng KHÔNG phải vì chính toán học; nó sẽ giúp bạn chỉ dựa trên một điểm chung mà hai lĩnh vực này chia sẻ: kỹ năng giải quyết vấn đề.

  • Toán học là một khoa học (và một khoa học tôi tôn trọng).

  • Lập trình là một nghệ thuật. (Và cũng là một khoa học ứng dụng, nếu bạn khăng khăng) Nhưng hãy ghi nhớ điều đó: một nghệ thuật - và đó là cách tôi luôn đối xử với nó. Và như với tất cả các nghệ thuật, nó không thể được dạy. Tôi có thể dạy cho bạn cách vẽ khuôn mặt chính thức và làm cho bạn trở nên tốt hơn mức trung bình nhưng điều đó sẽ không khiến bạn không phải là Da Vinci, cũng không phải là Klimt. Mona Lisas được vẽ bởi Da Vincis, và không phải bởi các họa sĩ được giáo dục cẩn thận. Mã lớn được viết bởi các nghệ sĩ mã lớn. Và kỹ năng và sự tận tâm có thể dễ dàng vượt qua giáo dục chính thức.


Vì vậy, những gì cần thiết để trở thành một lập trình viên * thực sự * tốt?


  • Thông minh, kỹ năng giải quyết vấn đề tuyệt vời và niềm đam mê đối với chủ đề (nếu bạn không có nó, hãy bỏ nó đi, trở nên tầm thường không phải là lý do)
  • Rất nhiều thời gian để dành cho chủ đề
  • Học mọi lúc ('vì đơn giản là bạn sẽ không bao giờ biết tất cả; và lưu ý: tại sao' học 'phải liên quan đến một mức độ nào đó? Tôi luôn thấy vui hơn khi làm mọi thứ theo tốc độ của riêng mình ... )
  • Viết mã mọi lúc (cho dù bạn đã đọc bao nhiêu cuốn sách; mức độ mã hóa của bạn tương đương trực tiếp với số lượng mã bạn đã viết)
  • Và một lần nữa, TÌNH YÊU cho chủ đề này (nếu bạn không yêu thích nó đủ, và ý tôi là thực sự yêu nó, tất cả những điều trên sẽ sớm trở nên không thể chịu đựng được; đối với tôi, viết mã như một công việc vẫn giống như được trả tiền cho .. xem phim: hoàn toàn vô lý nhưng đơn giản là tuyệt vời)

Về câu hỏi của bạn


  • Làm thế nào để tôi xác định một cách khách quan những lĩnh vực học tập, kiến ​​thức chung và các kỹ năng khác mà tôi có được thông qua bằng cấp CS mà tôi có thể hoặc không thể thiếu bây giờ?

Mặc dù, tôi phải thực sự biết những gì bao gồm bằng cấp Toán, hãy để tôi tổng hợp những gì bạn có thể thiếu nhất từ ​​bằng CS (như các khóa học / môn học / v.v. - lấy cảm hứng từ chương trình học tập của uni của tôi ) không theo thứ tự cụ thể :

  • Thiết kế logic của các hệ thống kỹ thuật số (một số công cụ mạch cấp thấp và / hoặc / xors / etc - dường như không quá liên quan, nhưng vẫn thực sự mang tính giáo dục)
  • Kiến trúc máy tính (cùng với một số mã hóa hội; rất có thể bạn sẽ không bao giờ sử dụng nó, nhưng bạn không thể biết nó có thể định hình thái độ của bạn như một lập trình viên đến mức nào)
  • Cấu trúc dữ liệu (từ danh sách được liên kết, đến các cây phức tạp, v.v., đơn giản như chúng có vẻ, sớm hay muộn bạn sẽ cần một số nền tảng tốt về những điều này; sử dụng các giải pháp làm sẵn mà bạn không hiểu không phải là một lập trình viên giỏi sẽ làm)
  • Trình biên dịch (vâng, trình biên dịch! Bạn có bao giờ viết trình biên dịch không? Có thể không; nhưng trừ khi bạn có thể viết một trình biên dịch , bạn sẽ không bao giờ thực sự biết mọi thứ hoạt động như thế nào ...)
  • Hệ điều hành (giống như trên)
  • Mạng máy tính
  • Hệ thống chuyên gia và Trí tuệ nhân tạo (rất có thể bạn sẽ không bao giờ viết mã trong Prolog; nhưng đây vẫn là một trong những điều có thể định hình bộ não mã hóa của bạn và khiến nó nhìn mọi thứ từ một quan điểm hoàn toàn khác)
  • Làm thế nào để tôi sắp xếp các kỹ năng này theo thứ tự quan trọng nhất?

Biết những gì cần ưu tiên trong một lĩnh vực luôn thay đổi vì CS sẽ luôn là một canh bạc - một trò chơi đoán .

Nhận biết những gì bạn muốn làm, và tin tưởng vào bản năng của bạn. Tất nhiên, có một kiến thức cơ bản vững chắc là phải. Nhưng những gì bạn sẽ đào sâu vào, nó hoàn toàn phụ thuộc vào bạn. Ngoài ra, hãy lên kế hoạch cho sự nghiệp của bạn một cách cẩn thận: nếu bạn muốn được tuyển dụng, thì hãy chọn mục tiêu của bạn và trở nên tuyệt vời với nó (ví dụ: muốn được Google tuyển dụng và không biết cách đọc một kịch bản Python đơn giản có lẽ là một trong những tình huống không nên đi ) . Nếu bạn đang tự mình bắt đầu một cái gì đó (một công ty), thì bạn không có "ông chủ" nào để thỏa mãn; Chỉ cần chọn những gì phù hợp với bạn nhất.

Ví dụ: nếu bạn muốn làm một cái gì đó liên quan đến web, tôi chắc chắn khuyên bạn nên dùng: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Nhưng đó chỉ là tôi. Ai đó có thể thích (hoặc nhìn thấy tương lai nhiều hơn) Ruby / Rails hơn là trong PHP.

Tôi, ví dụ, bây giờ chủ yếu là mã hóa trong Objective-C / Ca cao . Tôi sẽ khuyên bạn theo đuổi điều đó? Chắc chắn không phải. Đó là: trừ khi bạn vào Mac hoặc muốn một nghề nghiệp bán phần mềm liên quan đến Mac / iPhone. Nếu bạn đang phát triển Windows, thì C # / .NET Framework có lẽ là lựa chọn tốt nhất của bạn. (nếu bạn muốn biết ý tưởng về những gì tôi thích nhất, hãy xem qua Hồ sơ StackOverflow của tôi )

  • Cách tốt nhất (trong hai năm tới) để bổ sung cho giáo dục của tôi để đạt được các thuộc tính đó theo cách phù hợp hoặc thậm chí vượt qua trình độ của một sinh viên CS từ một trường đại học hàng đầu là gì?

Nghiên cứu rất nhiều (sách, internet, mã của người khác, bất cứ điều gì) và viết càng nhiều mã càng tốt.

Ah, và cố gắng để có được một công việc trong bất kỳ mã liên quan. (Lần đầu tiên tôi bắt đầu làm việc như một freelancer và đó là một trải nghiệm thực sự quý giá, chỉ để xem mọi thứ thực sự hoạt động như thế nào trong thế giới thực).


Chỉ là 0,5 xu thân thiện của tôi ... :-)

Sidenote: Tôi biết rằng một số điểm của tôi có thể gây tranh cãi và tôi chắc chắn rằng sẽ có nhiều người sẽ không đồng ý với tôi. Điều đó chấp nhận được. Nhưng điều đó không thay đổi cách tôi nhìn nhận mọi thứ - và đặc biệt là những thứ tôi yêu thích.


Điều này thật đúng với gì mà tôi đã tìm kiếm. Cảm ơn! Tất cả các phản hồi khác cũng tốt, rất ít có bất cứ điều gì sai hoặc không có ích. Tôi sẽ cập nhật câu hỏi để bao gồm một phần nhỏ về lý do tại sao tôi chọn bài này và liên kết đến bài đăng trên blog làm rõ hơn chi tiết (lý do đưa ra lời giải thích như vậy trên blog của tôi thay vì Lập trình viên là do độ dài bài viết rất lớn, cũng như số lượng người điều hành có liên quan ngày càng tăng, những người đã cảm thấy câu hỏi không phù hợp với trang web này). Vẫn được đăng. Và cảm ơn một lần nữa.
Paul Hazen

@PaulHazen Bạn thực sự được chào đón! Rất vui vì đã giúp đỡ (NẾU tôi đã làm) ... (Bây giờ, đối với độ dài LỚN của câu trả lời của tôi ... argh ... Hệ thống tự động nhận ra đó là một bài đăng "wiki cộng đồng" và tôi đang cố gắng để có được người điều hành hoàn nguyên nó về trạng thái ban đầu: đơn giản - mặc dù được chỉnh sửa lại một chút - câu trả lời)
Dr.Kameleon

Kết thúc tại meta ( meta.programmers.stackexchange.com/questions35313/ trên ) Tôi thực sự khuyến khích họ chuyển nó đến một điểm đến thích hợp hơn. Theo Câu hỏi thường gặp chính thức, câu hỏi không phù hợp với diễn đàn này. Tuy nhiên, quan sát việc sử dụng lập trình viên trên thực tế , tôi cảm thấy rằng nó phù hợp để ở đây. Người điều hành có thể tạo nên tâm trí của họ nơi phù hợp nhất. Để tóm tắt những suy nghĩ của tôi về việc di chuyển nó: Theo những gì Lập trình viên được cho là nó không thuộc về nơi này, nhưng theo những gì Lập trình viên thì nó hoàn toàn phù hợp.
Paul Hazen

@PaulHazen Vâng, ít nhất là đối với tôi (mặc dù tôi không có nghĩa là một chuyên gia về công cụ SO), nó có vẻ hoàn toàn phù hợp.
Dr.Kameleon

Vâng, tôi sẽ chỉ giơ tay lên không trung. Miễn là mọi người có thể sử dụng google hoặc stack exchange để ít nhất tìm thấy câu trả lời, tôi rất vui. Nội dung cần phải dễ dàng khám phá trong tương lai bởi những người có cùng câu hỏi.
Paul Hazen

18

Làm thế nào để tôi xác định một cách khách quan những lĩnh vực học tập, kiến ​​thức chung và các kỹ năng khác mà tôi có được thông qua bằng cấp CS mà tôi có thể hoặc không thể thiếu bây giờ?

Duyệt chương trình giảng dạy của bộ phận CS tại UW, mượn và duyệt qua bài đọc yêu cầu, xem các bài kiểm tra trước đây và bài tập trong phòng thí nghiệm (bài tập về nhà). Nếu bạn không có ý tưởng về cách bạn sẽ tiếp cận vấn đề, bạn có một lỗ hổng trong kiến ​​thức của bạn.

Làm thế nào để tôi sắp xếp các kỹ năng này theo thứ tự quan trọng nhất?

Hãy suy nghĩ về loại chương trình bạn muốn làm trong tương lai. Nếu bạn hài lòng khi xây dựng trang web và ứng dụng CRUD, có vẻ như bạn đã có tất cả kiến ​​thức bạn cần.

CS giáo dục đi vào hình ảnh nếu bạn là sự hiểu biết quan tâm đến cách [phân phối] cơ sở dữ liệu, máy chủ web, các trình biên dịch và phiên dịch, hệ điều hành, các giao thức mạng vv làm việc dưới mui xe , và đang quan tâm đến việc xây dựng hệ thống như vậy cho mình.

Cách tốt nhất (trong hai năm tới) để bổ sung cho giáo dục của tôi để đạt được các thuộc tính đó theo cách phù hợp hoặc thậm chí vượt qua trình độ của một sinh viên CS từ một trường đại học hàng đầu là gì?

Tôi không biết. Đối với tôi, lợi ích lớn nhất của trường đại học là 1) mở rộng tầm nhìn của tôi (tôi đã quên 90% chi tiết tôi học được ở uni, nhưng tôi nhớ các khái niệm và ý tưởng), và 2) giữ động lực nội tại của tôi để học những thứ từ waning: Sẽ dễ dàng hơn để duy trì động lực khi bạn làm việc hướng tới mục tiêu - kỳ thi, kỳ thi khác, vv cho đến khi bạn tốt nghiệp. (Ngoài ra, cấu trúc tự giáo dục không phải là một nhiệm vụ dễ dàng.)

[Đã thêm: chọn một trường đại học có chương trình CS mà bạn muốn theo dõi, chọn các khóa học trong các chủ đề bạn quan tâm và tự học qua chương trình giảng dạy: bài tập về nhà, bài kiểm tra, v.v. Hầu hết các khóa học đều xuất bản bài giảng và bài tập / bài kiểm tra từ những năm trước .]

Một lời khuyên mặc dù: KHÔNG từ bỏ trình độ toán học của bạn. Bất kỳ người thông minh nào cũng có thể tự dạy lập trình, nhưng toán học sẽ mang lại cho bạn lợi thế cạnh tranh nếu bạn muốn làm việc trên các ứng dụng khác ngoài CRUD / frontend, ví dụ như mô phỏng chất lỏng và cơ học, đồ họa máy tính, xử lý hình ảnh, nhận dạng và ứng dụng học máy, (thậm chí tài chính!) vv

CẬP NHẬT 2 - kinh nghiệm [dài]: Tôi đã lấy bằng thạc sĩ tại khoa EE: hai năm đầu tiên là chương trình giảng dạy chung (vật lý, kỹ thuật điện, điện tử tương tự & kỹ thuật số, và rất nhiều toán học - đại số tuyến tính; toán học rời rạc; phân tích ứng dụng phức tạp.) Điều này rất có giá trị, đặc biệt. EE và phần điện tử - nó cho phép tôi làm việc trong các dự án hỗn hợp CT-SW và hợp tác với các nhà thiết kế CTNH rất thú vị. Tôi đã không đóng góp bất cứ điều gì cho thiết kế CTNH, nhưng tôi đã có thể theo dõi nhà thiết kế CTNH "gỡ lỗi" sơ đồ nguyên lý của anh ấy và hỏi những câu hỏi hợp lý [chúng tôi không chắc là lỗi trong SW hay CT - hóa ra đó là trong CTNH: -)].

Sau đó, các dòng phân nhánh và tôi chọn dòng CS. Một số "chi tiết" đã góp phần ăn sâu vào các khái niệm (ví dụ: "chạy" thuật toán của Dijkstra bằng tay). Ngoài ra, tôi đã tìm hiểu chi tiết về cách thức hoạt động của CPU (tín hiệu bus, giải thích sơ đồ bus, thực thi, v.v.) trên ví dụ về Motorola 68000 đã lỗi thời, nhưng các khái niệm được học qua các chi tiết cũng không khác lắm đối với các CPU hiện đại.

Các chi tiết khác, đặc biệt. Việc triển khai SW (ví dụ, triển khai Dijkstra), đối với tôi [vì tôi đã khá giỏi về mã hóa ở trường trung học] một bài tập vô nghĩa trong việc gỡ lỗi và đóng góp ZERO để hiểu các khái niệm.

Và sau đó tôi đăng ký vào chương trình tiến sĩ, nơi tôi phải tham gia các khóa học bắt buộc. Tôi đã thất vọng vì lựa chọn các khóa học, vì nhiều trong số chúng dường như được định hướng theo yêu cầu của ngành hơn (ví dụ: sử dụng Python để phân tích dữ liệu khoa học - cảm ơn bạn, tôi có thể lập trình và tôi rất có khả năng tự dạy mình rằng - - một lần nữa liên quan đến rất nhiều mã hóa vô nghĩa) hơn là hướng tới việc dạy các khái niệm cơ bản (may mắn thay, tôi đã đào các khóa học về tối ưu hóa rời rạc, phân tích tĩnh các chương trình và phân tích chính thức với Promela).

Vì vậy, một số chi tiết hữu ích cho việc ăn sâu các khái niệm và một số là gánh nặng hoàn toàn không cần thiết (một ví dụ khác: lập trình giao tiếp cổng nối tiếp giữa hai máy tính. Tôi đã quen đọc và giải thích thông số kỹ thuật CTNH và lập trình CTNH thông qua các thanh ghi, vì vậy nó chỉ là. nhàm chán. Có lẽ tôi ngây thơ khi cho rằng các kỹ sư CS trung bình trở thành không cần phải được giáo dục về cách đọc tài liệu CTNH).

Tóm lại: tiếp xúc với nhiều khái niệm khác nhau (ý tưởng cấp cao) và đi sâu vào chi tiết cho những khái niệm mà bạn muốn ưu tiên và trở nên cực kỳ giỏi. [Bạn KHÔNG THỂ cực kỳ giỏi mọi thứ!]


+1 chắc chắn. Mặc dù thực tế là bạn đã quên 90% chi tiết, nhưng bạn có nói rằng kinh nghiệm học các chi tiết đó là những gì đã ăn sâu vào các khái niệm và ý tưởng, hoặc sẽ có giá trị hơn khi đầu tư thời gian vào việc tìm hiểu ít chi tiết hơn và nhiều ý tưởng khái niệm / cấp độ cao hơn ?
Paul Hazen

@PaulHazen Xem bản chỉnh sửa mới (bắt đầu từ UPDATE2 - nó không phù hợp với trường nhận xét;))
zvrba

Rất khẳng định các bước tôi đang thực hiện. Phần được thêm vào là vô giá. Tôi cảm thấy như danh sách những điều tôi muốn tìm hiểu chi tiết quá dài để có thể hợp lý, trong lịch sử tôi có một vấn đề phạm vi trong vấn đề đó. Có một cách tốt để xem xét ngành công nghiệp, và xác định chủ đề nào trong những chủ đề mà tôi quan tâm sẽ có lợi nhất để tìm hiểu chi tiết về? Hoặc bạn có thể nói nó không thực sự quan trọng với những gì tôi học được, miễn là tôi lặn sâu vào một nhóm nhỏ hơn? Có vẻ như ngành công nghiệp có thể khó dự báo về vấn đề này.
Paul Hazen

1
Cố gắng dự báo ngành công nghiệp là một trò chơi bị mất trước [ví dụ: tôi không chắc rằng bất kỳ ai cũng có thể đoán rằng Twitter - (gần như) bản sao IRC cho web - sẽ trở thành mốt như vậy. Nó vẫn là một bí ẩn đối với tôi về cách họ dự định kiếm tiền trong thời gian dài.]. Bạn phải có một sự lựa chọn chủ động về loại công việc bạn muốn làm và tìm ra những gì nó cần để có được công việc đó. Làm sao? Tìm ai đó đã làm việc trong ngành công nghiệp mục tiêu của bạn và nói chuyện với họ.
zvrba

1
@Paul Các khái niệm rất quan trọng, nhưng các chi tiết (thường) thì không. Bạn có thể xem chi tiết khi bạn cần chúng, nhưng bạn phải tìm hiểu bức tranh lớn để biết rằng có một cái gì đó đáng để tìm kiếm trong khu vực ở nơi đầu tiên.
Donal Fellows

7

Tôi phỏng vấn và tham gia tuyển dụng rất nhiều người mới ra trường. Tôi vẫn chưa thuê bất cứ ai dựa trên các kỹ năng chủ đề mà họ đã chọn từ bất kỳ chương trình nào họ tham gia. Lý do cho điều này rất đơn giản: không có chương trình CS (hoặc bất kỳ chương trình nào khác) mà tôi gặp phải dạy bất kỳ kỹ năng cụ thể nào liên quan đến lập trình hoặc phát triển phần mềm ở cấp độ chuyên nghiệp, thương mại . Có thể tạo ra các mô hình và giải pháp cho các phương trình vi phân phức tạp và viết các thuật toán sắp xếp mục đích đặc biệt được tối ưu hóa có thể có giá trị học thuật và / hoặc khoa học, nhưng nó không ảnh hưởng đến sự phát triển phần mềm nói chung.

Tôi phải làm gì sau đó? Vâng, tôi mong đợi một sinh viên tốt nghiệp đại học đã hoàn thiện nghệ thuật học tập. Rốt cuộc, đó là điều mà một trường đại học tốt nên dạy cho sinh viên. Làm thế nào để phân tích và chia nhỏ các vấn đề chung thành các thành phần hợp lý, riêng biệt có thể giải quyết được. Một cách tiếp cận có phương pháp để tìm kiếm, đánh giá, tổ chức và áp dụng kiến ​​thức và thông tin hướng tới một giải pháp.

Ngoài ra, tôi tìm kiếm những người hiểu rằng một nhóm người, làm việc cùng nhau và giao tiếp, có giá trị hơn nhiều so với tổng số cá nhân của nó. Điều đó đòi hỏi sự trưởng thành và khiêm tốn và khả năng cả đưa ra và yêu cầu giúp đỡ.

Vì vậy, để lặp lại phạm vi câu hỏi của bạn: trong khi bằng CS có thể cải thiện cơ hội của bạn để có được cuộc phỏng vấn đầu tiên đó khi học đại học, tôi thấy nó không ảnh hưởng nhiều đến sự thành công hay trình độ của bạn như một nhà phát triển. Tôi đã luôn tuân theo triết lý "thuê thái độ, rèn luyện kỹ năng" và nó đã được đền đáp xứng đáng.

Lời khuyên của tôi: tiếp tục với mức độ toán học của bạn nếu đó là điều mà bạn quan tâm. Bất kỳ nền giáo dục khoa học nào cũng sẽ phục vụ bạn tốt, vì vậy hãy chọn một thứ bạn thích nhất vì đó là thứ bạn thích nhất. Sau đó tập trung vào việc học những điều quan trọng: cách học, cách phân tích và tiếp cận giải pháp vấn đề trong một cách có cấu trúc, cách tương tác và hợp tác với người khác, làm thế nào để lãnh đạo và chịu trách nhiệm cho cả việc giao hàng của chính bạn và của đồng đội. Phần còn lại chỉ là công nghệ và mã hóa, các công cụ của thương mại. Những người, bạn có thể và sẽ tự học. Chọn và nghiên cứu một số kiến ​​thức mục đích chung, như các mẫu thiết kế phổ biến và mô hình kiến ​​trúc. Bắt đầu viết chương trình để thực hành. Chọn một số cơ sở ngôn ngữ và công nghệ khá cập nhật, nhưng đừng phạm sai lầm khi nghĩ về nó ' Đây là cái cuối cùng bạn sẽ học. Các công cụ và ngôn ngữ luôn thay đổi vì vậy phát triển phần mềm là một quá trình học hỏi không ngừng.


Sẽ công bằng khi nói rằng từ quan điểm của bạn, có rất ít hoặc không có gì trong bằng cấp CS mà tự nó có ích để trở thành một lập trình viên thành công? Hiện tại tôi thích câu trả lời của bạn nhất, bạn chắc chắn đánh vào rất nhiều điều tôi đang cố gắng tìm hiểu và hiểu. Bạn có thể cho mượn một số bối cảnh bổ sung cho khu vực nào trong CS mà bạn tuyển dụng không? Tôi tưởng tượng các nhà tuyển dụng tuyển dụng sinh viên mới tốt nghiệp để làm việc trên các hệ điều hành có thể có quan điểm khác với chính bạn (nhưng tôi có thể hoàn toàn sai về điều đó). Đánh giá cao thời gian bạn đã thực hiện, điều này là siêu hữu ích
Paul Hazen

Tôi làm việc cho một công ty tư vấn CNTT tuyển dụng khá nhiều trong khung kinh nghiệm 0-1 năm. Không thể trả lời một cách tự tin về các cửa hàng phát triển hệ điều hành (có bao nhiêu?) Nhưng tôi sẽ cho rằng điều tương tự sẽ xảy ra ở đó, nếu chúng thông minh. Rất ít sinh viên tốt nghiệp sẽ có đủ kỹ năng chủ đề để cạnh tranh với điều đó một mình, vì vậy bạn thuê cho thái độ, tiềm năng và khả năng học hỏi.
pap

Hấp dẫn. Đã cho bạn "+1" và tôi thích những gì bạn nói hơn bất kỳ ai khác, tuy nhiên bạn trả lời chính xác hơn câu hỏi, "làm thế nào để tôi thành công trong lĩnh vực phát triển phần mềm" Thông tin vô giá là chắc chắn , nhưng sở thích của tôi là tìm hiểu các thuộc tính của một lập trình viên thành công , không phải là các thuộc tính của một lập trình viên mong muốn (vâng, rõ ràng các lập trình viên thành công cũng rất ham muốn, nhưng nó không phải luôn đi theo hướng khác).
Paul Hazen

Tôi không thuê những người mà tôi không thành công hoặc đã có tiềm năng và năng lực để thành công. Vì vậy, với tôi, "mong muốn" và "thành công" là như nhau. Nếu bất cứ ai đang tuyển dụng trên các tiêu chí khác, họ có thể sai hoặc xấu trong việc phát hiện tài năng. Dù bằng cách nào, có lẽ không phải là một nơi tốt để làm việc. Tuy nhiên, chìa khóa, là một nhà tuyển dụng là biết cách khai thác tiềm năng của con người bạn và biến nó thành thành công thực sự. Đó là sự kết hợp giữa đào tạo, cố vấn và huấn luyện và nếu bạn không có nó, không quan trọng bạn thuê những người tài năng như thế nào.
pap

7

Về bản chất, đây là câu hỏi của tôi: Làm thế nào để tôi xác định một cách khách quan những lĩnh vực học tập, kiến ​​thức chung và các kỹ năng khác mà tôi có được thông qua bằng cấp CS mà tôi có thể hoặc không thể thiếu bây giờ?

trả lời 1

Nếu bạn học được điều gì mới từ nghiên cứu của bạn. Sau đó, bạn có thể nói một cách khách quan rằng bạn đã đạt được điều này thông qua bằng cấp CS.

A1. Tại sao

Một tấm bằng CS về mặt khái niệm là về học tập. Nếu một người trở về từ một mức độ CS không có sự khác biệt ròng, thì mục tiêu cốt lõi của nó không được thực hiện. Các kỳ thi và các khóa học là thước đo "chính thức" của những gì đã được học. Tuy nhiên, sự hiểu biết cá nhân (tôi đã học được điều gì mới chưa?) Nên là một biện pháp khách quan tốt hơn.

A1. Kinh nghiệm

Tôi đã từng ở trong học viện, và bây giờ làm việc chuyên nghiệp. Tôi chọn bằng Thạc sĩ Khoa học Máy tính vì tôi muốn mở rộng hiểu biết và tôi có niềm đam mê học hỏi.

Thế giới của tôi đã mở rộng nhờ kết quả của việc có bằng Thạc sĩ về máy tính. Thế giới của tôi cũng đã mở rộng từ làm việc chuyên nghiệp.

Làm thế nào để tôi sắp xếp các kỹ năng này theo thứ tự quan trọng nhất?

Trả lời 2

Tầm quan trọng liên quan đến người đặt câu hỏi và trong tình huống nào. Nếu nó cho sự phát triển cá nhân , thì tất cả đều quan trọng. Nếu nó dành cho ngành công nghiệp, thì những thứ như thuật toán và thực hành phần mềm tiêu chuẩn OOP / tốt là rất quan trọng.

A2. Tại sao

"Phạm vi" tầm quan trọng phụ thuộc nhiều vào "bối cảnh". Không có bối cảnh, giá trị của các kỹ năng rất khó để sắp xếp.

A2. Kinh nghiệm

Tôi đã thấy rằng các kỹ năng thu được từ "trường đại học" so với "trong lĩnh vực" là khác nhau. "Kỹ năng" trong trường đại học là "lý thuyết" hơn, từ ngành công nghiệp "thực hành" nhiều hơn. Vì lý do này, sự khác biệt này có nghĩa là các kỹ năng thực sự được xếp hạng khác nhau về tầm quan trọng.

Cách tốt nhất (trong hai năm tới) để bổ sung cho giáo dục của tôi để đạt được các thuộc tính đó theo cách phù hợp hoặc thậm chí vượt qua trình độ của một sinh viên CS từ một trường đại học hàng đầu là gì?

Trả lời 3

Đẩy bản thân của bạn vượt quá điểm phá vỡ, và khi bạn phá vỡ tiếp tục phá vỡ chính mình một lần nữa.

Ý tôi là sao

Nếu bạn đến một điểm mà bạn không hiểu, thì bạn đã tự phá vỡ chính mình. Tiếp tục học cho đến khi bạn hiểu. Sau đó đẩy xa hơn cho đến khi bạn tìm thấy một cái gì đó khác mà bạn không hiểu (ad infinitum) .

A3. Tại sao

Nếu bạn chỉ học và ở trong ranh giới của mình, bạn sẽ chỉ "ok". Bạn không muốn chỉ là "ok". Bạn muốn trở thành "tốt nhất" bạn có thể. Bạn không thể đạt được tiềm năng thực sự của mình, nếu bạn KHÔNG BẮT ĐẦU vượt quá ranh giới của mình.

A3. Kinh nghiệm

Tôi sẽ luôn là một sinh viên lâu dài, tôi sẽ không liệt kê bộ kỹ năng hiện tại của tôi, nếu bạn tò mò bạn có thể xem hồ sơ của tôi.

Một điều, tôi sẽ nói là như vậy. Tôi chưa bao giờ hoàn thành với kiến ​​thức hiện tại của mình. Tôi muốn bay cao hơn, nhìn xa hơn và đi sâu hơn.


Nhận xét tốt cho chắc chắn, điều này cộng hưởng với tôi. Xem cập nhật nếu bạn đang tự hỏi tại sao tôi lại hạn chế đánh dấu bất kỳ phản hồi nào là "chính xác".
Paul Hazen

Và cập nhật tốt đẹp. Giữ vững niềm tin, tôi sẽ không quên đánh dấu một câu trả lời như vậy khi đến lúc.
Paul Hazen

1
Bạn có thể vui lòng làm sạch câu trả lời của bạn? Bạn có hai tiêu đề phần lặp lại, với nội dung khác nhau nhưng tương tự bên dưới mỗi phần.
Paul Hazen

Xin chào Paul, tôi không chắc bạn muốn tôi dọn dẹp nó như thế nào. Tôi đoán nó trông hơi khó hiểu. Mỗi tiêu đề phụ, nó liên quan đến từng câu hỏi, tức là mỗi "câu hỏi" có "Tại sao" và "Kinh nghiệm" để trả lời câu trả lời như bạn yêu cầu trong bản cập nhật của bạn. Tôi rất vui khi thực hiện bất kỳ thay đổi nào về mặt rõ ràng.
Tối

Ohhh ... đó là những gì rất khó hiểu với tôi, bạn có thể tăng các tiêu đề hoặc sử dụng văn bản ** đậm ** để đánh dấu các tiêu đề phụ? Tôi nghĩ rằng nó sẽ đi cùng trong việc cải thiện sự rõ ràng.
Paul Hazen

4

Làm thế nào để tôi xác định một cách khách quan những lĩnh vực học tập, kiến ​​thức chung và các kỹ năng khác mà tôi có được thông qua bằng cấp CS mà tôi có thể hoặc không thể thiếu bây giờ?

Chỉ cần nhìn vào các yêu cầu bằng cấp, sau đó tìm kiếm các giáo trình cho mỗi lớp.

Làm thế nào để tôi sắp xếp các kỹ năng này theo thứ tự quan trọng nhất?

Bạn thực sự không thể tự làm điều này mà không có lợi ích của nhận thức muộn màng. Tôi muốn nói rằng điều quan trọng nhất mà hầu hết các lập trình viên tự học thiếu là phân tích và thiết kế thuật toán. Phần còn lại có thể được chọn bữa ăn mảnh.

Cách tốt nhất (trong hai năm tới) để bổ sung cho giáo dục của tôi để đạt được các thuộc tính đó theo cách phù hợp hoặc thậm chí vượt qua trình độ của một sinh viên CS từ một trường đại học hàng đầu là gì?

Ngay cả khi bạn không được nhận vào chương trình, bạn vẫn có thể lấy các lớp từ các khoa khác làm môn tự chọn. Một trong những lớp học yêu thích của tôi là lớp dự án từ kỹ thuật hàng không vũ trụ nơi tôi làm việc về điện tử và phần sụn cho một vệ tinh nhỏ.

Bạn cũng có thể mua sách giáo khoa mà lớp bạn muốn sử dụng. Tôi đã làm điều đó cho một vài lớp tôi không thể phù hợp với lịch trình của mình. Một lựa chọn khác là MIT khóa học mở .


Một người dùng dày dạn như vậy, thật ngạc nhiên khi bạn không dành thời gian để đọc câu trả lời được đăng của người dùng khác, câu trả lời của bạn gần giống với một số câu hỏi đã có ở đây. Hãy cẩn thận để xem xét các câu trả lời có sẵn, hoặc nếu bạn nghĩ rằng câu trả lời của bạn là khác nhau, hãy giúp làm rõ điều đó cho tôi.
Paul Hazen

Tôi không thấy ai khác khuyên bạn nên tham gia các lớp CS cho môn tự chọn, điều mà nhiều người không nhận ra là được phép. Sự trùng lặp gần như phần còn lại là kết quả của việc đặt một câu hỏi nhiều phần lớn :-)
Karl Bielefeldt

Tôi xin lỗi, bạn là chính xác. Không ai khác đề nghị các lớp CS là môn tự chọn. Mặc dù đó là lời khuyên tốt và chắc chắn không sai , một số câu trả lời khác đã kỹ lưỡng hơn và giải quyết ba câu hỏi trong bối cảnh tốt hơn với phần còn lại của câu hỏi của tôi. Không phủ nhận bất kỳ lời khuyên nào bạn đưa ra (tôi cho bạn +1), nó sẽ được ghi nhớ một cách chắc chắn, chân thành, cảm ơn bạn rất nhiều, và một lần nữa xin lỗi vì sai lầm của tôi.
Paul Hazen

3

Tại sao bạn nghĩ rằng bằng cấp CS rất quan trọng để trở thành một lập trình viên thành công ?

Những gì bạn cần để trở thành một lập trình viên thành công là:

  • Đam mê lập trình
  • Khát khao không ngừng về kiến ​​thức về công nghệ mới
  • Vào ngành một ngày nào đó

Thông thường bằng cấp CS sẽ đưa bạn vào ngành, nhưng nếu bạn không có niềm đam mê và khao khát kiến ​​thức, bạn sẽ đau khổ, và bạn sẽ không bao giờ trở thành một lập trình viên giỏi.

Có vẻ như bạn đã tham gia vào ngành công nghiệp, và chắc chắn cảm giác như bạn có cả niềm đam mê và khao khát kiến ​​thức.

Những gì bạn phải làm là tiếp tục nghiên cứu và học hỏi và tích lũy kinh nghiệm, và ngành công nghiệp sẽ biết cách đánh giá cao bạn mà không cần bằng cấp.

Một ví dụ từ một người mà tôi làm việc cùng

một trong những Nhà phát triển phần mềm làm việc trong nhóm của tôi có bằng luật ... sau một vài năm, cô ấy hiểu rằng cô ấy không thích luật nào cả, và cô ấy muốn trở thành một lập trình viên. cô ấy không thể có được công việc như một lập trình viên (không có kinh nghiệm, không có bằng cấp), vì vậy cô ấy đã học một khóa học máy tính 6 tháng, sau đó cô ấy có một công việc, và cô ấy là một nhà phát triển tuyệt vời kể từ đó.


Mặc dù đây là nội dung tuyệt vời, tôi cảm thấy nó không hoàn toàn đánh dấu vào việc trả lời câu hỏi của tôi (một cái gì đó rất có thể là lỗi của tôi trong cách diễn đạt sai). Tôi không có niềm tin vững chắc có bằng CS làm cho một người lập trình thành công. Câu hỏi của tôi là nhiều hơn "mà trong những chủ đề được giảng dạy trong một mức độ CS làm có xu hướng đóng góp vào sự thành công của một lập trình viên, và làm cách nào một cách khách quan xác định làm thế nào tôi đo lên trong những chủ đề, và làm thế nào để Isupplement / phong phú thêm tôi niềm đam mê hiện, nạn đói cho kiến ​​thức và kinh nghiệm trong ngành với những chủ đề như vậy? " Câu trả lời của bạn chắc chắn không sai.
Paul Hazen

2

IMHO không có công việc lập trình (hoặc công việc bán hàng hoặc công việc sysadmin, v.v.), chỉ có công việc giải quyết vấn đề. Chúng tôi thuê và trả tiền cho mọi người để giải quyết vấn đề, viết mã chỉ là một phần của việc giải quyết vấn đề. Vâng, thậm chí bán hàng là một hình thức giải quyết vấn đề. Vì vậy, một mức độ toán học chứng minh bạn có thể giải quyết vấn đề cũng như bằng cấp CS.

Từ bài đăng của bạn, rõ ràng bạn đang nhận được rất nhiều kinh nghiệm / thực tập. Tuyệt quá! đừng lo lắng về việc làm sau khi tốt nghiệp.

Để cố gắng trả lời câu hỏi của bạn:

các lớp học? chọn một số lớp CS lý thuyết thay vì các lớp viết mã. Tìm một số lớp không CS / toán, vd. triết lý nó sẽ giúp bạn nổi bật giữa đám đông

ưu tiên? học những điều mới (không chỉ các lớp dễ dàng mà bạn đã biết một nửa)

Hai năm tới? nói chuyện với mọi người, học hỏi, xây dựng mối quan hệ, tìm kiếm các hoạt động bên ngoài. (Sở thích / thể thao / trò tiêu khiển xa công việc / học tập là một đầu mối để xem người nộp đơn có động lực như thế nào.)

Lời khuyên cuối cùng: Tốt nghiệp ngay khi bạn có thể. Xây dựng một mạng lưới liên lạc. Và công việc an toàn duy nhất là tạo ra công việc của riêng bạn. Tìm kiếm ý tưởng / cơ hội nơi bạn có thể bắt đầu kinh doanh của riêng bạn. Chúc may mắn.


Điều này thật tuyệt, cảm ơn bạn đã phản hồi. Tôi đưa ra "+1", tuy nhiên tôi không thể đánh dấu nó là câu trả lời, các câu trả lời khác hoàn toàn xác định lý do tại sao , cũng như các cách xác định để xác định khách quan mục tiêu học tập. Không ai trong số này phủ nhận phản ứng của bạn, tôi lấy những gì bạn nói với trái tim và nó thực sự hữu ích, vì vậy cảm ơn bạn một lần nữa.
Paul Hazen

@PaulHazen - nếu bạn muốn biết 'tại sao?' sau đó chọn một lớp triết học :-) Nhưng nghiêm túc, tôi đã học bằng lý thuyết 4 năm về việc không có khóa học C vì 'đó là điều bạn có thể tự dạy mình' Để làm sáng lên tôi đã chọn một lớp triết học nhỏ một học kỳ và sau đó làm một lớp khác. Cũng như thách thức nó là một nhóm người tuyệt vời và những ý tưởng mới mẻ. Và câu hỏi của bạn chứng minh rõ ràng rằng bạn có các kỹ năng viết cần thiết cho bất kỳ lớp học toán / CS nào.
jqa

1

Đầu tiên, hãy để tôi nói rằng tôi rất vui vì bạn đã hỏi câu hỏi này bởi vì đó là một câu hỏi mà tôi đã tự hỏi mình trong nhiều năm qua.

Tôi đoán rằng tôi có thể xem xét bản thân một chút thành công trong lĩnh vực này, cho đến nay. Tôi có một số kinh nghiệm học đại học và cuối cùng muốn hoàn thành chương trình giáo dục đại học về Khoa học Máy tính, nhưng tôi chưa có bằng cấp vào thời điểm này trong cuộc đời. Tuy nhiên, tôi đã có khá nhiều thành công trong công nghệ phần mềm mặc dù nhược điểm này (diễn ra trong 10 năm). Mặc dù vậy, tôi phải thành thật với bạn, đó không hẳn là một việc dễ làm (tất nhiên, tôi sẽ cá rằng bất cứ điều gì đáng làm thường là KHÔNG dễ nhất). Tôi cũng sẽ nói rằng đó vẫn chưa phải là điều dễ dàng nhất. Có rất nhiều công ty ngoài kia sẵn sàng trao cơ hội cho ứng viên phù hợp, nhưng tôi đã tiếp xúc với những người khác sẽ chùn bước khi thiếu "con dấu phê duyệt" giáo dục đại học đó. Tuy nhiên,

Nó bắt đầu trong .net tại một công ty rất lớn. Là một người không phải là lập trình viên thời gian nhỏ (lúc đó là một đại diện hỗ trợ công nghệ), tôi đã học mọi thứ có thể về ngôn ngữ và công nghệ được sử dụng khi áp dụng cho công ty tôi làm việc. Hơn nữa, và đây có lẽ là điều quan trọng nhất, tôi nối mạng. Tôi đã gửi một email đến từng người mà tôi có thể tìm thấy trong thư mục có Kỹ sư phần mềm trong tiêu đề của họ. Tôi có khó chịu không? Có lẽ. Tôi luôn lịch sự và tự vệ với sự ham học hỏi. Tôi sẽ sắp xếp bữa ăn trưa hoặc chỉ tìm thấy chúng trong quán ăn và ngồi xuống để cố gắng nói chuyện. Đôi khi điều đó thật xấu hổ hoặc tôi sẽ bị hắt hủi, nhưng cuối cùng, nó đã nhận được kết quả như mong đợi. Tôi đã có thể nhận được thông tin xác thực thời gian nhỏ cho một số cơ sở dữ liệu nội bộ và sau một thời gian có được thông tin đăng nhập cần thiết để phát triển phần mềm trên nền tảng độc quyền của họ. Ngay sau đó, tôi thấy mình ở một vị trí trong công ty để cho vay một số kỹ năng phát triển công cụ nội bộ cho nhóm phân tích mà tôi làm việc tại thời điểm đó. Từ đó, tôi luôn cố gắng trở thành người thông minh nhất trong phòng theo cách không khoa trương nhất có thể. Tôi đã háo hức và tôi chắc chắn rằng mọi người đều biết điều đó. Tôi luôn cố gắng cung cấp một giải pháp bất cứ khi nào có thể và thấy rằng nếu bạn cố gắng hết sức, có rất ít lĩnh vực vấn đề không thể giải quyết (có lẽ ngoài lý thuyết lượng tử). Tôi thấy mình ở một vị trí trong công ty để cho vay một số kỹ năng phát triển công cụ nội bộ cho nhóm phân tích mà tôi đã làm việc vào thời điểm đó. Từ đó, tôi luôn cố gắng trở thành người thông minh nhất trong phòng theo cách không khoa trương nhất có thể. Tôi đã háo hức và tôi chắc chắn rằng mọi người đều biết điều đó. Tôi luôn cố gắng cung cấp một giải pháp bất cứ khi nào có thể và thấy rằng nếu bạn cố gắng hết sức, có rất ít lĩnh vực vấn đề không thể giải quyết (có lẽ ngoài lý thuyết lượng tử). Tôi thấy mình ở một vị trí trong công ty để cho vay một số kỹ năng phát triển công cụ nội bộ cho nhóm phân tích mà tôi đã làm việc vào thời điểm đó. Từ đó, tôi luôn cố gắng trở thành người thông minh nhất trong phòng theo cách không khoa trương nhất có thể. Tôi đã háo hức và tôi chắc chắn rằng mọi người đều biết điều đó. Tôi luôn cố gắng cung cấp một giải pháp bất cứ khi nào có thể và thấy rằng nếu bạn cố gắng hết sức, có rất ít lĩnh vực vấn đề không thể giải quyết (có lẽ ngoài lý thuyết lượng tử).

Để kết thúc những gì có thể là một câu chuyện dài (và nếu bạn ở Tây Bắc Thái Bình Dương, tôi rất thích thảo luận về bia), tôi đã "bứt phá" tại một công ty nhỏ bé sẵn sàng cho tôi một shot . Họ đánh đổi sự thiếu kinh nghiệm của tôi với mức lương nhỏ hơn một chút, và tôi chạy xuống đất. Sau đó tôi đã chuyển từ một cửa hàng phát triển nhỏ sang một vài năm tiếp theo, có được tình bạn và kỹ năng trên đường đi, đến nơi cuối cùng tôi là nhà phát triển chính và giám đốc của một công ty kỹ thuật nhỏ.

Một điểm quan trọng ở đây, nếu tôi chưa truyền đạt đủ hiệu quả, đó là bạn phải kết nối mạng. Kết bạn, có một số loại bia và cười, và tìm những người trong lĩnh vực bạn muốn làm việc (tốt nhất là trong sự lựa chọn công nghệ của bạn). Hãy chắc chắn rằng mọi người biết bạn sẵn sàng làm bất cứ điều gì cần thiết và háo hức để hoàn thành công việc cho dù nó có hoành tráng đến mức nào. Về cơ bản, bạn phải "khắc phục" việc thiếu giáo dục chính quy. Nhảy vào và vui chơi với nó Ngành công nghiệp này là tốt nhất trên trái đất, IMHO. Tôi đã có những mối quan hệ bạn bè và liên lạc lâu dài đã giúp tôi từ nơi này đến nơi khác và tôi sẽ tiếp tục làm điều tương tự cho họ mỗi khi có cơ hội.


1
Tôi cảm thấy rất tệ khi tôi không thể đánh dấu đây là câu trả lời. Giống như rất nhiều câu trả lời khác, không có gì bạn nói tôi nghĩ là sai , nhưng bạn tập trung hoàn toàn vào cách phát triển sự nghiệp của mình khi mấu chốt của câu hỏi của tôi là làm thế nào để trở thành một lập trình viên thành công. Mặc dù lập trình viên thành công ngụ ý sự nghiệp tốt, tôi muốn tập trung vào khía cạnh "lập trình viên thành công" và để phần nghề nghiệp trở thành (một điều quan trọng và rất có chủ ý) sau khi suy nghĩ. Tôi thực sự cung cấp cho bạn "+1" cho thông tin có giá trị trả lời câu hỏi của tôi một phần.
Paul Hazen

Ồ, và nói về mạng, tôi rất muốn nghe thêm về câu chuyện của bạn! Âm thanh như chúng tôi chia sẻ rất nhiều con đường / mục tiêu tương tự. Vui lòng chọn bất kỳ phương thức liên hệ nào phù hợp nhất với bạn tại paulhazen.net/about , và chúng tôi sẽ lấy bia đó.
Paul Hazen

1

Đầu tiên, hãy để tôi LOL theo quy định "ngắn gọn nhưng kỹ lưỡng" ở gần cuối của ông lớn của bạn. Xuống kinh doanh:

Làm thế nào để tôi xác định một cách khách quan những lĩnh vực học tập, kiến ​​thức chung và các kỹ năng khác mà tôi có được thông qua bằng cấp CS mà tôi có thể hoặc không thể thiếu bây giờ?

Như những người khác đã đề cập, bạn có thể bắt đầu tại danh mục khóa học . Nhưng tôi khuyến khích bạn bước ra ngoài giới hạn của danh sách đó. Thật tốt khi bạn học chuyên ngành Toán. Nhiều kỹ sư mà tôi đã làm việc không thể nhớ cách thực hiện tích hợp đơn giản và không bao giờ khám phá bên ngoài các bức tường của môn học toán học rời rạc CS truyền thống.

Câu trả lời này có vẻ khá thưa thớt về các chi tiết cụ thể. Tôi không có bằng CS và tôi không thấy mình thiếu bất kỳ lĩnh vực cần thiết nào. Tôi ước, tuy nhiên, tôi đã dành nhiều thời gian hơn cho những thứ khác mà tôi quan tâm. Lịch sử, Ngôn ngữ học, và tiếng Anh, ví dụ.

Làm thế nào để tôi sắp xếp các kỹ năng này theo thứ tự quan trọng nhất?

Học những gì bạn yêu thích

Điều gì quan trọng với bạn? Điều gì quan trọng với nhà tuyển dụng? Heuristic cá nhân của tôi luôn luôn học hỏi những gì có vẻ thú vị nhất đối với tôi - bạn cần yêu những gì bạn làm; nếu không, bạn sẽ kiệt sức. Phần mềm là một lĩnh vực nỗ lực rộng lớn đến nỗi dường như luôn có một công việc dành cho một nhà phát triển có năng lực, người đam mê bất kỳ kỹ năng nào trong số này.

Học để học, và thúc đẩy bản thân

Tôi đoán điều đó dẫn tôi đến hai kỹ năng siêu việt mà tôi đặt lên trên phần còn lại: học mọi thứ một cách phàm ăn và làm việc chăm chỉ. Những điều đó nghe có vẻ sáo rỗng và đau đớn rõ ràng, nhưng sự kết hợp là rất hiếm. Tôi đã có mặt trên khắp bản đồ về các kỹ năng "cần thiết" - HTML / javascript để mở rộng ngôn ngữ để phát triển di động cho tầm nhìn máy tính để quản trị hệ thống và trở lại, hơn 7 ngôn ngữ. Kỹ năng cốt lõi thực sự duy nhất trong tất cả những gì đã biến việc vượt qua sự thiếu hiểu biết của tôi thành thói quen.

Tôi thực sự yêu thích triết lý của Jack White về guitar và âm nhạc (nghiêm túc, hãy xem nó) và tôi nghĩ nó cực kỳ phù hợp với thế giới lập trình. Đặt mọi thứ xa hơn một chút ngoài tầm với. Thúc đẩy bản thân bạn. Sau đó, mọi thứ sẽ dễ dàng khi tất cả ai đó muốn bạn làm là công việc của bạn.

Cách tốt nhất (trong hai năm tới) để bổ sung cho giáo dục của tôi để đạt được các thuộc tính đó theo cách phù hợp hoặc thậm chí vượt qua trình độ của một sinh viên CS từ một trường đại học hàng đầu là gì?

  1. Các lớp CS không chính

    Giống như bạn, bộ phận CS tại UW đã từ chối tôi ... mặc dù tôi nghĩ rằng tôi đã để họ làm điều đó lần thứ ba trước khi đến với cảm giác của tôi. Tôi học chuyên ngành Tin học và học môn Toán ứng dụng. Nhưng tôi vẫn theo dõi toàn bộ CS không chính. Đó là CSE 373, 410, 413, 415 và 417. Vì vậy, chắc chắn tôi tin rằng bạn nên theo đuổi đam mê của mình trước. Của tôi dẫn tôi đến những lớp học. Và tôi nghĩ rằng bạn có được một nền giáo dục cốt lõi khá toàn diện với họ, mặc dù nó có thể là một chút ánh sáng trên khía cạnh lý thuyết của mọi thứ.

    Bây giờ, đây là điều tuyệt vời: với Tin học, hầu hết những thứ này được tính vào các môn tự chọn bắt buộc của tôi. Trong khoa Toán, bạn có thể cần phải có được sự chấp thuận rõ ràng và nó có thể là một sự kéo dài cho bất kỳ trừ CSE 417.

    Triệu tập lên một cuộc điều tra DARS (có thể là một liên kết UWNetID-only) và xem nơi mà mọi thứ đứng. Tôi đã từng làm điều này cho các chuyên ngành quảng cáo khác nhau .

  2. Lớp học AMATH

    Đồng thời, khoa Toán ứng dụng có một số lớp có thể được làm theo yêu cầu tự chọn. Bạn thậm chí có thể nhỏ trong AMATH như của bạn thực sự.

    Tại sao tôi lại đề cập đến điều này? Điện toán số - ví dụ AMATH 301/352 - là một bí ẩn lớn đối với hầu hết các lập trình viên. Nếu bạn không nhận được gì khác từ nó, bạn sẽ có thể viết các bài đăng blog thú vị . Nhưng tôi cho rằng việc biết các vấn đề xung quanh các loại số của ngôn ngữ và biết cách đo lường và cải thiện chúng là khá quan trọng.

  3. Xây dựng một cái gì đó!

    Điều quan trọng nhất bạn có thể làm là xây dựng một cái gì đó mới. Lấy một ý tưởng từ đầu đến cuối. Đừng để nó là một cái gì đó dễ dàng trong vùng thoải mái của bạn.

    Các lớp lập trình hiệu quả nhất mà tôi tham gia luôn có một thành phần lập trình thực hành lớn. Đối với một kỹ sư, lý thuyết cực kỳ quan trọng - miễn là nó có thể biến thành một cái gì đó thực sự. Vì vậy, đi tìm một bài báo CS nghe hay và cố gắng thực hiện nó. Nghiêm túc.

  4. Có một công việc

    Bây giờ, bạn đã đề cập rằng bạn có một thực tập tại Amazon. Thật tuyệt. Kinh nghiệm làm việc thực tế là chìa khóa! Có rất nhiều người có bằng CS không thể lập trình ra khỏi túi giấy ướt. Có kinh nghiệm làm việc tốt là giá trị cách hơn một mức độ.


ĐIỀU NÀY. Điều này là rất tốt. Trong thực tế, tôi coi đây là một câu trả lời hợp lệ hơn. Câu trả lời được đánh dấu chỉ có giá trị hơn một chút ... * thở dài * thật khó để đánh giá với rất nhiều câu trả lời tuyệt vời :( Ước gì tôi có thể giúp đại diện của bạn nhiều hơn. Nhưng vì tôi biết bạn ngoài đời (nhưng chủ yếu thông qua twitter như chúng tôi trước đây đã thảo luận về haha), tôi sẽ phải mua cho bạn một cốc bia hoặc một ít rượu whisky như một giải thưởng an ủi.
Paul Hazen

-2

Có nhiều câu chuyện về những người trở thành triệu phú trước khi họ tốt nghiệp đại học, có lẽ người tôi nghe nhiều nhất là Bill Gates. Những người có khả năng thích hợp có xu hướng làm tốt hơn mà không cần bằng cấp so với cookie tốt nghiệp CS đóng dấu.

Tìm thứ gì đó mà rất ít người thích, thường là thứ gì đó nhàm chán, tẻ nhạt hoặc khó học và học tốt, trở nên ám ảnh với nó. Một số lĩnh vực mà tôi đã nghe nói là công cụ hỗ trợ Unix (không phải Linux, mặc dù Linux không có nhu cầu quá xa), Flash (Tôi không biết đủ về flash để nhớ chính xác nó là gì, nhưng tôi biết một anh chàng đã di chuyển nhanh chóng biết điều đó và ông nói rằng VẪN có một thị trường cho việc này, chủ yếu là vì mọi người nói rằng nó sắp chết và sẽ không học nó). Bạn có thể cần phải tham gia một vài lớp để bắt đầu, nhưng nếu bạn biết công cụ của mình và có một danh mục đầu tư ấn tượng, có những doanh nghiệp ngoài kia sẽ cần bạn!


1
-1 vì không trả lời câu hỏi của tôi. Bạn không sai, nhưng dường như bạn đã bỏ qua phần "những gì tôi không tìm kiếm" và không nhấn vào bất kỳ điều gì tôi đang tìm kiếm.
Paul Hazen
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.