Tudo bem usar um idioma que não é suportado pela sua empresa para algumas tarefas?

27

Eu trabalho para uma empresa que suporta várias linguagens: COBOL, VB6, C # e Java.
Eu uso essas linguagens para o meu trabalho principal, mas geralmente codifico alguns programas menores (por exemplo, scripts) em Python, porque achei a melhor ferramenta para esse tipo de tarefa.

Por exemplo: Um analista me fornece um arquivo CSV complexo para preencher algumas tabelas de banco de dados; portanto, eu usaria o Python para analisá-lo e criar um script de banco de dados.

Qual é o problema?
O principal problema que vejo é que algumas partes desses scripts rápidos e sujos estão lentamente ganhando importância e:

  1. Minha empresa não suporta Python
  2. Eles não são controlados por versão (eu os apoio de outra maneira)
  3. Meus colegas de trabalho não conhecem Python

Os analistas começaram a fazer referência a eles por e-mail ("iniciam o script que exporta ..."), portanto são necessários com mais frequência do que eu pensava inicialmente.

Devo acrescentar que esses scripts são apenas utilitários que não fazem parte do projeto principal; eles simplesmente ajudam a realizar tarefas triviais em menos tempo. Para minhas pequenas tarefas, elas ajudam muito.

Em resumo, se eu fosse o vencedor da loteria em um acidente , meus colegas de trabalho precisariam manter o projeto vivo sem esses scripts; eles gastariam mais tempo corrigindo erros de CSV manualmente, por exemplo.

Esse é um cenário comum? Estou fazendo algo errado? O que devo fazer?

systempuntoout
fonte
22
Se seus colegas de trabalho não pode descobrir um script só porque é em outro idioma, você tem problemas maiores
CaffGeek
1
Eu concordo com o Chad. Python é o mais próximo possível do pseudo-código.
Job
2
@Chad eheh legal, mas o problema pode ser outro; O Python sdk não faz parte da instalação padrão da máquina de desenvolvimento. Para instalá-lo, paguei muitos cafés no sysadmin certo;).
Systempuntoout
3
@systempuntoout, os desenvolvedores devem ser capazes de instalar o que quiserem no computador, dentro dos limites legais. Portanto, o PowerShell está pré-instalado no Windoze e tentei substituí-lo pelo Python, mas não é o mesmo. Os casos extremos me dão um tapa na cara toda vez que tento fazer algo simples. O Python apenas faz as coisas e se os drones corporativos não o fizerem - que pena!
Job
1
Coloque-os no controle de origem. Apenas um pequeno canto em algum lugar, mas coloque-os dentro. #

Respostas:

42

Você precisa formalizar a situação, pois não deveria ter chegado a esse ponto. No entanto, essas coisas acontecem, então você precisa explicar ao seu chefe que criou esses scripts para uso pessoal, mas eles "escaparam" a uma circulação mais ampla. Admita (se necessário) que você estava culpado por não trazer isso à atenção dele mais cedo.

No mínimo, os scripts devem ser colocados sob controle de origem "apenas por precaução" - pelo menos se você não estiver disponível (por qualquer motivo), seus colegas de trabalho terão acesso aos scripts.

Então, você precisa convencer seu chefe de que o Python é o caminho a seguir ou aceitar que você precisará reescrevê-los em um idioma suportado. Se o custo de documentar os scripts e educar seus colegas de trabalho em Python for menor que o da reescrita, você pode até ganhar o argumento.

ChrisF
fonte
8
+1, concordo. Eu posso ver como esse tipo de coisa pode acontecer com muita facilidade, mas não é necessariamente "uma coisa ruim" ou "um erro" por parte do OP. Provavelmente começou quando o OP foi encarregado de um mini-projeto "único" e ele escolheu uma boa ferramenta, python, para limpar rapidamente sua mesa do projeto - mas depois se viu executando a tarefa repetidamente ...
Angelo
Estou vivendo isso agora. Eu hackeei uma prova de conceito em Python para me ajudar a descobrir algum código C antigo e ruim e, na verdade, fiz com que toda a bagunça funcionasse como um substituto do código C antigo, mas me pediram para reescrever o código C depois de fazer as novas alterações funcionarem. . Consegui manter um pouco de Python por perto, escrevi um pequeno aplicativo Web usando Python + Flask e meu gerente e o uso constantemente para analisar as operações do código C em execução. Portanto, ainda há esperança de que o Python seja formalmente adotado por aqui. :)
John Gaines Jr.
6

Não posso lhe dar uma resposta completa sobre o que você deve fazer. Só posso dar uma sugestão que você pode usar para começar:

Verifique os scripts em um repositório que todos os desenvolvedores (necessários) possam acessar. Mas certifique-se de anotar o fato de que você primeiro escreveu esses scripts para seu próprio objetivo, ou seja, para executar uma tarefa que lhe foi dada. Em seguida, adicione que você está apenas verificando esses scripts para permitir que outras pessoas os usem.

Depois disso, você só precisa ver como as outras pessoas respondem a isso.

Giel
fonte
Comente-os sempre que possível. Ajuda a ver rapidamente o que está acontecendo, em vez de tentar descobrir o que diabos você está fazendo.
JD Frias
5

Encontrei problemas semelhantes nos quais trabalho. Ouvi "O que é PHP?" vários anos atrás. Eles não entendem ou não querem aprender nada fora da pilha do MS. Se o python é a ferramenta certa para o trabalho, eu apenas falo para meus supervisores e estou pronto para muitas comparações e explicações sobre por que o python foi a escolha certa. Será frustrante, mas acho que a maioria concorda que python é uma boa opção para manipulação de texto.

Ryan
fonte
5

A primeira coisa que você precisa fazer é conversar com a equipe e seu chefe. No momento, você tem um enorme fator de caminhão (se você fosse atropelado por um caminhão, ninguém mais seria capaz de manter seus scripts). Parece que ter scripts para executar essas tarefas é importante, mas também é importante que qualquer pessoa que precise editar e manter esses scripts. Você precisa explicar como o uso do Python agrega valor - como economiza tempo, esforço, recursos, dinheiro e assim por diante.

Segundo, coloque-o no controle de versão do projeto. Agora. Nada do que você produz para um projeto deve estar fora do controle de versão desse projeto.

Esteja preparado para a reação - as pessoas geralmente não gostam de mudanças. Fugir por conta própria, usar tecnologias não suportadas e desconhecidas (para a equipe / organização) foi uma má ideia, sem consultar pelo menos os outros desenvolvedores e determinar a melhor (para o projeto, não apenas você) a maneira de automatizar essas tarefas para todos usar.

Eu acho que esse é provavelmente um bom caso de

É mais fácil pedir perdão do que obter permissão.

Parece que você fez o trabalho, mas terá que lidar com as repercussões agora.

Thomas Owens
fonte
4
"" "Executar por conta própria, usar tecnologias não suportadas e desconhecidas (para a equipe / organização) foi uma má idéia, sem consultar pelo menos os outros desenvolvedores e determinar a melhor (para o projeto, e não apenas você) a melhor maneira de automatizar essas tarefas para todos usarem. "" "- Eu discordo. Joel Spolsky não teria sido capaz de criar o VBA para Excel se seguisse esse caminho. Este não é de longe um exemplo único.
Job
@ Job Não posso falar exatamente das circunstâncias do desenvolvimento do VBA para Excel, mas parece que houve pesquisa e desenvolvimento avançados ou prototipagem. Há uma diferença entre P&D avançado e sistemas de produção. Você nunca pode trabalhar no escuro, sozinho e isolado da sua equipe. Não sou contra a introdução de novas tecnologias, mas é importante que todos saibam o que são essas novas tecnologias, seus benefícios, suas desvantagens e como elas estão sendo implantadas em um projeto. Fazer algo solo e no escuro geralmente é uma má idéia e coloca um projeto em risco.
Thomas Owens
@Thomas Eu sou o time
systempuntoout
@systempuntoout Isso pode ser verdade agora. Mas será em 6 meses? Ou um ano? O desenvolvimento de software, mesmo que você esteja sozinho no momento, nunca deve ser considerado uma tarefa individual - você precisa pensar no futuro desenvolvedor ou mantenedor de seu trabalho.
Thomas Owens
@ Thomas você está certo; como disse em alguns comentários acima, eu tenho portados muitos scripts em C # (Companhia apoiou idioma)
systempuntoout
3

Minha regra geral é:

Tudo o que potencialmente afeta o trabalho de outras pessoas deve ser discutido com seus colegas e superiores o mais rápido possível.

Mas, se for para você e você, contanto que não cause nenhum dano à infraestrutura ou à segurança da sua empresa , você pode fazer o que quiser para realizar o trabalho.

Vetor
fonte
1
Como você sabe se é para você ou para os outros? No trabalho, você pode ser reatribuído ou sair. Tudo o que você produz no trabalho (na maioria dos casos) não é seu, mas pertence à empresa ou ao cliente. Se eles não conseguem entender ou manter, o tempo perdido é o tempo que você gastou para desenvolvê-lo, mais o tempo que alguém leva para entender (e talvez desenvolver uma nova solução). Tudo o que é produzido no trabalho deve ser tratado como algo para outra pessoa.
Thomas Owens
1
Se durante o tempo em que você estava no cargo, aumentou sua produtividade pessoal, a empresa já obteve valor desse script e não foi um desperdício, independentemente de ser reutilizada posteriormente por outra pessoa.
Nate CK
@ Thomas Owens - muitas vezes existem tarefas únicas - uma vez concluídas, concluídas - ou seus próprios hacks e testes que você faz no decorrer do desenvolvimento para obter algo pegajoso - novamente, uma vez concluídos , eles são feitos - efetivamente descartáveis.
Vector
E se alguém precisar executar a mesma tarefa ou semelhante posteriormente (o que é muito provável, nas minhas experiências)? Eles precisam reinventar a roda. Uma coisa é ter um protótipo descartável para resolver um problema ou aprender uma biblioteca ou estrutura. Outra coisa é gastar tempo desenvolvendo uma ferramenta para executar uma tarefa e depois descartá-la. Os tipos de ferramentas às quais a pergunta está se referindo são para tarefas que potencialmente precisam ser executadas várias vezes e, se outras pessoas executam essas tarefas, elas perdem tempo por não terem uma ferramenta para ajudá-las (ou pela necessidade de desenvolvê-las) .
Thomas Owens
@ Thomas Owens - concedido - que está incluído no que eu disse 'afeta potencialmente o trabalho dos outros'.
Vector
2

Você tem duas opções:

  1. Faça disso um padrão
  2. Traduzir para uma ferramenta padrão

Dependendo da organização, o número 1 pode ser desafiador (afinal, limitar a lista de tecnologias padrão evita uma explosão combinatória dos requisitos de treinamento e habilidades de suporte).

A segunda opção ajudaria o seu conjunto de habilidades, e você poderá encontrar terceiros (e provavelmente código-fonte aberto com licenças comerciais) para fazer parte do trabalho árduo. Por exemplo, uma pesquisa por "LINQ to CSV" deve receber alguns hits úteis.

BTW, as ferramentas de desenvolvedor do VB6 (IDE, compilador) não são suportadas (nem mesmo as correções de segurança), portanto é provável que o padrão precise ser atualizado de qualquer maneira. (O tempo de execução do VB6 é suportado como parte - e incluído na instalação - das versões atuais do Windows). Talvez isso possa ser usado como um auxiliar na abordagem nº 1: o conjunto de ferramentas padrão precisa atingir um alvo em movimento devido às dependências do fornecedor.

Richard
fonte
2

Se você recebe uma tarefa e é a única maneira de realizá-la no prazo, você realmente não tem escolha. Eu acho que é sensato deixar os responsáveis ​​saberem o que você está fazendo. Você não deve sair do controle de origem necessário (a menos que absolutamente não funcione?) Teste e documentação.

Às vezes, uma empresa pode ter que deixar um único desenvolvedor começar a procurar uma nova área de desenvolvimento. Infelizmente, o código pode chegar à produção mais rapidamente do que qualquer outra pessoa.

JeffO
fonte
Acredite ou não, depois de postar esta pergunta e receber muitas sugestões interessantes, portamos vários scripts em C #.
Systempuntoout
1

Bem, eu tenho que admitir que trabalhar com 20 idiomas diferentes cheira mal, MUITO.

Você tem um script Bash que chama script Python que chama script Perl que chama Java binário que chama C dll ...

Então, algo atinge o ventilador em todo o pipeline e você passa por - O QUE É DAT KODEZ? Especialmente em Perl ... E a depuração simples, digamos, do problema de codificação, se transforma em uma confusão de pesadelo. Você não pode depurar 5 de 7 idiomas de maneira eficaz, e isso se torna uma verdadeira dor de cabeça.

Ou você precisa adicionar uma alteração simples, mas cria 10 erros porque o Perl tem dicas, Java tem dicas etc.

E essa cadeia de mais de 7 idiomas inicia um passo de cada vez.

Pise com cuidado, aqui estão dragões ...

Codificador
fonte
Trabalhar com a ferramenta certa não fede, é a maneira Unix de construir coisas. A maneira do Windows é iniciar o Excel. Velha história de martelos e pregos ...
mouviciel
1

Se essas são as ferramentas que você usa para si mesmo, você é livre para fazer qualquer coisa que o torne mais produtivo.

Na verdade, você deve ser incentivado a criar e usar essas ferramentas, que acabarão se tornando uma extensão de seus braços.

Eventualmente, eles reconhecerão a importância de ter essas ferramentas, independentemente do idioma em que foram escritos , e começarão a implementar em seu ambiente de trabalho.

Jose Faeti
fonte
No trabalho, acho que você não deve tratar nada como "por si mesmo". Eles são ferramentas para apoiar um projeto, e há uma equipe trabalhando nesse projeto. Você pode sair, ser demitido, ser transferido ou morrer amanhã e agora suas responsabilidades recaem sobre outra pessoa. Se eles não podem usar e manter suas ferramentas, o esforço gasto para fazê-las foi desperdiçado (custando o dinheiro da empresa).
Thomas Owens
3
@ Thomas: Trato os scripts que faço para mim e para meu uso pessoal como meu. Eles são uma extensão dos meus braços e da minha mente. É como dizer "Você não pode pensar assim, só pode pensar assim". Eu acho que não é importante o que você pensa, desde que seja capaz de fazer o que é solicitado.
Jose Faeti
Para mim, isso é extremamente profissional e antiético. Uma das responsabilidades éticas de um engenheiro de software é agir no melhor interesse do cliente e do empregador, desde que não arrisque o público. Outra responsabilidade ética é ser justo e apoiar os colegas. Manter suas ferramentas para si mesmo quando são para um projeto viola esses dois princípios.
Thomas Owens
3
@ Thomas: Eu não estava falando sobre escrever uma linguagem de programação específica para o projeto. Estou falando de algo como "renomear 10000 arquivos com um único comando", algo que os programadores idiotas fazem manualmente, um por um, enquanto sou capaz de fazê-lo com um script criado por você. Não estou interagindo com nada especificamente envolvido no projeto. NÃO são ferramentas específicas do projeto.
Jose Faeti 7/09/11
3
@ Thomas: O ponto não é saber se esse utilitário existe, mas saber como automatizar seu trabalho criando esses utilitários. Você sempre precisará de um novo script para ajudá-lo em suas tarefas diárias. Forçar um programador a usar as ferramentas existentes ou feitas por terceiros é como cortar asas de um pássaro. Não consigo imaginar trabalhar em um lugar assim. Enfim, eu entendo seus pontos. Minha resposta foi levantada porque o OP já estava nessa situação, acho que o melhor seria compartilhar o pensamento de criar / usar uma ferramenta específica com toda a equipe assim que necessário, e depois decidir.
Jose Faeti
1

Quando você é instruído a escrever código executando sth., O idioma geralmente é especificado ou implícito (a regra nas empresas).

Mas quando você precisa executar uma tarefa única, como importar dados para o DB, pode escolher a ferramenta que, na sua opinião, se encaixa melhor, porque é necessário fazer algo correto e rápido, e o resultado é importante, não as ferramentas.

Então, eu usaria essa regra:

1) Se você for solicitado a executar alguma tarefa, como importação de dados, eu usaria as ferramentas / idioma / etc. isso seria o mais conveniente para mim e o mais rápido para a tarefa.

2) Se você for instruído a escrever uma ferramenta para executar alguma tarefa, como importar alguns dados, eu discutirei qual idioma / ferramenta usar com o gerente (com exceção quando eu uso uma linguagem implícita no padrão, por exemplo, quando a empresa usa [quase ] apenas Java).

3) Se a tarefa parecia única, mas se tornava repetível, você deve conversar com o gerente para alterá-la de 1) para 2) e reescrever do seu idioma preferido para o suportado pela empresa.

Marinheiro Danubiano
fonte
0

Suponho que você não esteja em posição de decidir (ou então não faria a pergunta). O que seu chefe pensa sobre esse problema? Você deve conversar com ele e tentar convencê-lo de que o Python é o caminho a seguir ...

Obviamente, a questão é sobre o que acontecerá quando você sair. Não conseguir manter o código é provavelmente um motivo bom o suficiente para parar de usar o Python. Ou você pode começar a educar seus colegas para esse idioma ...

Xavier Nodet
fonte