El proceso de transición de un desarrollador a la plataforma Acumatica xRP
Nota del editor: En su entrada, Brian comparte su punto de vista único sobre su trayectoria hasta convertirse en desarrollador de Acumatica tras pasar dos décadas como programador «de arriba abajo». Ofrece una perspectiva interesante, junto con algunos sabios consejos para otros desarrolladores que se incorporan a la familia Acumatica procedentes del mundo de la programación «a la antigua usanza», que sin duda resultarán de interés para muchos de los lectores de este blog del ámbito de los sistemas ERP.

El mundo está lleno de grandes figuras… grandes músicos, grandes líderes y, por supuesto, grandes desarrolladores. Sea cual sea la grandeza a la que aspiras en la vida, nadie empieza siendo grande, pero todos tienen algo en común: todos deben empezar por algún sitio.
Uno de mis objetivos profesionales es convertirme en un gran desarrollador en la plataforma Acumatica xRP. Aunque he logrado avances significativos, nada puede sustituir a la experiencia, y cada día supone una nueva oportunidad de aprendizaje. Tras 20 años programando en PROGRESS 4GL para dar soporte a un sistema heredado, el paso a C# y a la plataforma Acumatica xRP ha estado lleno de momentos de frustración, de revelación y, sí, incluso de grandeza. Si acabas de empezar y sigues leyendo para conocer mi trayectoria, espero que te des cuenta de que otros han pasado por lo mismo que tú: saber dónde encontrar los mejores recursos es fundamental y que TÚ PUEDES tener éxito en este proyecto.
Retos a los que hay que hacer frente durante la transición
El enfoque «de arriba abajo» NO es lo mismo que el enfoque orientado a objetos… salvo cuando sí lo es
Para comprender mis dificultades como desarrollador de cierta edad, primero debes entender que no crecí en el mundo de la programación orientada a objetos (POO). Mi mundo era de tipo «de arriba abajo», en el que se empieza por la parte superior de la página y se le indica al programa exactamente qué debe hacer. Las habilidades de programación se basaban en el dominio del lenguaje y la sintaxis, la comprensión de los ámbitos de las transacciones y unas interfaces de usuario relativamente estáticas. Al pasar a C#, la idea de que una sola interacción pudiera desencadenar una validación y una actualización aparentemente aleatorias, incluso antes de que el usuario hubiera terminado de rellenar el formulario, me parecía un auténtico CAOS. Pero entonces, por fin, comprendí un concepto que cambió el rumbo de mi transición a la POO.
“Top-Down is NOT the same as Object-Oriented… except when it is.” What I mean here is that I finally realized that there is a structure in the chaos. Sure, an event may fire in the middle of your current code block, but there IS an order. By realizing that I can write a code block to execute “top-down” as I was accustomed: event handlers virtually exist as subroutines with an implied “if <condition> then…” within my code. Code within OOP is still “top-down” in a way, but with the ability for real-time interaction with the code to alter its behavior, thus enabling a more natural interaction with the end-user. This gave me a point of reference as a pathway towards enlightenment.
El aprendizaje en aislamiento virtual
Cuando mi empresa tomó la decisión de implantar el ERP de Acumatica, a mi compañero se le asignó la tarea de gestionar el proyecto en su conjunto y configurar el sistema. Tras haber dedicado casi 18 años a mejorar nuestro sistema heredado, fui designado como nuestro nuevo desarrollador de C# para Acumatica. Como equipo, aprendimos la parte de la aplicación del software, y yo me centré en aprender C# y la plataforma Acumatica xRP, mientras que a mi compañero le tocaron los GI, los escenarios de importación/exportación, los eventos de negocio, etc. Como resultado, ambos teníamos la aplicación como punto de referencia común, pero estábamos prácticamente aislados el uno del otro a la hora de aprender nuestras nuevas habilidades. Nuestro socio de Acumatica nos proporcionó un apoyo considerable desde el principio para la planificación y la implementación, pero no me quedó más remedio que arremangarme y ponerme a estudiar si quería aprender a desarrollar en la plataforma Acumatica xRP. Debo decir que, aunque había algunos recursos de aprendizaje disponibles, fue una etapa especialmente intimidante y emocionante en mi carrera profesional.
Prueba y error, y error, y error
A Thomas Edison se le atribuye la siguiente frase: «Los resultados negativos son justo lo que quiero. Para mí son tan valiosos como los resultados positivos. Nunca podré descubrir qué es lo que funciona mejor hasta que descubra lo que no funciona». Esto resume mi experiencia de aprendizaje, sobre todo al principio. Recuerdo aprender lo suficiente para hacer algo, sentir una gran emoción ante el éxito y, a continuación, hundirme en la desesperación al intentar repetir ese éxito. Habiendo dedicado la mayor parte de mi carrera a obtener resultados —a veces incluso mientras hablaba por teléfono con la persona que hacía la solicitud—, aprender en un aislamiento casi total me llevaba por caminos que, inevitablemente, acababan en una semana de prueba y error, y error, y aún más error. Te ruego que aprendas de mi ignorancia… Aunque este enfoque te enseña cientos de formas de no hacerlo, SÍ que hay una forma mejor. Solo tienes que saber dónde buscar. Por suerte para ti, eso es lo que viene a continuación… ¡Sigue leyendo!
Recursos encontrados
Esto no ha hecho más que empezar
Si aún no sabes C#, primero tienes que aprenderlo. Cuando estés listo para empezar, échale un vistazo a la página web de Microsoft, donde encontrarás algunos recursos formativos gratuitos.
Una vez que domines los conceptos básicos de C#, he descubierto que aprendo más rápido cuando pongo en práctica lo que he aprendido. No te preocupes si aún no eres un experto en C#: la experiencia y los errores son los mejores maestros. Entra en Acumatica Open University (http://openuni.acumatica.com/) para comenzar tu andadura. Yo aprendí con una serie anterior de guías de formación y vídeos de Open University, pero ahora he empezado a repasar las nuevas guías de formación que hay allí. La documentación actualizada es increíble y, incluso después de dos años desarrollando con Acumatica, el nuevo material me está aportando conocimientos nuevos y muy útiles.
Un recurso muy útil para los nuevos desarrolladores de Acumatica es la página «Iniciación para nuevos desarrolladores de Acumatica», que ofrece una guía completa con todos los recursos que necesitas, incluidas guías de inicio rápido, documentación y formación para desarrolladores.
Se necesita todo un pueblo
Una vez que hayas completado los primeros cursos de formación y hayas seguido la Guía de inicio rápido para desarrolladores, tu «caja de herramientas» debería empezar a llenarse de habilidades que te permitan realizar mejoras funcionales significativas en Acumatica. Si solo tuviéramos que reproducir lo que aparece en las guías de formación, ¡ya estaríamos listos! Sin embargo, nada de lo que hago parece aparecer nunca en las guías de formación diciendo: «Brian, solo tienes que hacer esto». Al no haber otro desarrollador en la sala a quien preguntar, necesitaba ayuda personalizada, y me refiero a un volumen de asistencia que no te puedes permitir comprar en horas de soporte para desarrolladores. Afortunadamente, no hace falta tener mucho dinero para obtener ayuda con la mayoría de las dudas de los desarrolladores.
La clave para evitar la enorme frustración que sentí al principio es interesarse desde el principio por pedir ayuda a la comunidad. Entra en Stack Overflow y busca palabras clave relacionadas con tu problema. Si empiezas la búsqueda con [Acumatica], los resultados se mostrarán entre las preguntas etiquetadas con «Acumatica». Algunos de los excelentes desarrolladores que he conocido en los últimos dos años empezaron como contactos en Stack Overflow. Acumatica, como empresa, y el programa Acumatica Developer MVP se aseguran de que todas las preguntas etiquetadas con «Acumatica» sean vistas. Conseguir una buena respuesta tiene más que ver con cómo formulas la pregunta, pero eso es tema para otro artículo. Digamos simplemente que debes incluir toda la información que puedas, junto con ejemplos de código, y dejémoslo ahí por ahora.
No se trata de lo que sabes, ¡sino de a QUIÉN conoces!
Al terminar mis primeros seis meses de desarrollo, seguía teniendo dificultades constantemente. Aunque por fin había adoptado StackOverflow como mi fuente principal de ayuda, la comunidad era mucho más pequeña de lo que es ahora… incluso hace solo 18 meses. Nuestro socio de Acumatica me puso en contacto con Mark Franks, el evangelista de la plataforma de Acumatica, y ambos me dijeron: «Ve a la Summit a finales de enero y participa en el hackatón». Recuerdo que pensé: «¿Un hackatón, eh? ¡Aún no tengo los conocimientos suficientes para hacer nada!». Le dije a Mark que estaba aprendiendo prácticamente aislado y que realmente necesitaba una forma de integrarme mejor. Él insistió: «De verdad que tienes que ir al Hackathon. Queremos gente de todas las áreas en los equipos, y harás contactos que te ayudarán a aprender». —Parafraseado de memoria (Nota del editor: Brian tiene buena memoria).
Le llevé la información a mi jefe, que siempre me ha apoyado. Sin dudarlo, me dijo: «¡Resérvalo!». Voy a dejarlo muy claro. NADA acortó mi curva de aprendizaje tanto como un fin de semana en mi primer Hackathon de Acumatica. Ni la Summit. Ni el curso de formación que hice en la Summit. NADA. El MVP de nuestro equipo, Joshua van Hoesen, tuvo la amabilidad de responder a mis preguntas y me dio información sobre cosas que ni siquiera sabía que debía preguntar. Cuando volví a casa, ya sabía cómo depurar mi código con el depurador integrado de Visual Studio, aunque mi instancia de desarrollo estuviera en un servidor remoto. No pretendo convencerte de que gastes dinero en asistir a la Cumbre y al Hackathon. Lo que te digo es que este punto de inflexión transformó mi experiencia de «aprendiz en aislamiento virtual» a «desarrollador remoto capacitado».
El viaje continúa
Los profesores son los mejores alumnos
Hace años, descubrí que el grupo de correo electrónico PROGRESS (PEG) impulsó mi aprendizaje de forma exponencial cuando empecé a responder a las preguntas que planteaban los demás. ¿Por qué? Muy sencillo: los profesores son los mejores alumnos. La investigación y la variedad que van más allá de la visión cotidiana tienen la capacidad innata de enseñar más a quien responde a las preguntas que a quien busca desesperadamente esa pista que resuelva el problema.
Esperaba repetir la experiencia que tuve hace tanto tiempo, y el apoyo de la comunidad en StackOverflow está demostrando que poco ha cambiado en 20 años. Cuando hago una pregunta, necesito una respuesta, pero en ese momento me cuesta mucho ir más allá de solucionar lo que no funciona. Compartir mis conocimientos requiere pensar en qué hay en la pregunta, qué creo que podría faltar en ella, cómo podría lograr el objetivo y cuál es la mejor forma de transmitir mi respuesta para que la persona que pregunta pueda entenderla. ¿Son mis respuestas siempre las mejores? ¡Por supuesto que no! Solo llevo dos años en esto. Pero la mayoría de las veces son de ayuda. Los desarrolladores a menudo solo necesitan un empujoncito en la dirección correcta, y todos podemos responder a una pregunta de vez en cuando.
Toma buenos apuntes
Al volver de la última cumbre, sentí un profundo deseo de unirme a personas como Sergey Marenich y Yuriy Zaletskyy para escribir un blog para desarrolladores. Llevaba tiempo utilizando Stack Overflow como medio para documentar mis dificultades (a través de las preguntas que planteaba) y me di cuenta de que esas lecciones aprendidas podrían ayudar algún día a los nuevos desarrolladores. De ahí que naciera Acumatica.dev. La conclusión clave es que, sea lo que sea lo que te ayude a aprender mejor, toma buenas notas. Ya sea en un blog, en un cuaderno o documentando tus preguntas y resultados en publicaciones de Stack Overflow, encontrar una forma de volver a las lecciones que has aprendido refuerza lo aprendido. Y lo que es igual de importante, permite compartir ese aprendizaje con los demás para que, con el tiempo, todos podamos convertirnos en grandes desarrolladores.
Solo estoy aquí para «hackear» (ejem, ejem) – Hackathon, 2.º año
A finales de enero, tuve la suerte de poder volver para participar en mi segundo Hackathon (ah, y sí, también en la Cumbre que vino después). Una vez más, el Hackathon fue lo más destacado de mi año. Aunque el primer año hice contactos que me ayudaron a lo largo de todo el año, este año pude volver a verlos, conocer a más desarrolladores fantásticos e incluso contribuir activamente al proyecto de nuestro equipo. Por mucho que haya disfrutado de la Cumbre y de la sesión de formación sobre aplicaciones este año, el Hackathon sigue siendo para mí el evento del año. El MVP de nuestro equipo, Fernando Amadoz, me ayudó a ir más allá de mi nivel habitual de desarrollo y a ampliar mi visión del mundo del desarrollo de Acumatica.
Mi trayectoria apenas está empezando, pero ya he recorrido un trecho más largo que algunos de vosotros… aunque solo sea un poco. Espero de todo corazón que la historia de mi trayectoria, mis dificultades y mi camino hacia la excelencia os anime, quizá incluso os inspire, pero, sobre todo, os acerque un poco más a convertiros en los grandes desarrolladores que todos sabemos que podéis llegar a ser.