¿Por qué un título en informática le importa a un programador profesional? [cerrado]

63

Tengo una licenciatura en informática. Ha sido excelente para abrir puertas, conseguir un trabajo. En cuanto a ayudarme en el campo profesional de la programación en C # .NET (la plataforma y el lenguaje más populares en el área en la que trabajo, si no todos los Estados Unidos en el sistema operativo más popular del mundo) no es útil. ¿Por qué crees que te ayuda como programador en tu carrera profesional (fuera de usar el algoritmo prims para impresionar a algún entrevistador)?

En la adaptación mundial de hoy, una mente rápida, una comunicación sólida, OO y habilidades de diseño fundamentales permiten al desarrollador escribir software que un cliente aceptará. Estas habilidades solo se pasan por alto en el programa cs. En mi opinión, leer un libro C # de 500 páginas de Wrox ofrece un conjunto de habilidades mucho más útil que los 4 años de los cursos de matemática Blaster. Muchos no están de acuerdo. Entonces, ¿por qué es importante un título en informática?

P.Brian.Mackey
fuente
59
"La informática no tiene más que ver con las computadoras que la astronomía con los telescopios". - Edsger Dijkstra
Eric Lippert
44
La memorización no es suficiente. Se necesita la educación para saber cómo usar Reg Ex y la experiencia para saber cuándo usarlo. Incluiría leer libros como parte de la educación. La experiencia relacionada con el trabajo rara vez lo alienta a hacer las cosas de la manera correcta.
Zachary Scott
10
Importa cuando no tienes uno
Aditya P
2
Tuve un 2.8 también, bastante promedio. Pero en su mayoría nos enseñaron C / Java y algunas cosas web, No hay cosas de C #. De todos modos, creo que CS es la "mejor opción", porque los programas de 4 años de CS no son exactamente fáciles y demuestran que puedes trabajar duro para obtener el título. ¿Por qué importa de todos modos? te consigue el trabajo!
1
@ luis.espinal Cuestiono esas estadísticas. Dudo que el 70% de todo el código esté en C (piense en todos los silenciosos Fortran, COBOL, PL1 y Rexx felices). Una pluralidad, ciertamente, pero una gran mayoría, soy escéptico. Hay muchos dispositivos integrados, pero la cantidad de dispositivos integrados no dice nada sobre la fuente original. Una vez que está escrito para el primer dispositivo específico, generalmente es bueno para todos los dispositivos posteriores del mismo; y presumiblemente, un lote se reutiliza para derivados cercanos, ya sea en la misma línea de una revisión posterior o en una línea diferente de la misma familia de productos.
JustinC

Respuestas:

133

¿Por qué un título en informática ?:

  • Trabajé con un desarrollador que almacenaba miles de elementos en una tabla Hash y luego solo iteraba a través de los valores. Nunca accedió a través de un hash. Obviamente no sabía cómo funcionaba una HashTable o por qué usaría una, un título de CS podría ayudar con eso.
  • Cuando se trabaja con expresiones regulares, parece más fácil para las personas con exposición a la teoría básica de autómatas y a los lenguajes formales razonar sobre lo que está sucediendo y solucionar sus expresiones; un título de CS podría ayudar con eso.
  • Un desarrollador recién llegado de la escuela puede descomponer problemas en varias mentalidades de paradigma (OO, funcional, lógico) inmediatamente, mientras que un nuevo desarrollador sin título necesita experiencia antes de poder hacer lo mismo.
  • Las escuelas enseñan complejidad computacional. Los desarrolladores no titulados pueden sentir lo que es mejor, pero una comprensión formal a veces es agradable, especialmente cuando se explican los resultados a un colega.
  • Un título ofrece una introducción a muchos modelos de la máquina: hardware, sistema operativo, estructuras de datos comunes, redes, máquinas virtuales. Con estos modelos en el fondo de tu mente, es más fácil desarrollar una corazonada en la que vive un problema cuando algo sale mal. Una vez más, los desarrolladores no titulados construyen los mismos modelos, pero lleva tiempo.
  • La orientación experta a través de cualquier disciplina puede ayudar al alumno a evitar callejones sin salida y temas perdidos. La lectura es excelente, pero no sustituye a un gran maestro.

Esto no quiere decir que un título de CS sea necesario para ser un gran desarrollador. Apenas. Algunos de los mejores desarrolladores con los que he trabajado no tienen título. Un título te da un buen comienzo. Para cuando te gradúes, (con suerte) has escrito una buena cantidad de código en varios idiomas y entornos para resolver muchos tipos de problemas. Esto te pone en camino a las 10,000 horas necesarias para ser un experto.

Un segundo beneficio es que muestra a los empleadores que puede comprometerse con un objetivo a largo plazo y tener éxito. En muchas empresas, creo que eso es más importante de lo que aprendiste.

Corbin March
fuente
44
+1 - Esto tiene sentido. La orientación experta probablemente me ha ayudado en formas que no reconozco. Todavía me pregunto si 4 años de educación general superan los 4 años de experiencia en la industria, suponiendo que ambos desarrolladores estén igualmente motivados para aprender. Hay un cierto nivel de disciplina que siento que no tenía antes del grado, que ciertamente cuenta para algo.
P.Brian.Mackey
44
Aprender la terminología adecuada y pasar mucho tiempo con otras personas aprendiendo el mismo material también son beneficios que acompañan a esa costosa hoja de papel.
sal
65
Por otro lado, he visto personas con títulos que todavía fallan en la mayoría de esta lista :)
Joel Gauvreau
1
Es posible que también hayan oído hablar de la teoría de grafos. Eso podría hacer que la partición de aplicaciones en clientes y servidores, redes, DAG y árboles sea un poco más simple.
Tim Williscroft
3
@JustinC - Su afirmación "los titulados tienden a defenderlos por cualquier motivo porque los tienen" es una de las razones fundamentales por las que hice la pregunta. He visto esta defensa ciega irracional de primera mano. Lo contrario también es cierto.
P.Brian.Mackey
87

En 40 años, espero que .NET y C # no sean más que una pila grave de código heredado en sistemas operativos obsoletos.

Pero los conceptos fundamentales de la informática serán tan vivos como lo fueron cuando Shannon, von Neumann, Knuth, Dijkstra, Hoare y los demás los sacaron de la lógica formal y las matemáticas ... hace más de 40 años.

Paul Nathan
fuente
28
+1: muy cierto, pero en 40 años no me importará.
P.Brian.Mackey
3
@ P.Brian.Mackey: Supongo que en 10 años C # estará en el camino, y en 20, será más un recuerdo, y en 30 años a partir de ahora, requerirá antiguos arqueólogos de código canoso . Las personas que se unen a un conjunto dado de herramientas se obsequian. He tenido la suerte de leer documentos antiguos sobre software de sistemas de finales de los años setenta y principios de los ochenta. De esos sistemas de software, muy pocos están en el radar de hoy. Quizás 1 o 2 (Unix y Lisp). Aunque la base de instalación de hoy es más grande, espero que suceda algo similar.
Paul Nathan
44
@ P.Brian.Mackey Di lo que quieras, pero planeo seguir pateando dentro de 40 años, y dentro de 80 años también si tengo algo que decir al respecto.
Matthew Scharley
2
@Paul Nathan: Para profundizar en su punto, algunos de los fundamentos fundamentales de la programación provienen de la década de 1930 (por ejemplo, en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis ). Me pregunto si / cómo escribiremos el código dentro de 80 años :)
phooji
3
@phooji (carga "legacy-c-sharp-rutines" ...): P
Mark C
37

Uso casi todo el CS que estudié en la escuela (*) todos los días en mi trabajo. Si desea trabajar en diseño de lenguaje de programación, optimización de motores de búsqueda, análisis cuantitativo o cualquier campo similar, supongo que podría hacerlo sin un grado relevante, pero parece que hay muchas cosas que aprender en el trabajo. No tengo una educación particularmente alta dada mi línea de trabajo; Muchos de mis colegas tienen doctorados en informática y varios de ellos han sido profesores de CS.

Obtener mi título valió tremendamente para mí; se ha pagado por sí misma muchas veces, tanto en dólares como en satisfacción.

Dicho esto, entiendo perfectamente tu punto. La mayoría de las personas que programan computadoras tienen trabajos que no requieren un título de CS; requieren, por ejemplo, una sólida formación de nivel comunitario y universitario en programación práctica y mantenerse al día con las tendencias actuales de la industria. Y eso está bien. No necesitas un título en biología marina para administrar una tienda de acuarios exitosa, y creo que las tiendas de acuarios son increíbles. Pero es terriblemente difícil conseguir un trabajo en Woods Hole si todo lo que sabes hacer es criar peces de colores.


(*) Tengo una Licenciatura en Matemáticas Aplicadas y Ciencias de la Computación de Waterloo.

Eric Lippert
fuente
44
Recuerdo que uno de mis profesores de CS dijo algo en el sentido de que solo el 2% de ustedes realmente obtendrán un trabajo en el que tratarán con regularidad los principios de la informática .
tierra roja
15
@el fuser: De hecho; ahora, una pregunta interesante que quizás sea pertinente para esta discusión es si el propósito de la educación superior es simplemente capacitarse para un trabajo en particular. No creo que lo sea. Las universidades no son escuelas vocacionales; su función es crear conocimiento a través de la investigación y exponer a los estudiantes a ese universo de conocimiento. Me parece que esto puede dar a los estudiantes habilidades laborales como un efecto secundario más que un objetivo. En Waterloo se nos dijo explícitamente que nos enseñarían teoría, no práctica.
Eric Lippert
1
Sin embargo, la creación de investigación original en un entorno universitario, en general e independientemente del programa, rara vez ocurre antes de estar más allá del período de capacitación llamado programa de licenciatura. La investigación ocurre antes de eso, pero generalmente el estudio de material genuinamente nuevo está reservado para aquellos en un programa de maestría o doctorado. En otras palabras, a menudo te alejas del descubrimiento, pero hacia un refuerzo de lo que ya se sabe. La investigación de pregrado tiene más que ver con el proceso de investigación que con el crecimiento de un conjunto particular de conocimientos. La investigación privada tiene un objetivo diferente.
JustinC
1
El día en que los mejores trabajos ya no requieren un título es el día en que las universidades ya no tienen estudiantes para apoyar sus programas.
P.Brian.Mackey
¿con qué frecuencia usa Anders el suyo?)
Matthew Whited
22

Importa porque la tecnología no permanece estática. La informática es la base de toda la tecnología digital. La mayoría de los programadores autodidactas duran exactamente un ciclo tecnológico porque carecen de los fundamentos para sobrevivir a un cambio de paradigma importante. Claro, hay excepciones a la regla, pero una base sólida en informática aumenta enormemente las probabilidades de sobrevivir a un cambio de paradigma importante.

bit-twiddler
fuente
44
No sabía lo que era un poco tonto hasta que leí Coders At Work . Supongo que has sobrevivido a un cambio de paradigma o dos y estás hablando por experiencia. :)
Dave Neeley
3
Estoy en desacuerdo. Es fácil acceder a recursos que enseñan los conceptos fundamentales en línea (y es gratificante obtener la capacidad de encontrarlos por su cuenta). Por ejemplo, academicearth.org/subjects/computer-science es un buen lugar para comenzar. La información detallada sobre los nuevos patrones arquitectónicos está disponible gratuitamente para su estudio, consulte chromium.org/developers/design-documents/… . A menudo, los materiales disponibles gratuitamente en línea son mucho mejores y más actualizados de lo que cabría esperar de una universidad local.
Evan Plaice
13
Creo que lo tienes exactamente al revés. Un programador nunca termina de aprender. Los programadores autodidactas han demostrado su capacidad para adquirir conocimiento sin la necesidad de un entorno formal, los plazos impuestos externamente, etc., que es exactamente lo que uno necesita para sobrevivir a los cambios en el mercado.
Barro
2
(cont) Si está hablando del cambio de paradigma de software ... ¿Qué cambio de paradigma? OOP no es exactamente nuevo, tampoco lo es la programación funcional. Las bases de datos han existido durante mucho tiempo. Los números de coma flotante se han estandarizado desde 1985 (IEEE 754). El único cambio importante que veo es el cambio a sistemas de procesamiento distributivo (sistemas enormemente conectados en red que se escalan en escala y programas que aprovechan muchas plataformas centrales de hardware), y la transición a un juego de caracteres internacional estandarizado (UTF-8); los cuales no están realmente cubiertos en compsci.
Evan Plaice
2
@Mud y Evan: Supongo que te perdiste la parte "Claro, hay excepciones para descartar" de mi publicación. Supongo que ustedes dos son jóvenes y no están comprometidos. Esa dinámica cambiará a medida que envejezca. He estado en el campo por más de treinta años. He visto a muchos programadores autodidactas incendiarse después de que el estrés de criar a una familia entre en escena y la cantidad de tiempo que uno tiene para aprender los fundamentos de los propios enfoques cero. Me gustaría tener la misma conversación cuando ambos llegan a la edad de 40
bits Twiddler
14

Eso depende de lo que quieras hacer. Si su objetivo es principalmente programar software empresarial en general, donde el problema empresarial y los problemas prácticos de gestión de la complejidad son la parte difícil, entonces sí, un título de CS no va a ayudar mucho. Sin embargo, si su objetivo es programar cosas donde la dificultad principal es técnica, entonces un título de CS es más útil. (Aunque no tengo un título de CS, entonces me siento como un gran hipócrita por decir eso, así que siéntase libre de agregar "o autodidacta en materias de CS").

Estoy seguro de que hay muchos programadores que son excelentes para gestionar la complejidad, programar en general y resolver problemas comerciales comunes, pero se perderían absolutamente si les pidiera que escribieran un asignador de memoria, una biblioteca de paralelismo o un colecciones de biblioteca, o un sistema operativo, o un compilador, etc. Estoy seguro de que también existe lo contrario en un grado decente. Ambos tienen su lugar y merecen respeto, pero un título de CS ayuda mucho más en el aspecto técnico.

dsimcha
fuente
¿Por qué? CS se trata de resolver los problemas complejos, sea cual sea la naturaleza de un problema. CS debería ser útil incluso si no está programando nada, es un descendiente de una cibernética olvidada pero esencial.
SK-logic
12

No creo que un título de CS sea un indicador absoluto de que una persona es un buen desarrollador de software. De hecho, comencé mi carrera como programador con un título en matemáticas, pero con un fuerte sesgo de CS (las matemáticas y CS se integraron en mi programa de estudio). Creo que hay dos razones por las que importa, en general.

1 - Porque los ingenieros no son el front end para el reclutamiento

Los recursos humanos son personas. Y mientras imagino a muchas personas poniendo los ojos en blanco, digo "¡gracias a Dios!" ¿Qué es más importante: que dejes que los ingenieros hagan cosas (o rompan cosas), o que las hagas ordenar miles de currículums y hacer miles de entrevistas?

Por lo tanto, tenemos personas de recursos humanos y personas de recursos humanos seleccionamos a los candidatos hasta que lleguemos a un grupo clave que los ingenieros puedan evaluar. Las personas de recursos humanos han aprendido con el tiempo que tener un título de CS es un indicador bastante fuerte de que el candidato sabe algo sobre el desarrollo de software. Esperemos que también sepan que escribir software durante 20 años es un buen indicador de que el candidato puede escribir software.

2 - Porque tener algún tipo de sistema para aprender sobre CS es mejor que ninguno

CS es un campo enorme con mucho que saber. Y está cambiando todo el tiempo. En estos días, puedo decir con seguridad que el 75% de los cursos en mi licenciatura se ha vuelto irrelevante para mi carrera. Y que los cursos de mi maestría de hace 5 años se están depreciando rápidamente. Pero cuando comencé, me alegré de haber pagado a una gran institución para que me enseñara algo sobre organización informática, redes, buen proceso de ingeniería de software, diseño orientado a objetos, compiladores y la sintaxis / semántica de un importante lenguaje de programación que actualmente era comercializable.

Y me alegré de que fuera en un entorno en el que a alguien se le pagaba por explicarme cosas cuando el proyecto de libro / sitio web / vuelta no era obvio por naturaleza.

Y me alegré de tener acceso a un laboratorio donde la salud de la computadora y el SDE no eran mi problema: podía bloquear o centrarme más o menos en una pequeña parte del problema en lugar de tener que arreglar todas las herramientas necesarias para resolver el problema.

Y aunque los cursos no enseñaron explícitamente una buena comunicación, creo que la única forma en que realmente se puede aprender es trabajando en equipo, lo cual ES una parte importante de muchas instituciones líderes que ofrecen títulos de CS.

Y un cronograma con comentarios frecuentes (es decir, calificaciones y exámenes) que me permite saber si realmente entendí lo que me habían enseñado.

Esas cosas se combinan en mi mente para valer más que cualquier libro sobre el tema, pero ciertamente no es el ser todo, terminar con todo. Ciertamente, hay cosas que no me importaría ver mejorar las instituciones de educación superior, y creo que unos 10 años después de que te hayas graduado, el título que recibiste originalmente es menos importante que el trabajo que has realizado desde entonces.

bethlakshmi
fuente
12

Para mí, la razón es que sé que han pasado por algunos cursos difíciles y no se dieron por vencidos. Algunos de los cursos como Compiladores, Estructura de datos, Matemática discreta (y otros) tendieron a eliminar a mucha gente de los programas de CS. Tener un título de CS significa que trabajó duro y pagó un precio (largas noches haciendo que los programas funcionen), en lugar de salir por diversión.

Chris L
fuente
+1 - jajaja, no puedo discutir mucho con esto. Sin embargo, me encantaron las matemáticas discretas. Tenía un gran profesor que hizo muchas impresiones de Yoda.
P.Brian.Mackey
10

Para mí es una cuestión de mentalidad .

Su mentalidad define cómo abordará un problema determinado y le permite considerar una gama más amplia de oportunidades que las que no han sido educadas en los conceptos.

Un ejemplo típico es el problema del "Vendedor ambulante", donde sabe que 1) es NP-complete para la versión general, por lo que debe probar todas las posibilidades, pero 2) que si sabe más sobre el problema puede aproximarse dentro de un cierto límite o decir que sabe que AC siempre es más largo que AB + BC (que es cierto para distancias pero no para precios) lo que le permite resolverlo en menos tiempo

Otro ejemplo es el Análisis numérico, donde debe saber que para minimizar la inexactitud numérica debe enfocar sus cálculos de manera diferente a la matemática directa. Esto requiere conocimientos teóricos y es poco probable que se recoja en el camino a menos que haya sido explícitamente mordido por él.

usuario1249
fuente
9

De Verdad? Guau.

¿Entonces me está diciendo que las habilidades de C # y OOP son suficientes y puede diseñar su propio algoritmo para la clasificación aleatoria y descifrar los matices más finos de cómo lidiar con los problemas completos de NP en la vida real?

C # y OOP están bien, pero si está intentando hacer algo que no sea un diseño lógico trivial, entonces necesita los fundamentos de la informática.

Amigo, ni siquiera sabrás qué contenedor de C # usar si tus estructuras de datos o habilidades de algoritmos no están a la altura.

Vamos a crecer, ahora.

Fanático23
fuente
23
Fácil allí, tigre.
whatsisname
23
"diseñe su propio algoritmo para la clasificación aleatoria y descifre los matices más finos de cómo lidiar con los problemas completos de NP en la vida real". / sarcasmo
quentin-starin
44
Lo que estoy diciendo es que el 95% de las personas con las que trabajo y con las que he trabajado en el pasado pasan cerca de 0 tiempo ideando algoritmos. Paso la mayor parte del tiempo haciendo que el código sea más conciso y fácil de leer. Se dedica muy poco tiempo a "matices más finos". De hecho, me resultaría interesante pasar un poco de tiempo al menos ordenando un flujo de trabajo en una pizarra ... algo que solo he hecho yo mismo. ¿Hablas regularmente sobre NP completo con tus compañeros de trabajo? ¿En qué línea de trabajo se encuentra donde necesita escribir clases personalizadas en lugar de implementar lenguajes de programación funcionales?
P.Brian.Mackey
3
@ P.Brian.Mackey: El desarrollo de software es una profesión profesional. ¿Cuántos desarrolladores de software trabajan para su organización que tienen más de 50 años? A medida que un desarrollador de software envejece, un título de CS puede significar la diferencia entre tener un trabajo y estar desempleado. Si bien actualmente tengo títulos de pregrado y posgrado en ciencias de la computación, recibí mi capacitación inicial en este campo de las escuelas técnicas Naval y DoD a fines de los años setenta. Todos los tipos con los que serví que no se molestaron en completar un título de CS después de dejar el ejército ya no están en el campo.
bit-twiddler
77
¿Por qué parece que todos aceptan ciegamente la suposición de que se requiere un currículum formal de CS para tener algún conocimiento de los conceptos de CS? Tal vez sea un fracaso de su razonamiento deductivo. Supongo que necesitan más cursos de CS.
quentin-starin
6

Supongo que realmente no te involucraste demasiado con el título, simplemente tomaste lo que necesitabas y saliste, o fuiste a una escuela que consideraba a las especialidades de CS como "programadores" y no "programadores". Además, algunas de mis mejores / favoritas clases de "CS" son aquellas que, al menos en mi universidad, están bajo el departamento de Ingeniería Eléctrica. Mi exposición a varias arquitecturas y estilos ha sido muy importante y mi título me ha facilitado eso en un entorno "controlado".

Clases que no son solo algoritmos y pelusa cursi:

  • Compiladores
  • Sistemas operativos
  • VHDL / Sistemas Embebidos
  • Ensamblaje y Microcontroladores
  • Ingeniería de software

Y, finalmente, una clase que me dejó sin aliento: algoritmos y estructuras de datos: inteligencia artificial. Hay cosas que atravesar el sistema universitario acelerarán enormemente el proceso de aprendizaje, y consideraría que lo que se ha aprendido es invaluable cuando se busca trabajo más tarde.

Jeff Langemeier
fuente
¿Cuál es su definición de "codificador" y "programador"? Para mí, estos pueden ser los mismos, y están en contraste con "informático".
Mark C
El codificador simplemente escribe el código, no necesariamente piensa en diferentes paradigmas de diseño o procesos de pensamiento que sean aplicables para hacer un mejor código. Los programadores realmente piensan en el código que escriben, y lo abordan desde una perspectiva de arriba hacia abajo en lugar de una primera perspectiva de código de abajo hacia arriba.
Jeff Langemeier
¿Cuál es su definición de "código mono" y "programador"? El programador puede pensar en formas de resolver el problema que el dinero del código no puede ...
Coyote21
La pasión no se otorga por un título. Es solo parte de quien eres.
P.Brian.Mackey
@ P.Brian A veces, sin embargo, sucede que tu pasión otorga un título y se ve estimulada por el logro de dicho grado.
Jeff Langemeier
4

Mi opinión es que, a menos que esté solicitando puestos de "Ciencias de la Computación", cualquier título que implique un enfoque en las habilidades informáticas es más o menos equivalente.

De hecho, muchos de los programadores que conozco obtuvieron un título en una disciplina completamente diferente. Los mejores programadores que conozco tienen títulos en Ingeniería Civil, Lingüística, Economía y Finanzas.

Al final, una vez que tenga algo de experiencia, su título se convierte en una prueba de aprobación / reprobación para un reclutador. Es decir, a menos que lo haya obtenido de una escuela impresionante o un título de posgrado, no importa mucho cuál fue su especialidad.

revs JohnFx
fuente
Uno de los mejores programadores es un economista que trabaja exclusivamente en Excel / VBA y R. Ha hecho algunas cosas increíbles en Excel.
sal
@sal Escribir cosas en Excel y R no requiere un título de CS. Escribir Excel o R muy probablemente lo haría.
Alnitak
@alnitak: escribir Excel o R tampoco requiere un título de CS. Ese es el punto de mi respuesta y la de sal
JohnFx
@JohnFX: Me gradué con honores latinos de uno de los veinte mejores programas de CS en los EE. UU., Y esa credencial sola todavía me atraviesa la puerta (también tengo un MSCS de otra escuela de buena reputación). Comencé en el campo como un operador informático y programador alistado directamente de la escuela secundaria. Recibí mi capacitación inicial en sistemas informáticos y desarrollo de software de la Marina de los EE. UU. Y la Agencia de Seguridad Nacional; Por lo tanto, trabajé en el campo sin un BSCS durante varios años. Todo lo que puedo decir es que fue literalmente como cuando se separaron los cielos cuando completé mi BSCS.
bit-twiddler
@ bit-twiddler: ¿está destinado a apoyar o refutar mi respuesta? Parece que respalda mi afirmación final de que es importante si tienes un título universitario de posgrado o de renombre.
JohnFx
4

para mí y muchos de mis colegas no lo ha hecho (ninguno de nosotros ha tenido títulos de CS)

Shawn
fuente
3

Ok, entonces que hay de

Si ha seguido los siguientes temas:

a.Arquitectura y organización de computadoras

b. Ingeniería de software

c. DBMS

d. Electrónica básica

mi. Circuito Electrónico Digital Básico

f) Microprocesador

g. Diseño del compilador

¿Crees que todo lo anterior es solo por formalidad? Recuerda que los puntos anteriores hacen que "buen programador" sea un "gran programador".

Repase esto para leer sobre la importancia de los temas eléctricos y electrónicos.

Radheshyam Nayak
fuente
3

Tengo una licenciatura en informática. Ha sido excelente para abrir puertas, conseguir un trabajo. En cuanto a ayudarme en el campo profesional de la programación de C # .NET (la plataforma y el lenguaje más populares en el área en la que trabajo, si no en todo Estados Unidos, sin dudas, el sistema operativo más popular del mundo ) es poco útil.

El 70% + del código está escrito en C (ya que hay más dispositivos integrados que aplicaciones de alto nivel). De acuerdo con las búsquedas populares de empleo como dados o el índice TIOBE, Java es el lenguaje de programación más popular para la empresa (ya que hay más servidores back-end Unix / Linux que servidores Windows). Hay más teléfonos inteligentes y tabletas (la plataforma informática de el futuro) ejecutando alguna variante de Linux o Mac OS que Windows, programada en cualquier cosa menos C # o .NET.

Mire su enrutador en casa, mire su teléfono celular, mire la computadora dentro de su automóvil, mire el maldito microondas en su hogar, los controladores dentro del sistema de A / C de su hogar, dentro de su teléfono y su fax de trabajo e impresora / escáner. Mire la cantidad de dispositivos computarizados (que superan en número a los sistemas Windows)

¿Crees que están programados en C #?

Si realmente cree que .NET o C # son las plataformas más populares del mundo, es posible que desee volver a su escuela de CS y solicitar un reembolso.

¿Por qué crees que te ayuda como programador en tu carrera profesional (fuera de usar el algoritmo prims para impresionar a algún entrevistador)?

¿Quizás porque hay mucho más sobre programación que hacer páginas web dinámicas de desarrollo básico y aplicaciones empresariales? Para eso ni siquiera necesitas un título de BS, un AA es suficiente; lo sé porque comencé mi carrera de programación con un título de AA y trabajé lenta pero seguramente para obtener un CS y luego trabajé en la escuela de posgrado mientras trabajaba a tiempo completo como desarrollador .

Hay desarrollo integrado, desarrollo de controladores de dispositivo, desarrollo de sistemas operativos, desarrollo de algoritmos, señales, comunicaciones, protocolos de red, desarrollo de motor de base de datos, desarrollo de sistema de archivos, computación distribuida, compiladores. No es investigación, sino trabajo real en organizaciones con fines de lucro. Salvo a los dotados naturalmente, uno no puede piratearlo en ninguno de estos campos industriales sin un título de CS (a veces ni siquiera con un título de BS)

Una persona que obtiene un título de CS y le presta atención lo sabe. ¿Cómo es que no?

En la adaptación mundial de hoy, una mente rápida, una comunicación sólida, OO y habilidades de diseño fundamentales permiten al desarrollador escribir software que un cliente aceptará.

OO entró en existencia debido a CS. Y la mayoría de las personas que piensan que hacen OO ni siquiera pueden hacer un buen trabajo. Simplemente mire hacia afuera y observe el mal estado del software (en particular en Java y .NET, sin mencionar PHP). Una sólida formación en CS (o un título de posgrado en algún tipo de ingeniería) no garantiza un 100% de comprensión de OO y habilidades analíticas, pero generalmente ayuda. OTH, no tener un fondo básico de CS suele ser una señal de alerta cuando se trata de OO y habilidades analíticas. Tenemos suficiente evidencia empírica en la industria para respaldar esta afirmación.

Estas habilidades solo se pasan por alto en el programa cs.

Dependiendo del programa CS y del alumno. Al menos para mí, vi muchos buenos cursos sobre diseño, análisis OO, herramientas y prácticas comerciales, tuvimos cursos mixtos con empresas locales y pasantías, proyectos e investigación financiados por empresas, redacción técnica, lo que sea. Lo siento, no puedo relacionarme o entender esta declaración.

En mi opinión, leer un libro C # de 500 páginas de Wrox ofrece un conjunto de habilidades mucho más útil que los 4 años de los cursos de matemática Blaster.

De nuevo, dependiendo del trabajo que hagas. Incluso en la empresa, he usado mi CS para arreglar cosas o mejorar. Todo eso implica modelado, arquitectura, computación distribuida, seguridad y alto rendimiento, alta disponibilidad y tolerancia a fallas. Aprendí todo eso en CS.

No hay nada malo con el uso de un libro de Wrox para obtener un contexto específico , la tecnología específica conjunto de habilidades. Lo hago yo mismo. Pero mi experiencia en CS me da el contexto para trabajar. Sin mi experiencia en CS, todo lo que podría hacer sería programar, codificar (que es todo lo que podía hacer cuando solo tenía un título de AA al comienzo de mi carrera).

Muchos no están de acuerdo.

Sorprendente, no lo es.

Entonces, ¿por qué es importante un título en informática?

¿A quién crees que se te ocurran los motores de base de datos de alto rendimiento de google, hadoop, cassandra? ¿Quién crees que escribe el kernel del sistema operativo Windows? ¿Quién crees que programa las amadas herramientas que usas para desarrollar C #?

Una cosa de la que estoy seguro es que las herramientas que usa para hacer el desarrollo de C #, hay un tipo de CS detrás de esto.

Si necesita un título de CS o no, depende del tipo de trabajo que realiza, el tipo de trabajo que desea hacer, el tipo de trabajo que es capaz de hacer.

Hay mucho trabajo en la empresa y el desarrollo web que no requiere un título de CS. Te lo concedo. También sé que el mundo de la programación es mucho más amplio que solo esos dos campos, con muchos campos (la mayoría de ellos en realidad) que requieren un grado de CS o más.

Tienes un título de CS, cómo no sabes que es un misterio.

luis.espinal
fuente
TIOBE es una mierda para determinar cuánto se usa un lenguaje de programación. Es una medida de cuán popular es un idioma determinado en Internet (en términos de número de referencias), no en términos de líneas de código escritas.
Billy ONeal
Debido a sus variabilidades específicas del lenguaje, los LOC son irrelevantes en todos los lenguajes de programación y, por lo tanto, no pueden usarse para medir el uso del lenguaje de programación en todas las industrias. Y la popularidad de las búsquedas de idiomas en Internet actúa como un indicador parcial de la profundidad e interés del uso (o la falta del mismo) ... si es consciente del sesgo inevitable. Por sí mismo, ** el índice TIOBE no significa nada , solo un tonto pensaría lo contrario; y solo un tonto pensaría que eso es lo que estoy diciendo.
luis.espinal
Cuando se toma junto con otros indicadores (como búsquedas de empleo y desarrollo de tipo de producto), ayuda a estimar las tendencias en el uso de la tecnología. En otras palabras, es útil o inútil dependiendo de para qué lo use, cómo lo use y con qué otros indicadores se combine.
luis.espinal
Mi punto es que parece estar usando ese índice para hacer una declaración sobre el uso de un lenguaje de programación, que no es lo que mide ese índice. Escribí mal cuando dije LoC escrito, pero no hay una buena manera de decir "cantidad de código escrito", que es lo que quise decir. TIOBE es un concurso de popularidad, y en esa carrera Java va a sorprender a todos los demás mientras sea la linqua franca de los cursos de programación introductorios. (No porque eso significa que los estudiantes no saben otra cosa, sino porque los estudiantes son generalmente más fuerte que los profesionales (es decir, un servidor).
Billy ONeal
1

Recuerdo haber visto algunos conceptos básicos en mis cursos de CS que han sido muy útiles a veces. El proceso de Cascada y sus pasos han sido algo que he usado repetidamente en mi carrera con alguna variación para Agile, donde no es tan rígido en los pasos, pero los mismos pasos están ahí.

Las habilidades para resolver problemas y diversas heurísticas algorítmicas también pueden ser útiles en ocasiones. Hay algo que decir sobre los beneficios indirectos de un título de CS. Por ejemplo, aprender a justificar una respuesta para mostrar por qué algo es correcto es solo una de las pocas habilidades que refiné en la universidad, pero no estoy seguro de cuán obvio sería que esto sea un beneficio al final del programa.

JB King
fuente
1

Estoy de acuerdo con el punto de Thorbjørn Ravn Andersen con respecto a la mentalidad. Eso es lo principal que desarrollas con un buen plan de estudios de CS.

Básicamente se trata de entender cosas como estructuras de datos y algoritmos. No es que no pueda aprender esto por su cuenta, pero un buen plan de estudios de CS proporcionará una mejor exposición.

George Marian
fuente
Hay otras asignaturas que solo los estudiantes de informática y de ingeniería informática tienden a aprender, como la organización de computadoras y la arquitectura de computadoras. Aprender a construir computadoras desde la lógica secuencial y combinacional lo convierte a uno en un mejor desarrollador de software porque le da una idea de lo que realmente está sucediendo dentro de una computadora. Además, los primeros programadores en trabajar con un nuevo procesador necesitan comprender conceptos tales como memoria jerárquica y E / S, tuberías, cachés asociativos de bloques, unidades de control (microcodificadas y cableadas) y la diferencia entre el procesamiento escalar y vectorial.
bit-twiddler
¿Cómo proporcionará el estudio universitario de CS una mejor exposición que en un laboratorio donde realmente importa con un mentor calificado que sepa no solo cómo se supone que funciona y cómo funciona realmente?
JustinC
@bit De acuerdo. Sí, mi respuesta es bastante simplista. Estaba destinado a ser así por una razón.
George Marian
@justin No estoy muy seguro de lo que estás tratando de decir. ¿Cuántos programadores trabajan en un laboratorio, y mucho menos con mentores calificados?
George Marian
@JustinC: Uno aprende cómo funcionan las cosas en un laboratorio (nivel técnico). Uno aprende por qué las cosas funcionan en cursos de organización y arquitectura de computadoras de nivel superior (nivel de ingeniero). Si compra un par de libros de texto universitarios de nivel superior sobre arquitectura de computadoras y organización de computadoras, verá lo que quiero decir.
bit-twiddler
1

Escritura

En el desarrollo de software empresarial, es vital poder escribir código y escribir . Con eso quiero decir: escribir correos electrónicos, informes de errores, documentos técnicos, etc. Tanto la escritura como la codificación requieren la claridad de pensamiento y la economía de expresión adecuada.

Entre 2 desarrolladores de software, mi apuesta es que el que tiene un título de CS de una universidad sólida (programa de CS fuerte y asignaturas optativas requeridas en humanidades) tiene ambas habilidades. (Es cierto, esto no es una garantía: las personas de las humanidades pueden ser grandes programadores y escritores de primer nivel; muchos graduados de CS son máquinas de codificación que no pueden escribir, etc.)

Leyendo

Un mentor mío afirmó que podía juzgar a los desarrolladores por lo que leían. La publicación original menciona libros de WROX. En mi opinión, es más probable que alguien con un título de CS busque tales libros profesionales de TI y pueda usarlos de manera efectiva. Si se puede manejar CLR , se puede manejar "Professional C #".

Matemáticas

Las matemáticas desarrollan lógica, pruebas, rigor, etc., y el efecto secundario es que ayuda a la escritura. Aunque la mayoría de las TI comerciales no requieren habilidades matemáticas intensas, la persona con un título de CS lo tendrá cuando sea necesario. Esta es una manera mucho mejor de pasar por la vida que vivir sin ella y preguntarse qué se ha perdido en la escuela.

Michael Easter
fuente
1

Supongo que realmente depende de la calidad del programa de CS por el que pasaste. Sé lo que quiere decir, la mayor parte del código que escribo a diario es solo VB.Net estándar, obtiene los datos del servidor SQL, los pone en el formulario, los guarda en la base de datos y hace algunos informes. Lavar, enjuagar, repetir. (Muy aburrido a veces) El programa de CS que atravesé, además de cubrir la teoría y el conocimiento fundamental, enseñó muchas cosas prácticas. Cubrimos áreas como diseño de software, diseño de bases de datos y gestión de proyectos. Aprender lenguajes de programación fue la parte fácil, el diseño y la metodología de creación de sistemas de software fue lo que aprendí de mi experiencia universitaria. Nos dieron proyectos basados ​​en problemas del mundo real, a veces incluso diseñando sistemas de software para otros departamentos en el campus.

Como programadores, obviamente tenemos la capacidad de aprender por nuestra cuenta, es una necesidad en nuestro campo. Tengo que decir que estoy muy contento de haber pasado por el programa CS. Mis profesores fueron increíbles y me enseñaron bastante. Mis compañeros de clase eran personas muy divertidas y pasamos muchas noches divertidas en el laboratorio de computación. A decir verdad, extraño esos días ...

Kratz
fuente
1

Todo está en la capacidad de vivir indirectamente.

Si omite el título, probablemente tendrá que aprender las lecciones de una manera muy personal (también conocida como la forma difícil). La falta de un título no significa que tomará el camino más difícil de aprendizaje por prueba y error; sin embargo, el título le garantiza la exposición a un cofre del tesoro de conocimiento previamente adquirido que otros tuvieron que ganar a altas horas de la noche, sesiones de programación frustradas y, en general, "hacerlo de la manera difícil".

La persona verdaderamente excelente no descartará lo que otros han encontrado como verdadero, sino que lo desafiará hasta que conozca las limitaciones del conocimiento y luego jugará con el "sistema" de ideas recién adquiridas hasta que lo haga suyo. Está parado sobre los hombros de los que vinieron antes, y viviendo las soluciones de años pasados ​​sin tener que redescubrirlas.

Por supuesto, una persona con un título en informática no siempre es el mejor candidato. Hay aquellos individuos únicos que han sido conducidos a la corriente pero (por alguna extraña razón) se niegan a beber de ella.

Edwin Buck
fuente
0

Tengo 21 años y acabo de terminar una licenciatura en CS. Creo que, por muy bueno que seas en programación, si eres un graduado de CS, ya estarás expuesto a varios campos. Entonces, si quieres aprender cosas nuevas, no tengas miedo de explorar, incluso si es irrelevante . Si eres un experto en tecnología o lenguaje de programación, bien. Pero no creo que seas aventurero y estés dispuesto a buscar otras tecnologías. Así es como te ensucias (y rápido también). No pensarás que lo que explores será irrelevante ya que no te ayudará a ganar dinero. (Ya has estudiado muchas cosas irrelevantes en tu CS UG;)).
Es la pasión en CS que tienes después de graduarte lo que te convierte en un profesional del software.
Alguien de acuerdo?

Ranjanmano
fuente
1
No se puede suponer que a alguien no le interesará "buscar otras tecnologías" simplemente porque no tienen un título de CS. Esto es una falacia.
Steven Striga
0

Bueno, cuando ingresé en CS, pensé que wow, soy realmente bueno como soy y no voy a aprender nada aquí ... Después de 5 años, solo aprendí a trabajar en equipo, y algunas cosas de ingeniería que me separa de alguien que solo puede escribir código y alguien que puede pensar en lo que hace antes de codificar, en resumen, me ha enseñado a pensar antes de escribir una sola letra en mi editor de texto o ide.

Coyote21
fuente
0

Para conseguir un trabajo usando un lenguaje de código abierto no significa ponerse en cuclillas. La mayoría de las empresas reclutan en función de la capacidad en lugar de las calificaciones y los lenguajes como PHP tienen una reputación de aficionado que amenaza que las personas pueden tener talento sin haber estudiado CS. La única vez que ayuda si está obteniendo un trabajo usando lenguajes .Net, ya que la mayoría de los aficionados no querrán pagar miles de dólares por una licencia solo para jugar los fines de semana, por lo tanto, alguien que busque un primer trabajo en C # probablemente solo tendrá 2-3 años de experiencia.

Por supuesto, la experiencia comercial es realmente valiosa, ya que demuestra su capacidad para entregar códigos de calidad a plazos.

En conclusión, le ofrece entrevistas por trabajar con idiomas de fuente no abierta.

Adam Pointer
fuente
0

Un título de Collegue o University, significa que estudiaste y tienes algún conocimiento de CS, algunas cosas básicas que se requieren para un trabajo en el mundo real, incluso si tienes que aprender otras cosas por ti mismo.

Además, cuando un reclutador de TI tiene que encontrar un Soft. Dev., Y 500 solicitantes envían su currículum, y tienen que entrevistar a menos de 50 de ellos, tener un título en su currículum, ayuda tanto al reclutador como a sus posibilidades de ser contratado.

(de un desarrollador de software que estudió algunos HHRR)

umlcat
fuente
0

Probablemente esto no ayude mucho, pero ahora que aprendí el ensamblaje y todo el conocimiento involucrado, me siento un programador más completo y estoy seguro de que esto volverá a suceder cuando vaya a la universidad. Quiero decir, principalmente uso C o VB, no necesito saber qué es un estado de espera para hacer mis programas, ¡pero simplemente sé lo que sucede detrás de mi código es genial! Y el conocimiento lo ayuda a escribir un código mejor, más rápido y más fácil de mantener. Un título en ciencias de la computación da exactamente el conocimiento requerido para escribir un gran código en mi opinión.

Oso negro
fuente
0

La ingeniería de software de hoy es una ciencia experimental, no matemática aplicada.

Los grados en informática enfatizan los algoritmos, ¿cuánto de su trabajo diario implica implementar o incluso usar algoritmos y estructuras de datos novedosos?

¿Cuánto implica tratar con capas de marcos y las abstracciones con fugas? ¿Cuánto está tratando de determinar qué hace realmente alguna API, en lugar de lo que implican los documentos? ¿Cuánto cuestan las pruebas y decidir cómo hacerlo?

Por todo eso, un título de física o química es mucho mejor entrenamiento que haber memorizado Knuth

Martin Beckett
fuente
0

Es importante porque los reclutadores tienen un indicador de que no tienes ni idea de lo que se supone que debes hacer, pero no necesariamente implica que realmente sepas lo que estás haciendo o que lo estás haciendo de una manera técnicamente conveniente.

Hay personas brillantes con títulos que aman lo que están haciendo y son realmente buenos programadores y también hay idiotas con títulos que son realmente malos programadores y ni siquiera conocen algunos fundamentos. Hay personas brillantes sin títulos que pueden desarrollar cualquier cosa (software empresarial / compiladores / un sistema operativo) y hay idiotas sin títulos que no saben cómo usar una tabla hash correctamente.

Halcón
fuente
0

Absolutamente correcto, el título en informática no importa mucho; Es por eso que su única opción debería ser obtener un título de ingeniería.

Al entrevistar a candidatos con diversos antecedentes, el único rasgo que se destaca para aquellos candidatos que no tenían ningún título es este: falta de habilidades de comunicación técnica y falta de disciplina. Estos son rasgos fundamentales aprendidos al obtener cualquier título de ciencias (lo diría aún más con un título de ingeniería).

Dado que la mayoría de las cosas son iguales (y una sola ronda de entrevistas a menudo presenta candidatos "casi iguales"), contrataría a la persona con el título de ingeniero primero, el grado de informática en segundo lugar y el tercero sin título. Sin embargo, hay formas de hacer que las cosas sean muy desiguales en la comparación, para que cualquiera pueda vencer incluso a aquellos con un título de pedigrí, pero esa es una pregunta separada, ¿no?

Jonathan Cline IEEE
fuente
-1

Para un programador ... no es mucho (aparte de tal vez abrir puertas para entrevistas, como dijiste).

Para un trabajo de CS (investigación, análisis de algoritmos, lenguaje formal y diseño). Es poco probable que aprenda estas cosas en cualquier otro programa no matemático.

// Descargo de responsabilidad: mi título es en TI, así que tuve que volver para todos los otros cursos para realizar en mi línea de trabajo.

iivel
fuente
-1

Tengo un título en informática. Lo que me ayudó a obtener mi primer rol de computadora fue el hecho de que el año 3 fue un puesto de trabajo como administrador de TI. Recomiendo esquemas de inserción laboral dentro de la educación.

TéBeberGeek
fuente