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.
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.
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.
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.
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.
felipe kendall
jose
dave gremlin
jose
jose
helena
Trabajo_septiembre_2020
usuario132962
especieDesconocido
Lucas Sawczak
DrMrstheMonarch