¿ Por qué Programar es importante ?

Fogonazo

"Qualified exorcist approved by the Vatican"
¿ Por qué Programar es importante ?

A43.jpg

Hace unas semanas estuve en la clausura de un curso en la cuál participé como profesor del mismo y en la entrega exponía por qué era vital el forjarse su futuro estudiando y de la importancia que tendría saber programar en el futuro... Hubo gente que escuchó atenta, algunos se emocionaron, otros ya sabían de los que estaba hablando y algunos otros se dijeron frases para sí como "De códigos yo ya tuve suficiente".

Empíricamente siento que la programación es una cuestión de te gusta mucho o no te gusta nada, no creo en blancos y negros pero si es que hay grises, están muy cerca de ambos extremos... lo que quiero decir es que o te gusta mucho, o en realidad no quieres hacerlo.

La programación es una actividad interesante, en términos de trabajo, vivimos en una burbuja donde no existe desempleo, los trabajos son bien remunerados, las oficinas son épicas, hay una esfuerzo importante (aunque quién sabe si suficiente) por construir diversidad, una cultura de trabajo agradable, inclusión y otras cosas interesantes. Es una burbuja porque muchas otras carreras no tienen las mismas facilidades, empezando por las carreras donde la oferta sobre pasa la demanda como ser maestro, contador, doctor y similares; se gradúa tanta gente que no hay suficientes trabajos para todos; están también las carreras under que simplemente no tienen demanda, o si existe te pagan muy poco (a pesar de que muy probablemente tengas una carrera universitaria). Los trabajos así están en una posición complicada porque existen tantos posibles trabajadores y tan pocos trabajos que los empleadores no se preocupan por construir un puesto de trabajo ideal, simple y sencillamente porque mucha gente está dispuesta a tomar lo que sea.. ¿cultura laboral? pfft! ¿querés el trabajo o no?... 200 dólares al mes, tómalo o que venga otro.

Por qué tanta demanda

Ahora, todas las compañías son compañías de software escribe Forbes en un artículo. Lógicamente las empresas que solo son software son empresas de software, es decir, aquellas cuyo único valor es lo que un conjunto de archivos de código generan (Snapchat, Facebook, Instagram etc), existen otra que no necesariamente solo poseen software, poseen bienes físicos pero el core es una pieza de software (Uber, Netflix), y existen las que el core es algo que no tiene que ver con software, pero que claro, guardan y procesan información a través de sistemas que les ayudan a mejorar su negocio, en esta última categoría tenemos el uso de sistemas de inventario, de punto de ventas, de asistencia, etc.

BD0.jpg

Con el creciente surgimiento de startups que entran y cambian industrias tradicionales (Uber, Airbnb, Netflix por ejemplo), muchas empresas notan el impacto que la tecnología puede tener para mejorar la experiencia de usuario, mejorar las ventas, improvisar el rendimiento de sus empleados y sus bienes. Esto genera mayor demanda de software y claro una creciente demanda de programadores.

El problema es que los problemas que enfrenta la tecnología actual (manejo de millones de datos, procesamiento de datos, inteligencia artificial, data minning, machine learning, business intelligence, millones de visitas) son desafíos complicados que requieren de expertos en diferentes campos del desarrollo de software, no requieren gente que entienda una que otra línea, o con poca experiencia en el desarrollo de aplicaciones, requieren gente con experiencia resolviendo problemas nuevos o grandes, gente con conocimiento de cómo funciona una computadora a fin de aprovechar sus recursos al máximo, requieren gente que pueda optimizar programar y crear código mantenible... el porcentaje de gente que cuenta con ese nivel con respecto de todos aquellos que saben algo de programar es muy pequeño, es decir, existe mucha gente que sabe programar pero que no puede cubrir una vacante de desarrollador de software en una empresa importante.

La combinación de una alta demanda de software y una poca oferta de desarrolladores con las habilidades necesarias para los desafíos del presente resultan en:

  1. •Muchas ofertas de trabajo
  2. •Salarios altos para atraer al talento top
  3. •Compensaciones extra para atraer al talento top (Lunch gratuito, gimnasios, entretenimiento en el trabajo, acciones de la empresa)
  4. •Que las empresas se preocupen no solo por dar salarios altos, si no por construir espacios de trabajo en los que sea atractivo trabajar, más allá de solo el dinero (esto es épico).
  5. •Todo eso porque claro, todas las empresas quieren acceder al mejor talento.

Por qué hay tan pocos programadores preparados

Esta es una pregunta válida, ¿por qué hay tan pocas personas que puedan cubrir las vacantes si el salario es bueno y las oficinas épicas? La razón, en mi opinión, es que para poder tener el nivel necesario para uno de estos empleos, necesitas invertir un número importante de horas programando y desarrollando aplicaciones; y para invertir ese tiempo preparándote realmente tienes que sentir gusto (al menos, no digamos pasión) por lo que haces, a mucha gente programar les parece aburrido o complicado.

En todo el mundo hay un número importante de universidades que ofrecen carreras afines al desarrollo de software, hay muchos alumnos que se inscriben a esta clase de carreras, pero de esos, es casi seguro que solo 1% - 5% estarán preparados para un trabajo top, ¿por qué? porque son estos los que van a invertir el tiempo extra clase para prepararse, y es que como toda habilidad, la programación es una que se domina de la práctica; ser buen programador significa habilidad para solucionar problemas, para identificar errores y para escribir soluciones óptimas aprovechando una serie de cosas a las que llamamos algoritmos, estructuras de datos y así; estas habilidades se adquieren escribiendo mucho código, creando cosas, desarrollando productos. Uno solo invierte tiempo en lo que le gusta u apasiona (a menos que seas muy disciplinado).

De códigos ya tuve suficiente

Tengo un problema al escuchar a mucha gente que estudia ingenierías computacionales rehuir a la programación... es como si quisieras ser doctor pero no te guste operar, puedes vivir así, pero no estás peleando por los trabajos top, no estás buscando lo mejor... (disclaimer: no soy doctor así que tal vez mi analogía no sea la mejor), es solo que los mejores trabajos son de programar, claro que están los de dirigir proyectos, CTO y similares, es decir, de jefe, donde claro que ganas más, pero ¿adivina? necesitas haber participado en proyectos para poder liderar proyectos.

Aquellos a los que nos gusta programar, equivocadamente, solemos tener la actitud de ¿qué hace aquí si no le gusta programar?, está mal, claro, pero es una idea de cierta manera realista, porque como comento antes, los mejores trabajos son para esa habilidad, la demanda es por esa habilidad.

Mi opinión es que no es solo una cuestión de si te gusta o no, si no de cómo nos enseñan a programar en la universidad, el problema es complicado porque en la universidad nos enseñan a programar con herramientas que nos enseñan a entender cómo funciona esto de programar, eso está bien, el problema es que esos lenguajes son aburridos, los primeros programas que escribes se ven así:


Ciertamente una pantalla negra con opciones en texto no suena divertido, no lo es, a algunos les gusta, y les apasiona ver a la computadora imprimiendo lo que te dicen, generalmente son estos los que se apasionan por programar... el problema es que muchos somos visuales, de la vista nace el amor.

Normalmente no es hasta la mitad de la carrera cuando empiezas a ver cosas relacionadas a páginas web (que son más visuales), para ese momento mucha gente ya hizo su opinión sobre lo que es programar, una pantalla negra aburrida que muestra texto, o peor aún, mucha gente ya ni está en la carrera para ese momento. Esta razón explica porque cursos com Mi Primera Página Web son necesarios, en ese curso no tenemos vídeos explicando qué es HTML, o qué es un ciclo, o qué es una base de datos... simplemente usamos todo eso en construir algo, BUM!, cuando terminas el curso ya puedes presumir, ¡hey miren esto, yo lo creo! y se ve bien, y la gente se asombra, y tú te motivas.

Imaginate tratando de presumir esto:

BBE.png

Esta es la reacción que vas a recibir:

ABA.png

¿Por qué? Porque la gente no suele emocionarse con el hecho de que una computadora te está obedeciendo, no saben ni lo que hay detrás de que la computadora imprima texto, no lo saben y como dicen, lo que se ignora se desprecia, es like meeh! ¿y eso qué? ¿qué hace? ¿dónde se mueve? ¿con qué se come?

Eso no es lo mismo que ¡hey! mira esto, es la página que hice para mostrar mis jugadores de la Champions favoritos o, fijate esta página, tiene todos los capítulos de Breaking Bad, o hey! este es mi blog sobre fútbol, sobre folclore, sobre música, esta es mi página para vender pizzas, ropa deportiva, o lo que fuera algo que te apasione.

Uno de los problemas de incluir a nuevas personas en la programación es cómo se les está motivando y cuánto están tardando en encontrarle uso a lo que se les está enseñando, entre más pronto le encuentren uso o diversión, más pronto se motivarán, más pronto comenzarán a hackear solos y más pronto se convertirán en programadores capaces de cubrir un trabajo épico.

Qué hay que hacer (si ya estoy aprendiendo a programar)

Asiste a hackathones, asiste a charlas (no hace mucho estuvieron Woszniak o el flaco que fundó PirateBay), concurre a eventos de programación, ve a startup weekends, convive con otros programadores, aprende lenguajes que no te enseñen en la escuela (hay tantos: Python, Haskell), crea proyectos de algo que te guste (vídeo juegos de fútbol, tenis), no dejes tus proyectos a la mitad, terminales, subílos y compartílos con tus amigos.

Hackea por hacerlo, por puro gusto, sí está bien que en la escuela te pidan crear el algoritmo cómo hiciste para llegar a la escuela (???), pero no te quedes con eso, preocupáte por cosas que te motiven, piensa en cosas en donde lo que sabes podría aprovecharse y aplicálo, divertíte, piensa en que ser programador es ser inventor, es crear e inventar cosas.

Busca hacker spaces, investiva del movimiento maker, del do it yourself, compra un arduino (seguí el curso de arduino) y hackea tu máquina de hacer café, crea cosas inteligentes, controla tu puerta con el celular, o regá tus plantas con una llamada desde tu página web.
En otras palabras divertíte.


Qué hay que hacer (si no sé nada de programar)

Intentálo, hay muchos movimientos que buscan iniciar programadores en la industria, recuerda, aquí hay empleo, hay buenos salarios, hay oficinas copadas, hay desayunos gratis... aquí puedes llevar a tu perro al trabajo, aquí puedes beber una cerveza mientras programas, aquí no hay horarios restringidos, a veces podés tener fines de semana de 3 días, hay muchos beneficios que valen la pena como para que pruebes que es esto que llaman escribir código.

Sí, programar no es todo diversión, muchas veces programar es estar arreglando errores, detalles pequeños, programar a veces significa que en varios días trabajas en algo que ni se ve, porque simplemente algo está fallando y nadie sabe qué... programar es difícil (a alto nivel), programar requiere que sepas estadística, a veces matemáticas (pero no siempre, puedes iniciar y ser bueno sin ser un genio de las matemáticas, este es un mito), programar no es un trabajo más (si es que vives de esto) y puede generar estrés.

Programar también puede ser un hobbie, ¿no sería bueno que esa cafetera vieja que tienes pudiera ser controlado con tu celular? Lo puedes hacer tú mismo... ¿no sería copado implementar una página web para tu negocio? ¡Lo puedes hacer tú mismo! No necesariamente tienes que vivir de programar, solo puede ser otra habilidad para divertirse, para mejorar tu calidad de vida.

Programar puede mejorar tu trabajo, aunque no te dediques a programar... ¿recuerdas esa horrible hoja de Excel que tienes que llenar con acciones repetitivas? Cantidades de código pueden cambiar eso y ahorrarte todo ese tiempo... básicamente casi todo lo repetitivo que haces en la computadora puede ser automatizado con código... ¡intentálo!

¿Ya te animaste? Siempre habrá un curso al que llamamos Nunca he programado que es perfecto para ti (Spoiler: Terminarás creando una aplicación para android).

Conclusión:

Me ocupa escribir de esto, me ocupa invitar a otros a aprender a programar... porque hay buenas cosas, porque a mí me divierte, me apasiona... entiendo que no sea para todos, eso está ok, entiendo que no todos vayan a ser ingenieros, pero inténtalo.

Inténtalo porque no solo se trata de tener más ingenieros, se trata de que si quieres ser futbolista, médico, mecánico o lo que sea, puedas mejorar tu trabajo con código como todas las empresas lo hacen, se trata de diversificar el prototipo de programador, necesitamos todo tipo de gente, de todos colores y sabores que construyan la tecnología del futuro.

Si el mismo tipo de personas programan, el mismo tipo de problemas serán resueltos... like, no necesitamos otra app para recolectar los eventos locales, necesitamos mejorar otras cosas, nuevas.



Este tema lo leí en otro lado y los sustraje para el Foro, ya que me pareció muy importante/interesante.
¡ No lo escribí yo !



 

Adjuntos

  • BE4.png
    BE4.png
    32.8 KB · Visitas: 42
Última edición:
Yo programaba bastante bien en CLIPPER 5 de Natuncket.

Un lenguaje orientado a bases de datos tipo DBase II y Dbase III (.dbf) con el inconveniente que corre en DOS y no posee ningún tipo de entorno gráfico.
Quedaban programas similares a esto:

fin[1].gif
 
Por que no hay que aprender a programar
una imagen vale mas de 1000 palabras

sin-dinero-sin-vida1-300x250[1].jpg



Yo programaba bastante bien en CLIPPER 5 de Natuncket.

Un lenguaje orientado a bases de datos tipo DBase II y Dbase III (.dbf) con el inconveniente que corre en DOS y no posee ningún tipo de entorno gráfico.
Quedaban programas similares a esto:



entonces revisa el xharbour es tan compatible el codigo que le puedes meter un codigo antiguo de clipper y lo compila a 32 bits y funciona en un sistema operativo de los nuevos

ademas tiene un diseñador de interfaces graficas
maxresdefault.jpg
 
. . . entonces revisa el xharbour es tan compatible el codigo que le puedes meter un codigo antiguo de clipper y lo compila a 32 bits y funciona en un sistema operativo de los nuevos
Después de 30 años de no escribir una línea de Clipper me parece que se me va a hacer "Complicated" :rolleyes:

Programar, me apasiona, pero debería actualizarme a un lenguaje mas actual. :oops::oops:

En su momento intenté aprender C++, pero se me complicó por exceso trabajo, exceso de viajes, exceso de hijos, Etc.

Para mis necesidades empleo Visual Basic 6, que también es obsoleto, pero funciona bajo Wichous y posee una interfaz gráfica.;)
 
Fogonazo, si queres aprender un entorno nuevo yo te aconsejo C#
Lo podes aprender con Visual Studio que es legalmente gratis.

Y no solo eso, tambien te aconsejo este libro que esta hecho por señores ingenieros por si tenes algo menos de trabajo, menos viajes, y los hijos ya crecidos te dejan un poco mas de tiempo.

Por supuesto, la recomendacion es extensiva a todos los cumpas del foro:
http://www.nakov.com/blog/2014/01/1...ons-slides-videos-lessons-exercises-tutorial/

El libro, por supuesto, es tan legal y gratis como el Visual Studio. Y muy recomendable.
Yo lo estoy leyendo y aplicando, casualmente, en estos dias.
 
Última edición:
Para que aprender C# si podes aprender Java (del cual el otro es una copia) del que hay millones de libros y tutoriales gratuitos, los programas Java corren sobre cualquier plataforma, hay millones de bibliotecas libres para hacer lo que se te ocurra, y te provee soluciones end-to-end... al punto que con el mismo lenguaje podes programar desde aplicaciones empresariales distribuidas hasta aplicaciones para Android y paginas web dinamicas.
No pierdan el tiempo con el C#...
 
El artículo es parcialmente correcto, a mi opinión personal! Vayamos por partes:
1. No se puede ser bueno en algo que no le guste a uno, mejor aún si se tiene pasión por ello! En eso estoy de acuerdo con el artículo, pero me atrevo decir que no solo es válido en cuestión de programar. Hasta cierto punto hasta me atrevo decir que toda profesión que se haga con pasión tiene el potencial de nutrirnos y que fortunas no se pueden hacer tampoco solo programando! Para eso hay que hacer algo propio y no como empleado. En las profesiones de tecnología a la gente joven se les da mucho. Pero cuando me encuentro con tales personas siempre les pregunto que cuantos colegas tienen de mas de 50 años y siempre recibí la respuesta entre ninguno o muy pocos. La próxima pregunta es que si creen que cuando esos "viejos" empezaron solo eran pocos? Que donde se fueron a parar la gran mayoría? Hasta los aproximadamente 40 años de edad se gana mucho y todo el mundo nos desea dar puestos de trabajo muy remunerados. Pero de allí en adelante esos expertos van desapareciendo hasta quedar los pocos que se encuentran en empresas de tecnología! Yo tuve la suerte de llegar a ser director en una de las empresas de telecomunicaciones mas grande de los estados unidos lo que postergó el momento de tener que irme!
2. El puesto y la industria donde se puede ganar mucho dinero es como jefe y propietario de una empresa con un producto que tiene demanda garantizada, producto que no requiere explicación y producto con poca competencia! Lo triste es, que esos puestos son muy, pero muy escasos y que casi el 100% de gente en ello fracasa!
Así la cuestión es que se prefiere personalmente! Mi opinión personal es que se debe hacer algo que nos guste, pues el 50% de nuestra vida eso será nuestra ocupación! Para el otro 50% del tiempo de nuestra vida hay que prepararse en los años gordos para luego poder dedicarse a la afición que nos gusta, la electrónica! :)

By the way y para los siguientes 50% del tiempo, aprender a programar en Python es ejercicio que vale la pena es especial cuando esto se combina por ejemplo con un RaspBerry Pi 2 que se use para controlar circuitos electrónicos!
 
Última edición:
Voy a investigar ambas opciones. ;)

En VB también realicé algunos programas interesantes, por ejemplo una base de datos de marcas de ganado, con opción de escaneo/registro/búsqueda/comparación por imágenes.
Desgraciadamente el Registro de marcas de la Pcia Bs.As. no lo compró y siguieron con el método manual. :rolleyes:
Esto hace unos 15 años :no: fue nada fácil.

Ahora que me lucí :cool: y volviendo al tema original.

Solo alguien que programe puede comprender la inmensa satisfacción que brinda la resolución de un problema o la creación de una línea de código que lo resuelva.

Y si esa línea de código es "elegante" esto ya se convierte en "Orgástico" ;)
 
Última edición:
Bueno, con todo respeto a las opiniones en contrario, yo lo que pienso es que si se quiere estar al dia en programacion de aplicaciones, es casi obligatorio aprender, entender y usar programacion orientada a objetos. Cualquier lenguaje que la utilice es bienvenido para eso, ya sea Java, C# o C++. De los tres, para mi, el ultimo es el mas dificil de los tres. Es el mas usado por los profesionales, pero yo no pienso ser un programador profesional. Por eso (para mi), la eleccion quedaba entre Java y C#.

En mi caso me decante por C# porque es el lenguaje que utiliza Unity3D, que es otra herramienta legalmente gratis que a veces utilizo para aplicaciones en 2D y 3D, y que es multiplataforma (PC, Web, Iphone, Android, etc.). Y vayan entonces estas lineas para recomendar tambien a http://unity3d.com/.

Como ultima nota, si es para programacion de controladores, yo sigo prefiriendo C "a secas" sin OOP, pero eso si, he abandonado definitivamente el lenguaje Assembly.
 
Última edición:
programar es mucho mas que escribir codigo


puedo llenar un libro de codigos que no hagan nada util pero que funcione
ademas nadie me daria niun peso por ello


-----------------------------------------------


Después de 30 años de no escribir una línea de Clipper me parece que se me va a hacer "Complicated" :rolleyes:

el xharbour convierte el codigo clipper a codigo C y lo compila con el gcc actual


Programar, me apasiona, pero debería actualizarme a un lenguaje mas actual. :oops::oops:





En su momento intenté aprender C++, pero se me complicó por exceso trabajo, exceso de viajes, exceso de hijos, Etc.

Para mis necesidades empleo Visual Basic 6, que también es obsoleto, pero funciona bajo Wichous y posee una interfaz gráfica.;)

entonces mira el sharpdevelop 4.4 tiene ruby, pithon, c++ y por supuesto c# y vbnet
ademas tiene un menu que convierte codigos entre vbnet y c# y vicecersa
tambien tiene un diseñador de interfaces graficas,este diseñador no genera el mismo codigo que el vstudio pero funciona bien


es Gnu o sea libre lo mejor es que pesa 50 megas contra los 15 gb del visualstudio
ademas se puede elegir el framework para que el programa trabaje con maquinas viejas
 
. . . entonces mira el sharpdevelop 4.4 tiene ruby, pithon, c++ y por supuesto c# y vbnet
ademas tiene un menu que convierte codigos entre vbnet y c# y vicecersa
tambien tiene un diseñador de interfaces graficas,este diseñador no genera el mismo codigo que el vstudio pero funciona bien


es Gnu o sea libre lo mejor es que pesa 50 megas contra los 15 gb del visualstudio
ademas se puede elegir el framework para que el programa trabaje con maquinas viejas


yn6zc6_1.jpg
 
si no te gusta vas muerto,
se pasan horas,días,semanas escribiendo,compilando,probando y recopilando nuevamente
no es para todo el mundo

Una de esas reglas no escritas que he recordado tras empezar a programar con android, es que para desarrollar un programa o app, usas el 10% del tiempo en programar la aplicación en si misma y el 90% restante en arreglarle los bugs tontos hasta que funciona como quieres que funcione.
 
Lo más molesto para mí en la programación es la interfaz con el usuario, parece una cosa sencilla, pero a medida que va creciendo un proyecto se vuelve más complejo. Lo bueno de trabajar con uC, es que al trabajar en bajo nivel, el usuario prácticamente no existe o se supone que es un "tipo capaz".
 
De hecho siempre el Interface de usuario es como un 80% o más del trabajo. En un microcontrolador también lo es en la mayoría de los casos, a no se que el Interface de usuario sea dar vueltas a un potenciómetro.
 
El problema con la interfaz de usuario, sea en el micro que sea, es que debe ser 100% operativa y sencilla de aprender, y el formato se debe ajustar a lo que el usuario espera encontrar y no a la primera tonteria que se le ocurrio al desarrollador segun su propio gusto... que en la mayoria de las veces es bastante objetable (por decirlo en forma delicada).
El desarrollo de la UI es un trabajo tan importante como el correcto funcionamiento del soft, y requiere analisis y desarrollo extra, que la mayoria de los desarrolladores desconocen.
 
Atrás
Arriba