¿Qué tan importante es la universidad si quiero ser desarrollador de software?

Tengo 23 años de experiencia como desarrollador, 18 años de experiencia en la gestión de desarrolladores, y tengo una maestría en ciencias de la computación. No quiero exceder la educación o vender menos. Sin embargo, quiero que comprenda los límites de lo que puede hacer con la educación adicional y sin ella.

Es popular en estos días que la gente diga que no es necesario tener una educación universitaria para ser desarrollador de software. Estoy de acuerdo, de hecho, con bastante firmeza, en que la industria ha cambiado en que la tecnología ha reducido la barrera de entrada para que alguien no necesite tener cuatro años de universidad simplemente para escribir código. Si todo lo que quiere hacer es escribir código, y eso está perfectamente bien, entonces debería considerar una alternativa más rápida, como ir a un Boot Camp de codificación. Alternativamente, es posible que desee ir a un Boot Camp de vez en cuando y continuar su educación por la noche.

Sin embargo, si desea hacer algo más que escribir código, le sugiero encarecidamente que considere una inversión no solo para sino hasta seis años de educación adicional.

La confusión es que el software es el único campo de ingeniería en el que las personas educadas realizan la construcción y el diseño, pero eso está cambiando rápidamente a medida que una mejor tecnología está democratizando la fase de construcción.

Es importante comprender el concepto del “ciclo de vida del desarrollo de software”. Al igual que con la ingeniería de cualquier otro tipo de producto, tenemos que desarrollar requisitos para el software, un diseño para el software, construirlo, probarlo e implementarlo. Las dos fases iniciales del proyecto, la de los requisitos y el diseño, son las más delicadas y las fases en las que es muy costoso cometer un error.

No necesita un MBA para crear una hoja de cálculo y no necesita un título en Ingeniería Civil para operar una retroexcavadora. También es cierto que no necesita ser un informático para crear un juego de Android o un formulario web con jQuery. Sin embargo, si tuviera una opción, ¿preferiría ser un empleado de archivo o el MBA?

Personalmente, he diseñado muchos de los grandes sistemas de software financiero y de seguridad en los Estados Unidos. Tenga la seguridad de que los ocho años que pasé en la universidad y los 33 años de estudio continuo me resultaron esenciales al desarrollar los requisitos y el diseño de estos sistemas.

Los ejemplos de donde la educación me resultó importante son demasiado numerosos para mencionarlos, pero creo que un par de ellos pueden ser suficientes para convencerte. Todos estos ejemplos son de la semana pasada.

(1) Contratación . Recientemente entrevisté a un candidato que afirmó haber escrito una tesis de maestría sobre un tema relacionado con las comunicaciones inalámbricas, pero no pudo respaldar las afirmaciones en su currículum. Me especializo en software, pero sabía lo suficiente como para hablar con el hombre sobre su trabajo, que luego admitió que fue rechazado por la facultad. Salvé a mi empresa de un error costoso.

(2) Diseño . Recientemente tuvimos un equipo de desarrollo que se liberó antes de lo previsto. Teníamos varios proyectos alineados, pero todos los desarrolladores eran jóvenes y estaban en otra ubicación, por lo que necesitábamos producir especificaciones de diseño para que pudieran comenzar. No hacerlo le habría costado a mi empresa varios miles de dólares por día simplemente porque teníamos a los desarrolladores infrautilizados. Pude producir una especificación de diseño de 20 páginas con algoritmos, un esquema de base de datos complejo y todos los demás elementos de diseño apropiados basados ​​en una conversación en el pasillo con mi gerente. Lo hice en 10 horas.

(3) Implementación . Tuve un grupo de ingenieros que lucharon durante todo un día con problemas para administrar archivos con un complejo sistema de servicio de Windows multiproceso. Sin dudarlo un momento, pude darles un paso a través de la teoría del sistema operativo multiprocesamiento, la gestión de subprocesos, el almacenamiento en caché y la selección de opciones apropiadas para la transmisión de E / S de archivos.

Me gustaría ofrecer mi propia experiencia a este problema. No fui a una “universidad”, sino a una escuela de tecnología de ritmo rápido que tenía como objetivo hacerme emplear lo antes posible. Eso está bien para simplemente “ir a trabajar” y puede comenzar a trabajar en sus propios proyectos y sus propios tutoriales.

Pero, a menudo deseo haber invertido en una educación universitaria adecuada y he aquí por qué. Alrededor de los 30 años, tendrá dificultades para mantenerse relevante, pero si no tiene educación universitaria, es posible que también le falte aprender terminología como KPI’s, M&A, Cashflow positive y muchos de los aspectos gerenciales del software que la gente no usa. No considere cuando se vean a sí mismos “haciendo código todo el día frente a una computadora” como un “desarrollador”.

TODOS están MUY equivocados al creer esa falacia. En realidad, la mayor parte del tiempo como “desarrollador” se gasta en reuniones que tienen muy poco que ver con escribir código. Muchos desarrolladores están atascados en escribir 1–2 horas / día de código. Entonces, para armarse para las reuniones de la junta, las reuniones semanales, las reuniones diarias, las reuniones trimestrales de la compañía, las ventas improvisadas “tuvieron una gran idea (que requeriría una reescritura total, pero no lo sabemos) que nosotros” desearía que creara un informe de factibilidad al final del día (después de 2 reuniones más) y después de su tercera reunión hoy antes del mediodía, también nos gustaría tener un informe sobre el trabajo atrasado y celebrar una reunión separada sobre eso para discutir por qué ¿no se limpia más rápido? ”(¿Ves un patrón aquí?)

La universidad te prepara para no parecer un tonto y comunicarte profesionalmente en estas reuniones. La universidad te prepara para manejarte mejor en esos escenarios y te convierte en una persona más completa (ya que ese era literalmente el propósito inicial de la universidad antes de que se convirtiera en un gran negocio), por lo que si bien no necesariamente necesitas ir a una universidad , o la escuela de tecnología para conseguir un trabajo inicialmente, siempre se mencionará en entrevistas de trabajo, en realidad lo preparará mejor para avanzar en su carrera, y lo equipará para poder hacer más que hablar sobre código todo el día, lo que es un extra punto de venta cuando vas a ser contratado que el 80% de los desarrolladores puros no tendrán.

Al igual que usar protección con una chica que acabas de conocer, no es necesario, pero es una idea muy inteligente que puede no sentirse bien, pero SIEMPRE es la decisión más segura.

La respuesta es sí y no.

No suele ser el caso si considera que, con algunas excepciones, la mayoría de lo que necesitará saber sobre un trabajo de CS, aprenderá en el trabajo o como resultado de cursos adicionales justo antes del trabajo, como aprender un nuevo idioma. La mayoría de las universidades están varios años detrás del mercado en lenguajes de programación y en las demandas del mercado laboral.

Sin embargo, es SÍ cuando considera que su título, especialmente si se logró con un GPA alto, es una declaración de prueba positiva para un empleador de que puede postularse y tener autodisciplina para poner el esfuerzo, la aptitud y la perseverancia que requiere ganar ese grado Como empleador, eso es mucho más importante para mí que un título altamente generalizado que puede o no haberte enseñado las habilidades que necesito que tengas para el trabajo que quiero que hagas.

Un secreto poco conocido es que esto es cierto para la gran mayoría de los títulos universitarios y trabajos. Es por eso que a menudo ve una especialización PolySci o Filosofía en un trabajo de marketing o una especialización en biología en un puesto de gestión de personal. Lo importante es el proceso, mucho menos que el contenido.

Shhhhh … no se lo digas a nadie, es un secreto que los empleadores no queremos dejar salir.

Trabajé como programador durante más de 10 años antes de completar mi título de CompSci. Que aprendí:

  • Estructuras de datos y análisis de algoritmos adecuados. Una clase típica de DS de tercer año es invaluable para evitar escribir basura ineficiente.
  • Paradigmas de programación, particularmente paradigmas funcionales y lógicos y alcance. Buenas cosas que expanden la mente para un trabajo inspirador en idiomas que no son un idioma real.
  • Descomposición de la computabilidad en cosas como máquinas de estados finitos y autómatas variados.
  • Un montón de matemáticas discretas, especialmente sobre estadísticas y teoría de la criptografía.

Admito que no aprendí muchas cosas nuevas sobre la configuración de entornos de desarrollo, la creación de grandes proyectos o, simplemente, la distribución de código. Pero lo anterior ha sido sorprendentemente útil (más de lo que parece a primera vista) y es muy difícil de aprender por sí mismo.

Puede pasar fácilmente sin todo eso, simplemente no es tan efectivo.

Puede ganar un buen dinero sin un título, pero sugeriría un camino inteligente hasta cierto punto si la clase media es pobre. Primero, aprenda un idioma y algunas habilidades de un sitio como Treehouse y comience a trabajar como desarrollador junior durante unos años. Esto le permite ahorrar suficiente dinero para obtener una licenciatura libre de deudas.

Las universidades nos ayudan a tener un plan de estudios estructurado. Y, lo que es más importante, los profesores y compañeros que conozcas allí enriquecerán tus experiencias de aprendizaje. Las buenas universidades brindan asistencia para la colocación, lo que podría ser un buen factor para muchos estudiantes.

La mayoría de las cosas que aprende probablemente estarán en línea. Puedes aprender a tu propio ritmo. Es importante que no necesite estudiar cosas que probablemente no le interesen. Puede comenzar a trabajar como freelance para comenzar.

[matemáticas] Decide tu propio formato [/ matemáticas].

Conozco personas que eligen cualquiera de los formatos y se destacan en el desarrollo de software. Personalmente no me gusta pasar por todos los cursos que no me gustan, pero me gusta tener un aprendizaje entre pares como los que se imparten en las aulas. Y trato de estudiar mucho fuera del aula, tanto como trato de aprender en el aula.

More Interesting

Además de OOP y la estructura y algoritmo de datos, ¿qué fundamentos de las ciencias de la computación deben poseer todos los desarrolladores de software (por ejemplo, compiladores)?

¿Qué capacitación y cursos puede seguir un desarrollador de software para convertirse en emprendedor?

¿Cuáles son las mejores herramientas para la creación de perfiles de rendimiento de JavaScript?

¿Qué puede determinar su salario como desarrollador de aplicaciones móviles?

¿Cómo se gana la vida siendo un ingeniero de software independiente?

Cómo entrenarme para el desarrollo de software

¿Cuáles son los pasos para seleccionar una empresa de desarrollo de software en los Estados Unidos?

Como desarrollador de software, ¿vale la pena aprender blockchain y ethereum si estoy aprendiendo machine learning después del trabajo ahora?

¿Qué piensan los desarrolladores del anuncio de Cragislist 'Buscando dos malditos grandes desarrolladores'?

¿Cuáles son algunas técnicas inteligentes que los desarrolladores de software han utilizado para aumentar su seguridad laboral en una empresa?

Cómo explicar la diferencia entre un programador, un hacker, un programador, un desarrollador y un informático a un niño de 10 años

¿Qué opinas sobre Google Code Jam distribuido?

¿Qué se siente tener un desarrollador joven engreído por debajo de los 30 años como líder del equipo?

¿Qué desafíos técnicos implica un motor de procesamiento de registro de big data?

¿Qué tipo de desarrollador de software necesitará la industria en 5 años?