ComoProgramar.net, tu web de referencia sobre cómo programar y desarrollo informático

ComoProgramar.net, tu web de referencia sobre cómo programar y desarrollo informático
5 (100%) 9 votes

Buen@s a tod@s. Mi nombre es Aitor Sánchez González y para los que no me conozcáis, soy programador full stacks en una empresa líder mundial en su sector.

Si estás aquí es posible que sea por alguna de las siguientes razones:

  1. Estás interesado en aprender a programar.
  2. Estás buscando avanzar en tus conocimientos sobre la programación.
  3. Buscas solución a algunos problemas que hayas tenido en tus desarrollos.
  4. Quieres acceder a la comunidad de desarrolladores que quiero montar alrededor de este blog.
  5. Necesitas opinión de un profesional del sector.
  6. Buscas dar tu granito de arena sobre alguno de los temas que vamos a comentar en ComoProgramar.net.

Si vienes con algún otro fin que no aparece en la siguiente lista te invito a que lo compartas con nosotros para conocer porque y para que entra la gente a este blog, todos te estaremos muy agradecidos compañero.

Bien, basta de presentaciones y vamos con la chicha que es lo que interesa.

Como programar, ¿Qué es?

ComoProgramar.net, ¿qué es?

Esta web ha sido pensada para poder enseñar, ayudar, proteger, colaborar, etc… nuestro amado sector o gremio. El mundo de la programación y el desarrollo informático.

Principalmente nació de la necesidad que yo tuve en un pasado, cuando estaba aprendiendo aún a programar. Este problemas es la poca documentación de calidad y concisa que hay en castellano.

Bien es cierto que hay cientos de portales que pueden resolver un problema en concreto, pero no nos dan a entender ese problema, que es en realidad lo que se necesita. Muchos de vosotros haréis copy y paste del código, como yo hacía y hago (pero en otro contexto), aunque no terminéis de entender lo que hace porque nadie os lo ha explicado.  ¿Funcionará? Quizás sí, quizás no, habría que analizar el código, pero en el caso de que “si” al no entenderlo, siempre tendremos que volver nuestros pasos atrás y ver de nuevo el ejemplo para usarlo en otro caso similar o distinto, pero ahí estaremos copiando el código de otro hasta que comprendamos lo que hace y poder así replicarlo desde el entendimiento propio.

Yo quiero poder ahorrar a todas estas personas, nuevas y antiguas, enseñarles el camino correcto para ser un gran programador y poder ser totalmente autónomos en lo que hacemos.

Poder desarrollar un proyecto desde 0 sin la necesidad de apoyarnos en sistemas de otros.

Nota: Una vez aprendemos bien, si usaremos estos sistemas porque  agilizan mucho nuestro trabajo. Por otra parte es lo que buscan las empresas a día de hoy y nos hacen la vida mucho más fácil. Pero primero hay que aprender las bases para luego poder sacar el máximo partido a estos sistemas.

Visto esto, comencemos…

¿Qué es la programación informática o computación? O mejor dicho, ¿Qué es programar?

Antes de continuar leyendo mírate este vídeo:

 

Ahora un poco de teoría… ¡Que rollo! L

Programar es el proceso de elaborar aplicaciones informáticas codificando, depurando y manteniendo el código que escribimos y que la máquina es capaz de interpretar para hacer cosas que nosotros, los humanos, no queremos o no podemos hacer.

Cuando hablamos de código fuente, la gente piensa en magia, algoritmos hipercomplejos, matemática avanzada y cosas que escapan a creencia de la mayoría. Pero esto no es del todo cierto, si es cierto que tenemos que tener un amplio conocimiento sobre las matemáticas y algoritmia, pero nada que nadie no pueda hacer con un poco de empeño y dedicación.

En realidad, una vez conocemos  y comprendemos que la programación se escribe como si escribiésemos una nota de actividades que tenemos que hacer en un determinado orden, y que es un simple archivo de texto que el ordenador interpreta y realiza estas actividades, todo nos queda mucho más claro. ¿Pero porque después de entender esto nos quedará todo mucho más claro? Porque finalmente es eso: una nota que le da órdenes ordenadas al ordenador escritas por el programador para resolver un problema concreto. Para ver un ejemplo: Descargar una película de internet

Quiero aprender a programar pero no sé por dónde empezar

 

En primer lugar, quiero avisarte de que aprender a programar no es tarea fácil. Es una disciplina que puede involucrarte durante varios meses o incluso años si lo que queremos es alcanzar un puesto profesional. No quiero desanimar a nadie, ni mucho menos, pero tienes que tener claro que lo quieres hacer cueste lo que cueste. Y si estás pensando en hacerlo por “ver lo que pasa” o por “tener algo” mi consejo es que te dediques a otra cosa y dejes esto aparcado, te ahorrará mucho sufrimiento innecesario.

Esta profesión puede, en el mejor de los casos, amargarte la existencia si no estás preparado y concienciado para ello. Hay mucha gente que te dirá que programar es la hostia (mi caso) al igual que habrá otra que te diga lo contrario. Es una de esas “cosas” que o te gustan u odias, aquí no hay término medio.

Tienes que aprender a pensar con pura lógica, no hay rodeos. Si es cierto, que hay mil formas de llegar al mismo punto, pero el final es: O funciona o no funciona, fin…

Por otra parte, como el estudio de la medicina, tendrás que estar estudiando toda tu vida. Es el apartado profesional más dinámico que existe. Tan pronto eres un crack en determinado “sistema”  que al día siguiente todo lo que has aprendido ya “no sirve”. Que no es que no sirva, porque sí que lo hace, pero las empresas ya no solicitan determinado sistema.

Y frente a la situación que hemos visto en los párrafos anteriores, me gustaría, que si vas a seguir adelante y quieres aprender tomes esta web como referencia sobre programación por lo menos hasta que sientes las bases y así se hará mucho más fácil buscar información posterior para poder continuar avanzando. Recuerda que estoy aquí para ayudarte en todo lo que pueda.

Quiero aprender a programar ¿Por donde empiezo?

Enumeremos una lista de los posibles caminos para aprender a programar antes de continuar.Para mí la mejor manera de todas, no hay lugar a dudas. Un sabio un día dijo una frase que es una verdad como un templo, aquí la tienes:
“Una educación formal te dará una vida, una educación autodidacta te dará una fortuna”.
Es una frase del célebre Jim Rohn (Empresario estadounidense y orador motivacional altamente reconocido).
Lógicamente esta manera requiere de unas actitudes que no todo el mundo tiene.

  • Perseverancia
  • Fuerza de voluntad
  • Ganas (hacen falta un montón)
  • Emprendimiento
  • Y alguna más que se me olvida (ironía, con el tiempo lo entenderéis)
    • Cursos de formación reglada
      • Sinceramente, en la gran mayoría de los casos, sobre todo en temas de curso ofrecidos de alguna manera por el gobierno, son una enorme pérdida de tiempo a menos que quieras aprender cosas de hace 1000 años atrás. Sí que es cierto que valen para sentar unas bases, pero no creo que sea la mejor opción ni de lejos.
        • Nota: Tengo un conocido, que por aburrimiento se metió a hacer un curso de esto y resultó que el profesor no sabía ni encender el ordenador…
          No me malinterpretéis, cada uno es dueño de hacer lo que quiera, pero personalmente esto no se lo aconsejaría a nadie.
      • Con un mentor
        • He decidido sepáralo de la educación autodidacta porque es una parte que merece una mención propia. Esto hay que especificarlo muy bien, porque tiene miga.
          • En primer lugar, depende mucho de nuestro “mentor”. No es fácil convencer a alguien de que quieres seguir sus pasos. Todo es muy bonito al principio pero hay mucha gente que se agobia. Hay que saber encontrar a la persona adecuada. (No es fácil eh!)
          • Al igual que depende mucho de ti mismo. Para que un mentor te guíe y ayude tienes que estar a la altura de la situación. ¿A qué me refiero con esto? Tienes que estar dispuesto a aprender, sacrificarte, motivarte, etc… porque si no, siendo yo tu mentor por ejemplo, ¿para que me voy a sacrificar yo si tu no lo haces? A mí no me hace falta, eres tú el que quiere aprender, no yo.
        • Universidad
          • Estamos en una profesión que se denomina “meritocrática” vale más lo que haces que lo que has estudiado. Y a quien le moleste que se joda, pero no hay verdad más absoluta que esa.
            • En mi posición de empresa si tuviese que contratar a alguien ¿a quién contrataría?
              1. ¿Personaje con un grado académico que no se ha manchado las manos nunca con un proyecto de verdad?
              2. ¿Personaje que no tiene ni la ESO pero que ha conseguido llevar a cabo una comunidad online de 12.000 personas programada desde 0?
            • La respuesta es más que obvia.
          • Esto no quiere decir que la universidad esté mal, ni mucho menos. Ahí, en “ese sitio” es donde mejor vas a sentar las bases para luego poder escalar conocimientos. (Lógico, te enseñas a programar en Pascal o Cobol… ironía) que no es que me meta con estos lenguajes, pero a día de hoy… como que con eso no vas a ningún lado. Pero eso sí, las bases lógicas y algorítmicas las tienes, “no sa fastidiao”.
          • Al igual que tienes sus contras también tiene sus beneficios. Las facultades de informática es de donde mejores proyectos salen a la luz. Eso sí, de las extraescolares, no de las clases, ya entendéis…
        • Plataformas de e-learning (Como esta)
          • Pues sí, parte de mi aprendizaje lo saqué de una plataforma de estas. Son sitios en los que indagando un poco se pueden llegar a sacar muy buenas lecciones y lo mejor de todo, buenas amistades.
          • Como ya te he dicho antes, yo te voy a guiar por el camino “correcto” (quizás no para algunos) pero lo voy a intentar cueste lo que cueste.

Visto esto, y después de despotricar un poco sobre temas relacionados con el aprendizaje, continuamos. Y por favor, los cursos del “paro” sobre estos temas por favor, dejarlos de lado, son una enorme pérdida de tiempo…

Lenguajes de programación

Lenguajes de programación

Bien, visto todo lo anterior y comprendido un poquito más que es esto de programar vamos a ver que son los lenguajes de programación.

Imagínate la siguiente situación

Si estás leyendo esto es porque, casi seguro, que tu lenguaje principal es el castellano o está dentro de tu lingüística.

Si sabes leer es porque conoces una lengua ¿verdad? Con su respectiva sintaxis, verbos, objetos, etc…

Vale, ahora piensa en una “barra de pan” ¿qué es? Pues una simple barra de pan. Y ahora te pregunto, ¿Qué es una “loaf of bread”? Pues una barra de pan con su respectiva harina, agua y sal lo que pasa que dicho en un idioma diferente.

¿Te das cuenta? Una barra de pan es igual aquí y en Pekín, aunque se llamen de maneras diferentes.

Pues esto es lo que sucede en los lenguajes de programación generalmente hablando. Hay muchísimos y para un sinfín de propósitos diferentes, pero todos terminan haciendo lo mismo pero a su manera.

(Muchos no estarán de acuerdo con esto, lo entiendo, una persona que ya sabe lo que se hace esto le parecerá un poco radical y generalizar demasiado, pero recuerda como aprendiste tú).

Historia de la programación informática

En los inicios de la computación informática los programas se escribirán en un lenguaje muy complejo y alejado de lo que hoy en día es la programación, este lenguaje se / lo llamaba / llamaban lenguaje máquina. Este el lenguaje es lo que se conoce hoy día como lenguaje binario y está comprendido de dos número, el 0 y el 1.

Esto era demasiado difícil de usar para la mayor parte de la población de esos entonces. Para poder solucionar “un poquito” este panorama los primeros científicos que usaban este sistema decidieron remplazar, o mejor dicho mejorar, este lenguaje empaquetando estas instrucciones de ceros y unos en palabras o abreviaturas provenientes del lenguaje universal, el inglés. Creando así un lenguaje de más alto nivel (más adelante explicaré que es esto), una manera de programar mucho más sencilla e intuitiva y lo llamaron lenguaje ensamblador.

Aunque es bien cierto que lo único que consiguieron es darle una forma más “un poco” más sencilla de programar en comparación con el lenguaje máquina. Aparte de recordar mejor los entresijos de esta labor. Lo llamarón lenguaje ensamblador.

“Comparación real:

Ensamblador: ‘a + a = b’

Binario: ‘01100001 00100000 00101011 00100000 01100001 00100000 00111101 00100000 01100010’

Siendo esta la misma instrucción.”

Lenguajes de alto nivel

A medida que las tareas que teníamos que indicarle al ordenador iban siendo más complejas de manejar y la necesidad de programar programas más extensos crecía, la sintaxis de lenguaje ensamblador o binario complicaba mucho las cosas para el factor humano, digamos que eran extremadamente difíciles de leer.

Por este motivo / necesidad nacieron los lenguajes de programación de más alto nivel. Pensado para que las personas tuviésemos una mejor comprensión de lo que el programa en cuestión iba a realizar y así favorecer a la expansión y mantenimiento del mismo.

Como comentaba en el párrafo anterior, los lenguajes de programación de alto nivel fueron pensados / diseñados para hacernos a nosotros, los humanos, la vida más fácil. Tareas tan simples como unir una cadena de texto con otra o eliminar un término concreto de esta cadena en lenguaje ensamblador o máquina serían unas cuantas líneas de código en comparación con lo actual que con una simple llamada a una función en una línea de código lo tenemos.

Hay muchos lenguajes de programación diferentes, cada cual con su dificultad y nivel de programación.

Enumeremos unos pocos:

(Voy a enumerarlos por alto, medio y bajo nivel aunque todos tienen funciones para la comunicación a bajo nivel).

Alto nivel:

  • Java
  • C#
  • C ++
  • Python

Medio nivel:

  • C
  • Cobol
  • Pascal

Bajo nivel:

  • Ensamblador

 

En el panorama laboral actual las empresas solicitan 90% de programadores de alto nivel, 9% de programadores de medio/bajo nivel (aunque estos están mucho mejor pagados) y un 1% de programadores de ensamblador (esto solo está al alcance de algunos) y son contratados para programar componentes físicos como pueden ser GPU o drivers.

Los últimos mencionados, puedes encontrarlos trabajando en equipos muy reducidos y en empresas de gran envergadura como puede ser Apple, Microsoft, Nvidia, etc…

 

Para terminar con esta explicación de lo que son los lenguajes de programación de alto nivel y de repaso en el medio y en el bajo nivel decir que independientemente del lenguaje que utilicemos para nuestros propósito, necesitamos un compilador para poder traducir lo que hemos escrito en nuestro programa a lenguaje máquina y que el ordenador sea capaz de interpretar nuestras instrucciones.

¿Qué es un compilador?

Es un “programa” que lee nuestras líneas de código y las traduce a lenguaje máquina (código binario) para que la máquina donde queramos ejecutar el programa pueda leerlo e interpretarlo.

Excepción – lenguajes interpretados

Hay lenguajes de programación que no necesitan ser compilados, como puede ser Javascript o Python, que se denominan lenguajes interpretados. Y la diferencia que existe entre uno y otro es que el código de estos se va ejecutando a la vez que el sistema va leyendo el archivo donde está escrito nuestro programa.

Árbol de ejecución de lenguajes de programación interpretados o compilados:

Compilado -> “Lectura -> compilación -> ejecución”

Interpretado->”Lectura -> Ejecución”

Nota:

Compilados = Aunque ahorremos un paso, la programación compilada, por regla general, es más rápida debido a que el primer paso y el segundo paso solo se realizan cuando creamos el programa para generar el archivo / archivos finales .exe, .jar, etc… Después al estar empaquetado solo usamos el paso de ejecución en la versión reléase (Más adelante explicaré lo que es. Véase como versión terminada de la aplicación)

Interpretado = A diferencia del anterior, el sistema tiene que leer todo el archivo cada vez que se ejecuta e ir realizando las ordenes paso a paso. Por eso es considerado un poco más lento aunque las últimas tecnologías que van saliendo a la luz cada vez reducen más esa brecha de velocidad entre los dos.

 

La sintaxis de la programación y saber cómo programar

Llegados a este punto, y si has leído todo lo anterior, comprendo que estás interesado en programar. Si no fuese así, ni yo mismo hubiese leído todo lo anterior J

La sintaxis, como en cualquier lenguajes, sea de programación o no, son un conjunto de reglas, órdenes, expresiones, instrucciones y comandos. En los lenguajes de programación estos tienden a asemejarse a la lengua natural cada vez más. ¿Por qué? Por la sencilla razón de hacer que programar sea más fácil y comprensible para la mente humana.

Pero a su vez también tenemos un problema, más pequeño que programar en binario, pero sigue siendo un problema. La ambigüedad. Cuanto más alto sea el nivel del lenguaje, y más leguajes de programación existan, más ambiguo es escribir código porque una misma acción puede realizarse de muchas maneras diferente, y cada vez hay más. A mayor número de lenguajes de programación y más abstracción de lenguajes de bajo / medio nivel, tenemos más opciones donde elegir, y esto es un problema.

Situación de ejemplo:

Quieres jugar a videojuegos, pero no sabes a cual. Si solo tuvieses 1 o dos no habría problema en cual elegir, pero al tener 50 finalmente no juegas a ninguno por que no sabes a cual. ¿lo entiendes?

Ejemplo propio:

Hace años tuve un “alumno” con el que me siento bastante identificado. Él es una persona hiperactiva (como yo) y estaba deseando aprender a programar. Yo le empecé explicando esto, lo otro, lo de más allá, hasta que al final se sentó delante de un IDE (editor de código) y comenzó con el desarrollo en Php. Todo iba muy bien, yo le explicaba cómo ir aprendiendo y demás. Pero cometí un fallo, quise / quiso que le enseñara diversas tecnologías de manera simultánea. Finalmente, al intentar entender y usar tecnologías sin tener unas bases programáticas sentadas, se saturó y lo dejó.

¿Y porque lo dejó? Por la ambigüedad, porque una cosa se puede hacer de mil maneras diferentes y si no tienes claro, o te indican cual usar, finalmente te saturas y lo desechas todo.

Al final conseguí que continuara después de hablar largo y tendido con él y fijar un programa de aprendizaje, ufff menos mal…

Actualmente le cedí mi puesto en una empresa de desarrollo de gran envergadura cuando yo cambié a la que estoy ahora.

Estoy orgulloso de él, aún quedamos y montamos proyectos juntos.

Los algoritmos en la programación

Piensa:

¿Qué es lo primero que haces cuando te levantas?

¿Y después de eso?

¿Y después?

  1. Me levanto
  2. Desayuno
  3. Me ducho
  4. Me visto
  5. Voy a clase

Pues esto es un algoritmo, una consecuencia de acciones finitas y ordenadas que tienen como fin solucionar un problema. En el caso anterior, estudiar sería el problema y este algoritmo (muy generalista y simple, pero basta para entender el concepto) te da la solución.

Pues cuando programamos es igual, vamos a ver un ejemplo de pseudocódigo de una suma:

  1. Asignamos un valor a “a”: a = 1;
  2. Asignamos un valor a “b”: b = 2;
  3. Sumamos ambos números y se lo asignamos a “c”: c = a + b;

Aunque extremadamente sencillo, esto sigue siendo un algoritmo. El problema es conocer cuánto suman “a” más “b” y este algoritmo resuelve nuestro problema.

Aunque esto sea un poco avanzado, si habéis leído todo lo anterior lo entenderéis a la perfección.

“Un programa completo se divide en módulos que a su vez, estos módulos, se dividen en algoritmos que en conjunto con una estructura de datos (Esto lo explicare mas adelante) hacen del programa lo que es”.

Hay varias maneras o “paradigmas” de programar. Para entrar un poco en materia, aunque esto lo explicaré en artículos dentro de la web, los paradigmas de programación son maneras en las que estructurar el código para disminuir la ambigüedad de este y darle un mayor sentido a lo que tipamos.

Por enumerar algunos paradigmas:

  • Programación declarativa
  • Programación estructurada
  • Programación modular
  • Programación orientada a objetos

Cuando vaya realizando los artículos que especifica cada una de ellas los iré enlazando desde aquí.

Ingeniería de la programación y el software

La gente, por regla general, confunde dos aspectos distintos de este mundo. Uno es el desarrollo de un programa informático y otra es la programación. A simple visa parecen similares, pero no lo son. Este punto podrías ser motivo de crítica, porque todos no pensamos igual, y es comprensible. Pero la verdad dista que el desarrollo de un programa informático como tal no es lo mismo que programar.

El desarrollo de un programa informático ha de contener, mínimamente, las siguientes características:

  1. Encontrar un problema que pueda ser solucionado de manera autónoma o automática con una máquina.
  2. Identificar cuáles son los requisitos mínimos y que debe hacer el programa detalladamente para poder optimizar todos los procesos.
  3. Diseño estructural del programa para poder abordar las labores por separado.
  4. Desarrollo del programa.
  5. Implementación del programa en el sistema informático final para su posterior fase de pruebas.
  6. Realizar las pruebas específicas para comprobar que el producto está correctamente desarrollado para su venta.
  7. Implementar el software de manera eficiente en el mercado.

La programación consta solo de los pasos 3, 4, 5 y 6 del apartado anterior.

Algunas referencias interesantes

No se la razón por la que sucede esto, pero en el mercado laboral actual de nuestro sector hay muchos más hombres que mujeres, con esto no quiero decir, ni mucho menos, que las mujeres no sean actas para tal fin, de hecho tengo varias referencias de conocidas y amigas programadoras que son la bomba, pero me entristece saber que no estamos en igualdad dentro del sector.

¿Por qué me cuentas esto? Muchos ya lo sabréis, otros no, pero “Ada Lovelance” fue la primera programadora del mundo. Aunque no consiguió terminar la máquina en la que estaba trabajando para sacar un mayor provecho de su devoción, se ganó este título de “La primera programadora del mundo”. Posteriormente, y en su homenaje, el lenguaje de programación “Ada” fue llamado así por ella.

Objetivo principal de un programa bien desarrollado

Cuando uno programa debe pensar de manera totalmente clara y en muchas ocasiones “tiene que mirar el programa desde fuera de la caja”.

¿A qué te refieres con esto, Aitor? Muchas veces cuando programamos estamos tan centrados, y conocemos tan bien los entresijos de la aplicación que estamos construyendo, que no somos objetivos a la hora de implementar el programa de cara al cliente final. No nos damos cuenta de que nosotros, como autores del programa, sabemos a la perfección lo que hace y como lo hace.

Pero prueba una cosa, dale tu programa a una persona que no sepa mucho de informática a ver qué sucede…

Tenemos que intentar por todos los medios definir correctamente los siguientes puntos para medir la calidad de nuestro programa:

  1. Programar de manera correcta:
    1. Tiene que cumplir las peticiones que nos hizo el cliente, o nosotros mismo, a la perfección. Hasta el más mínimo detalle puede separar un proyecto del éxito o del fracaso.
  2. Claridad de escritura y trabajo
    1. Como hemos comentado antes, necesitamos que el usuario final vea a simple vista que tenemos un programa útil, bonito y lo más importante, sencillo de utilizar. Por otro lado, tenemos que intentar escribir nuestro código de la manera más clara posible para que su posterior mantenimiento sea más sencillo para nosotros mismo, o para los que vayan a meter sus manos en el código escrito por nosotros. Si estructuramos bien un programa desde el principio y seguimos las pautas de la programación modular (los módulos que hemos visto anteriormente) logramos que nuestro trabajo sea mucho más rápido y conciso, aunque en la primera parte del desarrollo nos lleve un poquito más de tiempo.
    2. Comenta el código cuando desarrolles algo con un poco de complejidad, así, hasta tú mismo, entenderás lo que hace en un futuro próximo.
    3. Si trabajas en un equipo de trabajo, adáptate a la “manera” de desarrollar del equipo, y si por una casualidad no tenéis esta “manera” sentaros un rato alrededor de una mesa y pensar en una. Os será de gran ayuda a medida que el proyecto avanza.
  3. Optimiza al máximo
    1. Puede que el programa cumpla los dos puntos anteriores, pero si este no, estaremos en un grave problema. La optimización de código es una de las partes fundamentales a la hora de implementar. Puede que a simple vista parezca que todo funcione correctamente, pero cuando hagamos una prueba de estrés y veamos que todo se va a la mier… por motivos de optimización, nos tiraremos de los pelos. En posteriores artículos veremos cómo podemos optimizar nuestros desarrollos de manera sencilla a la vez que vamos programando si seguimos unas pautas de desarrollo y buenas prácticas.
  4. Portabilidad, la panacea de las empresas
    1. Si, has entendido bien. Vamos a ver un ejemplo:
      1. Te piden que desarrolles una aplicación móvil y te estiman 150 horas de trabajo. Qué es mejor: ¿Dedicar 75 horas para hacerla para Android y otras 75 horas en hacerla para iOs? O ¿Invertir las 150 horas en una aplicación que se puede ejecutar en los dos sistemas?
    2. Actualmente hay tecnologías que permiten ejecutar nuestro código en diferentes plataformas. Este es uno de los factores más deseables a la hora de desarrollar cualquier tipo de software. ¿Por qué?, Por el descenso de los costes en lo que al tiempo se refiere y a la posibilidad de hacer una aplicación mejor solo centrado en una y no en una para cada sistema.
      1. También hay que comentar el lado malo del multiplataforma: Esta posibilidad sacrifica un poco de rendimiento para poder ofrecer esta portabilidad, algo importante a tener en cuenta según para que proyectos.

 

Fase aclaratoria: El ciclo de vida de un software

¿Se está haciendo un poco pesado verdad? Pero a quien algo quiere, algo le cuesta…

Ahora vamos a ver una de las partes más importantes del desarrollo de Software, su ciclo de vida.

Estos pasos que vamos a enumerar a continuación se rigen para detectar de manera temprana y antes de que sea tarde, en términos de tiempo y costes asociados, los errores encontrados e implementar las posibles soluciones para corregirlos.

Para ver un ejemplo práctico: Wallapop.

  • Todos recordamos cuando está aplicación salió al mercado y lo pronto que popularizó dentro de la comunidad consumidora de este software. Pues bien, también recordaremos que hubo una temporada en la que era totalmente inaccesible por la saturación del servidor… Esto proviene de un fallo de implementación. No se calcularon bien los consumos recurrentes en el servidor y por eso la perdida de usuarios en esta época.
  • ¿Veis? Fácilmente se podría haber quedado en nada por un simple fallo…

Ahora vamos con los pasos mínimos para declarar un ciclo de vida estructurado y fiable:

  1. Objetivos y su definición: La primera parte de todas es basar la aplicación en una estructura firme y sólida de los problemas que tiene que solucionar la aplicación. Si esta parte no está del todo clara, no iniciar el desarrollo hasta que se acabe. El proyecto se podría tambalear a la hora de expandirse.
  2. Análisis de requisitos: Definir las tecnologías a usar, los requisitos del sistema donde se va a implementar, las peticiones del cliente y detectar cualquier restricción e informar de ella lo antes posible. Consejo: No comenzar el desarrollo independientemente de lo que diga el cliente, si el equipo informático donde se va a implementar el desarrollo final no pasa el análisis, te evitarás muchos problemas. El preferible decir que no, antes de embarcarte en ese desarrollo que te dará más de un quebradero de cabeza.
  3. Diseño general: Realizar los bocetos de la parte visual y el diseño de la estructura del software.
  4. Diseño en detalle: Realizar una versión detallada de toda la parte visual del programa y definición de las estructuras de datos.
  5. Programación: Desarrollo de los módulos de los cuales va a estar compuesto el programa
  6. Pruebas Unitarias: Probar cada módulo por separado para comprobar que cumple con todas las funciones que se lo solicitan.
  7. Integración: Ensamblaje de todos los módulos dentro del esqueleto principal del programa
  8. Fase Beta: Lanzamiento de la primera versión del programa a usuarios que vayan a testear y te den el feedback necesario sobre tu producto.
  9. Documentación: Una vez terminada la fase beta se procede a documentar todo el proyecto.
  10. Mantenimiento: realización de mejoras y corrección de errores sobre el programa.
  11. Desatendido: Esta fase es un poco especial. Me explico: Un programa cuenta con versiones que escalan dependiendo de la empresa / usuario que las programe. Por regla general, cuentan con versiones que van quedando obsoletas con el paso del tiempo. Hasta que llega el punto que se desatienden. Pues esta es esa fase del ciclo de vida, cuando una versión deja de ser atendida por los desarrolladores. Aunque se puede seguir comercializando con ella, no es recomendable.

Aunque hayamos visto este punto enumerado, no es necesario seguirlo en este orden. Este es solo la manera en la que yo trabajo en mis desarrollos y la que me ha permitido seguir adelante. Muchos programadores no la seguirán al pie de la letra, pero es la que aconsejo fervientemente y nunca me ha fallado.

Versiones de mi aplicación

Ya vamos llegando al final. Sé que la lectura se está haciendo un poco pesada, disculparme pero es que son demasiados conceptos que tenemos que ver antes de ponerlos las pilas.

Antes de continuar decir que hay varios tipos de versiones:

  • Versionado de la app: 1.0.0, 1.0.1, 1.0.1, etc…
  • Versión de estado de la aplicación: En qué estado se encuentra nuestro código.

Vale, existen programadores que utilizan muchas versiones de estado de aplicación. A mí personalmente me gusta utilizar solo 3 que son las siguientes:

  1. Versión “Debug”:
    1. La que utilizamos sobre todo el desarrollo de la aplicación y sobre la que programamos.
  2. Versión “Deploy”:
    1. Depuramos sobre el sistema que va a correr la versión definitiva de nuestra aplicación.
  3. Versión “Release”:
    1. Versión terminada de nuestra aplicación. Pasando a estar disponible para poder explotarla o venderla.

 

Pues visto todo esto, creo que tenemos una mínima noción sobre lo que vamos a ir viendo en nuestro blog de forma regular y gradual.

Cabe decir que serán bastantes los contenidos prácticos que traeré al blog para que podáis practicar mientras aprendemos todos juntos. Pero también, como es normal en esta disciplina, también tendremos contenidos un poco más teóricos que son necesarios.

Comparte esto en: