Cómo piensa un programador.
Todo comienza con un requerimiento un pedido una necesidad un cliente o quien nos contrata nos plantea
un problema reconocemos una necesidad y debemos diseñar una solución a esos problemas.
Un buen analista debe reconocer cuando la solución es un sistema o ciertos cambios en la metodología
de trabajo o cambiar personas de su cargo.
Cuando se detecta que hay un conflicto de intereses personales así puede haber muchas cosas que hagan
que la solución no pase por un sistema computarizado.
Una vez que determinamos que hay que desarrollar un software las preguntas más importantes son qué datos
o información tendrá que recolectar y brindar el sistema.
Si esta es la pregunta más importante de todas.
Todo comienza con los datos y estructurando nuestros datos y sabiendo qué información es vital para
nuestro cliente.
Comenzaremos a armar el rompecabezas en base a los datos requeridos.
Armaremos los procesos que necesitamos desarrollar dividiremos nuestro sistema en módulos divisiones
y operaciones.
No tenemos que saber en esta etapa cómo será cada módulo porque en sistemas hay que crear primero los
cimientos y luego analizar en detalle cada módulo por separado.
Cuando ponemos nuestra mente diariamente en tratar de abarcar y resolver muchas cosas simultáneas es
muy probable que tengamos menos eficiencia que si nos enfocamos en cada problema por separado y resolvemos
inteligentemente.
En sistemas ocurre lo mismo al aprender diseños de sistemas se nos enseña que tenemos que partir de
lo general a lo particular el ir desgranando un problema en pequeñas partes en pequeños módulos.
Si un cliente necesita un sistema que le permita facturar las ventas por ejemplo tendremos primero que
determinar qué datos necesita un sistema de facturación.
A grandes rasgos por ejemplo qué entidades participan de una venta.
Tenemos por ejemplo que participan clientes la empresa misma de nuestro cliente que tiene información
que es necesaria incluir en las facturas productos.
También es una entidad importante.
Los productos son los principales intervinientes en una venta y también tenemos otras entidades como
vendedores por ejemplo y luego tomar cada una de esas entidades y determinar qué datos necesitamos almacenar.
Por ejemplo vemos un ejemplo clientes y vamos a grabar datos de clientes como si fuera una agenda donde
vamos a grabar una idea.
Identificatoria es un número único porque tenemos que tener un dato que sea único entre los clientes
que no se repita.
Por ejemplo para determinar el cliente número 1 2 el 3 y el 4 una idea de identificatorio.
Luego vamos a alojar también en nuestro sistema el nombre o la razón social del cliente el domicilio
que es donde vive el teléfono el CUIT NIF o como se llame en cada país que es esa clave tributaria que
nos da el Gobierno para poder comerciar el e-mail.
Estos son datos genéricos que van a encontrar en cualquier sistema pero también quien nos contrata necesitará
almacenar algún dato específico de los clientes.
Y aquí es donde hace que cada sistema sea único porque para un cliente determinado para él es importante
guardar datos que no son habituales en otra empresa y tenemos que tomarlos como válidos.
Y así con cada entidad toda esta información se obtiene en reuniones de relevamiento donde el cliente
nos va a plantear sus problemas sus necesidades y nosotros tomaremos nota y en base a esas notas iremos
armando el rompecabezas de nuestro sistema deberemos saber ver más allá entender que quien nos contrata
no es un experto en sistemas que puede creer que sus necesidades actuales determinada.
Pero debemos alertarlo de acuerdo a nuestra experiencia de haber hecho otros sistemas.
Esto es algo que la experiencia la van a ir ganando y van a terminar haciéndose buenos programadores
con el tiempo.
Qué debe contemplar tal o cual variante hay que decirle o funcionalidad que no está teniendo en cuenta
por su inexperiencia y que ese cliente no tiene presente y nosotros tenemos que alertarlo.
Debemos pensar en el presente obviamente pero también en el futuro que nuestro sistema cuando lo hagamos
tiene que estar preparado para crecer y adaptarse al crecimiento del cliente.
No importa que nuestro cliente ahora tenga 100 clientes que le compran.
Debemos adaptar nuestro desarrollo para soportar miles de clientes y si ese cliente tiene la sucursal
o un solo local tenemos que adaptar nuestro sistema para que en el futuro soporte varios locales que
luego se conviertan en una cadena.
Tenemos que ser previsores no es momento de pensar en instrucciones de programación ni pantallas ni
en el tema visual ni nada por el estilo.
En este momento lo primero el primer paso en programación profesional es determinar los datos que se
requerirán y qué información nuestro sistema brindará.
Ustedes van a crear su sistema de acuerdo a las necesidades que han sido planteadas por el cliente y
comenzaremos con el diseño conceptual de los módulos de cada subsistema.
Fíjense que por ahora no hablamos de código de programación no hablamos de lenguajes no hablamos de
nada hablamos de creación mental y conceptual de toda una estructura.
Cuando ustedes construyen una casa se hace primero los cimientos no piensan en la pintura ni en la decoración
que tendrán los ambientes hablan de medidas de estructuras de cemento de hierro y luego van pasando
eso a un revoque grueso luego del revoque grueso van a un revoque fino van colocando los caños y mientras
van colocando los caños de agua y de gas no están pensando en la pintura en el armado de sistemas como
en la cocina como en el armado de una receta de cocina.
Todo lleva sus pasos y sus momentos aquí tienen que pensar en que no pueden saltear etapas.
El error más grande que yo veo en los cursos de programación básica es que les empiezan a enseñar ya
con un lenguaje y ustedes tienen que aprender a pensar.
Tienen que empezar con la estructura con los cimientos si no van a fracasar porque muchos conceptos
no les quedan grabados y empiezan a manejar lenguajes de programación y no tienen idea de la mayoría
de las cosas.
Entonces de lo general a lo particular esa es la consigna.
Cuando ustedes quieran grabar un concepto de programación tienen que grabar este de lo general a lo
particular y el otro concepto ya lo dimos antes.
Primero se empieza con los datos y luego con la definición de los módulos y de la estructura de las
ramas de nuestro sistema y cuando estemos desarrollando por ejemplo el módulo emitir factura no estaremos
concentrados en otra cosa más que en eso concentrarnos poner el foco en algo y ahí aunque aún no nos
interesa ni cuestiones visuales ni de lenguaje ni nada más que crear los cimientos el esqueleto de lo
que será nuestro sistema y tener en claro los datos.
Luego en la práctica sin duda haremos ajustes al plan original eso es inevitable inevitable.
Siempre surgen dudas de los datos que hemos creado o que hemos tomado en cuenta o el cliente mismo nos
va añadiendo requerimientos.
Esto es muy normal cosas que no nos dijo en las primeras reuniones o cambios de decisión o quizás como
a veces ocurre cambios legales en las leyes de cada país que hacen que a último momento tengamos que
repensar algunos módulos o pensar en opciones nuevas o simplemente tocar nuestros datos originales y
poner nuevos datos.
Quizás cuando armemos los datos de nuestra ficha de clientes nos olvidemos un dato no hay problema se
agrega luego.
No es que sí.
Si al comienzo cuando vimos nuestros cimientos hubo datos que nos faltaron.
Nuestro sistema está destinado al fracaso no se preocupen ahora por comprender ciertas cosas porque
todo esto es un camino así que vamos por partes como nuestros sistemas que tenemos que ir por partes.
Ya en nuestro próximo capítulo comenzaremos con la práctica real aprendiendo cada una de las estructuras
de programación que debemos conocer y cada uno de los secretos.
Sé que cada uno quiere aprender ya a programar código.
Yo quiero que ustedes recuerden la película Karate Kid y ahora nos toca pulir y pintar y los convertirá
en los mejores programadores eso de ejemplo a mí me interesa que por sobre todas las cosas convertirlos
en los mejores y me ocuparé de que lo sean porque tendrán mi apoyo en todo momento y responderé cada
duda o planteo que me dejen en la plataforma Yo los ayudaré.
Seré un colega de ustedes y vamos y si tienen algún desarrollo en particular qué hacer.
Yo no lo voy a hacer por ustedes pero los voy a ayudar conceptualmente a comprender por dónde ir y qué
camino tomar.
Hagamos un equipo y ganemos todos los torneos de karate que hagan falta.
Nos vemos en el siguiente capítulo donde ya nos pondremos en manos a la obra.