¿Hace falta haber sido formado en programación para crear aplicaciones?

Una de mis varias “acciones 2015 para salir de la zona de confort”, ya sabes aquello que hablamos de al menos, una vez al año… sal de la zona de confort, consistirá en aprender a programar en Android.
Elegí este reto tecnológico porque quería aprovechar mis años de programación en Java, ya que realmente lo que quiero es conocer el sistema operativo, la plataforma, hacer alguna aplicación, entrar en los temas de testing en Android, etc.
Ciertamente, aprovechando los días de navidad, lo que va de año me ha cundido, instalé tranquilamente el IDE, concretamente el nuevo Android Studio, superé las típicas peleas para hacer que todo el entorno funcionase y a ratos creé mi primer “hola mundo” en Android.
En mi proceso de aprendizaje hasta llegar a mi primer “hola mundo”, y sin que a priori fuera mi objetivo con tal actividad, he reafirmado nuevamente dos cosas, que creo que a estas alturas ya son sabidas por todo el mundo, va la primera: puedes aprender casi cualquier cosa, de manera auto-didacta, echándole horas al Google, vamos, buscando y leyendo en la web.
Seguramente sea más rápido, eficiente y te evitará muchos errores que alguien te forme presencialmente en un curso, pero si no puedes o no quieres ir por esa vía el único freno que hoy puedes tener es el tiempo del que dispongas y las ganas que le quieras echar.
Haz tú mismo una búsqueda en Youtube con las palabras “Android Programación”, por si más que leer quieres escuchar y por si, además, quieres hacerlo en español. A mí me salen más de 1.800.000 resultados. Y mientras escribo esto no dejo de pensar en lo que todo el mundo que está metido en formación no deja de pensar: aquello del post de ¿Es la Universidad lo siguiente que va a revolucionar y cambiar para siempre Internet?, o, si quieres un argumento similar, en vídeo, lo que hace unos días contaba Manuel Gértrudix, de la URJC en la Aventura del Saber.
La segunda que te quería contar hoy: me ha sorprendido la cantidad de video tutoriales en los que el autor, normalmente de poca edad, parece tener muy “pocos conocimientos de programación” pero que de una manera u otra (con un copia esto de aquí, pégalo allá, etc.) se crea una aplicación.
Ya sabes que en este nuestro mundo las definiciones son peligrosas, a falta de mayor ayuda por parte de la RAI (Real Academia de la Informática), cuando hablo de “pocos conocimientos de programación” me refiero a que, aparentemente, los autores de muchos de los vídeos (obviamente no todos, por supuesto) no parecen estar familiarizados con cosas como “clases”, “objetos”, “herencias”, “patrones”, “calidad de software”, etc. No me extiendo más en este punto, ya sabes a qué me refiero aquí con “saber programar”, sino te dejo el post de ¿Qué significa “saber programar”? ¿Entendemos todos lo mismo?
En muchas ocasiones parece más un aprendizaje obtenido “en la calle” que en una Universidad. Pero, al final, ambos estilos resultan y concluyen en una aplicación operativa en Android.
Seguramente estarás pensando, que si no sabes “programar”, según nuestra definición anterior, puedes hacer aplicaciones… pero que serán menos mantenibles, más costosas, de poca calidad en su diseño, estilo de programación, etc. Lo cual, yo creo, es cierto y lo comparto.
Pero, igualmente, uniendo los dos puntos que compartía contigo, hoy, aparentemente, hay muchas personas, y me da que cada día puede haber más, que son capaces de hacer aplicaciones (1) auto-formándose, de manera autodidacta, y (2) sin tener unos profundos conocimientos sobre programación.

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

0 comentarios en “¿Hace falta haber sido formado en programación para crear aplicaciones?”

  1. Si creas una app por puro hobby puedes realizar aplicaciones sencillas con ayuda de herramientas, tutoriales y foros de ayuda que hay en la red.
    Si quieres hacer algo «distinto» o dedicarte a ello a nivel profesional, forzosamente tienes que tener conocimientos técnicos y de metodologías más profundos para adaptarte a las necesidades del cliente y trabajar con otros compañeros de profesión.
    Respecto a los títulos académicos, considero que «el título no hace al programador» sino «el programador al título». Si la formación académica es adecuada puede ayudar bastante en temas de abstracción por ej. pero es relativo a la calidad del docente y del programa educativo.

  2. «¿Hace falta haber sido formado en programación para crear aplicaciones?»
    Sí.
    En la línea del comentario de Sergio, y para añadir algo de luz a que es «saber programar», recomiendo este vídeo de Robert C. Martin (Uncle Bob) «Demanding Professionalism in Software Development»: https://www.youtube.com/watch?v=p0O1VVqRSK0
    Cuando haces software profesional debes conocer los términos (que dependerán del paradigma: OO, funcional, imperativo…) pero, sobre todo, debes saber lo que estás haciendo o más tarde o más temprano, te toparás con problemas de ejecución (runtime), concurrencia (interbloqueo, inanición),rendimiento y ese largo etcétera que si «sabes programar» conoces.
    Si no, ya le tocará a uno que «sabe programar» arreglarlo tras haber impactado en el usuario con posibles implicaciones económicas.
    Sí, hay que saber programar para crear aplicaciones.
    Como sugerencia, una entrada con esa creencia de que los programadores son un escalafón bajo de la jerarquía del desarrollo software, con lo que cuanto más alto estés (jede de proyecto, gerente) menos tienes que saber programar.
    Los trabajos de Arquitecto, Team Leader o cualquier otro en el que se influya sobre el software requiere (e incluso asume) un gran bagage técnico. Y técnico en software es «saber programar».
    Kernighan, Ritchie, James Gosling, Linus Torvalds, Robert C. Martin (Uncle Bob), Martin Fowler (entreotros http://www.improgrammer.net/top-10-greatest-programmers-in-the-world-of-all-time/), la gente de Apache, de Spring, de Java (por mencionar a los que sigo) y un largo etcétera… «saben programar»
    Saludos,
    Javier.

    1. Hola,
      Sólo con el ánimo de plantear un debate sano, me gustaría añadir que una cosa es lo que nosotros, típicamente los que pasamos por este blog, creemos que es razonable, necesario, de sentido común, etc., y otro es la realidad que hay ahi en la calle en el día a día.
      Por qué digo esto, porque yo paso bastante tiempo revisando código de empresas, hecho por gente que se gana la vida con ello, y amplio % del mismo está implementado sin conocimientos minimos, o si los había no se usaron, así que una cosa es lo que DEBERÍA ser y OTRA lo que realmente pasa ahi fuera.
      Gracias por los comentarios

      1. Cierto, cada uno de los que nos dedicamos al desarrollo nos formamos día a día y sin embargo, esos conocimientos no pueden aplicarse en la mayor parte de proyectos.
        Esto sucede, en muchos casos, por la antigüedad del código, por malas decisiones tomadas en un principio y que no se resolvieron (aumentando el «bad code» con el paso del tiempo), los plazos a contrarreloj y la desmotivación de muchos que están hartos de ser explotados.
        Al final, pienso que sólo puedes aplicar todos esos conocimientos de «good code» y desarrollo en general, en trabajos en solitario o startups que inviertan mucho en tecnología.

  3. Acepto el debate sano.
    Por si no me he expresado bien, en ningún momento he querido usar el concepto de «intrusismo», sino el de PROFESIONALIDAD.
    Es decir, sí hay que saber programar, y si lo que está pasando fuera es que hay gente que no sabe, nuestra obligación es hacer que sepa.
    Convertir el DEBERÍA en hechos.
    Ahí surge una figura que hace este debate más sano: el mentor.
    Actitudes positivas generan ganancia para todos, y estimo que esas empresas que revisas quedarían más contentas si su trabajo mejora con el tiempo. En lugar de empeorar, que es lo que supongo les estará ocurriendo.
    Saludos,
    Javier.

    1. De hecho, hay una metodología «Mob Programming» o algo así se llama que tiene como objetivo eso, reunir al grupo de programadores para evaluar y optimizar el código.
      De todas formas, muchos por las razones que escribí antes y por propio ego, no aceptan sugerencias y prefieren «continuar con el coding horror».

  4. Hace 50 años uno podía construirse su propia casa unifamiliar.
    Se caían? La mayoría no.
    Eran/son habitables? Si.
    Se podían realizar del mismo modo edificios para más de una familia? No, era escalable ni seguro.
    Lo mismo ocurre con el software. Te puedes crear una aplicaión pequeña y de uso doméstico sin apenas conocimientos pero no es escalable a un uso profesional y másivo.

  5. Sergio Antonio Espósito Pérez

    El tema es cual es la pregunta importante
    ¿Hace falta saber programar para crear una app? Sí
    ¿Hace falta saber programar bien para crear una app? No
    ¿Hace falta saber programar bien para crear una app buena ? Yo creo que sí

    1. y podríamos estar todo el día definiendo que es una app buena. En ánimos del sano debate como mencionaba Javier hace algunos comentarios atrás, considero apropiado dar una definición de lo que es bueno, puesto que en Venezuela tenemos un refrán: «lo que es bueno para el pavo, es bueno para la pava», me explico.
      Si partimos de que una «app buena» es aquella que funciona y hace exactamente lo que el cliente pidió (sin mirar detalles como «coding horror» o copy-pasteado. El diablo está en los detalles, no me deís de ostias 😉 ) o aquella que la empresa (no el equipo de desarrolladores, sino los que van a venderla) considera que es buena porque «se ve bonita», y es que muchas veces lo que un equipo formado y bien comprometido de desarrolladores que trabajaron en una aplicación le parece «bueno» a la empresa le parece «una m…» y perdón por la referencia grosera, solo quise ejemplificar.
      Saludos desde Venezuela, me encanta tu blog Javier.

  6. Hola a todos, qué tal?
    Estoy muy de acuerdo en que cualquiera pueda programar, sin embargo este cualquiera es la principal razón por la que algunas empresas han de mantener software que se les ha quedado anticuado y sin embargo no se puede ni refactorizar ni reutilizar. Giros y cambios de estructuras en el programa que lo hacen indescifrable, extremadamente acoplado y sin modular.
    Por esa misma razón, yo andaría con mucho tiento a la hora de contratar a «cualquiera» que diga que «sabe» programar. Es una conversación muy típica entre los compañeros que vemos estos códigos mal hechos, el decir que habría que poner un filtro o alguien que validara el código tanto formalmente como en eficiencia, pero volvemos al mismo punto de partida cuando concluimos que la capa de responsables de aplicación que está por encima de los programadores tampoco tiene los conocimientos necesarios.
    Total, sin querer irme por las ramas, allá cada uno con su conciencia cuando dice que sabe programar, yo tengo muy claro a quién contrataría si tuviera que pedirle que programara. Está claro que el que se ha formado para ello, en principio ha puesto el interés por el tema, el que no, lo mismo sólo quiere un sueldo con el que pagar las facturas, cada uno tiene sus razones válidas para trabajar.
    Hace poco que descubrí este blog y me gustan bastante los post en los que Javier habla de temas de ingeniería del software, un blog muy interesante, un saludo

  7. Claro que puede programar Android un fontanero, y un biólogo. Con cuatro totorales y sin conocimientos de programación ningunos.
    Valientes engendros de Apps, en cuanto tenga 3 pantallas no hay dios que meta mano a ese código.
    Bueno, mejor… Más trabajo para los profesionales. Cuando haya que tirar la App a la basura y hacerla de nuevo… Ya nos llamarán 😉
    Animo! A programar!
    Saludos

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *