¿Cómo manejas ser el único técnico en un equipo que no es técnico?

La empresa en la que trabajo actualmente tiene una cantidad terrible de procesos que requieren trabajo manual, por lo que están muy limitados en la cantidad de proyectos que pueden tomar, ya que sus procesos no escalan, han llegado a un punto en el que tienen que rechazar proyectos. . Estos procesos dependen en gran medida de configuraciones manuales, ejecución manual y escritura de documentos de Excel, Word y similares, un ejemplo de esto, uno de estos procesos consiste en llenar más de 800 celdas en una hoja de cálculo manualmente, otro exportar todas esas celdas manualmente a otro interno. herramienta y así sucesivamente.

Fui contratado por esta empresa hace unos seis meses con un rol de líder técnico, con la intención de hacer la transición del departamento actual en el que estoy del trabajo manual al trabajo automatizado con Python como lenguaje de programación. Mi perfil es netamente técnico, soy desarrollador y arquitecto de software con una década de experiencia.

Durante estos seis meses, he desempeñado dos roles diferentes, construyendo la infraestructura de Python para realizar los procesos automáticamente y también usar esta misma infraestructura para entregar resultados en un proyecto muy importante que tienen, todo está funcionando bien y he sido elogiado por el alta calidad de los entregables.

La infraestructura es tan genérica y flexible como puede ser, y se puede personalizar a través de Python para satisfacer las diferentes necesidades de los proyectos. La lógica es la misma que, por ejemplo, proyecto en React o en Django. Todo lo complicado se abstrae en la infraestructura y está disponible a través de una llamada de función en Python, todo está diseñado para que el usuario solo necesite programar detalles del proyecto y combinar bloques usando Python.

El problema es que, debido a que otras personas en el departamento han estado ocupadas con otros proyectos y los procesos manuales toman mucho tiempo, nadie más que yo ha estado trabajando en esta infraestructura o en los proyectos derivados de ella, y nadie más en el departamento está programador ni sabe nada de Python, la poca programación que han hecho es VBA.

Les mostré a mis colegas cómo funcionaba todo y ellos reconocen el valor que ofrece y lo encuentran increíble, pero no les gusta Python, implementar los detalles del proyecto o mantener la infraestructura. No son programadores y el rol al que se supone que deben hacer la transición requiere programación hasta cierto punto, implementar los detalles del proyecto requiere conocimiento de Python simple, así que esperaba que comenzaran desde allí en cada proyecto y fueran testigos de los resultados, pero estoy empezando a creer que esto nunca va a suceder con la excusa de que están ocupados haciendo el trabajo manual en otros proyectos.

Recientemente supe que una empresa externa fue contratada en el pasado para lo mismo que estoy haciendo, pero no llegó muy lejos.

El otro problema es que ni mi gerente ni otros superiores saben nada sobre software, no hay horas asignadas para la infraestructura, así que puse todas las horas que pasé haciendo la infraestructura, que no es un proyecto específico, a un proyecto específico, ya que me dijeron, y ahora creen que los procesos automatizados toman demasiado tiempo porque ese proyecto tomó más tiempo de lo esperado, a pesar de que les explique varias veces que la mayoría de las horas están relacionadas con la infraestructura y muy pocas en la funcionalidad real del proyecto.

Así que estoy buscando consejo porque me siento solo y no estoy seguro si estoy chocando con una pared, en este momento he limitado el crecimiento de la infraestructura antes de que sea demasiado para que lo maneje una sola persona, y me concentro en generar interés y obtener estadísticas adecuadas de lo que es posible hacer y cuánto tiempo lleva.

EDITAR:

Proporcionaré más contexto basado en las respuestas proporcionadas.

Un proceso en sí puede consistir en medir una magnitud física 800 veces y reportar los resultados entre ciertos umbrales o algún criterio en una hoja de cálculo de Excel 800 cien veces, ahora mismo esto lo hace manualmente un ingeniero bien pagado, que presiona el botón de una herramienta 800 cien veces cada cinco segundos más o menos (lo más rápido que puede) y filtra en su cabeza y escribe los datos en una hoja de cálculo manualmente.

La comunicación con la herramienta no se puede hacer con VBA por varias razones incluyendo limitaciones técnicas del lenguaje, ni esto sería escalable o mantenible a todas las herramientas que miden esa magnitud porque usan diferentes protocolos y pertenecen a diferentes fabricantes.

Tenga en cuenta que esto es solo un proceso en un marco enorme de procesos y proyectos que varían mucho y pueden cambiar, y tenga en cuenta que también se requiere que esto sea en tiempo real a pesar de que no se hace en tiempo real debido a las limitaciones técnicas existentes. al hacerse manualmente, los clientes se han quejado pero no se atiende. Esta es la razón por la que elogiaron los resultados de mi trabajo, porque también se abordaron este tipo de inquietudes.

Así que necesito un lenguaje adecuado, y elegí Python porque lo conozco bien y es el más fácil de aprender y empezar, con Python puedo manejar todo esto lo suficientemente bien en tiempo real y abstraer todos los aspectos técnicos de las herramientas, controladores y etcétera y solo espero del usuario algún código Python para establecer los criterios de filtrado de los resultados y donde se ubica la herramienta por su IP. Yo personalmente no encuentro esto complicado.

Podría abstraer esto a una interfaz gráfica de usuario para evitar que los usuarios usen Python, pero tenga en cuenta que si hago esto para cada proceso, significaría que estaría implementando toda la funcionalidad yo mismo en cada proyecto mientras mis colegas solo presionan un botón. Y no todos los procesos se adaptan bien a una GUI, requieren algo de lógica para implementarse a través de Python, no podría manejar este volumen de trabajo por mí mismo ni es la intención, la intención es que las personas comiencen a automatizar cosas como lo estoy haciendo. mí mismo. La intención es que yo mismo maneje la infraestructura y los problemas complejos, mientras ellos automatizan las necesidades de otros proyectos con esta infraestructura usando Python.

Hablé con todos los involucrados y compartí la visión de la infraestructura antes de comenzar y mencioné explícitamente que Python se usaría a menos que y las múltiples razones para esto, específicamente la creciente complejidad de los proyectos y el hecho de que la forma actual de trabajar implicaba que mucho de los requerimientos de los clientes no estaban siendo atendidos. Ahora me doy cuenta de que tal vez dijeron OK sin pensar demasiado.

Se está alentando la adopción de esta herramienta al darme tiempo para mostrar a otros miembros cómo funciona, y dos personas han sido seleccionadas para comenzar a trabajar conmigo, y tengo que enseñarles todo lo que pueda durante este año, pero No estoy seguro de si están contentos con eso, y si no te gusta programar, la vida puede ser un infierno.

Por genérico y flexible que pueda ser, no quiero decir que sea complicado o que haya demasiadas piezas de funcionalidad, significa que tienen un único punto de entrada a una funcionalidad independientemente de la configuración, y la infraestructura maneja todos los detalles subyacentes de comunicación, protocolos y algoritmos detrás de escena, pueden usar cualquier herramienta disponible con la infraestructura y reproducir los mismos resultados, por genérico y flexible quiero decir que no depende de herramientas o hardware específicos, simplemente llama a una función en Python para obtenga un valor de una combinación de herramientas y maneje todos los detalles y la intercomunicación por usted y le brinde un valor.

En mi opinión, encuentro que se requiere aprender un poco de Python para lo que la empresa pretende hacer con el departamento. La empresa está obteniendo explícitamente proyectos que requieren un alto nivel de automatización personalizada de procesos para obtener resultados en plazos muy cortos.

CON RESPECTO A NO TECNOLOGÍA

Se supone que debo ser el líder técnico para la transición, pero el título es el mismo que todos los demás en el departamento si no fuera por la etiqueta de senior. Por no técnico no quise decir que estoy trabajando con gente de otras áreas, quise decir que no considero el trabajo manual que se está haciendo en el departamento como técnico ya que cualquiera puede presionar botones y llenar hojas de cálculo. Según los estándares de otras empresas, estamos muy atrasados ​​en términos de procesos y plazos.

¿Quién en su empleador decidió que necesitaba a alguien para desempeñar su función y qué está haciendo para fomentar la adopción de su solución?
Si sigo el enfoque de abstraer Python a Excel para satisfacer las necesidades de mis usuarios, podría terminar metiéndome en un hoyo donde termine implementando todas las funciones particulares para todos los proyectos, lo que puede volverse rápidamente imposible de mantener y mi ausencia sería una bloqueador No los veo como mis usuarios, estoy liderando la transición de un departamento a uno que hace la automatización como lo estoy haciendo yo mismo, por lo que creo que Python y un lenguaje de programación son necesarios, y considero que es el enfoque más fácil.
@Josh "La comunicación con la herramienta no se puede hacer con VBA por varias razones... ni esto se escalaría ni sería mantenible para todas las herramientas que miden esa magnitud porque usan diferentes protocolos y pertenecen a diferentes fabricantes". ¿Hay algún tipo de protocolo común/API/SCADA que sea común a las herramientas?
@DaveGremlin No, estas son herramientas diferentes de diferentes fabricantes y bastante costosas que incluso requieren cables personalizados para interactuar con ellas o NDA para acceder a algunas de las funciones. La tecnología subyacente podría ser la misma, por ejemplo, USB o Ethernet, pero los comandos para interactuar con los dispositivos pueden ser muy importantes. Eso es algo que logra la infraestructura, abstraer todos estos detalles, por ejemplo, medir una magnitud física arroja el mismo valor, independientemente de la herramienta que se utilice, siempre que pueda medir esa magnitud.
@JoeStrazzere Mi jefe está de acuerdo debido a los resultados y entregables hasta el momento, e insiste en que más personas hagan lo mismo, creo que hay un malentendido al decir que mis colegas son mis usuarios, es lo que requieren los proyectos, los estándares establecidos por otras empresas , siguiendo buenas prácticas... Ya deberían estar haciendo eso pero no es el caso, no veo el sentido de construir algo adaptado a las necesidades actuales cuando se sabe que la escasez actual de conocimiento y forma de trabajar no cumplir con los requisitos del proyecto. Ir por ese camino podría implicar que termine haciendo todo yo mismo
La pregunta es muy larga y un poco por todas partes. Conté al menos tres problemas diferentes: 1.) Sus usuarios no están adaptando su solución. 2.) No puede escalar su infraestructura y mantenerla. 3.) Su gerencia piensa que el desarrollo es lento. Creo que hay respuestas para todas ellas, pero aún no está claro por qué tienes suerte. Sugiero dividir su publicación en diferentes preguntas y ser claro sobre cuál desea que sea el resultado deseado. Algunas de las preguntas pueden ser más adecuadas para Ingeniería de software o Gestión de proyectos SE.
¿No puede saber si los miembros del equipo están contentos con la nueva herramienta porque no son programadores? Entonces, ¿puede pedirle a su jefe que contrate a un programador real tanto para usar esta herramienta como para respaldar la actualización de esta herramienta a largo plazo?
Me gustó su pregunta y la voté a favor, tal vez podría estar convencido de considerar traerla de vuelta, tal vez con solo una de las subpreguntas que contenía, y para todas las demás subpreguntas cree hilos separados.
¿Te gustaría eliminarlo? Puede marcar su propia pregunta para eliminarla.
"Podría abstraer esto a una interfaz gráfica de usuario para evitar que los usuarios usen Python, pero tenga en cuenta que si hago esto para cada proceso, significaría que yo mismo implementaría toda la funcionalidad en cada proyecto mientras mis colegas solo presionan un botón. " Sin embargo, desde el punto de vista de la empresa, es una forma bastante razonable de resolver la baja participación. Y las personas que usan procesos manuales y se niegan a tocar el código tienden a ser aquellas que aceptarán y usarán gustosamente las GUI mínimas. Hacer un aviso para presionar un botón toma alrededor de 30 segundos en Python. Vincular un campo es un minuto más o menos...
Esto suena seriamente como un problema de labview..

Respuestas (5)

Entonces, ¿está diciendo que el personal de su empresa no es técnico y ha creado algunas hojas de cálculo y VBA para que puedan hacer su trabajo, y que ha reemplazado esto con un sistema que requiere que aprendan Python?

El sistema que ha construido puede ser más extensible, mantenible, escalable, etc., pero si el personal necesita escribir código en Python para configurar proyectos y mantener la infraestructura, entonces está en una posición perdedora, no va a funcionar. suceder De hecho, no debería suceder, presumiblemente el personal tiene otras áreas de conocimiento comercial que son fundamentales para sus trabajos; atención al cliente, gestión de cuentas, análisis de negocios? La codificación es una pérdida de tiempo y experiencia.

Es completamente comprensible que estés en esta posición. Primero tenías que escribir los huesos del sistema. Debe proteger los datos, una interfaz de usuario puede parecer un lujo en esta etapa. Especialmente cuando todo depende de tu software y eres la única persona que hace el trabajo. Sin embargo, debe hacer que el sistema funcione sin depender de la capacidad de codificación de los usuarios.

Me imagino que estás bajo mucha presión por esto. Parece que, solo, ya lo ha hecho mejor que toda una compañía de consultores externos. Ahora es el momento de aprovechar ese éxito para obtener ayuda. ¿Puedes persuadir a la empresa para que contrate a alguien que te eche una mano? Si no es para ayudarlo a escribir una interfaz de usuario, al menos para quitarle la carga a los usuarios, liberando su tiempo para comenzar con una interfaz de usuario. No necesita contratar a un desarrollador senior en este punto, un novato ansioso al que pueda entrenar puede ser una mejor opción.

Una última cosa: he estado en la posición de reemplazar hojas de cálculo monstruosas de Excel que contienen macros de VBA de pesadilla con sistemas codificados correctamente y un enfoque que funcionó fue mantener Excel como la interfaz de usuario en la primera iteración para evitar el problema 'no inventado aquí'. Con el tiempo, vieron que les quitábamos el dolor y les hacíamos la vida más fácil, y confiaron en nosotros cuando se trataba de deshacerse finalmente de Excel.

Gracias por su aporte, tengo una buena cantidad de automatización de Excel en la infraestructura usando COM, principalmente enfocada en la generación de informes, pero puedo obtener datos de hojas de Excel y similares, por lo que este podría ser un buen punto de partida para proporcionar interfaces de usuario. a todo. Técnicamente, necesitan hacer la transición del trabajo manual al automatizado porque esto es lo que requieren los proyectos, y mi temor es que al proporcionar interfaces de usuario lo haré todo yo mismo, no es que estén trabajando en otras áreas, es un departamento que técnicamente ya debería estar haciendo lo que estoy haciendo.
@Josh Parece que tu trabajo es en realidad transformar un departamento no técnico en uno técnico: "¿Cómo manejas ser el único técnico en un equipo no técnico?" Eso implicará la contratación y el despido, un cambio cultural completo y mucha aceptación de la alta gerencia.
Sí, ese es todo el punto que quería abordar. Se supone que debo ser el líder técnico para la transición, pero el título es el mismo que todos los demás en el departamento si no fuera por la etiqueta de senior. Por no técnico no quise decir que estoy trabajando con gente de otras áreas, quise decir que no considero el trabajo manual que se está haciendo en el departamento como técnico ya que cualquiera puede presionar botones y llenar hojas de cálculo. Según los estándares de otras empresas, estamos muy atrasados ​​en términos de procesos y plazos.
@Josh Podría valer la pena editar su pregunta para que se destaque un poco más, todos estamos recogiendo los detalles técnicos/de codificación y escribiendo respuestas con el enfoque incorrecto.

Esto suena como una situación poco común (y frustrante), en la que no he estado personalmente, por lo que es probable que alguien más tenga una experiencia más directamente relevante. Sin embargo, esta parte me arrojó una bandera roja:

La infraestructura es tan genérica y flexible como puede ser...

Esto al menos suena como lo que he visto hacer a algunos colegas nuevos en trabajos de software. Me salta a la vista que posiblemente sea demasiado complicado para un trabajo inicial, antes de que se haya demostrado algún valor. Los problemas que describe en párrafos posteriores son bastante acertados para mis preocupaciones cuando leí eso.

Creo que , para empezar, necesita morder piezas muy pequeñas de funcionalidad y demostrarse a sí mismo y a su lugar de trabajo que realmente puede ofrecer mejoras de eficiencia. Tenga algunas conversaciones con las personas en su proyecto específico sobre (a) cuáles son los puntos débiles más serios y (b) haga una lluvia de ideas sobre qué tipo de herramienta o interfaz estarían bien para agregar a su proceso. Si su solución requiere la programación del usuario, y no son programadores, entonces no es un buen comienzo. (Si están acostumbrados a mirar Excel, entonces tal vez hacer una plantilla de hoja de cálculo con algunas macros de Python bajo el capó sea una alternativa de inicio razonable).

Obtenga algo de aceptación o interés por una pequeña herramienta por adelantado. Consíguelo en una semana. Obtener algunos comentarios e iterar. Consigue cierta velocidad para reducir el dolor de otras personas. Muestre que el tiempo específico del proyecto en realidad está generando beneficios. Casi tienes que adoptar la mentalidad de una pequeña startup/skunkworks, encontrando formas de venderte para hacer feliz al cliente. Es improbable que sea productivo hacer un gran intento e intentar resolver todos los problemas a la vez (sin la aprobación previa de la interfaz).

En mi campo (videojuegos), he visto a un solo desarrollador adjunto de forma independiente a un departamento no tecnológico (arte), que era muy consciente y sensible a las necesidades del artista (p. ej., facilidad máxima con el pensamiento gráfico basado en lo visual) que tuvo mucho éxito y llegó a ser considerado un miembro invaluable del equipo. Podía atender rápidamente las llamadas de ayuda de los artistas y mejorar las herramientas anteriores basadas en texto para aliviar los cuellos de botella allí.

Tal vez pase un fin de semana pensando en cómo es su proceso de desarrollo de software de un solo hombre. Incluso el modelo de cascada SDLC tradicional comienza con numerosas entrevistas a los clientes en los pasos iniciales. No creas que puedes saltarte eso.

Fue un gran error de su parte asociar las horas de infraestructura a un proyecto en particular. Desde el principio, debería haberse asegurado de que hubiera un proyecto dedicado a esto.

También sospecho que fue un error de su parte implementar un sistema que no parece ser utilizable por nadie más. De todos modos, lo hecho, hecho está.

Tengo la sensación de que este problema en particular no es tan raro.

Debe encontrar algún gancho para que las personas puedan comenzar a usar la infraestructura subyacente y obtener algunas ganancias de productividad iniciales que los liberen para aprender más. Probablemente debería hacer esto de tal manera que les permita usar las herramientas con las que están familiarizados para empezar.

Solo como ejemplo, si están acostumbrados a modificar datos a través de scripts en una hoja de cálculo de Excel, debe considerar proporcionar un punto final de odata que Excel pueda leer/escribir. Puede hacer que este punto final sea configurable para realizar algunas transformaciones de datos de acuerdo con los archivos de configuración. Luego se convierte en una cuestión de migrar lentamente, con el tiempo, las transformaciones comunes de los scripts de VBA a las características de su terminal.

Los usuarios avanzados pueden eventualmente darse cuenta de que pueden escribir sus propios puntos finales de odata, o incluso pueden decidir deshacerse de Excel por completo para llegar a la infraestructura directamente.

Sospecho que necesita encontrar el proyecto que tiene más probabilidades de beneficiarse de esto con la menor cantidad de esfuerzo y apuntar a eso.

El problema que veo con esto es que para satisfacer los requisitos del proyecto, necesitan implementar la lógica de alguna manera y, por lo tanto, encuentro que necesitan un lenguaje de programación para hacerlo. Con Excel y VBA había muchas cosas que no se solucionaban y muchas quejas de los clientes. Podría implementar algunos procesos estandarizados para usar desde Excel, pero no todo para cada proyecto se puede usar desde Excel debido a las especificaciones del proyecto, necesitaría hacer todo eso yo mismo en Python y vincularlo a Excel si no usan Python. Eso puede ser un gran volumen de trabajo.

Has chocado contra una pared. Desafortunadamente, para hacer más, es posible que deba cambiar, ya sea de compañía o de lo que está haciendo.

Construiste un buen sistema, pero nadie puede usarlo. Este es un desajuste típico entre una persona técnica y los usuarios.

Una solución sería cambiar el enfoque. Los "clientes" de su trabajo son sus compañeros de trabajo. En mi experiencia, es mejor averiguar qué tipo de solución pueden usar mis clientes antes de comenzar a construir algo. En este caso, parece que los clientes pueden usar soluciones basadas en Excel y VBA, pero nada más. Sí, VBA no es tan limpio como Python, pero aun así puede hacer el trabajo.

¿Hay alguna manera de tomar lo que ya ha escrito y reescribirlo en VBA? Encuentro que darle a la gente una breve macro de VBA que les ayude hace una gran diferencia en su aceptación de lo que estoy haciendo. Repetir.

Es posible que no se requiera una reescritura completa, hay formas de importar datos a Excel desde servicios externos.

Está en una situación difícil, básicamente siendo lanzado en paracaídas a una empresa para automatizar sus antiguos procesos manuales, con poco o ningún apoyo de la alta dirección, poco o ningún apoyo de sus compañeros de trabajo y el conocimiento de que un intento previo de hacer este trabajo terminó en fracaso.

Su objetivo de lograr que sus compañeros de trabajo aprendan Python es bueno, pero no a corto plazo; comprensiblemente, preguntarán 'qué hay para mí', y una respuesta de 'tal vez una carga de trabajo algo reducida en 6 meses' no parecerá satisfactoria.

Tampoco subestimes el factor miedo de cualquier cambio en el status quo; sus compañeros de trabajo pueden estar preocupados de que sus habilidades de codificación inexistentes no estén a la altura de la tarea, y la gerencia los despedirá porque no pueden codificar. Este miedo puede ser completamente infundado, pero puede influir subliminalmente en su juicio cuando se trata de involucrarse.

Por lo tanto, debe crear un proyecto emblemático que demuestre cuán maravilloso y no amenazante es su enfoque. Elija una tarea manual particularmente tediosa, que generalmente no le gusta a todos, y automatícela. A corto plazo, tendrá que hacer toda la codificación, pero cuando los usuarios soliciten mejoras, podría sugerirles amablemente que cambien el código, bajo su atenta mirada. Si logra mejorar la carga de trabajo de una persona, se correrá la voz y gradualmente otros mostrarán interés, pero lamentablemente esto llevará bastante tiempo y no sería sorprendente que se quedara sin entusiasmo por un trabajo que se siente como vadear. a través de la melaza, y buscó una compañía que fuera más receptiva a sus talentos.