¿Está bien usar un idioma que no sea compatible con su empresa para algunas tareas?

27

Trabajo para una empresa que admite varios idiomas: COBOL, VB6, C # y Java.
Utilizo esos idiomas para mi trabajo principal, pero a menudo me encuentro codificando algunos programas menores (por ejemplo, scripts) en Python porque descubrí que es la mejor herramienta para ese tipo de tarea.

Por ejemplo: un analista me da un archivo CSV complejo para llenar algunas tablas de base de datos, por lo que usaría Python para analizarlo y crear un script de base de datos.

¿Cuál es el problema?
El principal problema que veo es que algunas partes de estos scripts rápidos y sucios están ganando importancia lentamente y:

  1. Mi empresa no es compatible con Python
  2. No están controlados por la versión (los respaldo de otra manera)
  3. Mis compañeros de trabajo no conocen Python

Los analistas incluso han comenzado a hacer referencia a ellos por correo electrónico ("lanzar el script que exporta ..."), por lo que se necesitan con más frecuencia de lo que inicialmente pensé.

Debo agregar que estos scripts son solo utilidades que no forman parte del proyecto principal; simplemente ayudan a realizar tareas triviales en menos tiempo. Para mis pequeñas tareas me ayudan mucho.

En resumen, si fuera un ganador de la lotería por un accidente , mis compañeros de trabajo tendrían que mantener vivo el proyecto sin esos guiones; pasarían más tiempo reparando errores CSV a mano, por ejemplo.

¿Es este un escenario común? ¿Estoy haciendo algo mal? ¿Qué tengo que hacer?

systemmpuntoout
fuente
22
Si tus compañeros de trabajo no pueden descifrar un guión solo porque está en otro idioma, tienes mayores problemas
CaffGeek el
1
Estoy de acuerdo con Chad. Python está lo más cerca posible del pseudocódigo.
Trabajo
2
@Chad eheh agradable pero el problema podría ser otro; Python sdk no forma parte de la instalación predeterminada de la máquina de desarrollo. Para instalarlo, he pagado muchos cafés al administrador del sistema correcto;).
systemmpuntoout
3
@systempuntoout, los desarrolladores deberían poder instalar lo que quieran en su computadora dentro de los límites legales. Entonces, PowerShell está preinstalado en Windoze e intenté sustituirlo por Python, pero no es lo mismo. Los casos extremos me abofetean cada vez que trato de hacer algo simple. Python solo hace las cosas y si los drones corporativos no lo hacen, ¡qué pena!
Trabajo
1
Póngalos en control de fuente. Solo una pequeña esquina en alguna parte, pero colóquelos.

Respuestas:

42

Debe formalizar la situación, ya que realmente no debería haber llegado a este punto. Sin embargo, estas cosas suceden, por lo que debe explicarle a su jefe que creó estos scripts para uso personal, pero que han "escapado" a una circulación más amplia. Admita (si es necesario) que usted tuvo la culpa de no llamar su atención antes.

Como mínimo, las secuencias de comandos deben estar bajo el control de la fuente "por si acaso", y al menos si no está disponible (por alguna razón) sus compañeros de trabajo tendrán acceso a las secuencias de comandos.

Luego, debe convencer a su jefe de que Python es el camino a seguir para estos o aceptar que tendrá que volver a escribirlos en un idioma compatible. Si el costo de documentar los scripts y educar a sus compañeros de trabajo en Python es menor que el de la reescritura, incluso podría ganar el argumento.

ChrisF
fuente
8
+1, de acuerdo. Puedo ver cómo este tipo de cosas pueden suceder fácilmente, pero no es necesariamente "algo malo" o "un error" por parte del OP. Probablemente comenzó cuando el OP recibió la tarea de un mini-proyecto "único" y eligió una buena herramienta, Python, para limpiar rápidamente su escritorio del proyecto, pero luego se encontró realizando la tarea una y otra vez ...
Angelo
Estoy viviendo esto ahora mismo. Pirateé una prueba de concepto en Python para ayudarme a descifrar algún código C viejo y realmente funcionaba como un reemplazo para el código C antiguo, pero me pidieron que lo volviera a escribir en C después de hacer que los nuevos cambios funcionen . Logré mantener un poco de Python, escribí una pequeña aplicación web usando Python + Flask y mi gerente y lo uso constantemente para analizar las operaciones del código C en ejecución. Entonces todavía hay esperanza de que Python sea adoptado formalmente por aquí. :)
John Gaines Jr.
6

No puedo darte una respuesta completa sobre lo que debes hacer. Solo puedo darte una sugerencia que puedas usar para comenzar:

Verifique los scripts en un repositorio al que puedan acceder todos los desarrolladores (obligatorios). Pero asegúrese de tomar nota del hecho de que primero ha escrito estos scripts para su propio propósito, es decir, para realizar una tarea que se le ha asignado. Luego agregue que solo está registrando estos scripts para permitir a otros la ventaja de usarlos.

Después de eso, solo tendrá que ver cómo otras personas responden a eso.

Giel
fuente
Comenta como sea posible. Ayuda a ver rápidamente lo que está sucediendo, en lugar de tratar de averiguar qué diablos estás haciendo.
JD Frias
5

Me he encontrado con problemas similares donde trabajo. Escuché "¿Qué es PHP?" muchos años atrás. No entienden ni les importa aprender nada fuera de la pila de MS. Si Python es la herramienta adecuada para el trabajo, simplemente le diría a mis supervisores al respecto y estaré listo para muchas comparaciones y explicaré por qué Python fue la elección correcta. Será frustrante, pero creo que la mayoría estaría de acuerdo en que Python es una buena opción para la manipulación de texto.

Ryan
fuente
5

Lo primero que debe hacer es hablar con el equipo y su jefe. En este momento, tienes un factor de camión enorme (si te atropella un camión, nadie más podría mantener fácilmente tus scripts). Parece que tener scripts para realizar estas tareas es importante, pero también es importante que cualquiera que lo necesite pueda editar y mantener estos scripts. Debe explicar cómo el uso de Python agrega valor: cómo ahorra tiempo, esfuerzo, recursos, dinero, etc.

Segundo, póngalo en el control de versión del proyecto. Ahora. Nada de lo que produzca para un proyecto debe estar fuera del control de versión de ese proyecto, nunca.

Prepárese para la reacción violenta: a las personas generalmente no les gusta el cambio. Correr por su cuenta, usar tecnologías no compatibles y desconocidas (para el equipo / organización) fue una mala idea, sin consultar al menos a los otros desarrolladores y determinar la mejor manera (para el proyecto, no solo usted) de automatizar estas tareas para todos usar.

Creo que este es probablemente un buen caso de

Es más fácil pedir perdón que pedir permiso.

Parece que hiciste el trabajo, pero ahora tendrás que lidiar con las repercusiones.

Thomas Owens
fuente
44
"" "Correr por su cuenta, usar tecnologías no compatibles y desconocidas (para el equipo / organización) fue una mala idea, sin consultar al menos a los otros desarrolladores y determinar la mejor manera (para el proyecto, no solo usted) de automatizar estos tareas para que todos las usen. "" "- No estoy de acuerdo. Joel Spolsky no habría podido crear VBA para Excel si hubiera seguido esta ruta. Este no es, de lejos, un ejemplo único.
Trabajo
@ Job No puedo hablar de las circunstancias exactas del desarrollo de VBA para Excel, pero eso parece que estaba involucrado en I + D avanzado o creación de prototipos. Hay una diferencia entre los sistemas avanzados de I + D y producción. Nunca puedes trabajar en la oscuridad, solo y aislado de tu equipo. No me opongo a introducir nuevas tecnologías, pero es importante que todos sepan cuáles son estas nuevas tecnologías, sus beneficios, sus inconvenientes y cómo se están implementando en un proyecto. Hacer algo solo y en la oscuridad es generalmente una mala idea y pone en riesgo un proyecto.
Thomas Owens
@Thomas soy el equipo
systemmpuntoout
@systempuntoout Eso puede ser cierto ahora. ¿Pero será en 6 meses? O un año? El desarrollo de software, incluso si actualmente está solo, nunca debe considerarse una tarea individual: debe pensar en el futuro desarrollador o mantenedor de su trabajo.
Thomas Owens
@Thomas tienes razón; como se dijo en algunos comentarios anteriores, he portado muchos scripts en C # (lenguaje compatible con la empresa)
systemmpuntoout
3

Mi regla general es:

Cualquier cosa que potencialmente afecte el trabajo de otros debe discutirse con sus compañeros y superiores lo antes posible.

Pero, si es solo para usted y para usted, siempre y cuando no dañe la infraestructura o la seguridad de su empresa , puede hacer lo que desee para hacer el trabajo.

Vector
fuente
1
¿Cómo sabes si es para ti o para otros? En el trabajo, puede ser reasignado o puede renunciar. Cualquier cosa que produzca en el trabajo (en la mayoría de los casos) no es suya, sino que pertenece a la empresa o al cliente. Si no pueden entenderlo o mantenerlo, el tiempo perdido es el tiempo que dedicó a desarrollarlo más el tiempo que le toma a otra persona entenderlo (y quizás desarrollar una nueva solución). Todo lo producido en el trabajo debe ser tratado como algo para otra persona.
Thomas Owens
1
Si durante el tiempo que estuvo en ese trabajo aumentó su propia productividad personal, entonces la compañía ya ha obtenido valor de ese script y no fue un desperdicio, independientemente de si alguien más lo reutiliza más tarde.
Nate CK
@Thomas Owens: a menudo hay tareas que se realizan una sola vez, una vez que se hacen, se hacen, o tus propios hacks y pruebas que realizas en el curso del desarrollo para superar algo difícil, una vez que se hacen. , están hechos, efectivamente desechables.
Vector
¿Y si alguien más necesita hacer la misma tarea o una tarea similar más tarde (lo cual es muy probable, según mi experiencia)? Tienen que reinventar la rueda. Una cosa es tener un prototipo desechable para resolver un problema o aprender una biblioteca o un marco. Otra es dedicar tiempo a desarrollar una herramienta para hacer una tarea y luego simplemente descartarla. Los tipos de herramientas a los que se refiere la pregunta son para tareas que potencialmente deben realizarse varias veces, y si otras personas realizan esas tareas, pierden el tiempo al no tener una herramienta para ayudarlos (o la necesidad de desarrollar dicha herramienta) .
Thomas Owens
@Thomas Owens - concedido - eso está incluido en lo que dije 'potencialmente impacta el trabajo de otros'.
Vector
2

Tienes dos opciones:

  1. Hazlo un estándar
  2. Traducir a una herramienta estándar

Dependiendo de la organización, el # 1 puede ser un desafío (después de todo, limitar la lista de tecnologías estándar evita una explosión combinatoria de los requisitos de capacitación y habilidades de soporte).

La segunda opción ayudaría a su conjunto de habilidades, y es posible que pueda encontrar un tercero (y probablemente de código abierto con licencias comercialmente amigables) para hacer parte del trabajo duro. Por ejemplo, una búsqueda de "LINQ to CSV" debería obtener algunos resultados útiles.

Por cierto, las herramientas de desarrollo de VB6 (IDE, compilador) no son compatibles (ni siquiera las correcciones de seguridad), por lo que es probable que el estándar deba actualizarse de todos modos. (El tiempo de ejecución VB6 es compatible como parte de las versiones actuales de Windows, e incluido en la instalación). Quizás esto podría usarse como una ayuda para el enfoque n. ° 1: el conjunto de herramientas estándar necesita elevar un objetivo móvil debido a las dependencias del proveedor.

Ricardo
fuente
2

Si se le asigna una tarea y la única forma en que puede realizarla a tiempo, realmente no tiene otra opción. Creo que es aconsejable que los responsables sepan lo que está haciendo. No debe salir del control de origen requerido (a menos que simplemente no funcione en absoluto?) Pruebas y documentación.

A veces, una empresa puede tener que dejar que un solo desarrollador comience a buscar en una nueva área de desarrollo. Desafortunadamente, el código puede llegar a la producción más rápido de lo que cualquiera puede acelerar.

JeffO
fuente
Lo creas o no, después de publicar esta pregunta y recibir muchas sugerencias perspicaces, he portado varios scripts en C #.
systemmpuntoout
1

Bueno, tengo que admitir que trabajar con 20 idiomas diferentes apesta, MUCHO.

Tiene un script Bash que llama al script Python que llama al script Perl que llama al binario Java que llama a C dll ...

Luego, algo golpea al ventilador en toda la tubería, y usted pasa: ¿QUÉ ES DAT KODEZ? Especialmente en Perl ... Y la depuración simple, por ejemplo, un problema de codificación, se convierte en un desastre de pesadilla. No puede depurar 5 de los 7 idiomas de manera efectiva, y se convierte en un verdadero dolor.

O tiene que agregar un cambio simple, pero crea 10 errores porque Perl tiene errores, Java tiene errores, etc.

Y esa cadena de idiomas 7+ comienza un paso a la vez.

Pisa con cuidado, aquí hay dragones ...

Descifrador
fuente
Trabajar con la herramienta adecuada no apesta, es la forma en Unix de construir cosas. La forma de Windows es iniciar Excel. Antigua historia de martillos y clavos ...
mouviciel
1

Si esas son herramientas que usa para usted, puede hacer cualquier cosa que lo haga más productivo.

En realidad, debe alentarse a hacer y usar tales herramientas, que finalmente se convertirán en una extensión de sus brazos.

Eventualmente, reconocerán la importancia de tener tales herramientas, sin importar en qué idioma estén escritas , y comenzarán a implementarse en su entorno de trabajo.

Jose Faeti
fuente
En el trabajo, no creo que debas tratar nada como "para ti". Son herramientas para apoyar un proyecto, y hay un equipo trabajando en ese proyecto. Puede renunciar, ser despedido, reasignado o morir muerto mañana y ahora sus responsabilidades recaen en otra persona. Si no pueden usar y mantener sus herramientas, el esfuerzo que se hizo para hacerlas se desperdició (costándole dinero a la empresa).
Thomas Owens
3
@Thomas: trato los guiones que hago para mí y mi uso personal como míos. Son una extensión de mis brazos y mi mente. Es como decir "No puedes pensar así, solo puedes pensar así". Creo que no es importante lo que piensas, siempre y cuando puedas hacer lo que se te pide.
Jose Faeti
Eso, para mí, es extremadamente poco profesional y poco ético. Una de las responsabilidades éticas de un ingeniero de software es actuar en el mejor interés del cliente y del empleador, siempre que no ponga en riesgo al público. Otra responsabilidad ética es ser justo y solidario con los colegas. Mantener tus herramientas para ti cuando son para un proyecto viola ambos principios.
Thomas Owens
3
@Thomas: No estaba hablando de escribir un lenguaje de programación específico para el proyecto. Estoy hablando de algo como "cambiar el nombre de 10000 archivos con un solo comando", algo que los programadores tontos hacen a mano uno por uno, mientras que puedo hacerlo con un script hecho a sí mismo. No estoy interactuando con nada específicamente involucrado en el proyecto. NO son herramientas específicas del proyecto.
Jose Faeti
3
@Thomas: El punto no es saber si existe tal utilidad, sino saber cómo automatizar su trabajo haciendo tales utilidades. Siempre necesitará un nuevo script para ayudarlo en sus tareas diarias. Obligar a un programador a usar herramientas existentes o herramientas hechas por otros es como cortar alas a un pájaro. No me puedo imaginar trabajando en un lugar así. De todos modos, entiendo tus puntos. Mi respuesta surgió porque el OP ya estaba en esa situación, creo que lo mejor sería compartir la idea de hacer / usar una herramienta en particular con todo el equipo tan pronto como sea necesario, luego decidir.
Jose Faeti
1

Cuando se le pide que escriba código haciendo algo, el idioma generalmente se especifica o implica (la regla en las corporaciones).

Pero cuando tiene que hacer una tarea única, como importar datos a la base de datos, puede elegir la herramienta que, en su opinión, se adapta mejor, porque debe hacer algo correcto y rápido, y el resultado es importante, No las herramientas.

Entonces, usaría esa regla:

1) Si se le indica que haga alguna tarea, como la importación de datos, usaría las herramientas / idioma / etc. eso sería lo más conveniente para mí y lo más rápido para la tarea.

2) Si se le indica que escriba una herramienta que realice alguna tarea, como importar algunos datos, discutiría qué idioma / herramienta usar con el gerente (con la excepción cuando uso un lenguaje implícito estándar, por ejemplo, cuando la compañía usa [casi ] solo Java).

3) Si la tarea parecía ser de una sola vez, pero se volvió repetible, debe hablar con el gerente para cambiarla de 1) a 2) y volver a escribir desde su idioma preferido al idioma compatible con la empresa.

Marinero danubiano
fuente
0

Supongo que no estás en condiciones de decidir (o de lo contrario no harías la pregunta). ¿Qué piensa tu jefe sobre este tema? Deberías hablar con él e intentar convencerlo de que Python es el camino a seguir ...

Por supuesto, el problema es sobre lo que sucederá cuando te vayas. No poder mantener el código es probablemente una razón suficiente para dejar de usar Python. O puede comenzar a educar a sus colegas en este idioma ...

Xavier Nodet
fuente