“Tengo un amigo programador”

 In Uncategorized

¿Cuántas veces hemos escuchado esta frase tentadora?  Y si de paso le sumamos aquella que complementa: “…y no es caro”.

En mi carrera como consultor de TI, cada vez con más frecuencia, nos llegan a la empresa clientes con proyectos de desarrollo de software que empezaron con esta premisa y terminaron, o mejor dicho, no terminaron como se esperaba.  Desde desarrollo de páginas web, desarrollos web y desarrollos web con aplicaciones móviles hasta sus respectivas API (software para enviar y recibir datos entre ambas plataformas).

Entre los problemas más comunes tenemos:     

  1. Los contratos (a veces inexistentes)
  2. Alcances del proyecto poco claros
  3. Tecnologías utilizadas inadecuadas (lenguaje de desarrollo, bases de datos, frameworks (herramientas que facilitan el desarrollo de código de programación con buenas prácticas) poco conocidos o limitados.
  4. Definición de los dispositivos donde funcionará la herramienta, plataformas de alojamiento.
  5. Secuestro de código
  6. Otros muchos problemas más.

Por suerte, para casi cualquier idea que se nos ocurra como empresarios, y en este mundo cada vez más digital, probablemente ya existe una herramienta que puede resolver nuestras necesidades y las de nuestros negocios en determinado porcentaje.  Ahora bien, si la herramienta forma parte de la estrategia de negocio y representa una ventaja competitiva, será mejor desarrollarla a la medida (ya sea en casa o bien con una empresa externa).

¿Qué es mejor, o qué debo considerar para tomar mi decisión?  Es un proceso delicado que abordaré a detalle en una publicación posterior.

Si optamos por desarrollar nuestro software, no es suficiente tener un programador para el proyecto en particular. La cantidad de especialidades y certificaciones que existen para cada uno de los elementos que pueden formar parte del desarrollo de software han crecido de manera importante en los últimos 5 años. La competencia por desarrollar mejores herramientas para facilitar el desarrollo, y su especialización han sido parte fundamental de este crecimiento.

Debemos tener muy claro qué estamos buscando resolver y específicamente qué necesitamos de la solución (aplicación). Entre más claro y detallado mejor, incluso si es un proceso ya establecido en nuestra empresa y quizás sólo requiere ser automatizado (Transformación Digital).

Nunca debemos limitarnos a dejarlo en la palabra: los contratos, su alcance, los entregables y penalizaciones son esenciales para proteger nuestra inversión. Cuando mis clientes me han solicitado ayuda para no perder el avance realizado por “su amigo programador”, y exigir el cumplimiento de los contratos y/o en su caso entablar una demanda, he encontrado casos incluso con la nula existencia de los mismos.

Adicional a esto, hay que tener en cuenta: los componentes del software, la metodología de desarrollo, el personal interno que estará evaluando constantemente los avances y entregables, los controles de cambios (para que no se vuelva un proyecto sin fin), entre otros.

Parte importante también es conocer la experiencia de la empresa que les va a brindar el servicio, los casos de éxito que tiene, el tipo de clientes que atiende y si conoce o tiene las capacidades para entender cierto tipo de industria.

La figura 1 muestra los principales componentes del desarrollo de software y algunas de las opciones de herramientas, excluyendo la parte de infraestructura.

Figura 1. Componentes de desarrollo de software

Nota: El desarrollo de software por fuerza requiere de un sistema operativo que lo gobierne, y sin este no funcionará. Cualquier selección de las herramientas contenidas en el diagrama debe considerar el sistema operativo sobre el cual operará la solución.

Ahora bien, dentro de un equipo de desarrollo de software, sin entrar mucho en detalle, les menciono las especialidades de los que participan en mayor o menor medida en un proyecto clasificado como mediano a grande.

 

El arquitecto de soluciones

Es quien define en base al tamaño del proyecto qué tecnologías del diagrama anterior se utilizarán para un proyecto.

El Especialista de la base de datos

Es el responsable de asegurar que los datos se mantengan consistentes, seguros, disponibles, organizados; que exista planeación de la capacidad de almacenamiento entre otros.

El desarrollador Back

Es aquel que se encarga de desarrollar la lógica del desarrollo y le da poder y sentido a todo lo que se presenta como resultado en una aplicación, incluye el desarrollo de las API.

El desarrollador Front

Es quien desarrolla los diseños, y presentación de las aplicaciones, además de cómo se verá el sitio/desarrollo en general.

El desarrollador Full Stack

Es aquel que puede desarrollar tanto proyectos simples como complejos, que involucren ambas habilidades (front/back).

El UX specialist

Es un especialista que trabaja para que la interacción entre las personas y productos sea óptima; está en contacto permanente con el desarrollador front para asegurar que se cumplan las necesidades del proyecto.

El Project Manager

Es el responsable de administrar el proyecto de cara al cliente, interactuando con los responsables dentro de la empresa, asegurando tiempos, presupuestos, delegando responsabilidades y resolviendo conflictos que pudieran afectar el resultado esperado.

En resumen, la siguiente vez, que alguien te diga: “Tengo un amigo programador” piensa la calidad de lo que buscas y qué rol juega esta solución en tu estrategia de negocio.

 

En STI diseñamos y dirigimos tus proyectos tecnológicos, así como tu estrategia de transformación digital.

 

Recent Posts

Leave a Comment

Contact Us

We're not around right now. But you can send us an email and we'll get back to you, asap.

Not readable? Change text. captcha txt

Start typing and press Enter to search