La Tabla estática en un Combo sin Origen

La Tabla estática es un objeto del proyecto de datos cuyos registros se pueden crear y editar en tiempo de diseño. En tiempo de ejecución solo podemos mostrar los registros de la Tabla estática sin posibilidad de filtrarlos (siempre se muestran todos) o modificarlos.

Seguramente alguna vez has tenido la necesidad de mostrar los Items de una Tabla estática en un formulario sin Origen o filtrar los registros de la Tabla estática de forma dinámica. En estos casos el API de Velneo viene en nuestra ayuda, veamos cómo hacerlo.

tabla estática

 

Para definir la tabla estática tenemos que crear registros o Items con 3 propiedades:

    • Identificador de un solo caracter alfanumérico que identifica de forma unívoca el registro
    • Nombre para mostrar en el Interface de usuario
    • Dibujo que se corresponde con un Objeto dibujo del proyecto para mostrar también en el interface de usuario

El uso más común de la Tabla estática consiste en enlazar un campo a dicha tabla mediante un enlace de Tipo estática. Lo que se guarda en el campo enlazada es el Identificador del Item seleccionado.

En tiempo de ejecución el usuario podrá desplegar un control Combobox en el formulario con todos los elementos de la Tabla estática y cambiar el Identificador guardado en el campo indicado en la propiedad Contenido.

Como vemos en la siguiente imagen tenemos un formulario de configuración con un Combobox CBO_LOGNIVEL mostrando los 5 Nombres de una Tabla estática con el Dibujo a la izquierda. 

Los Identificadores son los caracteres 1, 2 ,3 4 y 5.

Este formulario no tiene Origen de tabla y por lo tanto no podemos fijar la propiedad “Contenido” del Combobox a un campo de dicha tabla.

El valor del Identificador seleccionado en el Combobox se guardará en una variable global numérica G_APP_LOG_LEVEL.

En el POS_INI del formulario ejecutamos el manejador javascript LOGNIVEL_RELLENAR_JS que nos permite acceder a los Items de la Tabla estática y rellenar con ellos el Combobox. Como la propiedad Contenido del Combobox ya nos es operativa debemos gestionar la selección y lectura del Item, algo que ocurre de forma automática cuando el contenido es un campo.

// Formulario sin Origen
// Manejador de Evento JS - LOGNIVEL_RELLENAR_JS
// Rellena el Combobox con los Items de la tabla estática

var cAliasAPP = theApp.mainProjectInfo().alias()
var cAliasDAT = cAliasAPP.replace("app","dat")
var oCbo = theRoot.dataView().control("CBO_LOGNIVEL")
// Obtenemos el número de Items de la Tabla estática
var nNumNiv = theApp.staticTableItemCount(cAliasDAT + "/APP_LOG_LEVEL")

// Rellenamos el Combo desde la Tabla estática con Dibujo, Nombre e Identificador
if (nNumNiv > 0) {
        for (var i=0 ; i<nNumNiv ; i++) {
                oCbo.addItem(
                        theApp.staticTableItemImage(cAliasDAT + "/APP_LOG_LEVEL",i),
                        theApp.staticTableItemName(cAliasDAT + "/APP_LOG_LEVEL",i), 
                        parseInt(theApp.staticTableItemId(cAliasDAT + "/APP_LOG_LEVEL",i)))
        }
}

// Establecemos el Item seleccionado inicialmente desde la variable Global
var nNivel = theApp.globalVarToInt(cAliasDAT + "/G_APP_LOG_LEVEL")
var nIndex = oCbo.findData(nNivel)
if (nIndex > -1) {
        oCbo.setCurrentIndex(nIndex)
}

Cuando el usuario seleccione un nuevo Item del Combo tenemos que guardar el Identificador seleccionado en la variable global G_APP_LOG_LEVEL.

Desde el evento Item: Cambio de seleccionado del Combobox ejecutamos el manejador javascript LOGNIVEL_CAMBIO_JS

// Formulario sin Origen
// Manejador de Evento JS - LOGNIVEL_CAMBIO_JS

var cAliasAPP = theApp.mainProjectInfo().alias()
var cAliasDAT = cAliasAPP.replace("app","dat")
var oCbo = theRoot.dataView().control("CBO_LOGNIVEL")

// Obtenemos el Identificador del Item seleccionado y lo guardamos en la variable global
var nNivel = oCbo.itemData(oCbo.currentIndex)
theApp.setGlobalVar(cAliasDAT + "/APP_LOG_LEVEL", nNivel)

Y esto es todo, el API ha aportado a la programación del Combobox ese grado dinámico que no tenemos en Velneo nativo. Sin embargo perdemos la potencia de la refactorización por lo que tendremos que ser muy cuidadosos con el código.

Hagamos un componente de todo esto

Quizás quieras darle un poco de abstracción a la resolución de este ejercicio y te planteas el diseño de un Combobox personalizable. Un control Combobox que sirva para cualquier Tabla estática del proyecto y tenga los manejadores RELLENAR y CAMBIO incluidos en el componente.

El control Vista de Datos del formulario nos permite incrustar componentes del proyecto e interactuar con él mediante comandos de Velneo.

Veamos como crear un Combobox genérico para mostrar cualquier Tabla estática del proyecto en un formulario sin Origen.

Diseñamos un formulario FRM_SIS_COMBO_ESTATICA sin Origen con un Combobox CBO_ESTATICA y un Label para mostrar la variable local CID_ELEMENTO que guarda el identificador del Item seleccionado.

El formulario FRM_SIS_COMBO_ESTATICA va a ser nuestro componente que insertamos en un formulario sin Origen mediante una Vista de datos.

Este componente necesita 2 valores, el Alias del proyecto de datos CALIAS y el Identificativo de la Tabla estática CTABLA_ESTATICA.

Un manejador de evento javascript CBO_RELLENAR_JS es ejecutado desde el ON_SHOW del formulario. Rellenamos el Combobox en el evento On_Show porque es la única manera de asegurarnos que las variables locales CALIAS y CTABLA_ESTATICA han sido asignadas correctamente a la Vista de datos desde el evento POS_INI del formulario principal.

// Componente Combo de Tabla estática
// Manejador de Evento JS - CBO_RELLENAR_JS
// Rellena el Combobox con los Items de la tabla estática

// El componente necesita personalizar 2 valores: Alias del proyecto y Tabla estática
var cAliasDAT = theRoot.varToString("CALIAS")
var cTablaEstatica = theRoot.varToString("CTABLA_ESTATICA")
var oCbo = theRoot.dataView().control("CBO_ESTATICA")

// Solo rellenamos si el combo está vacío (recordad que estamos en el evento On_Show)
if (oCbo.count == 0) {
        // Rellenamos el Combo desde la Tabla estática
        var nNumNiv = theApp.staticTableItemCount(cAliasDAT + "/ " + cTablaEstatica)
        if (nNumNiv > 0) {
                for (var i=0 ; i<nNumNiv ; i++) {
                        oCbo.addItem(
                                theApp.staticTableItemImage(cAliasDAT + "/ " + cTablaEstatica,i),
                                theApp.staticTableItemName(cAliasDAT + "/ " + cTablaEstatica,i), 
                                theApp.staticTableItemId(cAliasDAT + "/ " + cTablaEstatica,i)
                        )
                }
        }
        // Establecemos el valor inicial
        var cID = theRoot.varToString("CID_ELEMENTO")
        var nIndex = oCbo.findData(cID)
        if (nIndex > -1) {
                oCbo.setCurrentIndex(nIndex)
        }
}

Desde el evento Item: Cambio de seleccionado del Combobox ejecutamos el manejador javascript CBO_CAMBIO_JS

// Componente Combo de Tabla estática
// Manejador de Evento JS - CBO_CAMBIO_JS
// Obtiene el ID seleccionado en el Combobox

var oCbo = theRoot.dataView().control("CBO_ESTATICA")

// Obtenemos el ID seleccionado
theRoot.setVar("CID_ELEMENTO", oCbo.itemData(oCbo.currentIndex))
theRoot.dataView().updateControls()

Con esto ya tenemos el componente terminado y listo para insertarlo como Vista de datos en cualquier formulario sin Origen.

En el manejador POS_INI del formulario principal establecemos la personalización del componente con los valores del Alias del proyecto de datos, nombre de la Tabla estática e Identificador inicialmente seleccionado.

Para recoger el Identificativo seleccionado en el Combobox podemos usar un manejador LOGNIVEL_CAMBIO que se dispare con el evento Item: Cambio de seleccionado del Combobox de la Vista de datos.

Rem (Manejador LOGNIVEL_CAMBIO para obtener el identificativo seleccionado)
Interfaz: Get variable local de vista de datos ( CTR_LOG_NIVEL, CID_ELEMENTO, CID_LOGNIVEL )
Modificar variable global ( APP_LOG_LEVEL@MiProyecto_dat, CID_LOGNIVEL, LOK )

Aquí vemos un ejemplo de la secuencia de eventos en Velneo. Cuando en el Combobox se cambia el elemento seleccionado, primero se dispara el evento Item: Cambio de seleccionado del componente incrustado en la Vista de datos y a continuación se dispara el evento del control Vista de datos definido en el formulario principal.

 

¿Qué pasa con los formularios con Origen si quiero insertar una Vista de datos sin Origen?

Pues también tiene solución, pero eso lo dejo como ejercicio y pones tu solución en los comentarios.

La entrada La Tabla estática en un Combo sin Origen aparece primero en AyudaVelneo.

Tagged , , , , , , , | Comments Off on La Tabla estática en un Combo sin Origen

5 consejos técnicos para desarrollar aplicaciones empresariales

En este artículo hacemos una recopilación de consejos técnicos para desarrollar aplicaciones empresariales de la mano de Jesús Arboleya, evangelista y consultor de Velneo en el departamento de éxito de clientes. Es el autor del curso Mi primera aplicación con Velneo, que puedes hacer gratis. Todos los conceptos que se comentan a continuación están explicados en la documentación de Velneo

#1 Pensar en listas es más natural

Hoy en día la gran mayoría de personas usamos a diario algún tipo de aplicación. Casi todas las aplicaciones gestionan información y disponen de interfaces adecuados para conseguir la mejor experiencia de usuario posible.

A nivel de interfaz como usuario solemos navegar por la información igual que lo hacemos en un mapa, que no deja de ser un tipo de información que nos hemos acostumbrado a visualizar de forma gráfica, es decir solemos comenzar con un mapa general sobre el que vamos haciendo zoom para acercarnos y ver con detalle solo aquello que realmente nos interesa.

Seguir leyendo

#2 Ficha y lista de registro

Este es un concepto que debemos tener claro al programar con Velneo ya que algunos de los comandos de instrucción de acceso a la base de datos están orientados a listas y no a fichas. Por este motivo podemos llegar a buscar un registro concreto usando un comando como cargar lista o un objeto como la búsqueda que devuelven listas.

Cuando resolvemos de forma precisa todas las partes de un índice de clave única de una tabla, Velneo nos devolverá ese registro, si estamos usando cargar lista o una búsqueda, por ejemplo, nos encontraremos que lo que obtenemos es una lista de un registro.

Seguir leyendo

#3 Formularios de alta, baja y modificación

Uno de los aspectos más cómodos de Velneo para los programadores es la sencillez con la que declaramos en un objeto de lista como una rejilla o grid cuáles serán los formularios de alta, baja y modificación.

Podemos no declarar ninguno, declararlos todos o declarar solo algunos según nuestras necesidades funcionales. Por ejemplo, no poner el formulario de alta si no queremos que el usuario pueda añadir registros, o no declarar el de baja si no queremos permitir al usuario eliminarlos.

La cuestión que en algunos casos nos podemos plantear es ¿Uso el mismo formulario para las tres operaciones o creo formularios diferentes? ¿Qué ventajas o inconvenientes tiene hacerlo de una u otra forma?

Seguir leyendo

# 4 Funciones y procesos

Funciones y procesos. Cada objeto tiene sus virtudes y también sus limitaciones. Conocerlas nos ayuda a decidir cuando usar uno u otro.

Seguir leyendo

# 5 Índice de los campos punteros a maestros

Algo que es habitual cuando diseñamos la estructura de la base de datos de nuestra aplicación es la creación de las relaciones entre tablas. Al crear dichas relaciones en las tablas se añaden campos de tipo de enlace maestro. Si este campo lo añadimos usando las herramientas del esquema, el asiente de creación de tablas o la opción de la toolbar del editor de tabla, además de crearse el campo puntero a maestro se crea su correspondiente índice de tipo acepta repetidas.

Sin embargo, en ocasiones creamos estos campos de forma manual o duplicando otro campo puntero a maestro. En estos caso no se crea el índice. Y ya te adelanto que no es conveniente eliminar estos índices que se crean automáticamente.

Seguir leyendo

Este artículo 5 consejos técnicos para desarrollar aplicaciones empresariales es original de Velneo.

Tagged , , , , , , , , | Comments Off on 5 consejos técnicos para desarrollar aplicaciones empresariales

29 consejos para tener éxito como desarrollador autónomo (I)

Ser desarrollador autónomo puede ser una forma de ganarse bien la vida y para muchos es un trabajo de ensueño. Sin embargo en muchas ocasiones los sueños se convierten en pesadillas, así que lo mejor es estar preparados.

El panorama laboral al que se enfrentan los desarrolladores de software hoy en día es todo un reto. Por un lado, las principales ventajas de trabajar como programador por cuenta ajena han ido menguado después de la crisis económica de 2007: la seguridad en el empleo, posibilidades de crecimiento y promoción profesional, el sueldo, los extras… Todo ha cambiado mucho desde entonces. Y por otro lado, sigue creciendo la demanda de programadores cualificados. Esto nos conduce a que cada vez más desarrolladores opten por establecerse como trabajadores autónomos.

No obstante, antes de lanzarse a la piscina y abandonar el cubículo, te recomendamos que leas con detenimiento estos 29 consejos para tener éxito como desarrollador autónomo independiente, extraídos de las experiencias de muchos de mis compañeros y colegas autónomos de la programación.

En este artículo señalamos los retos de ponerse a trabajar como desarrollador por cuenta propia, desde el punto de vista de una persona que hace la transición de trabajar por cuenta ajena a tener su propio negocio. Repasaremos aspectos que van desde los contratos, el marketing, destrezas empresariales, organización, clientes y demás temas importantes para desarrolladores que quieran convertirse en autónomos y tener la posibilidad de algún día triunfar.

Ser tu propio jefe puede ser un sueño, fijar tus propios horarios y trabajar solo en aquellos proyectos que realmente te gustan, además de tener la posibilidad de hacerse con una buena cuenta de ahorros. Sin embargo, debes estar preparado para afrontar la cruda realidad. Nadie te garantiza que vas a triunfar. Esa es la primera premisa de la que siempre debemos partir. Descubre cómo leyendo a continuación los consejos de otras personas que han pasado por lo mismo y han tenido éxito como desarrolladores independientes.

#1 Saber por qué te haces autónomo

Antes de comunicarle a tu empresa que te vas, que dimites, tienes que tener muy claro en tu mente por qué te quieres hacer autónomo como programador. ¿Quieres trabajar desde casa? ¿Quieres viajar más? ¿Quieres más dinero? ¿Trabajar menos horas? ¿Cuales son los motivos principales que te llevan a tomar esta decisión? Apúntalas en un papel o en un documento porque lo más probable es que tus objetivos no se cumplan en el corto plazo. Cuando las cosas se pongan difíciles, esa lista te recordará por qué estás haciendo lo que haces, y eso puede marcar la diferencia entre rendirse o tener éxito.

Sobre todo, tienes que poder entender y aceptar que “hacerse autónomo” implica “crear una empresa”, y gestionar una empresa no tiene nada que ver con tener un empleo. Y no te creas los mitos sobre los emprendedores.

#2 Ten todo planificado antes de dejar tu empleo

No puedes tener todos los flecos cerrados, es imposible. Pero sí se necesita planificación. Emprender tu propia empresa te puede dar más poder a la hora de decidir qué tipo de trabajo quieres hacer. Y en el mundo del software hay un sinfín de posibilidades y opciones: no tienes que hacer lo justo lo mismo que haces en tu empresa. La consultoría, el desarrollo, la distribución de productos de terceros, formación y otros servicios son todos caminos viables hacia la independencia laboral. Haz una lista lo más detallada posible de todo lo que podrías hacer, todo lo que te gustaría hacer, y todo lo que te pueda interesar aprender a hacer. Teniendo esa lista te ayudará a estar preparado para reconocer las oportunidades cuando surjan.

Igualmente, haz una lista de todas las formas que tienes para encontrar y atraer clientes. Cuando des el salto, tienes que estar preferiblemente en una posición en la que tengas que decir que no a algunos proyectos por falta de tiempo.

#3 Cerrar tu primer proyecto en firme es clave

El primer contrato puede ser el más difícil, o el más fácil. No es tan infrecuente el hecho de dimitir como empleado y luego ofrecerle servicios al ex-empleador, haciendo lo mismo que hacías antes, pero con un acuerdo económico distinto -pero esto no se da siempre.

Otra posibilidad es dirigirse a una empresa de recursos humanos y que te llamen para puestos que te gusten. Una vez establecido el contacto puedes ofrecer tus servicios como autónomo-proveedor en vez de como empleado. Muchas empresas están más que dispuestas a llegar a este tipo de acuerdos por un sinfín de razones.

#4 Diversifica tus habilidades empresariales

Tus responsabilidades lo incluirán todo, no solo programar. La independencia implica hacerlo todo solo. Tendrás que hacer todo el trabajo que tu equipo y tu organización ahora hacen por ti. Esto es aplicable tanto a destrezas técnicas como a habilidades de gestión -o aprendes a hacer todo por tu cuenta o contratas a alguien para que lo haga por ti.

Si contratas a alguien tendrás que tener capacidad de organización si es una asesoría, o capacidad para gestionar personas si es un empleado, incluso saber liderarlas. Las dotes de comunicación pueden ser más determinantes en tu cuenta de resultados que el talento programando.

#5 Ofrece calidad y eficiencia

Esto suena a típico tópico. Pero hay a que aplicarlo. Piensa en el trabajador medio en una oficina: se estima que es productivo de tres a seis horas al día, según varias fuentes. El resto del tiempo se va en reuniones, emails, cafés, interrupciones varias y otras distracciones improductivas.

Cuando tú eres la empresa, puedes optar por estar sentado todo el día frente al ordenador comiendo donuts y bebiendo café, y pasar el día navegando por Internet. Pero solo te pagan por hacer cosas, así que si haces las cosas de manera constante, eficiente y bien podrás sacar la empresa adelante y sobrevivir. El diario Marca o Facebook son mucho menos interesantes que cobrar facturas. Y para cobrar los clientes tienen que estar contentos. Darles resultados extraordinarios hace que estén muy contentos. A mayor felicidad de los clientes, mayores serán tus ingresos.

#6 Se constante con las cosas pequeñas

Muchas de las tareas no implican una facturación directa, pero si las dejas de lado pueden llevarte directamente al fracaso (ya no hablemos de los líos legales o tributarios). Contabilidad, tesorería, cobros, seguro de responsabilidad y demás son las típicas cosas que son fáciles de olvidar o posponer… ¡No lo hagas!

Hay otra serie de detalles que de repente son importantes. Tienes que tener un horario laboral estable y estándar, para poder recibir llamadas y contestar correos con inmediatez. Tienes que tener ropa de trabajo para todo tipo de contextos, como reuniones con clientes y pre-clientes.

El look informal y desenfadado que se lleva en las empresas de programación puede que no funcione siempre cuando tú eres el único que representa a la empresa. Las personas te van a juzgar por sus expectativas y prejuicios inherentes a su forma de ser y eso es algo que no puedes controlar. Lo que sí puedes hacer es ser consciente de ello y anticiparte. No se trata de siempre llevar traje, ni de siempre ir informal. Se trata de preparar cada encuentro con una ropa adecuada para cada contexto.

#7 Haz marketing todo el rato

Si solo pones el foco en el trabajo por el que recibes una facturación directa y dejas todo lo demás de lado, lo más probable es que te quedes sin negocio. Presta atención a nuevas oportunidades que puedan salir con tus clientes actuales, pide recomendaciones, haz prospecciones constantemente, e intenta mantener un flujo de trabajo constante y ocupado.

El Marketing y las ventas no son el demonio. Son muy necesarios. Incluso si lo único que tienes es tu CV subido a un portal de empleo o de freelance, eso también es Marketing y tú eres el producto. Incluso los mejores clientes pueden sufrir contratiempos y no puedes estar a merced de un solo cliente. Si un porcentaje muy importante de tus  ingresos vienen de una sola fuente, no tienes una empresa, tienes un empleo…

#8 Organízate

Ya que eres responsable de todo, te tienes que organizar. Busca un sistema y aplícalo de forma constante. El hábito es más importante que el sistema en sí. Todo lo que hagas tiene que estar dentro del sistema y no depender de tu memoria. Es muy fácil caer en la trampa de pensar que te vas a acordar de todo lo que tienes que hacer, y quizás puedas al principio, pero es un esfuerzo que te agota y te desgasta.

Una agenda, un gestor de proyectos, no es más que una herramienta. Lo realmente importante es que la apliques a tu trabajo de forma constante, y no solo a las tareas técnicas que tengas pendientes, si no a todas las áreas organizativas que conlleva tener una empresa. El sistema te tiene que permitir tener todo lo que tengas pendiente por hacer bajo control.

#9 Hacerse autónomo no es un ascenso

Hay una gran diferencia entre hacerse autónomo y recibir un ascenso para gestionar personas. Si te ascienden a un puesto de gestión, eres responsable principalmente del trabajo de otros, junto con un montón de tareas administrativas que no le gustan a casi nadie… Si trabajas por cuenta propia, asumes todo ese trabajo de gestión además de tener que seguir haciendo todo el trabajo técnico de programación, evidentemente.

Hay muchos buenos programadores que terminan siendo muy infelices cuando son ascendidos a puestos de gestión. Hay perfiles técnicos buenísimos que simplemente rehuyen de convertirse en gestores de personas y del trabajo de terceros. Si tú eres uno de esos, no pasa nada, pero tenlo en cuenta y planifícate. Puedes empezar por reservar un día de la semana para todas las tareas de administrativas y, en cuanto puedas, emplear a un ayudante o apoyarte en una asesoría o una gestora para las cosas más críticas como toda la gestión tributaria.

Como programador freelance, eres tanto gestor como programador, y tienes que hacer ambas bien para tener éxito.

#10 No te pongas palos en la ruedas

No te conviertas en un obstáculo para el crecimiento de tu propia empresa. Llegará un momento en el que alcanzarás el límite de cuánto trabajo puedes hacer sin que afecte al negocio en general, tu salud, tu vida personal, familia, amistades, etc… y, sobretodo, sin quemarte.

Puedes subir precios, pero solo hasta un punto. Lo importante en estos casos es darse cuenta a tiempo y aprender a delegar. Todos conocemos casos de autónomos que mueren de éxito porque llega un punto en el que no pueden estar a todo, llega un cuello de botella que ahoga al negocio, y todo porque no saben delegar.

Si notas que las cosas salen con retraso y los clientes están esperando por ti, es una señal de alerta. Es mejor aprender a delegar más pronto que tarde.

#11 Aprende cuando contraer o expandir el negocio

Cuando llegas a tu límite puedes optar por contraer el negocio o expandirlo. Para hacer menos cosas, puedes optar por deshacerte de los clientes que no te interesan subiendo tarifas y optimizando el tiempo. Para expandirte, puedes contratar o subcontratar ayuda, delegando tareas o eliminándolas, y diversificar la oferta de servicios.

Hay varias formas de reducir el trabajo que tienes que hacer cada semana a la mínima expresión, obteniendo el mismo nivel de ingresos. Algunas de estas tácticas puede que funcionen en el caso concreto de desarrolladores de software autónomos, tales como la subcontratación de todo el trabajo que no tenga que ver con tu propuesta de valor (ya hemos mencionado arriba: asesorías, gestorías, etc…).

Lo realmente importante aquí es no seguir a pie juntillas los consejos de nadie, si no ir viendo lo que hacen otros y dar con una estrategia que funcione para ti.

#12 Piensa en producto

Los productos tienen una ventaja muy grande frente a servicios: los productos son escalables. Solo puedes vender una hora de tu tiempo a la vez, es finito y se acaba, pero un producto lo puedes vender mil y una veces, incluso mientras duermes o no estas trabajando.

Evidentemente hacer un producto es un quebradero de cabeza y hay que esforzarse. Tienes que diseñarlo, desarrollarlo y, lo más importante y difícil, venderlo.

Todo este proceso es costoso. Pero una vez que tienes tu producto a la venta y las cosas empiezan a ir más o menos bien, “solo” implicará de tu tiempo los mantenimientos. Piensa en crear software que demande un nicho concreto, y vende tus servicios en forma de mantenimiento. Si puedes incluso convertir algunos de tus servicios en productos, ¡hazlo!, es mucho mejor a la larga (un plugin, integraciones, etc…).

#13 Marca y red de contactos

Las personas tienen que saber quién eres, qué vendes y por qué. Incluso antes de tener el producto, es muy importante que trabajes la marca entre tu red de contactos. Llámale comunicación, marketing, branding o “dar la paliza”: tienes que difundir una imagen y un mensaje de manera constante sobre el tipo de producto/servicio y la calidad que ofreces.

Además de montar una web, y un blog, y un canal de YouTube y todas esas cosas que hace todo el mundo, lo mejor que puedes hacer es salir de la oficina y elegir un nicho geográfico que puedas abarcar (no importa si al principio es muy pequeño) y difundir tu mensaje hasta que todo el mundo en ese pequeño círculo te conozca. Empieza por las asociaciones locales, grupos profesionales de tu zona, pequeños eventos de software y trabaja esa red hasta que te conozcan todos.

Intenta dentro de ese segmento geográfico reducido diferentes enfoques, sé creativo, usa la imaginación, usa canales menos saturados como el correo físico con clientes potenciales importantes, y haz seguimiento. Procura por todos los medios saber por donde te llegan los clientes potenciales. Y hazles seguimiento, no les pierdas el rastro.

#14 Hazte prescindible

Si tienes miras a crecer como empresa y empresario, y no quieres ser una autónomo toda la vida, debes trabajar desde el primer día con el objetivo de hacerte prescindible. Tienes que coger el hábito de trabajar para hacerte prescindible desde el primer día. Si no concibes tu empresa con ese fin, luego cuando quieras serlo quizás ya es muy tarde.

No pierdas cada oportunidad de conocer a personas que en un momento dado pueden trabajar contigo. Lo ideal es trabajar con personas que compartan tu filosofía del trabajo, y la búsqueda tiene que ser constante. En un proceso de selección quizás no des con esas personas, es una misión constante.

Si recurres a procesos de selección, lo mejor es hacer pruebas antes de apostar por la formación. Uno después de varias semanas trabajando con una persona ya se hace una idea de si la cosa puede funcionar. Si la cosa funciona, bien. Si no, lo mejor es ser honestos y no cargar con más trabas de lo que exige el ser autónomo. No tiene sentido formar a alguien que no comparte tus valores.

Hasta aquí 14 de los 29 consejos para tener éxito como desarrollador autónomo. La semana que viene publicaremos la segunda entrega.

Este artículo 29 consejos para tener éxito como desarrollador autónomo (I) es original de Velneo.

Tagged , , , , , , | Comments Off on 29 consejos para tener éxito como desarrollador autónomo (I)

Pensar en listas es más natural

Hoy en día la gran mayoría de personas usamos a diario algún tipo de aplicación. Casi todas las aplicaciones gestionan información y disponen de interfaces adecuados para conseguir la mejor experiencia de usuario posible.
Tagged , , , | Comments Off on Pensar en listas es más natural

¿Cómo mejorar el soporte técnico de software?

No tengo tiempo para escribir una carta corta, así que escribiré una larga en su lugar. Mark Twain

.

Hoy iré al gimnasio. La próxima vez no pediré postre. Mañana madrugo. Empezaré a comer verdura, dejaré la carne. Menos TV y más lectura. Haré esa llamada. Pasaré más tiempo con mi familia. El 31 de diciembre dejo de fumar. Cumpliré el horario de esta reunión.

Retraso hábitos que son positivos para mi futuro. Sé qué hacer pero no lo aplico. Lo urgente supera lo importante. Parece fácil, es difícil.

Bugs sin resolver. Si estoy al teléfono no resuelvo bugs. No tengo tiempo para crear documentos. Voy a darme prisa con este cliente porque hay otro esperando. Es imposible refactorizar. Se repiten bugs y no los soluciono.

En soporte lo urgente gana a lo importante. No somos preventivos. No hay tiempo a pensar en el futuro. Pierdo tiempo hoy en vez de ahorrarlo mañana. Cambiar los hábitos será la clave del éxito para mejorar el departamento de soporte.

rawpixel-com-250087.jpg

 

Tus clientes no quieren hablar contigo

Los clientes no quieren hablar conmigo, porque los clientes no quieren tener problemas. El cliente te llama como último recurso. Intenta resolver el problema, después busca en google y por último llama. Creía que los clientes prefieren el teléfono al autoservicio web y los estudios realizados por CEB demuestran que no es así.

soporte.png

Hace 10 años el 66% de los clientes usaba en primer lugar el teléfono.

Hoy día sólo el 25% usa como primer medio el teléfono.

Mi preferencia por el teléfono partía de asunciones erróneas:

.

  • El autoservicio web se usa para incidencias fáciles y sencillas, cuando las incidencias son complejas el cliente prefiere llamar.

 

  • El servicio web es para clientes que tienen 20 años, son técnicos y manejan internet.

 

  • Es difícil y caro montar un buen sistema de autoservicio web.

 

Como cliente me da igual el canal, quiero soluciones sencillas y rápidas con poco esfuerzo por mi parte.

 

Solución rápida, problema persiste

Si tengo prisa no pienso, remedios rápidos. Me duele la cabeza: me tomo aspirina,  mi hija llora: le pongo dibujos, estoy cansado: veo tele, software falla: le pongo código parche, se cuelga el software: reinicio, ordenador lento: pongo más memoria. Remedios rápidos problemas que vuelven, tu niña volverá a llorar, el bug se reproduce y el ordenador se queda sin memoria.

Según estudios The effortless experience, la mitad de incidencias que creemos solucionadas vuelven, una, dos, tres, cuatro y hasta cinco veces  de manera explícitas o implícitas.

.

Tipos de incidencias.png

 

Anticipar, profundizar, buscar problemas colaterales, nos evita que los clientes vuelvan a llamar. Un indicador para medir este problema es el número de soportes de un mismo cliente en 7 días. Me sorprendo cuando veo las veces que durante 7 días nuestros clientes vuelven a contactar por la incidencia original o adyacente.

 

¿Cuál es tu problema real?

Mi hija llora, ¿Por qué lloras? me dice que está aburrida y pide Pocoyó. Si le digo que no vea tele, llora, si juego con ella es la niña más feliz del mundo.

No contamos problemas, pedimos soluciones. Un cliente me dice que quiere una columna en el informe, le digo que NO y se cabrea. No dedico tiempo a conocer el problema original del cliente. El problema original no tiene que ver con la solución propuesta o las soluciones alternativas que le puedo ofrecer; exportar a excel, usar otra opción, etc …

¿Cómo mejoro?

  • No soy rápido diciendo NO. Centro mi energía en conocer el problema original, la raíz de la consulta, la motivación, el interés. ¿Qué tiene el cliente en la cabeza?

 

  • No invierto energía en explicar el NO. Centro mi energía en dar alternativas, soluciones al problema. Cuando alguien te plantea una petición doy alternativas de solución al problema original.

 

  • No me centro en la petición. En un software tengo que conocer los contextos de uso, el momento, los usuarios, la instalación, existen muchas variables que condicionan la solución al problema. Para un problema existen muchas soluciones, no sólo la petición original.

 

.

.

Bibliografía y gráficos: The effortless experience & CEB

 

 

 

Tagged , , , | Comments Off on ¿Cómo mejorar el soporte técnico de software?

Usa la función de campo isModified()

Tradicionalmente en Velneo hemos usado el comando ¿Ha cambiado el campo? para controlar cuando el valor de un campo había sido modificado. Gracias al uso de la función de campo isModified() podemos detectar si el valor de un campo ha cambiado de forma directa en la fórmula ahorrándonos dos cosas...
Tagged , , , | Comments Off on Usa la función de campo isModified()

¿Cómo accedo a la Lista o Ficha de cualquier Vista de datos de mi Aplicación?

Una de las tareas que inicialmente más me costó asimilar fue cómo se podía acceder a los registros de un objeto Vista de datos.

Sigue leyendo para averiguar el porqué.

Cuando uno descubre Velneo, viniendo de un entorno de programación totalmente diferente, debe asumir que va a tener que aprender un nuevo paradigma de programación y esto conlleva algunas dificultades para entender algunos aspectos esenciales del nuevo lenguaje.

vista de datos

 

Como ya sabemos un objeto Vista de datos es un objeto del Proyecto de aplicación que nos permite mostrar en el Interfaz un conjunto de registros de una tabla del Proyecto de datos.

En Velneo se denomina Lista al conjunto de registros y Ficha a un solo registro.

Primero me hice una serie de preguntas en lo que respecta al acceso y gestión de las Listas y Fichas que están contenidas en los objetos gráficos de la Aplicación.

Respondiendo a estas preguntas entenderemos el mecanismo de Velneo y quedará resuelto el problema planteado.

1ª ¿Dónde puedo colocar el objeto Vista de datos en el Interfaz de mi Aplicación?

Los objetos de Vista de datos normalmente irán insertados en un formulario a través de un control de tipo Vista de datos.

También podemos colocar un objeto Vista de datos en un formulario de un Dock del objeto autoexec.

Las Cestas globales también contienen una Lista que podemos mostrar como una Rejilla en un Dock del autoexec.

2ª ¿Desde dónde puedo acceder a la Lista o Ficha de una determinada Vista de datos?

Si no usamos el API, en Velneo solo tenemos acceso a los controles de un formulario desde los manejadores de evento del propio formulario.

Desde un proceso solo tenemos acceso a los controles de objeto autoexec.

3ª ¿Qué comando o comandos me permiten dicho acceso?

En Velneo se entiende por Procesar como la acción de acceder a la Lista o Ficha de la Vista de datos.

Disponemos del comando Interfaz:Procesar que, tal como dice la ayuda, permite acceder a los datos de un control de tipo objeto usado en un formulario o en cualquiera de los subformularios del mismo.

En un control de tipo objeto podremos presentar una ficha o una lista de registros de una tabla.

Mediante este comando podremos acceder a los datos de dicho control e interactuar con ellos, ya sea para leerlos, modificarlos, borrarlos, etc.

En un proceso usaremos este comando para acceder a los objetos Vista de datos de un Dock del autoexec.

Para procesar la Lista de una Cesta global disponemos del comando Cesta:Procesar.

4ª ¿Tiene algo que ver esto con los conceptos de Origen y Destino de los procesos en Velneo?

Por supuesto, si entendemos los conceptos de Origen y Destino, entenderemos porqué necesitamos el comando Procesar.

Cuando ejecutamos el comando Interfaz:Procesar o Cesta:Procesar se crea un nuevo subproceso dentro del manejador de evento o proceso actual. El subproceso cambiará el Origen a la Ficha o la Lista de la Vista de datos que hayamos seleccionado y de esa forma tenemos acceso inmediato.

Cuando finaliza el subproceso, se vuelve a recuperar el Origen que había antes de ejecutar el comando Procesar.

 

Para resumir:

  • En Velneo programamos mediante manejadores de evento y procesos cuyo Origen determina a qué Lista o Ficha tenemos acceso.
  • El comando Procesar crea un nuevo proceso (en realidad es un subproceso) que cambia el Origen a la Lista o Ficha de la Vista de datos.
  • La única condición a tener en cuenta es que la Vista de datos sea accesible desde el manejador de evento o proceso.

 

Una vez entendido cómo funciona el comando Procesar, nos daremos cuenta de la gran potencia de esta forma de programar.

¿Alguna duda en la sala sobre la vista de datos y el comando procesar?

Si es así, cuéntamela dejándome un comentario mas abajo.

La entrada ¿Cómo accedo a la Lista o Ficha de cualquier Vista de datos de mi Aplicación? aparece primero en AyudaVelneo.

Tagged , , , , , , , | Comments Off on ¿Cómo accedo a la Lista o Ficha de cualquier Vista de datos de mi Aplicación?

La productividad de un buen programador vs el ratón

Un buen programador además de usar bien su cerebro trata de ser lo más productivo posible. El porcentaje de uso del editor de código en el desarrollo de una aplicación es muy elevado. Por ese motivo ser ágiles a la hora de escribir código es fundamental para ser más productivos.
Tagged , , , | Comments Off on La productividad de un buen programador vs el ratón

Nuevo estilo de comentarios en Velneo vERP

A raíz del feedback recibido en “El comando REM consume tiempo, sin comentarios” hemos trabajado en el que será desde ahora el nuevo estilo de comentarios que usaremos en Velneo vERP a partir de la versión 22.
Tagged , , , | Comments Off on Nuevo estilo de comentarios en Velneo vERP

No tengo tiempo para iniciarme en Velneo

Hace unos días realicé una encuesta a los suscriptores para saber cual era su principal problema a la hora de desarrollar con la plataforma. Uno de los problemas mas repetidos era “No tengo tiempo para iniciarme en Velneo“.

Resulta curioso que el principal problema no sea como crear vistas de datos, como lanzar las búsquedas o como utilizar los enlaces indirectos.

El principal problema es el tiempo.

 

iniciarme en velneo

La verdad es que no se como me sorprende.

En esta sociedad en la que vivimos se da una paradoja muy interesante en las empresas de programación:

el principal bien que tenemos es el tiempo… y nos dedicamos a programar a toda prisa nuevas funcionalidades en nuestras aplicaciones sin pararnos a pensar si el desarrollo que estamos realizando es realmente necesario para nuestros clientes.

Me pasa incluso a mi. Llevo queriendo sacar tiempo para empezar a desarrollar en QML ya ni me acuerdo desde cuando… y la semana pasada tampoco lo conseguí.

Si no lo habéis hecho todavía, os aconsejo leer este post de Alfonso Gutiérrez. Es para pensar y reflexionar sobre ello.

Causas de la “escasez de tiempo”

La gran mayoría de los que desarrollamos en Velneo somos pequeñas empresas o autónomos. No tenemos grandes departamentos en nuestra empresa de ventas, contabilidad ni de programación.

Estoy convencido de que una de las principales causas de la escasez de tiempo que impide “iniciarme en Velneo” es el “síndrome del hombre orquesta“: como voy a dejar que otro haga esto.. si yo soy el que mejor lo hace.

Gran error.

Yo facturo, yo vendo, yo me encargo de la contabilidad, yo programo, yo hago las nóminas, etc etc etc. y al final no tengo tiempo para lo importante.

Tener tiempo para pensar que vamos a desarrollar en las aplicaciones para hacer rentables nuestras empresas.

Si te sirvo de ejemplo, te voy a contar 4 medidas que he tomado para “ganar tiempo”:

  • Contratar una asesora: Lo siento no soy contable ni asesor fiscal. En España hay demasiados trámites burocráticos y cada 3 meses hay que presentar impuestos. Susana se encarga de todo esto. Es lo primero que hice cuando me decidí a ser autónomo hace ya algunos años. No me arrepiento en absoluto… es mas cada 3 meses me compadezco de ella.
  • Contratar un diseñador para la web: la primera versión de la web la desarrolle, la instalé y la configuré yo. Cuando decidí que era hora de actualizarla por completo (con el aspecto que ves ahora) lo primero que decidí es que no la iba a hacer yo (y se hacerlo puesto que ya lo había sufrido una vez). Otra decisión acertada. En este caso fue mi amigo Dan quien se encargó de ello.
  • Aprender a decir NO y rechazar algunos trabajos: antes decía a todos los trabajos que me llegaban que si. No me preocupaba si “eran rentables” sólo me preocupaba “poder facturar“. Si te fijas acabo de hacer una comparación muy sutil pero bastante importante “rentabilidad vs facturación“. Ahora sólo cojo trabajos que van a ser rentables.
  • Externalizar todos los trabajos mecánicos que tengas en tu empresa. El tiempo que ganarás compensará con creces la inversión que tengas que realizar.

La cuenta es muy sencilla. Ponte un precio/hora (el precio que quieres ganar por tu trabajo). Mira las horas que inviertes en trabajos mecánicos o trabajos que podrías delegar. Multiplica tu precio hora por esas horas que empleas en trabajos que podrías delegar. Y ahora mira cuanto te costaría delegar esos trabajos. ¿Te compensa? A mi te aseguro que si.

Consejos para “iniciarme en Velneo”

El primer consejo que te daría es que comiences poco a poco (vamos, que no quieras desarrollar un ERP el primer día… ni siquiera el segundo jejeje) y sobre todo que te comprometas.

Trata tu formación en Velneo como si de un proyecto de unos de tus clientes se tratase. Resérvate horas en tu planificación semanal. Será la única forma de que avances.

Puedes comenzar con estos post que he seleccionado para “Comenzar con el desarrollo en Velneo“.

Después puedes realizar algún curso online gratutio como este o de pago como el programa formativo “Despega con Velneo V7“.

Por último si no consigues comprometerte con la formación, lo mejor que puedes hacer es un curso presencial. De esta forma te comprometes si o si.

Repite conmigo “voy a iniciarme en Velneo”.

¿Qué medidas vas a tomar para conseguirlo?

Cuéntamelas dejándome un comentario mas abajo.

 

La entrada No tengo tiempo para iniciarme en Velneo aparece primero en AyudaVelneo.

Tagged , , , , , , , | Comments Off on No tengo tiempo para iniciarme en Velneo