Desarrollador de Odoo: cuáles son los conocimientos que tiene según su seniority

23 de marzo de 2024 por
Gustavo Orrillo
| Sin comentarios aún
 

Un tema que se brinda para acalorados debate es "que conocimientos debe tener un desarrollador de Odoo". Sobre todo porque hay lugares en Latinoamérica publican avisos donde solicitan un desarrollador de Odoo junior "full-stack". Lo cuál es ridículo e indica dos cosas: el reclutador no sabe lo que pregunta y además busca lo que conocemos en Argentina como un programador triple-B: bueno, bonito y barato. A continuación, una fotografía del reclutador: 


Esos reclutadores son una manga de miserables. Tenía que ponerlo por escrito.

Pero más alla de mi deseo de hacer catarsis, hay un gran desconocimiento sobre los requerimientos de un desarrollador Odoo. Por ejemplo estos son los requisitos que ví en una oferta laboral de desarrollador senior de Odoo días atras: 

  • Experiencia previa en el desarrollo de aplicaciones utilizando Odoo.
  • Conocimiento sólido de Python y experiencia en desarrollo web (HTML, CSS, JavaScript).
  • Capacidad para trabajar de manera independiente y en equipo.
  • Excelentes habilidades de comunicación y resolución de problemas.

Nada que indique verdadero seniority con Odoo (solo "experiencia previa"). Trabajo en equipo!!!! (skill muy sobrevalorado, el que les escribe es un excelente desarrollador de Odoo y fue calificado por uno de sus antiguos jefes como "alguien que odia la humanidad"). Hasta mis gatos pueden aplicar! Es por ello, para brindar un poco más de información sobre el tema, pasamos a describir que debe saber un programador junior, un semi-senior y un senior.

Programador junior

Como dice el título, un programador junior no puede hacer mucho. Por algo es junior, no es la verdad revelada. El junior es alguien que necesita mucha guía. Necesita un mentor al lado suyo todo el día. Es alguien que sabe programar y con suerte conoce Python. Tenemos que asumir que tiene más conocimientos de ingeniería espacial que de Odoo, es por ello que necesita mucho mentoring. El que pide que un programador junior que sea full-stack, que domine Javascript y Odoo es poco realista. Es la misma clase de personas que le escriben a Santa Claus a fin de año y esperan que les responda. 

En pocas palabras, un programador de junior Odoo es un recurso caro y un riesgo, ya que puede dejar el equipo antes de ser productivo (este es uno de los factores que condicionan seriamente la posibilidad de crecimiento de los partners de Odoo, por mas que vendan las licencias por millares).

Un programador junior debido a su escasa experiencia no puede resolver muchos problemas, es por eso que todas las responsabilidades que se le asignen deben ser de baja complejidad y bajo supervisión. Es ideal que el programador junior reciba una capacitación básica (por ejemplo la que se obtiene leyendo el Odoo Development Essentials).

Un programador junior al final de su año de experiencia podrá:

  • Importar datos maestros (como productos y clientes) utilizando xmlrpc
  • Desarrollar módulos con funcionalidades básicas
  • Agregar o modificar campos a objetos en modelos de Odoo
  • Crear vistas en Odoo
  • Modificar vistas y reportes existentes
  • Realizar tareas de mantenimiento en Odoo, como por ejemplo modificación de permisos y secuencias, o instalación de módulos 

Programador senior

El programador senior es el que realmente es productivo. Puede hacer muchas cosas entre ellas:

  • Migrar Odoo
  • Migrar módulos complejos de Odoo
  • Puede llevar a cabo tareas de desarrollo complejas en Odoo
  • Puede desarrollar módulos web y tiene los conocimientos necesarios de Javascript. Puede llegar a tener conocimientos de otros frameworks de Javascript (por ejemplo Vue o React) y conoce como resolver problemas como impresión de etiquetas o scanners de códigos de barra
  • Tiene fuertes conocimientos funcionales. Si bien no puede liquidar impuestos, conoce los asientos contables que deben hacerse para cada una de las transacciones monetarias. A nivel stock, sabe como implementar Odoo en un depósito y tiene experiencia con producción. Lo mismo con ventas y CRM
  • Conoce como usar herramientas de colaboración (por ejemplo git) para trabajar en equipo
  • Es capaz de hacer de mentor y capacitar a desarrolladores con menos experiencia.
  • Puede diseñar la solución a los problemas planteados en los tickets de mantenimiento del sistema
  • Puede escribir las propuestas comerciales y diseñar los proyectos para clientes

El senior no requiere supervisión y sirve de mentor para otros programadores.

Programador semi-senior

El semi-senior es la transición entre el junior y el senior, es todo lo que hay en el medio. No encuentro mejor manera de describirlo. Es una zona de experiencia importante, debido a que los juniors que se desaniman dejan en este estadio (es muy dificil que un senior haga un cambio de carrera).

Como gran nota puedo agregar, el semi-senior ya no necesita tanta supervisión. Sería mínima en este caso debido a que aun sigue en proceso de aprender (entre otras cosas) como funciona internamente Odoo. Pero ya puede estar en contacto con el cliente, tiene algunos conocimientos funcionales, se le pueden asignar tickets de mayor complejidad y empieza a desarrollar módulos más complejos.

La confusión del programador full-stack

En Odoo tenemos el desarrollo back-end (desarrollo de módulos tradicionales, con sus vistas y operaciones) que se realiza mayormente en el lenguaje Python. Y desarrollo front-end que se utiliza para los módulos web (como por ejemplo portal o e-commerce) o el punto de venta (lo cual se realiza utilizando el framework de Javascript llamado OWL).

La realidad? El 90% del trabajo (por no decir el 100%) es trabajo de desarrollo back-end. A menos que uno trabaje en una consultora que se dedique a hacer trabajo de e-commerce o se especialice en point-of-sale. Pero es muy raro. En Argentina (y me atrevería a decir Uruguay también) el 95% del trabajo se realiza en back-end. Por eso cuando uno contrata a un programador, es más importante que conozca contabilidad que sepa Javascript. Un programador que sepa contabilidad va a poder resolver los problemas que plantea la problemática impositiva argentina, no así un programador que sepa Javascript. Alguien que sepa Javascript no te puede desarrollar la localización argentina, alguien que sabe contabilidad si.

Ahora, por qué se pide un programador full-stack? (y por qué piden conocimiento de Javascript en lugar de aclarar y pedir que conozcan jQuery?). Honestamente muchos lugares no saben lo que necesitan, entonces terminan pidiendo lo que ya conocen, que es lo que vieron en otros frameworks de desarrollo (por no decir que piden cualquier cosa, muchos googlean job postings parecidos y postean una compilación de los mismos). 

Es un gran error debido a que un programador de Odoo productivo tiene un muy sólido conocimiento funcional. Pero bueno, la humanidad es así. Cuando uno aplica a esos lugares debe saber que está aplicando a lugares con poco conocimiento de Odoo.

Los problemas que plantea la curva de aprendizaje

Que un programador sea productivo con Odoo lleva años (no es un problema solo de Odoo, lo mismo sucede con SAP y otros ERPs). En el caso de quien les escribe, una década. Al fin y al cabo, como dicen en Outliers, uno necesita 10,000 horas de practicar un tema para dominarlo.  Uno no puede evitar esta curva de aprendizaje, pero lo que puede hacer es mitigar los inconvenientes de la larga duración de este aprendizaje.

Cuales son las acciones que se pueden tomar para mitigar estos inconvenientes y hacer que sus programadores sean más productivos? Algunas ideas:

  • Hacer que lean código de otros. En este aspecto los code-reviews son actividades muy útiles no para buscar culpables o satisfacer el ego del revisor, pero para transmitir el conocimiento de como se resuelven los problemas y mejorar el código de uno. No nos olvidemos que el fin del code-review es mejorar el producto final, no satisfacer el ego (para eso esta el psicólogo)
  • En la misma línea, leer el código de módulos de Odoo y de OCA. En lo posible discutirlo con otros compañeros. Son actividades que ayudan para conocer mejor el desarrollo de Odoo.
  • Mentoring constante. El hecho de poner un desarrollador experimentado al lado de un junior para que lo capacite día a día en los "secretos" del desarrollo en Odoo es invaluable
  • Previo a resolver cada ticket, tener cinco o diez minutos con un senior sobre como resolver dicho ticket. De esta manera el desarrollador junior va a empezar a conocer como funcionan los internals de Odoo para resolver problemas planteados en la contabilidad como por ejemplo conciliación de facturas con pagos, o problemas de inventarios que involucran movimientos múltiples entre diferentes ubicaciones.

En definitiva, uno debe buscar el desarrollo de actividades diarias para que todos los días un desarrollador junior (o semi-senior, al fin y al cabo sigue aprendiendo). Necesita armar un entorno de trabajo de aprendizaje continuo (si es presencial, mejor). Al fin y al cabo uno busca agregar actividades de aprendizaje diarias para incrementar "los kilometros" que tiene de experiencia el desarrollador junior. 

Honestamente creo que este acompañamiento diario y a gotas del desarrollador es más importante que una capacitación formal. Un curso de capacitación es muy importante (por algo hay que empezar) pero acompañarlo diariamente a los programadores ayuda mucho y transmite experiencia real.

Es algo similar al entrenamiento de sevens de rugby. Cuando uno entrena a media máquina (con poca exigencia) todas las jugadas salen. No es el entrenamiento que sirve para el sevens de rugby. El entrenamiento que sirve es el de estar con las pulsaciones a tope por muchos minutos seguido. Aquel entrenamiento en el cual se simula la realidad del partido (que es estar con las pulsaciones al tope y sin aire). Es por eso que la capacitación del desarrollador de Odoo debe ser continua y día a día.

Gustavo Orrillo 23 de marzo de 2024
Compartir
Categorías
Archivar
Identificarse dejar un comentario