Miguel Rodríguez hace desarrollo de software efectivo.

La programación no es un superpoder, desarrollar ideas si

Programming is not a superpower

Programming is not a superpower
Atribución: 

By Miguel Rodríguez based on APlaceholder_male_superhero_c.png by Vegas Bleeds Neon (Own work), via Wikimedia Commons

En esta era de la Web 2.0 casi todo está siendo controlado por (o depende de alguna manera de) las computadoras, es bastante obvio que la tecnología se ha convertido en algo muy importante en nuestras vidas, hoy en día gracias a Internet, hay millones de personas que comparten contenido entre si, grandes compañías que hacen grandes cantidades de dinero y millones de conductores que saben perfectamente dónde están y qué camino tomar, sin embargo, hay algunas personas que piensan en la tecnología como si fuera el espíritu santo, pensando que llegarían a ser dios mismo o el superheroe definitivo con los mejores superpoderes si alguna vez pueden controlarla de alguna manera (como en Watch Dogs), por una razón inesperada esto está especialmente relacionado con la programación (gracias a todo lo que la gente piensa acerca de los "hackers", por ejemplo), ¿eres este tipo de persona?, la programación no es un superpoder en especial porque, respecto a mí, la informática implica muchas otras cosas, además de la programación, sin embargo, saber cómo programar junto con muchas otras cosas puede permitir crear un producto/negocio relativamente más fácil, además, puedes empezar por ti mismo si quieres (aunque es posible que necesites un poco de ayuda con el tiempo), pero si no tienes un objetivo, un plan, sueño o una idea, es muy difícil que puedas lograr algo así, esto sólo demuestra que la programación no es un superpoder a menos que tengas una idea para desarrollar, de lo contrario, es inútil, inútil como un arma sin balas y un objetivo para disparar.
 

¿Qué es la programación?

 
Me gustaría hablar de la definición de la programación y de dónde viene, parafraseando su definición en mis propias palabras significa especificar un conjunto de algoritmos (instrucciones) a un ordenador con el fin de resolver un problema/desafío/meta específica, la programación es una parte del proceso de construcción de desarrollo de software, por lo tanto, la programación no puede ser aplicado solo porque es una parte de algo más, en otras palabras, esto significa que viene junto con algunas otras acciones y actividades que deben ser realizadas como fases en un orden específico, estas fases se explican y aplican en toda la carrera de informática en las universidades (y aplicados en toda la vida profesional de cada profesional de la tecnología);
Esta es sólo una guía general del proceso de desarrollo de software parafraseando por mi, los procesos de desarrollo de software se pueden describir de manera diferentes según otros autores de libros.
 
  1. Análisis -> Diseño -> Construcción -> Prueba -> Implementación
 
Ya sea que quieras o no, vas a aplicar todos estos pasos, incluso sin que lo sepas, vas a averiguar cual es el problema/desafío (Análisis), entonces vas a averiguar la manera de resolverlo/lograrlo (Diseño), entonces vas a programarlo (Construcción), entonces vas a probarlo (Prueba) y muy probable a utilizarlo (Implementación), todo esto va a suceder cada vez que intentes programar algo, por supuesto, Es altamente recomendable que hagas esto a propósito buscando mejorar cada proceso (en lugar de tratar de saltar uno), con todo esto dicho, sugeriría que llames al desarrollo de software un superpoder en lugar de la programación exclusivamente.
A pesar que todas estas actividades deben realizarse en un orden específico, pueden ser realizadas por personas diferentes, hay casos de desarrollo de software donde los programadores les suministran de documentos de descripción, como diagramas de flujo, diagramas UML y similares, siendo forzados a programar algo conciso, alguna otras actividades como la depuración o portar código, teóricamente, no dependen mucho en un gran análisis, (en mi opinión) estas son las situaciones más cercanos donde la programación se puede utilizar sola y esto está lejos de ser un superpoder.
 

Mitos de programación

 
Al tiempo, se crearon muchas concepciones y creencias acerca de la programación, por ejemplo, hace mucho tiempo la gente pensaba que los programadores eran una especie de artista (lo que implica indirectamente que no importa si el código no se entiende, de todos modos es un arte, ¿no?), algo en lo que no estoy de acuerdo, pero no sólo estas concepciones y creencias fueron creadas, sino también culturas, de hecho, la programación está rodeada de culturas (como la cultura hacker), aunque algunas de estas culturas, creencias y concepciones tienen una de base muy sólida, otras de ellas no y están siendo confundidas y mal interpretadas, hay varios mitos acerca de la programación (en relación con el tema de este artículo) que creo que deben ser aclarados:
 

"Te enseña cómo pensar";

 
Alguien dijo una vez esto.
 
"Creo que todos en este país debe aprender a programar un ordenador, ya que te enseña cómo pensar", Steve Jobs.
 
Digamos que has aprendido algunos conceptos básicos y principios sobre la programación de computadoras y que queremos hacer un programa para resolver un problema específico, con el fin de hacer que el programa tienes que resolver el problema y luego empezar a escribir el código, así que es lo que te está haciendo pensar "resolver el problema" o "escribir el código"?, la programación en sí no te enseña a pensar, te obliga a resolver el problema (que te va a enseñar a pensar) antes de hacer cualquier otra cosa, debido a las razones explicadas arriba, si no te reto a que hagas lo contrario.
 
Además, todavía puedes programar sin conocer el problema por completo o la estructura del sistema y todavía encontrar una solución, esto implica programar mientras piensas, algo que es posible, pero muy desaconsejado porque la solución es muy probable que sea una solución alternativa (y no definitiva) basada en código torpe lo cual va a empeorar todo para el resto de las personas involucradas.
 
Lamentablemente, algunas personas, que creen que esto es completamente cierto, cometen muchos errores al tratar de animar a la gente sobre aprender a programar, la descripción del vídeo "lo que la mayoría de las escuelas no enseñan" (en ingles), dice algo como esto.
 
"Aprender sobre un nuevo 'superpoder' que no se enseña en el 90% de las escuelas de Estados Unidos."
 
El tema de este vídeo es mostrar algunos testimonios y referencias que se supone fomentan el aprendizaje de la programación, el enfoque de este vídeo no es el correcto, porque está muy centrado en el éxito y el dinero y no sobre otras razones que no esté relacionado con el dinero sino desafíos, si ese no es el caso, entonces ¿por qué Mark Zuckerberg y Bill Gates tenían que hablar?.
 

"los buenos programadores se vuelven ricos";

 
Por desgracia, hay muchas personas que todavía piensan los programadores pueden hacer dinero de la nada, que pueden obtener dinero fácilmente con sólo ser bueno con las computadoras, eso era algo cierto hace mucho tiempo atras ahora no, hay un montón de grandes programadores que no son ricos y muchos de ellos están siendo abusados​​, además, hay muchos empresarios que están llevando puestos de trabajo en alta mar (offshore - fuera del país) con el fin de reducir los costos (a veces más del 80% del coste), en el peor de los casos, estos buenos programadores son reemplazados por estas personas.
Además de esto, cuando estás haciendo un proyecto sólo por dinero, la gente suele olvidarse de los objetivos y metas reales, las ideas no fluyen como debe ser y la calidad del trabajo desciende notablemente, en realidad todas las personas involucradas se darán cuenta que estás haciendo esto sólo por el dinero y van a actuar con suspicacia obligándote a cubrir todos los objetivos que prometiste, así que si te estás haciendo rico haciendo algo se debe a que tuviste la oportunidad y que eres bueno en lo que sea que hagas.
 

"La programación es fácil";

 
Esta frase es algo cierto, pero debes preguntarte a tí mismo "¿resolver problemas es fácil?", muchas personas que toman clases de programación por primera vez piensan que pueden sustituir a un programador fácilmente con poco tiempo, otra personas (empleadores la mayoría) piensan que si la programación es fácil la depuración también será fácil, a partir de esto, muchas personas califican los proyectos y problemas como fácil pensando que se pueden completar o resolver rápidamente sin saber muy bien si esto es realmente cierto.
 
En mi opinión personal, el aprendizaje de desarrollo de software no es algo fácil de aprender (como todo lo demás en la vida), requiere dedicación y esfuerzo, el desarrollo de software tiene una serie de principios a seguir y muchas metodologías de cualquier tipo (relacionados con todas las actividades que no sólo programación), muchos proyectos fracasan debido al mal análisis, la interpretación de los requisitos o de la gestión de proyectos, además, algunas tecnologías requerirán sus propios principios y metodologías.
 

El verdadero superpoder

 
La programación (o desarrollo de software debería decir) es algo genial para aprender, no porque tenga algo especial en sí mismo, sino porque permite entregar las ideas relativamente mas fácil que otras ciencias, pero esto no significa que la programación es un superpoder ni que otros campos de la ingeniería o la ciencia apestan sino que el verdadero superpoder es tomar desafíos y hacer que las ideas cobren vida, entonces, si piensas que eres un mago sólo por conocer como desarrollar software, también debes tener en cuenta las personas que hacen grandes cosas con la electrónica, robótica o prototipos (sólo por mencionar unos pocos campos que me interesan).
Además, un superpoder pretende ser una habilidad que casi nadie tiene lo que le da una ventaja sobre el resto de las personas, en este sentido, estas personas con "superpoderes" con buenas intenciones suelen ser llamadas "superheroes", en teoría, la programación no puede ser considerada como un superpoder, debido a varias razones, en primer lugar, se puede aprender (y es [algo] fácil de aprender), en segundo lugar, hay una gran cantidad de personas que ya saben programar y, por último, saber cómo programar no implica una importante ventaja, sin embargo, si pensamos en "ideas" correspondería con la definición de superpoder, ya que no se puede aprender, es muy raro que un grupo de personas tengan la misma idea al mismo tiempo y da una gran ventaja sobre el resto de la gente.
Por desgracia, hay una gran cantidad de personas que no están siendo mencionadas por la forma en que la sociedad mundial interpreta los hechos y acontecimientos, vi a personal realmente genial mencionadas una sola vez, mientras que otras personas (en su mayoría ricos) mencionadas miles de veces porque construyeron una empresa (o empresas) y que son ricos hoy en día, por ejemplo, pensar en el caso de Steve Jobs y Dennis Ritchie, Steve Jobs sigue siendo mencionado hasta estos días, mientras que Dennis Ritchie fue apenas mencionado.
Aunque la programación ofrece una manera directa y relativamente fácil para entregar ideas, eso no quiere decir que las ideas no se puedan realizar haciendo otra cosa, de hecho hay muchas cosas que se pueden hacer sin necesidad de programar, es por eso que yo personalmente considero que "trabajar en las ideas" es un verdadero superpoder, se puede trabajar en algo aún sin saber nada, lo qué va a pasar en estas situaciones es que aprenderás en el camino, estos son superheroes reales porque toman retos y hacen cosas grandes con el fin de ayudar a la gente de alguna manera:
 

Izhar Gafni - Bicicleta de cartón

"En 2012, Izhar Gafni, un ingeniero mecánico y entusiasta del ciclismo, dio a conocer una bicicleta prototipo hecho casi enteramente de cartón en su taller de Moshav Ahituv. Los componentes, incluyendo el marco de la bicicleta, ruedas, manillar y sillín, consisten en láminas de cartón plegado y pegadas entre sí. La bicicleta completa pesa 20 libras (9,1 kg), y está tratada para ser ignífugo y resistente al agua. Gafni informa que puede soportar conductores de hasta 220 kilogramos (490 libras). Dispone de ruedas de goma maciza hechas de neumáticos reciclados. El poder es transferido de los pedales a la rueda trasera con un cinturón, también hecho de caucho reciclado. Gafni y un socio de negocios planean producir en masa una bicicleta basada en el prototipo y venderlas por 20 USD, con un coste unitario de 9 a 12 dólares.", por Wikipedia, La enciclopedia libre.
 

Maasai Richard Turere - Luces de león

"Las 'Luces de león' son luces titilantes creadas alrededor de un perímetro hacia el exterior, que se utilizan para ahuyentar a los leones.
Las luces de león fueron ideadas por Maasai Richard Turere para prevenir ataques nocturnos por los leones a las manadas de ganado de su familia, que se encuentran en Kitengela en el lado sur sin cercas del Parque Nacional de Nairobi, en Kenia. Este tipo de ataques a menudo conducen a la caza y la matanza de los leones, que están en peligro de extinción.", por Wikipedia, la enciclopedia libre.
 

Julia Silverman, Jessica Matthews - Soccket

"SOccket es un balón de fútbol que aprovecha y almacena la energía del juego para su posterior utilización como fuente de energía portátil en las zonas de escasos recursos. Es el producto estrella de Uncharted Play, Incorporated.", "Jessica Lin, Julia Silverman, Jessica Matthews, Hemali Thakkar, que eran estudiantes universitarias en la Universidad de Harvard, y Aviva Presser, que era una estudiante graduada de Harvard en su momento, fueron las inventoras que figuran en la patente inicial.", en Wikipedia, La enciclopedia libre.
 
Por lo tanto, si realmente quieres llegar a ser un superheroe, entonces deberías dejar de pensar así y empezar a hacer grandes cosas con buena intenciones (quiero decir con "grandes cosas" grandes ideas para desarrollar), ten en cuenta que todo depende de la persistencia, por lo que antes de renunciar trata de pensar si realmente has utilizado todos tus planes, recuerda que no hay tal cosa como superpoderes, sólo héroes reales, personas que tienen el poder de cambiar el mundo con sus decisiones y acciones.

About me

Acerca del autor
Miguel Rodríguez es un desarrollador freelance de Caracas - Venezuela, es una persona persistente y orientada a metas que trata de hacer el mejor uso de sus recursos, es lo suficientemente positivo, proactivo y motivado como para plantear una meta con intenciones de cumplirla, encuentra más sobre él .