¿Puedo ir a una escuela de comercio para aprender código en lugar de ir a la universidad? ¿Puedo seguir siendo desarrollador de software? Creo que la escuela de oficios es más adecuada para mí. Cuáles son los beneficios?

¡Hola!

Respuesta corta : Sí puedes, pero (probablemente) no vale la pena

El beneficio es un menor coste, menos tiempo y (quizás) menos estresante de un tiempo

Respuesta larga : El problema es que la programación no se ajusta exactamente a la definición de oficio o a las expectativas de la gente sobre un oficio, aunque se aplique. Los programadores no se sindicalizan. Pueden tener creencias políticas diversas, pero por las razones que sean no se han sindicado ni se han unido a asociaciones o gremios profesionales, ya sea por su personalidad o porque su trabajo no lo requiere. La programación no es un aprendizaje. Por lo general, no se estudia con una persona durante meses o años para aprender el oficio. De hecho, los programadores no son buenos profesores, y este campo no se adapta bien a hacer lo mismo una y otra vez. Puedes tener un mentor o asesor y tu código puede ser revisado, pero no tienes a alguien sentado a tu lado día tras día enseñándote cómo codificar de la forma en que lo hace un aprendiz de comercio.

En la mayoría de los puestos de trabajo de nivel básico a intermedio la habilidad clave es la resolución de problemas, no los frameworks, ni los lenguajes, ni nada por el estilo. Además (y esto puede ser importante para ti) es bastante difícil programar por tu cuenta y ganar dinero con ello. Menciono esto porque he visto (sin nombres) a programadores lamentarse por no haberse dedicado a un "oficio" y convertirse, por ejemplo, en técnico de calefacción y aire acondicionado. Un tipo dijo que si se hubiera dedicado a un oficio sería rico porque tendría una flota de camiones de calefacción, ventilación y aire acondicionado y daría servicio a zonas enteras. También he escuchado el sentimiento de que la programación es el equivalente del siglo XXI a un trabajo de fábrica, sólo que sin muchos de los beneficios de un antiguo trabajo de fábrica (horas regulares, sindicato, etc.) La mayoría (léase casi todos) los programadores nunca podrían ganar suficiente dinero para igualar un trabajo asalariado, ni siquiera un trabajo con salario mínimo, porque se necesita mucho más que el código para hacer una aplicación exitosa, especialmente una que gane dinero.

La programación no es exactamente un oficio, porque a pesar de que estás capacitado y vendes tu habilidad, generalmente no lo haces y no puedes trabajar aislado de un vasto equipo de apoyo y ayuda. Hay una brecha entre el software que vale 1000 dólares y el que vale 10 millones de dólares y hasta hace muy poco la brecha era un abismo. Algunas empresas medianas o pequeñas lo han resuelto, pero en general sigue sin resolverse a menos que encuentres a alguien excepcionalmente talentoso o capacitado para construir una plataforma y/o a alguien excepcionalmente talentoso o capacitado para dirigirla. Básicamente, se necesita un vasto ejército de programadores y personal de apoyo para hacer las cosas de la "manera correcta" y cuanto más se recorta, más se necesita un unicornio (nombre para alguien que no existe en realidad) o una gallina de los huevos de oro para poner en marcha su negocio. Sí, un hombre puede hacer una startup de mil millones de dólares por su cuenta y puede incluso hacerlo sin una educación, pero esa persona generalmente ha estado programando durante muchos años hasta que lo hace (ver este Teach Yourself Programming in Ten Years) y tiene una amplia variedad de habilidades que muchos programadores generalmente no quieren o ni siquiera tienen como UX+UI, marketing, visión del mercado y simplemente estar en el lugar correcto en el momento adecuado. La mayoría de las aplicaciones que hacen dinero no son aplicaciones o dirigidas al consumidor, sino aplicaciones B2B, y para esas se necesita un número increíblemente grande de personas por una simple razón: la mitigación del riesgo. A las grandes empresas no les gusta trabajar con operaciones de una o incluso cinco o diez personas, a menos que no puedan conseguirlo en otro sitio, porque es demasiado riesgo. Los días en los que un hombre se sentaba en su sótano, codificaba algo grande y lo sacaba a la luz ya han pasado (a menos que esté orientado al consumidor) porque el mercado está maduro. Mientras tanto, el precio de diez millones de dólares significa que sólo una gran empresa puede permitirse su software. Las pequeñas y medianas empresas existen, pero es increíblemente difícil competir con Microsoft u Oracle (¡sí, esos son tus competidores!). Hay muchas historias de startups que llegan a un cierto tamaño con sólo uno o dos chicos sólo para descubrir que no pueden y nunca pueden romper el mercado B2B porque las empresas no quieren tratar con ellos.

La forma en que las personas obtienen habilidades de resolución de problemas es tomar la educación que fomenta la resolución de problemas. La programación es también un tipo particular de resolución de problemas. La mayoría de la gente tiene algún tipo de educación matemática como un BSCS, una ingeniería o algo así, y tiene muchos años de experiencia programando. Cualquiera que se aleje más y más de un BSCS tendrá más fuera de su vida para compensarlo, como "codificar por diversión" o "codificar por amor". Incluso así. Lo que pasa es que la gente que se queda en el campo, eventualmente obtiene algún tipo de conocimiento relacionado con las matemáticas, porque te topas con una pared bastante pronto. Puede que el desarrollo web o el desarrollo de escritorio no necesiten mucha formación, pero el aprendizaje automático, la inteligencia artificial y el procesamiento del lenguaje natural sí la necesitan. Incluso los juegos necesitan matemáticas para representar todos los gráficos en la pantalla. Mucha gente nunca hace esas cosas y se queda como desarrollador web para siempre, pero eso limita los tipos de trabajos que puedes aceptar y el desarrollo web es una especialización de la programación para la que muchos no están hechos. Además, es mucho menos divertido. Si no puedes ni siquiera hacer un juego sencillo porque no sabes álgebra lineal y no puedes renderizar gráficos 3d, ¿por qué entrar en este campo?

En definitiva, si no disfrutas de la resolución de problemas, y de un tipo concreto de resolución de problemas aplicados, no serás feliz en esta profesión. En particular, las banderas rojas incluyen el dinero, pensar en un "alto nivel" en lugar de querer ensuciarse las manos, pensar que quieres hacer lo mismo una y otra vez por el resto de tu vida sin volver a la escuela una y otra vez porque la tecnología cambia y se mueve increíblemente rápido. También para hacer carrera en 2018 diría que tienes que amar el caos. Si no te gusta el código sucio, no te gusta ensuciarte las manos o mirar el horrible código de otras personas, o sueñas con que todo esté perfectamente diseñado y con una arquitectura perfecta, entonces eso limita el tipo de trabajos que puedes aceptar. En particular, la mayoría de los trabajos de nivel inicial son de desarrollo web y dependen de un ensamblaje insano de código abierto para funcionar. Sí, hay puestos de trabajo en los que se toman los 4 años de la escuela, llevar un traje sentarse en un cubo y convertirse en un "Analista Programador", pero ese tipo de puestos de trabajo son un pequeño segmento del mercado y extremadamente competitivo (requieren todas las escuelas de derecho de educación contratados directamente de la clase, etc.)

Sí se puede hacer rico convirtiéndose en un programador, pero se puede como un técnico de HVAC también. Y ser dueño de una flota de camiones HVAC... la mayoría de los programadores nunca dirigirán oficialmente a otra persona, ni crearán ningún tipo de negocio. No me dedico a los oficios, pero todos los comerciantes con años o décadas de experiencia pueden trabajar para sí mismos. La mayoría de los programadores no pueden, o dicen que lo hacen o lo intentan pero nunca llega a ser más que un hobby piensa en hacer unas cuantas aplicaciones con 10 usuarios en la tienda de Google Play.

La conclusión es que la programación parece un oficio superficialmente en la superficie, pero no lo es. Trátalo como un oficio o entra esperando que sea como otros oficios y probablemente te enfrentarás a grandes decepciones en la vida.

P.S. Hay un camino, que algunos toman para entrar en la gestión y ganar mucho dinero, que utiliza la programación como trampolín. Básicamente obtienen un título, pasan un par de años como programador (cuanto más grande sea la empresa para la que trabajas, mejor, como Google o Facebook, la gente realmente entra en Google diciendo que lo dejará en 2 años y el promedio de permanencia en una empresa de tecnología es de 2 años) y lo dejan para hacer su propia startup o lo dejan para unirse a la gestión en una pequeña empresa. Pero la ventana para eso es bastante pequeña y tienes que ser bastante impulsado y determinado para hacer eso (estudiante de sobresaliente, de tipo empresarial, etc.)