¿Elegirías un curso de iniciación a la codificación o una titulación relacionada con la informática? ¿Por qué?

Las personas que responden a esta pregunta son en su mayoría instructores de bootcamps o personas que han asistido a bootcamps. Sin embargo, tengo la intención de responder a su pregunta desde el punto de vista de un empleador. (Soy el cofundador y ex CTO de FiscalNote que es una empresa de IA que se ocupa de la analítica del gobierno)

Cuando estoy buscando contratar a un nuevo ingeniero, estoy buscando a alguien que tiene al menos o equivalente a un grado de ciencias de la computación. (coding bootcamp no cuenta como un grado de CS).

Aquí están mis razones por las que NO consideraría a un desarrollador de bootcamp:

  1. Alguien con un grado de ciencias de la computación entiende los fundamentos de la informática. Algoritmos, concurrencia, asignación eficiente de memoria, pila/amontonamiento, big-O/complejidad temporal, estructuras de datos avanzadas, etc... Estas habilidades son extremadamente importantes cuando vas más allá del framework (rails, node, etc...) que estos bootcamps te enseñan. Te daré un ejemplo simple pero plausible. Digamos que tienes mil millones de objetos de usuario, cada uno con una edad (de tipo entero positivo). Ahora imagina que tienes que ordenar esta lista por edad con bastante frecuencia en tu aplicación. (Supongamos que estás ordenando a nivel de la aplicación (no a nivel de la base de datos) y que tienes una buena cantidad de RAM, por lo que la memoria no es un problema). Alguien con formación en Rails se limitaría a llamar al método ruby.sort (porque eso es lo que le han enseñado). Ahora bien, no es una mala elección, el método ruby.sort utiliza quick sort que es un algoritmo O(nlogn) en el caso medio. Sin embargo, estamos ordenando 1.000 millones de usuarios y ¡está creciendo rápidamente! Necesitamos un algoritmo mejor. Alguien con conocimientos de informática entendería esto y escribiría su propia solución. En este caso, dado que la edad tiene un límite superior (supongamos que la gente no puede vivir más allá de los 150 años), tenemos una restricción en la que la edad es un número entero entre 0 y 150. Conociendo esta información extra, podemos diseñar un algoritmo que sea de tiempo O(n) como el counting sort, el bucket sort o el radix sort. Estos algoritmos son mucho más eficientes en términos de velocidad. Ahora bien, ¿qué pasa si la memoria también es una limitación? ¿Qué se puede hacer? Estoy bastante seguro de que no puedo confiar en alguien sin experiencia en CS para tratar de resolver este problema o incluso darse cuenta de que es un problema!
  2. Bootcamps no enseñan los fundamentos de la CS, enseñan cómo utilizar los marcos, y lo que es popular en este momento. ESTO ES PELIGROSO si tienes una empresa tecnológica de rápido crecimiento. Imagínate que empiezas usando Ruby on Rails, y contratas a desarrolladores de ruby on rails de bootcamp. Tres años más tarde, Rails decide terminar su vida, detener el desarrollo activo y dejar de mantenerlo (básicamente se cierra, aunque es muy poco probable). O, imagínate, decides que necesitas cambiar de tecnología en el camino por la razón X o la razón Y (le pasó a mi empresa FiscalNote, empezamos con Rails, y estamos cambiando a Node.js). Necesitas tener ingenieros que entiendan cómo funcionan las cosas en el fondo de los frameworks y los lenguajes de programación para poder hacer una transición suave. Los ingenieros deben ser maleables cuando se trata de tecnología. La tecnología cambia rápidamente, y si sus ingenieros son incapaces de cambiar con ella, su empresa no sobrevivirá mucho tiempo.
  3. Dependiendo del tipo de empresa que sea, es posible que no le importe o ni siquiera sepa la diferencia entre un ingeniero con formación en CS y un ingeniero con sólo formación en dev bootcamp. Por lo tanto, hay una gran diferencia en el calibre de la ingeniería entre la empresa's que necesitan un equipo técnico y una empresa de ingeniería / tecnología. Lo más probable es que los desarrolladores de dev bootcamp tengan muy pocas posibilidades de conseguir puestos de ingeniería en Google/Facebook/Microsoft o en startups tecnológicas de rápido crecimiento como Slack, Stripe y Uber. Lo más probable es que estas empresas no contraten a ningún desarrollador del bootcamp, sino a los mejores estudiantes de CS. Las empresas que contratan a gente del bootcamp no suelen ser empresas tecnológicas, sino más bien empresas locales o empresas que no saben realmente de tecnología. Por ejemplo, tal vez un restaurante mexicano local quiere construir una aplicación. No les importará si su programador no tiene un título en ciencias de la computación, sólo les importa que la aplicación esté construida y funcione para poder vender sus tacos en línea. Sin embargo, hay algunas excepciones en las que sí trabajan en empresas tecnológicas.
  4. La depuración es difícil y la mayoría de las veces la depuración requiere un conocimiento más profundo de CS y lenguajes de programación, así como tal vez cosas a nivel de SO. La depuración es mucho más fácil cuando usted entiende estos conceptos básicos de CS. La depuración es un infierno si sólo se sabe cómo utilizar el marco, pero no entender por qué las cosas están siendo hechas por el marco.
  5. Estoy empezando a ver una tendencia en la que una buena cantidad de empresas de tecnología, cuando se encuentran con un desarrollador de un bootcamp, simplemente ponen los ojos en blanco, *suspiro, y pasan del candidato. Lo siento por aquellos bootcampers que lean esta respuesta pero esta es la triste verdad. Nosotros, las empresas tecnológicas, nos gusta hablar entre nosotros sobre las prácticas y estrategias de contratación y este fue un tema común que surgió.

No estoy tratando de atacar a los desarrolladores de bootcamp de ninguna manera, sólo estoy afirmando que pueden no ser la mejor contratación para una empresa de tecnología / ingeniería pesada. Animo a la gente a cambiarse al campo técnico porque quiero que más gente tenga carreras técnicas. Pero desde mi punto de vista, gastar mucho dinero para tomar el camino fácil (digo fácil porque te saltas esas horribles clases de algoritmos en la universidad) del dev bootcamp no te hace ningún bien. Te pierdes las partes más importantes de CS. Sí, puedes ir al bootcamp y aprender a ser práctico de inmediato. Pero eso no es diferente a aprender MS Excel y no entender la programación y los algoritmos que hay detrás.

Lo que yo recomiendo es que quizás te sientes en un par de clases de CS en la universidad más cercana (la mayoría de las universidades permiten sentarse) o tomar un par de clases gratuitas en línea de Stanford, etc. Realmente no creo que debas gastar tu dinero duramente ganado ($10K - $15K) en un dev bootcamp.