Cómo ser un programador exitoso sin un título de CS [cerrado]

46

Descargos de responsabilidad (Lea antes de saltar para responder):

He visto varias preguntas similares a la que me gustaría hacer, así que aquí hay algunas preguntas similares .

En mi humilde opinión, no son completamente lo que estoy preguntando, ni son tan minuciosos como espero ser (no me refiero a ignorar las respuestas a las preguntas a continuación, ni estoy desacreditando a los que preguntan, solo quiero ser un poco más completo):

¿Puede un título de CS beneficiar a un programador mayor?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-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

¿Importancia del grado de CS al solicitar trabajos de desarrollo?

Déjame ser claro, no estoy preguntando lo siguiente:

  • Cómo enseñarme a programar desde cero (sin un título en CS)
  • Cómo comercializarme como un buen desarrollador de software (sin un título en CS)
  • Cómo obtener un excelente trabajo bien remunerado como desarrollador de software (sin un título en CS)

Un pequeño contexto:

Ahora que tengo las renuncias de responsabilidad, permítanme desarrollar mi pregunta, comenzando con una breve historia de mi experiencia como desarrollador de software.

En primer lugar, he sido increíblemente afortunado. Me dieron varias oportunidades de trabajo (un par de proyectos PHP / MySQL de back-end pesados ​​y varias aplicaciones WP7 en XAML / C #) a través de las cuales realmente aprendí todo lo que sé sobre el desarrollo de software. Casi todos los trabajos de desarrollo de software que he tenido fueron para los que no estaba debidamente calificado (y lo dejé claro a mis empleadores antes de que me contrataran). No quiero darme crédito donde no se debe, pero diría que la humildad perfecta prescinde de la modestia .

En casi todos los trabajos de desarrollo que he tenido, superé las expectativas de mi empleador y demostré ser un activo valioso. Por supuesto, hay excepciones 1 . Pero mi punto es que soy bastante inteligente y pude enseñarme lo que necesitaba saber para tener éxito en mi trabajo. Con cada trabajo que tenía, me estiraban más y más.

Asisto al campus de la Universidad de Washington en Seattle, y actualmente estoy en mi cuarto año con dos años restantes, trabajando en un título de matemáticas. Durante los diversos trabajos que he tenido (vea mi currículum si desea esa lista) También he asistido a la escuela como estudiante a tiempo completo.

Como creo que la mayoría de los desarrolladores estarían de acuerdo, estudiar los cursos de pregrado de educación general típicos, incluidos los cursos de programación introductoria PAGOS ABSOLUTAMENTE en comparación con escribir código real, construir productos reales 2 , trabajar con personas increíbles y afectar positivamente la vida de los usuarios 3 .

Entonces ... a medida que avanzan las cosas ... pasé mucho más tiempo y energía trabajando en lugar de concentrarme en mis estudios. A veces me desempeñé muy mal , pero en general pude mantenerme a flote con mis notas.

Sin embargo, el programa de informática en UW es muy , muy , muy , muy competitivo.

Entonces, no fue una sorpresa para mí cuando fui rechazado por el programa. Dos veces. Irónicamente, en la misma ventana de media hora en la que recibí el siempre cortés, aunque desalentador aviso de rechazo por correo electrónico, recibí una llamada telefónica de Amazon ofreciéndome una pasantía de verano 4 como SDE.

Al mirar a mi alrededor a otros 'hombres de mi edad (21), que comparten los mismos objetivos que yo en el desarrollo de software, me siento bastante bien acerca de dónde estoy, qué estoy aprendiendo, quién soy y qué Puedo hacer. Por supuesto, hay muchos, mucho, mucho más brillantes jóvenes de 21 años que yo, no quiero decir que destaque entre la multitud, simplemente que siento que no estoy abismalmente detrás del progreso de mi compañero promedio. .

Tengo confianza en mi capacidad para tener éxito en el mundo del software. Más importante aún, me siento confiado en mi capacidad y deseo de seguir creciendo, aprender y ser humildemente vergonzoso cuando realmente lo necesito.

Licenciatura en Matemáticas

Me encuentro buscando un título en matemáticas con el único propósito de tener un título. Hay quienes dicen que debería abandonar y comenzar a trabajar ahora (como he tenido la oportunidad de hacer), y hay quienes dicen que realmente debería terminar mi carrera. He decidido seguir adelante con mi título por razones completamente diferentes a las que cualquiera de los campamentos tiende a plantear, así que por favor no me aliente de una manera u otra al respecto. Considere el problema "cerrado" :)

* RESPIRACIÓN PROFUNDA * ... lo siento, esto es más largo de lo que esperaba.

En esencia, esta es mi pregunta:

  • ¿Cómo determino objetivamente qué áreas de estudio, conocimiento general y otras habilidades habría adquirido a través de un título de CS que me pueden faltar o no ahora?
  • ¿Cómo clasifico estas habilidades en el orden de mayor importancia?

  • ¿Cuál es la mejor manera (en los próximos dos años) de complementar mi educación para lograr esos atributos de tal manera que iguale o incluso supere el nivel de un estudiante de CS de una universidad superior?

Estos son los pasos que ya estoy tomando:

  1. Pregunta a la comunidad de desarrollo (esta publicación)
  2. Buscar tutorías con desarrolladores experimentados que compartan una carrera profesional similar conmigo
  3. Definir objetivos de "aprendizaje" a corto y largo plazo y programas de estudio posteriores que describan los temas de estudio
  4. Continuar escribiendo código y trabajando en proyectos que me apasionan

Si has llegado hasta aquí, te mereces una galleta :) Te agradezco que hayas estado conmigo.

Entonces ... comunidad de desarrollo, desarrolladores experimentados, compañeros estudiantes que están en el mismo barco que yo, ¿qué consejo le darías?

Además ... tenga en cuenta mis descargos de responsabilidad en la parte superior de esta publicación sobre lo que NO estoy pidiendo.

Actualizar:

Me doy cuenta de que no proporcioné parámetros muy concretos para lo que considero una "respuesta" exitosa a mi (s) pregunta (s). Creo que la pregunta es muy vaga y podría justificar una serie de respuestas "correctas".

Después de un período de tiempo razonable, seleccionaré la respuesta que se ajuste a los siguientes atributos:

  • Explica por qué detrás de su respuesta.
  • Puede hablar desde cierto nivel de experiencia (ya sea contratando / interactuando o siendo alguien que tiene / está en mi lugar)
  • Es conciso pero exhaustivo, ofrece principios amplios, preferiblemente junto con ejemplos específicos
  • Por último, teniendo en cuenta la longitud que parece requerir la coincidencia con lo anterior, haga que sea una buena respuesta bien comunicada y agradable de leer. Espero que otros que puedan estar interesados ​​en esto en el futuro se entretengan y eduquen con la respuesta.

Así que hay algunos parámetros para "corregir". Creo que son muy altos, pero los diseñé como una especie de esquema para lo que imagino que sería la "mejor" respuesta. Obviamente, dado el tiempo suficiente, seleccionaré la respuesta coincidente más cercana como la "respuesta".


(1) - Trabajé en una versión anterior de este sitio web, y aunque no teníamos una explícita 
      conversación al respecto, sentí que no podía hacerlo muy bien (esto puede ser 
      evidenciado por el hecho de que desde entonces han cambiado su sitio web por completo)
(2) - En primer lugar, sí, es un producto real (aunque estoy escribiendo esta publicación en Chrome ...), y
      Se patea el culo. En segundo lugar, yo era un desarrollador interno de escuela secundaria en prueba, escribí una prueba de
      código conceptual para algunas de las nuevas características para IE8 ... así que fue hace un tiempo.
(3) - En el momento de esta publicación, soy el desarrollador que escribió esta aplicación, ya no soy
      responsable de su código base
(4) - Mi pasantía comenzará en junio de 2012, y estaré trabajando en la tienda web 
      equipo.
Paul Hazen
fuente
17
El mundo necesita más programadores con un título en matemáticas. Nuff dijo.
Pieter B
1
El mercado para psicólogos y otros servicios de consultoría o asesoramiento individual debe ser enorme. Estoy pensando en cambiar de trabajo ...
Ingo
16
Comience editando esta pregunta y córtela por la mitad.
JeffO
8
@PaulHazen, una vez que elimina su fondo extremadamente detallado y el contenido de exención de responsabilidad y llega a sus preguntas reales, está preguntando tres cosas: cómo determina lo que le falta de no tener un título de CS, cómo obtener lo que se está perdiendo y cómo priorizar lo que te estás perdiendo. Las tres preguntas están completamente cubiertas por la pregunta duplicada. Si no le gustan las respuestas, ofrezca una recompensa : para eso están.
77
@PaulHazen Alternativamente, si estás no interesado en las preguntas que enumeró (que son duplicados de la pregunta anterior), revisar su pregunta específicamente sólo a preguntar acerca de algo nuevo. Su pregunta tiene demasiada información, la mayoría de la cual probablemente sea innecesaria para el problema que tiene, y debe combinarse para preguntar sobre un problema muy específico que tenga y que no esté cubierto por otras preguntas.

Respuestas:

17

De acuerdo, me parece demasiado tentador no responder a su pregunta, así que aquí estoy ...


Algunas cosas sobre mí primero


Tengo 26 años y, gracias a mi padre (por cierto, matemático y actualmente trabajando como profesor), desde una etapa muy temprana de mi vida tuve la oportunidad de estar cerca de las computadoras. (en 1986, cuando nací, aunque no era lo más común en aquellos días, siempre teníamos una o dos computadoras en casa). Dicho esto, y, obviamente debido a mi naturaleza curiosa y orientada a las matemáticas / resolución de problemas, no pasó mucho tiempo antes de que me enamorara de la programación. Primero con Pascal, a la edad de 7-8 y luego casi todo lo demás acaba de seguir.

Primero, permítanme decir que, mientras estaba en la escuela, siempre me había destacado en todo lo relacionado con las matemáticas, simplemente porque me gustaba, y sinceramente, podía seguir fácilmente el ejemplo de mi padre y convertirme en matemático también. Pero eso no sucedió.

Lo que sucedió fue probablemente el mayor error de mi vida (hasta ahora): ¿cómo lo llamarías cuando alguien enamorado del código , que habla más de 15 idiomas y ha escrito miles de líneas de código (desde compiladores hasta micro-núcleos y web)? marcos) a la edad de 18 años, de repente (las razones aún son demasiado oscuras en mi mente, pero la influencia general, incluso sutil, de su entorno nunca es demasiado insignificante) decide seguir una carrera en medicina ? Supongo que es un "error".

¿El resultado? 5 años después (a los 23), y 1 año antes de terminar mi título de médico (todavía trabajando en proyectos de programación de código abierto personal como pasatiempo todo el tiempo), decidí que ya tenía suficiente y decidí dejarlo. Y no era solo que odiaba tanto este nuevo campo (Medicina), sino también que había algo inquietante en toda esta situación, una picazón insaciable escondida en el fondo ... ( ¿qué hubiera sido si ...? ) Además, me había dado cuenta de que mi pasatiempo , lo que consideraba genial pero que ni siquiera había imaginado como un trabajo real, no solo podía traer algo de dinero, sino que también me brindaba mucho + me mantenía feliz como individuo. Entonces, decidí dejarlo. (= la mejor opción, aunque sea un poco tarde, lo he hecho alguna vez).

Entonces, aquí estoy ahora, un psiquiatra que alguna vez fue médico (al borde de un colapso nervioso, para ser precisos; ¡estúpido!) Que se graduó en CS (en mi tercer año en realidad; y, sinceramente, perseguirlo para no terminar careciendo de esas temidas calificaciones típicas ...) y un profesional más que feliz trabajando en algo que adoro y definitivamente el tema sobre el que tengo que ofrecer más.


Algunas observaciones (desde mi propia experiencia)


  • La programación es uno de los pocos campos donde los realmente buenos siempre encontrarán su camino, pase lo que pase. Y esto definitivamente NO es una cuestión de calificaciones típicas (honestamente, si tuviera una empresa y quisiera reclutar programadores, puedo decir fácilmente quién es bueno en cuestión de minutos, independientemente de si tiene algún grado o no)

  • Lo que se necesita para ser un buen programador es: inteligencia orientada a las matemáticas (pero NO las matemáticas en sí) y pasión (eso hará que las interminables horas de estudio sean un placer en lugar de una carga; e, incluso si no me he dado cuenta de eso, confíe yo he estudiado TONELADAS de material sobre el tema en mi vida, solo por mi cuenta) . La educación formal es algo agradable, pero está un poco sobrevalorada. Los ingredientes centrales del éxito son los dos primeros.

  • Matemáticas es definitivamente donde nació CS. Pero CS ya no es solo matemática. Siempre he tenido un cerebro fuerte orientado a las matemáticas, pero de ninguna manera soy un gurú de las matemáticas. Y honestamente, en la programación diaria, (a menos que estés en la construcción de un motor gráfico o algo demasiado localizado) lo más probable es que nunca necesites nada más que simple aritmética (suma, resta, multiplicación, división, módulo) y algunas cosas sobre matrices (muchos estarán en desacuerdo conmigo, probablemente matemáticos o programadores demasiado orientados a lo académico, pero definitivamente dominar el cálculo NO es lo que se necesita para ser un buen programador). Tener un buen historial matemático puede ayudarlo, pero NO debido a las matemáticas en sí mismas; te ayudará únicamente en base a una cosa común que comparten estos dos campos: habilidades para resolver problemas.

  • Las matemáticas son una ciencia (y una ciencia que respeto).

  • La programación es un arte. (Y también una ciencia aplicada, si insiste) Pero tenga eso en cuenta: un arte, y así es como siempre lo he tratado. Y como con todas las artes, no se puede enseñar. Puedo enseñarte la forma formal de dibujar una cara y hacerte mejor que el promedio, pero eso no te hará ni un Da Vinci ni un Klimt. Mona Lisas están pintadas por Da Vincis, y no por pintores cuidadosamente educados. Gran código está escrito por grandes artistas de código. Y la habilidad y la devoción pueden superar fácilmente la educación formal.


Entonces, ¿qué se necesita para convertirse en un * realmente * buen programador?


  • Ser inteligente, excelentes habilidades para resolver problemas y pasión por el tema (si no lo tiene, simplemente déjelo; ser mediocre no es excusa)
  • Mucho tiempo para dedicar al tema
  • Estudiar todo el tiempo ('porque nunca lo sabrás todo; y ten en cuenta: ¿por qué' estudiar 'tiene que estar relacionado en algún grado? Siempre me ha parecido mucho más placentero hacer las cosas a mi propio ritmo ... )
  • Escribir código todo el tiempo (no importa cuántos libros haya leído; su nivel de codificación es directamente equivalente a la cantidad de código que ha escrito)
  • Y nuevamente, AMO por el tema (si no lo amas lo suficiente, y quiero decir que realmente lo amo, todo lo anterior tarde o temprano se volverá insoportable; para mí, codificar un trabajo sigue siendo como recibir un pago ... Ver películas: absolutamente absurdo pero simplemente genial)

En sus preguntas


  • ¿Cómo determino objetivamente qué áreas de estudio, conocimiento general y otras habilidades habría adquirido a través de un título de CS que me pueden faltar o no ahora?

Sin embargo, tendría que saber realmente qué incluye el título de Matemáticas, permítanme resumir lo que probablemente se perderá de un título de CS (como cursos / asignaturas / etc., inspirados en el programa de estudios de mi universidad ) sin ningún orden en particular. :

  • Diseño lógico de sistemas digitales (algunos elementos de circuito de bajo nivel, y / o / xors / etc., aparentemente no demasiado relacionados, pero aún realmente educativos)
  • Arquitectura de la computadora (junto con algunos códigos de ensamblaje; lo más probable es que nunca la uses, pero no sabes cuánto podría influir en tu actitud como programador)
  • Estructuras de datos (desde una lista vinculada, hasta árboles complejos, etc.; por simple que parezca, tarde o temprano necesitará buenos antecedentes sobre esto; el uso de soluciones preparadas que no comprende no es algo que sea un buen programador haría)
  • Compiladores (¡sí, compiladores! ¿Alguna vez escribirás un compilador? Probablemente no; pero a menos que puedas escribir uno, nunca sabrás realmente cómo funcionan las cosas ...)
  • Sistemas operativos (igual que el anterior)
  • Red de computadoras
  • Inteligencia artificial y sistemas expertos (lo más probable es que nunca codifiques también en Prolog; pero aún así es una de las cosas que podría moldear tu cerebro de codificación y hacer que vea las cosas desde una perspectiva radicalmente diferente)
  • ¿Cómo clasifico estas habilidades en el orden de mayor importancia?

Saber qué priorizar en un campo siempre cambiante como CS siempre será una apuesta: un juego de adivinanzas .

Conozca lo que quiere hacer y confíe en su instinto. Por supuesto, tener un conocimiento básico sólido es imprescindible. Pero en lo que profundizarás, depende totalmente de ti. Además, planifique su carrera con cuidado: si quiere ser empleado, elija su objetivo y sea excelente (p. Ej., Querer ser empleado de Google y no saber cómo leer un simple script de Python es probablemente una de esas situaciones prohibidas). ) . Si está comenzando algo por su cuenta (una empresa), entonces no tiene un "jefe" que satisfacer; solo elige lo que más te convenga.

Por ejemplo, si desea hacer algo relacionado con la web, definitivamente le aconsejo que elija: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Pero solo soy yo. A alguien le puede gustar (o ver más futuro en) Ruby / Rails que en PHP.

Yo, por ejemplo, ahora estoy codificando principalmente en Objective-C / Cocoa . ¿Te aconsejaría que persigas eso? Definitivamente no. Es decir: a menos que esté interesado en Mac o quiera una carrera en la venta de software relacionado con Mac / iPhone. Si está interesado en el desarrollo de Windows, elegir C # / .NET Framework probablemente sea su mejor opción. (si desea tener una idea de lo que más me gusta, solo eche un vistazo a mi perfil de StackOverflow )

  • ¿Cuál es la mejor manera (en los próximos dos años) de complementar mi educación para lograr esos atributos de tal manera que iguale o incluso supere el nivel de un estudiante de CS de una universidad superior?

Estudia mucho (libros, internet, código de otras personas, lo que sea) y escribe tanto código como puedas.

Ah, e intenta conseguir un trabajo en cualquier cosa relacionada con el código. (Primero comencé a trabajar como profesional independiente y ha sido una experiencia realmente valiosa, solo para ver cómo funcionan realmente las cosas en el mundo real).


Solo mis .2 centavos amigables ... :-)

Nota al margen: Sé que algunos de mis puntos pueden parecer controvertidos, y estoy seguro de que habrá muchos que no estarán de acuerdo conmigo. Eso es aceptable Pero eso no cambia la forma en que veo las cosas, y especialmente las cosas que amo.

revs Dr.Kameleon
fuente
Esto es exactamente lo que estaba buscando. ¡Gracias! Casi todas las demás respuestas también fueron buenas, muy pocas contenían algo que fuera incorrecto o inútil. Actualizaré la pregunta para incluir una pequeña sección sobre por qué elegí esto, y un enlace a una publicación de blog que lo desarrolla con más detalle (la razón para poner tal explicación en mi blog en lugar de los Programadores se debe a que ya es una ENORME longitud de la publicación, así como el creciente número de moderadores preocupados que ya sienten que la pregunta no es adecuada para este sitio). Mantente publicado Y gracias de nuevo.
Paul Hazen
@PaulHazen ¡De nada! Me alegro de haber ayudado (SI lo hice) ... (Ahora, en cuanto a la ENORME longitud de mi respuesta ... argh ... El sistema lo reconoció automáticamente como una publicación de "wiki de la comunidad" y estoy tratando de obtener los moderadores lo revierten a su estado inicial: una respuesta simple, aunque un poco reeditada
Dr.Kameleon el
En meta ( meta.programmers.stackexchange.com/questions/3513/… ) en realidad los estoy alentando a que lo trasladen a un destino más apropiado. Según las preguntas frecuentes oficiales, la pregunta no es apropiada para este foro. Sin embargo, al observar el uso de facto de los Programadores, siento que es apropiado estar aquí. Los moderadores pueden decidir dónde encaja mejor. Para resumir mis pensamientos sobre cómo moverlo: de acuerdo con lo que se supone que son los programadores , no pertenece aquí, pero de acuerdo con qué programadores es , encaja perfectamente.
Paul Hazen
@PaulHazen Bueno, al menos para mí (aunque de ninguna manera soy un experto en SO), parece absolutamente apropiado.
Dr.Kameleon
Sí, solo levantaré las manos en el aire. Mientras la gente pueda usar google o stack exchange para al menos encontrar las respuestas, estoy feliz. El contenido debe ser fácilmente reconocible en el futuro por personas que tengan la misma pregunta.
Paul Hazen
18

¿Cómo determino objetivamente qué áreas de estudio, conocimiento general y otras habilidades habría adquirido a través de un título de CS que me pueden faltar o no ahora?

Explore el plan de estudios del departamento de CS en UW, pida prestado y explore la lectura requerida, vea los exámenes anteriores y los ejercicios de laboratorio (tareas escolares). Si no tiene idea de cómo abordaría el problema, tiene un vacío en su conocimiento.

¿Cómo clasifico estas habilidades en el orden de mayor importancia?

Piensa en qué tipo de programación te gustaría hacer en el futuro. Si está contento de crear sitios web y aplicaciones CRUD, parece que ya tiene todo el conocimiento que necesita.

Educación CS entra en escena si está interesado en la comprensión de cómo las bases de datos, servidores web, compiladores e intérpretes, sistemas operativos, protocolos de red, etc trabajo [distribuidas] bajo el capó , y está interesado en la construcción de estos sistemas usted mismo.

¿Cuál es la mejor manera (en los próximos dos años) de complementar mi educación para lograr esos atributos de tal manera que iguale o incluso supere el nivel de un estudiante de CS de una universidad superior?

No lo sé. Para mí, el mayor beneficio de la universidad fue 1) ampliar mis horizontes (he olvidado el 90% de los detalles que aprendí en la universidad, pero recuerdo conceptos e ideas), y 2) mantener mi motivación intrínseca para aprender menguante: es más fácil mantener la motivación cuando trabajas hacia un objetivo: examen, otro examen, etc. hasta que te gradúes. (Además, estructurar la autoeducación no es una tarea fácil).

[Agregado: elija una universidad cuyo programa de CS le gustaría seguir, elija cursos en temas que le interesen y revise el currículo usted mismo: tareas, exámenes, etc. La mayoría de los cursos publica diapositivas de conferencias y tareas / exámenes de años anteriores .]

Sin embargo, un consejo: NO renuncies a tu título en matemáticas. Cualquier persona brillante puede aprender a programar, pero las matemáticas le darán una ventaja competitiva si alguna vez desea trabajar en aplicaciones que no sean CRUD / frontend, por ejemplo, simulaciones fluidas y mecánicas, gráficos por computadora, procesamiento de imágenes, reconocimiento y aplicaciones de aprendizaje automático, (¡incluso finanzas!) etc.

ACTUALIZACIÓN 2 - experiencia [larga]: obtuve una maestría en la facultad de EE: los primeros dos años fueron un plan de estudios común (física, ingeniería eléctrica, electrónica analógica y digital, y mucha matemática - álgebra lineal; matemática discreta; real, vector y análisis aplicado complejo.) Esto fue muy valioso, especialmente. la parte de EE y electrónica: me permitió trabajar en proyectos mixtos de HW-SW, y cooperar con los diseñadores de HW fue muy emocionante. No aporté nada al diseño de HW, pero pude seguir al diseñador de HW "depurando" su diagrama esquemático y hacer preguntas sensatas [no estábamos seguros de si el error estaba en SW o HW - resultó que estaba en HW: -)].

Luego las líneas se bifurcaron y elijo la línea CS. Algunos de los "detalles" contribuyeron a arraigar los conceptos (por ejemplo, "ejecutar" el algoritmo de Dijkstra a mano). También aprendí detalles sobre cómo funcionan las CPU (señales de bus, interpretación de diagramas de bus, ejecución, etc.) en el ejemplo de Motorola 68000 obsoleto, pero los conceptos aprendidos a través de los detalles tampoco son muy diferentes para las CPU modernas.

Otros detalles, esp. Las implementaciones de SW (por ejemplo, la implementación de Dijkstra) fueron para mí [ya que me he vuelto bastante bueno codificando en la escuela secundaria] un ejercicio inútil en la depuración y contribuyeron CERO a la comprensión de los conceptos.

Y luego me inscribí en el programa de doctorado, donde tuve que tomar cursos obligatorios. La elección de los cursos me decepcionó, ya que muchos de ellos parecían estar más orientados a las demandas de la industria (por ejemplo, usar Python para el análisis de datos científicos; gracias, puedo programar y soy muy capaz de enseñarme eso). - que de nuevo implicaba una gran cantidad de codificación sin sentido) que hacia la enseñanza de conceptos fundamentales (afortunadamente, busqué cursos sobre optimización discreta, análisis estático de programas y análisis formal con Promela).

Entonces, algunos detalles fueron útiles para arraigar conceptos, y otros fueron una carga innecesaria (otro ejemplo: programar la comunicación del puerto serie entre dos computadoras. Ya estaba acostumbrado a leer e interpretar especificaciones HW y programar HW a través de registros, así que fue justo. aburrido. Tal vez soy ingenuo al suponer que los ingenieros de CS que se convertirán en promedio no necesitan ser educados sobre cómo leer documentos HW).

En conclusión: exponerse a muchos conceptos diferentes (ideas de alto nivel) y entrar en detalles para aquellos que desea priorizar y llegar a ser extremadamente bueno. [¡NO PUEDES ser extremadamente bueno en todo!]

zvrba
fuente
+1 seguro. A pesar de que olvidó el 90% de los detalles, ¿diría que la experiencia de aprender esos detalles fue lo que arraigó los conceptos e ideas, o sería más valioso invertir tiempo en aprender menos detalles y más ideas conceptuales / de nivel superior? ?
Paul Hazen
@PaulHazen Vea la nueva edición (comenzando en UPDATE2 - no encaja en el campo de comentario;))
zvrba
Muy afirmativo de los pasos que estoy tomando actualmente. La sección agregada es invaluable. Siento que la lista de cosas sobre las que quiero aprender detalles es demasiado larga para ser razonable, históricamente tengo un problema de alcance en ese sentido. ¿Hay una buena manera de ver la industria e identificar qué temas dentro de los que me interesan serían más beneficiosos para conocer los detalles? ¿O diría que realmente no importa cuáles aprendo, siempre que me sumerja en un conjunto más pequeño? Parece que la industria puede ser difícil de pronosticar a este respecto.
Paul Hazen
1
Intentar pronosticar que la industria es un juego perdido por adelantado [por ejemplo, no estoy seguro de que alguien pueda haber adivinado que Twitter, (casi) clon de IRC para la web, se convertiría en una moda. Todavía es un misterio para mí cómo pretenden ganar dinero a largo plazo]. Tienes que tomar una decisión proactiva sobre qué tipo de trabajo te gustaría hacer y averiguar qué se necesita para conseguirlo. ¿Cómo? Encuentre a alguien que ya trabaje en su industria objetivo y hable con ellos.
zvrba
1
@Paul Los conceptos son vitales, pero los detalles (generalmente) no lo son. Puede buscar los detalles cuando los necesite, pero debe aprender el panorama general para saber que hay algo que vale la pena buscar en el área en primer lugar.
Donal Fellows
7

Entrevisto y participo en el reclutamiento de muchas personas jóvenes recién salidas de la universidad. Todavía tengo que contratar a alguien en función de las habilidades temáticas que aprendieron del programa que tomaron. La razón de esto es simple: ningún programa de CS (o cualquier otro programa) que haya encontrado enseña habilidades concretas relacionadas con la programación o el desarrollo de software a nivel profesional y comercial . Ser capaz de desarrollar modelos y soluciones para ecuaciones diferenciales complejas y escribir algoritmos de clasificación optimizados para propósitos especiales puede tener valor académico y / o científico, pero no tiene relación con el desarrollo general de software.

¿Qué busco entonces? Bueno, espero que un graduado universitario haya perfeccionado el arte de aprender. Después de todo, eso es lo que una buena universidad debería enseñar a sus estudiantes. Cómo analizar y desglosar los problemas generales en componentes lógicos y discretos que son previsiblemente solucionables. Un enfoque metódico para encontrar, evaluar, organizar y aplicar conocimiento e información hacia una solución.

Además, busco personas que entiendan que un grupo de personas que trabajan juntas y se comunican valen mucho más que la suma de sus individuos. Eso requiere madurez y humildad y la capacidad de dar y pedir ayuda.

Entonces, para volver al alcance de su pregunta: si bien un título de CS podría mejorar sus posibilidades de obtener esa primera entrevista fuera de la universidad, creo que tiene poca o ninguna influencia en su éxito o competencia como desarrollador. Siempre he seguido la filosofía "contratar para la actitud, entrenar para la habilidad" y ha valido la pena.

Mi consejo: continúa con tu título de matemática si eso es algo que te interesa. Cualquier educación científica lo servirá bien, así que elija el que más le guste, ya que es en el que es más probable que se destaque. Luego, concéntrese en aprender las cosas importantes: cómo aprender, cómo analizar y abordar la solución de problemas en una forma estructurada, cómo interactuar y cooperar con otras personas, cómo asumir el liderazgo y la responsabilidad de la entrega de usted y de sus compañeros de equipo. El resto es solo tecnología y codificación, las herramientas del oficio. Esos, puedes y aprenderás por tu cuenta. Obtenga y estudie algunos conocimientos de uso general, como patrones de diseño populares y paradigmas arquitectónicos. Comienza a escribir programas para practicar. Elija una base de lenguaje y tecnología que esté bastante actualizada, pero no cometa el error de pensarlo ' es el último que aprenderás. Las herramientas y los idiomas cambian todo el tiempo, por lo que el desarrollo de software es un proceso constante de aprendizaje de todos modos.

papilla
fuente
¿Sería justo decir que desde su perspectiva hay poco o nada dentro de un título de CS que por sí solo sea útil para convertirse en un programador exitoso? Actualmente, me gusta tu respuesta, ciertamente te topaste con muchas de las cosas que estoy tratando de entender y entender. ¿Podría prestar un contexto adicional a qué área dentro de CS para la que está reclutando? Me imagino que los reclutadores que contratan nuevos graduados para trabajar en sistemas operativos pueden tener perspectivas diferentes a las suyas (pero podría estar totalmente equivocado al respecto). Aprecio el tiempo que tomó, esto es súper útil
Paul Hazen
Trabajo para una empresa de consultoría de TI que recluta bastante en el grupo de experiencia de 0-1 años. No puedo responder con confianza con respecto a las tiendas de desarrollo de SO (¿cuántas hay?), Pero supongo que lo mismo ocurre allí, si son inteligentes. Muy pocos graduados tendrán suficiente habilidad en la materia para ser competitivos solo en eso, por lo que contratan por actitud, potencial y capacidad de aprender.
pap
Interesante. Le di un "+1", y me gusta lo que tiene que decir más que nadie, sin embargo, está respondiendo con mayor precisión la pregunta, "¿cómo puedo ingresar con éxito en el campo del desarrollo de software?" Información invaluable para estar seguro , pero mi interés está en comprender los atributos de un programador exitoso , no los atributos de un programador deseable (sí, obviamente, los programadores exitosos también son deseables, pero no siempre es al revés).
Paul Hazen
No contrato a personas que no creo que tengan éxito o que tengan el potencial y la capacidad para tener éxito. Entonces, para mí, "deseable" y "exitoso" son lo mismo. Si alguien está reclutando según otros criterios, está equivocado o es malo al detectar talento. De cualquier manera, probablemente no sea un buen lugar para trabajar. Sin embargo, la clave como empleador es saber aprovechar el potencial de su gente y convertirlo en un éxito real. Esa es una combinación de capacitación, tutoría y entrenamiento y, si no la tiene, no importa cuán talentosas sean las personas que contrate.
Pap
7

Esta es, en esencia, mi pregunta: ¿Cómo determino objetivamente qué áreas de estudio, conocimiento general y otras habilidades habría adquirido a través de un título de CS que me pueden faltar o no ahora?

respuesta 1

Si aprende algo nuevo de su estudio. Entonces puede decir objetivamente que ganó esto a través de un título de CS.

A1. El porque

Un título de CS conceptualmente se trata de aprender. Si uno regresa de un grado de CS sin diferencia neta, entonces su objetivo principal no se cumple. Los exámenes y los cursos son la medida "oficial" de lo aprendido. Sin embargo, la comprensión individual (¿he aprendido algo nuevo?) Debería ser una mejor medida objetiva.

A1. La experiencia

Ambos estuve en la academia y ahora trabajo profesionalmente. Elegí un Máster en Informática porque quería ampliar mi comprensión y me apasiona aprender.

Mi mundo se ha expandido como resultado de obtener una maestría en informática. Mi mundo también se ha expandido de trabajar profesionalmente.

¿Cómo clasifico estas habilidades en el orden de mayor importancia?

Respuesta 2

La importancia es relativa a quién hace la pregunta y para qué situación. Si es para el crecimiento personal , entonces todo es importante. Si es para la industria, entonces cosas como algoritmos y buenas prácticas de software estándar / OOP son importantes.

A2. El porque

El "alcance" de importancia depende en gran medida del "contexto". Sin un contexto, los méritos de las habilidades son difíciles de clasificar.

A2. La experiencia

He encontrado que las habilidades obtenidas de "universidad" vs "en el campo" son diferentes. Las "habilidades" en la universidad son más "teoría", de la industria es más "práctica". Por esta razón, esta diferencia significa que las habilidades se clasifican de manera diferente en términos de importancia.

¿Cuál es la mejor manera (en los próximos dos años) de complementar mi educación para lograr esos atributos de tal manera que iguale o incluso supere el nivel de un estudiante de CS de una universidad superior?

Respuesta 3

Empújese más allá del punto de ruptura, y cuando se rompa, continúe rompiéndose nuevamente.

¿Que quiero decir?

Si llegas a un punto donde no entiendes, entonces te has roto. Sigue aprendiendo hasta que lo entiendas. Luego, presiona más hasta que encuentres algo más que no entiendas (hasta el infinito) .

A3. El porque

Si solo aprende y permanece dentro de sus límites, solo estará "bien". No quieres estar solo "ok". Quieres ser el "mejor" que puedas ser. No puede alcanzar su potencial real si no empuja CONSTANTEMENTE más allá de su límite.

A3. La experiencia

Siempre voy a ser un estudiante de por vida, no voy a enumerar mi conjunto de habilidades actual, si tienes curiosidad puedes ver mi perfil.

Lo único que diré es eso. Nunca estoy satisfecho con mi conocimiento actual. Quiero volar más alto, ver más y profundizar.

Noche oscura
fuente
Buenas observaciones seguro, esto resuena conmigo. Vea la actualización si se está preguntando por qué me abstengo de marcar cualquier respuesta como "correcta" por el momento.
Paul Hazen
Y buenas actualizaciones. Mantenga la fe, no me olvidaré de marcar una respuesta como tal cuando llegue el momento.
Paul Hazen
1
¿Podría por favor limpiar su respuesta? Tiene dos encabezados de sección repetidos, con contenido diferente pero similar debajo de cada uno.
Paul Hazen
Hola Paul, no estoy seguro de cómo quieres que lo limpie. Supongo que se ve un poco confuso. Cada subtítulo se relaciona con cada pregunta, es decir, cada "pregunta" tiene un "Por qué" y una "Experiencia" para respaldar la respuesta que solicitó en su actualización. Estoy más que feliz de hacer cambios en términos de claridad.
Darknight
Ohhh ... eso fue lo que fue tan confuso para mí, ¿podrías incrementar los encabezados o usar texto ** en negrita ** para marcar subtítulos? Creo que mejoraría la claridad.
Paul Hazen
4

¿Cómo determino objetivamente qué áreas de estudio, conocimiento general y otras habilidades habría adquirido a través de un título de CS que me pueden faltar o no ahora?

Simplemente mire los requisitos de grado, luego busque el programa de estudios para cada clase.

¿Cómo clasifico estas habilidades en el orden de mayor importancia?

Realmente no puede hacer esto usted mismo sin el beneficio de la retrospectiva. Diría que lo más importante que les falta a los programadores autodidactas es el análisis y diseño de algoritmos. El resto se puede recoger comida por partes.

¿Cuál es la mejor manera (en los próximos dos años) de complementar mi educación para lograr esos atributos de tal manera que iguale o incluso supere el nivel de un estudiante de CS de una universidad superior?

Incluso si no es admitido en el programa, a menudo puede tomar clases de otros departamentos como asignaturas optativas. Una de mis clases favoritas fue una clase de proyecto de ingeniería aeroespacial donde trabajé en electrónica y firmware para un pequeño satélite.

También puede comprar el libro de texto que usa su clase deseada. Lo hice para un par de clases que no podía encajar en mi horario. Otra opción es el material de curso abierto MIT .

Karl Bielefeldt
fuente
Un usuario tan experimentado, sorprendido de que no se haya tomado el tiempo de leer las respuestas publicadas de otros usuarios, su respuesta es casi idéntica a algunas que ya están aquí. Tenga cuidado de revisar las respuestas preexistentes, o si cree que su respuesta es diferente, ayúdeme a aclarar eso.
Paul Hazen
No vi a nadie más recomendar tomar clases de CS para asignaturas optativas, que mucha gente no sabe que está permitido. La casi duplicación en el resto es el resultado de hacer una gran pregunta multiparte :-)
Karl Bielefeldt
Pido disculpas, tienes razón. Nadie más sugirió clases de CS como optativas. Si bien es un buen consejo, y ciertamente no está mal , algunas de las otras respuestas han sido más exhaustivas y han abordado las tres preguntas en un mejor contexto con el resto de mi pregunta. Para no negar ninguno de los consejos que da (le doy un +1), seguro que lo tomaré en serio, sinceramente, muchas gracias, y de nuevo lo siento por mi error.
Paul Hazen
3

¿Por qué crees que un título de CS es tan importante para ser un programador exitoso ?

Lo que necesitas para ser un programador exitoso es:

  • Pasión por la programación.
  • Una sed interminable de conocimiento sobre las nuevas tecnologías.
  • Entrar en la industria de alguna manera

Por lo general, el título de CS lo llevará a la industria, pero si no tiene la pasión y la sed de conocimiento, sufrirá y nunca será un buen programador.

Parece que ya entró en la industria, y sin duda parece que tiene tanto la pasión como la sed de conocimiento.

Lo que debes saber es seguir investigando, aprendiendo y ganando experiencia, y la industria sabrá apreciarte sin el título.

Un ejemplo de alguien con quien trabajo

uno de los desarrolladores de software que trabaja en mi equipo tiene una licenciatura en derecho ... después de unos años comprendió que no le gusta la ley y que quiere ser programadora. no pudo conseguir trabajo como programadora (sin experiencia, sin título), por lo que realizó un curso de informática de 6 meses, luego consiguió un trabajo y desde entonces es una gran desarrolladora.

Mithir
fuente
Si bien este es un gran contenido, creo que no da en el blanco al responder mi pregunta (algo que muy bien puede ser mi culpa en una redacción incorrecta). No creo firmemente que tener un título de CS lo convierta en un programador exitoso. Mi pregunta es más "cuál de los temas que se enseñan dentro de un grado CS hacer tienden a contribuir al éxito de un programador, y cómo lo objetivamente determinar cómo mido en esos temas, y cómo hacer Isupplement / enriquecer mi pasión existente, el hambre para conocimiento y experiencia en la industria con tales temas? " Su respuesta ciertamente no es incorrecta.
Paul Hazen
2

En mi humilde opinión, no hay trabajos de programación (o trabajos de ventas o trabajos de administrador de sistemas, etc.), solo hay trabajos de resolución de problemas. Contratamos y pagamos a personas para resolver problemas, escribir código es solo una parte de resolver el problema. Sí, incluso las ventas son una forma de resolver problemas. Entonces, un título de Matemáticas demuestra que puedes resolver problemas y un título de CS.

De su publicación está claro que está obteniendo mucha experiencia / pasantías. ¡Excelente! No te preocupes por conseguir un trabajo después de la graduación.

Para intentar responder a sus preguntas:

clases? elija algunas clases teóricas de CS en lugar de clases de escritura de código. Encuentra algunas clases que no sean CS / matemáticas, por ejemplo. filosofía te ayudará a destacar entre la multitud

prioridades? aprende cosas nuevas (no solo clases fáciles que ya conoces a medias)

próximos dos años? hablar con la gente, aprender, construir relaciones, buscar actividades externas. (Los pasatiempos / deportes / pasatiempos fuera del trabajo / estudio son una pista para ver qué tan motivado está un solicitante).

Consejos finales: Gradúate tan pronto como puedas. Construye una red de contactos. Y el único trabajo seguro es crear tu propio trabajo. Busque ideas / oportunidades donde pueda comenzar su propio negocio. Buena suerte.

jqa
fuente
Esto es genial, gracias por tu respuesta. Doy un "+1", sin embargo, no puedo marcarlo como la respuesta, otras respuestas explican a fondo el por qué , así como formas identificadas para determinar objetivamente los objetivos de aprendizaje. Nada de esto niega su respuesta, tomo en serio lo que dice y es realmente útil, así que gracias una vez más.
Paul Hazen
@PaulHazen - si quieres saber '¿por qué?' luego elija una clase de filosofía :-) Pero en serio, hice un grado teórico de CS de 4 años en el que no había un curso de C porque 'eso es algo que usted puede enseñar'. Para aligerarme, elegí una pequeña clase de filosofía un semestre y luego hice otro. Además de desafiante, fue un gran grupo de personas e ideas refrescantes. Y su pregunta demuestra claramente que tiene las habilidades de escritura requeridas para cualquier clase que no sea de matemáticas / CS.
jqa
1

En primer lugar, permítanme decir que estoy muy feliz de que hayan hecho esta pregunta porque es una que me he hecho a lo largo de los años.

Creo que hasta ahora podría considerarme un poco exitoso en esta área. Tengo algo de experiencia universitaria y me gustaría terminar mi educación universitaria en Ciencias de la Computación, pero aún no me he merecido un título en este momento de mi vida. Sin embargo, he tenido bastante éxito en la ingeniería de software a pesar de esta desventaja (en 10 años). Sin embargo, tengo que ser honesto con usted, no fue necesariamente algo fácil de hacer (por supuesto, apostaría a que cualquier cosa que valga la pena no es la más fácil). También voy a decir que todavía no es lo más fácil. Hay muchas compañías por ahí dispuestas a darle una oportunidad al candidato adecuado, pero he entrado en contacto con otras que se opondrán a la falta de ese "sello de aprobación" de educación universitaria. Sin embargo,

Comenzó en .net en una empresa muy grande. Como un pequeño no programador (trabajaba como representante de soporte técnico, en ese momento), aprendí todo lo que pude sobre los idiomas y las tecnologías utilizadas en la empresa para la que trabajé. Además, y esto es probablemente lo más importante, me conecté en red. Le envié un correo electrónico a cada persona que pude encontrar en el directorio que tenía Software Engineer en su título. ¿Estaba molesto? Probablemente. Siempre fui cortés y autodeferencial con ganas de aprender. Programaba almuerzos o simplemente los encontraba en la cafetería y me sentaba para tratar de tener una conversación. A veces era vergonzoso o me desaprobaban, pero al final, obtuve los resultados esperados. Pude obtener credenciales de poco tiempo para algunas bases de datos internas y después de un tiempo adquirí las credenciales necesarias para desarrollar software en su plataforma propietaria. Poco después, me encontré en una posición dentro de la empresa para prestar algunas habilidades en el desarrollo de herramientas internas para el equipo de análisis en el que trabajé en ese momento. A partir de ahí, siempre me esforcé por ser el tipo más inteligente de la sala de la manera más sencilla posible. Estaba ansioso y me aseguré de que todos lo supieran. Siempre intenté proporcionar una solución siempre que fue posible y descubrí que si lo intentas lo suficiente, hay muy pocos dominios de problemas que son imposibles de resolver (fuera de la teoría cuántica, tal vez). Me encontré en una posición dentro de la empresa para prestar algunas habilidades en el desarrollo de herramientas internas para el equipo de análisis en el que trabajaba en ese momento. A partir de ahí, siempre me esforcé por ser el tipo más inteligente de la sala de la manera más sencilla posible. Estaba ansioso y me aseguré de que todos lo supieran. Siempre intenté proporcionar una solución siempre que fue posible y descubrí que si lo intentas lo suficiente, hay muy pocos dominios de problemas que son imposibles de resolver (fuera de la teoría cuántica, tal vez). Me encontré en una posición dentro de la empresa para prestar algunas habilidades en el desarrollo de herramientas internas para el equipo de análisis en el que trabajaba en ese momento. A partir de ahí, siempre me esforcé por ser el tipo más inteligente de la sala de la manera más sencilla posible. Estaba ansioso y me aseguré de que todos lo supieran. Siempre intenté proporcionar una solución siempre que fue posible y descubrí que si lo intentas lo suficiente, hay muy pocos dominios de problemas que son imposibles de resolver (fuera de la teoría cuántica, tal vez).

Para concluir lo que podría ser una larga historia (y si estás en el Noroeste del Pacífico, me encantaría hablar sobre una cerveza), tuve mi "gran oportunidad" en una pequeña y pequeña startup que estaba dispuesta a darme una oportunidad . Cambiaron mi falta de experiencia por un salario un poco más pequeño y comencé a correr. Luego pasé de una pequeña tienda de desarrollo a la siguiente en los próximos años, ganando amistades y habilidades en el camino, hasta donde finalmente soy el desarrollador principal y director de una pequeña empresa de ingeniería.

Una conclusión clave aquí, si no lo he comunicado con la suficiente eficacia, es que tiene que conectarse en red. Haz amigos, toma unas cervezas y ríete, y encuentra personas que estén en el campo en el que quieres trabajar (preferiblemente dentro de tu grupo de tecnología de elección). Asegúrese de que las personas conozcan su voluntad de hacer lo que sea necesario y su entusiasmo por hacer el trabajo, sin importar cuán monumental sea. Básicamente tienes que "superar" tu falta de educación formal. Salta y diviértete con él. Esta industria es la mejor del mundo, en mi humilde opinión. He hecho amistades y contactos duraderos que me han ayudado de un lugar a otro y continuaré haciendo lo mismo por ellos cada vez que se presente la oportunidad.

Paul Shoemaker
fuente
1
Me siento realmente mal por no poder marcar esto como la respuesta. Al igual que muchas de las otras respuestas, nada de lo que dices, creo que está mal , pero te enfocas completamente en cómo avanzar en mi carrera cuando el meollo de mi pregunta es cómo ser un programador exitoso. Si bien el programador exitoso implica una buena carrera, prefiero centrarme en el aspecto del "programador exitoso" y dejar que la parte de la carrera sea (una idea importante y muy intencional) después de pensarlo. Aunque le doy un "+1" por información valiosa que responde a mi pregunta en parte.
Paul Hazen
Ah, y hablando de redes, ¡me encantaría saber más sobre tu historia! Parece que compartimos muchos de los mismos caminos / objetivos. Siéntase libre de elegir el método de contacto que funcione mejor para usted en paulhazen.net/about , y tomaremos esa cerveza.
Paul Hazen
1

Primero, déjame LOL en la estipulación "concisa pero completa" cerca del final de tu gran obra. Abajo a los negocios:

¿Cómo determino objetivamente qué áreas de estudio, conocimiento general y otras habilidades habría adquirido a través de un título de CS que me pueden faltar o no ahora?

Como otros mencionaron, puede comenzar en el catálogo de cursos . Pero te animo a que salgas de los límites de esa lista. En realidad es bueno que te estés especializando en matemáticas. Muchos ingenieros con los que he trabajado no pueden recordar cómo realizar una integración simple, y nunca exploraron fuera de los muros del curso tradicional de matemáticas discretas de CS.

Esta respuesta parece bastante escasa en términos de detalles. No tengo un título de CS, y no me he encontrado sin las áreas necesarias. Sin embargo, deseo pasar más tiempo en otras cosas que me interesan. Historia, lingüística e inglés, por ejemplo.

¿Cómo clasifico estas habilidades en el orden de mayor importancia?

Aprende lo que amas

¿Qué es importante para ti? ¿Qué es importante para los empleadores? Mi heurística personal siempre ha sido aprender lo que parece más interesante para mí - que necesita para el amor lo que haces; de lo contrario, te quemarás. El software es un campo de trabajo tan extenso que siempre parece haber un trabajo disponible para un desarrollador competente que se apasiona por cualquiera de estas habilidades.

Aprende a aprender y presiona

Supongo que eso me lleva a dos meta-habilidades que pondría por encima del resto: aprender cosas vorazmente y trabajar duro. Puede parecer cliché y dolorosamente obvio, pero la combinación es rara. He estado en todo el mapa en términos de habilidades "necesarias": front-end HTML / javascript, extensiones de lenguaje, desarrollo móvil, visión por computadora, administración de sistemas y viceversa, más de 7 idiomas. La única habilidad central verdadera en todo eso es haber hecho que superar mi propia ignorancia sea un hábito.

Realmente amo la filosofía de Jack White sobre guitarras y música (en serio, ve a ver eso), y creo que es sumamente aplicable al mundo de la programación. Ponga las cosas un poco más lejos de su alcance. Empujarse. Entonces parecerá fácil cuando todo lo que alguien quiere que hagas es tu trabajo.

¿Cuál es la mejor manera (en los próximos dos años) de complementar mi educación para lograr esos atributos de tal manera que iguale o incluso supere el nivel de un estudiante de CS de una universidad superior?

  1. Clases de CS no principales

    Al igual que usted, el departamento de CS en UW me rechazó ... aunque creo que les dejé hacerlo por tercera vez antes de volver a mis cabales. Terminé con especialización en Informática y especialización en Matemática Aplicada. Pero todavía tomé toda la pista CS no importante. Eso es CSE 373, 410, 413, 415 y 417. Entonces, seguro que creo que primero debes seguir tu pasión. El mío me lleva a esas clases. Y creo que obtienes una educación básica bastante integral con ellos, aunque podría ser un poco ligero en el lado teórico de las cosas.

    Ahora, aquí está lo bueno: con Informática, la mayoría de estos contaban para mis electivas requeridas. En el departamento de Matemáticas, es posible que deba obtener una aprobación explícita, y puede ser una exageración para cualquier persona que no sea CSE 417.

    Invoque una consulta DARS (probablemente un enlace solo UWNetID) y vea dónde están las cosas. Solía ​​hacer esto para varias especializaciones hasta la náusea .

  2. Clases AMATH

    En la misma línea, el departamento de Matemática Aplicada tiene algunas clases que podrían trabajarse como requisitos optativos. Incluso podrías ser menor en AMATH como el tuyo de verdad.

    ¿Por qué menciono esto? La computación numérica, por ejemplo, AMATH 301/352, es un gran misterio para la mayoría de los programadores. Si no obtiene nada más, podrá escribir publicaciones de blog interesantes . Pero afirmaría que conocer los problemas que rodean los tipos numéricos de un idioma y saber cómo medirlos y mejorarlos es muy importante.

  3. ¡Construye algo!

    Lo más importante que puede hacer es construir algo nuevo. Tome una idea de principio a fin. No dejes que sea algo fácil que esté dentro de tu zona de confort.

    Las clases de programación más fructíferas que tomé siempre tuvieron un gran componente de programación práctica. Para un ingeniero, la teoría es increíblemente importante, siempre que pueda convertirse en algo real. Así que ve a buscar un papel CS que suene genial e intenta implementarlo. Seriamente.

  4. Consigue un trabajo

    Ahora, ya mencionaste que tienes una pasantía en Amazon. Eso es genial. ¡La experiencia laboral real es realmente clave! Hay muchas personas con títulos de CS que no pueden programar su salida de una bolsa de papel mojada. Tener una buena experiencia laboral vale mucho más que un título.

fuga
fuente
ESTA. Esto es muy bueno. De hecho, considero que esta es una respuesta más que válida. La respuesta marcada fue solo un poco más válida ... * suspiro * tan difícil de juzgar con tantas respuestas geniales :( Ojalá pudiera ayudar a tu representante más. Pero como te conozco en la vida real (pero principalmente a través de Twitter como nosotros he discutido anteriormente jaja), tendré que comprarte una cerveza o un poco de whisky como premio de consolación.
Paul Hazen
-2

Hay más de unas pocas historias de personas que se hacen millonarias antes de graduarse de la universidad, quizás la que más escucho es Bill Gates. Las personas con habilidades de nicho tienden a mejorar sin un título que el graduado de CS con sello de cookie.

Encuentra algo en lo que muy pocas personas están metidas, generalmente algo aburrido, tedioso o difícil de aprender, y aprende bien, obsesiona con eso. Algunas áreas de las que he escuchado son cosas de back-end de Unix (no Linux, aunque Linux no está muy atrasado en demanda), Flash (no sé lo suficiente sobre flash para recordar exactamente qué era, pero conozco a un tipo que se mudó se apresuró a saberlo y dijo que TODAVÍA hay un mercado para esto, principalmente porque la gente dice que está muriendo y no lo aprenderá). Es posible que necesite tomar algunas clases para comenzar, pero si conoce sus cosas y tiene una cartera impresionante, ¡hay negocios que lo necesitarán!

BillyNair
fuente
1
-1 por no responder mi pregunta. No te equivocas, pero parece que te has saltado mi sección de "lo que no estoy buscando" y no tocaste ninguna de las cosas que estaba buscando.
Paul Hazen