As empresas maiores geralmente têm o problema: não é possível gravar todos os programas que os funcionários desejam (para economizar tempo e otimizar processos) devido à falta de pessoal e dinheiro.
Em seguida, os programas ocultos serão criados por algumas pessoas com (pelo menos uma) experiência em codificação (ou por estudantes / estagiários baratos ...). Sob algumas circunstâncias, esses aplicativos aumentarão em importância e se espalharão de um usuário para um departamento inteiro.
Depois, há o ponto crítico: quem manterá o aplicativo, adicionará novos recursos, ...? E este aplicativo é crítico. É necessário. Mas o estagiário deixou a empresa. Ninguém sabe como isso funciona. Você só tem um monte de fontes e algum tipo de documentação.
Faz sentido tentar controlar ou proibir o desenvolvimento de aplicativos ad-hoc fora do departamento de TI (com exceção de coisas menores, como macros do Excel)?
fonte
Respostas:
Eu trabalhava para uma empresa em que todos os aplicativos que fornecíamos levavam à pergunta: podemos exportar esses dados para o Excel?
Depois de um tempo, decidi que tinha que saber por que eles estavam obcecados com as exportações do Excel para tudo. Aconteceu que muitos departamentos tinham uma pessoa que era especialista em Excel e poderia escrever um aplicativo útil de análise de dados em pouco tempo. Esses aplicativos se espalhariam pelo departamento como um incêndio e nós, os técnicos, nem imaginávamos que eles existissem.
Por que eles não vieram até nós primeiro? Como havia uma reputação que a equipe técnica tinha demais para fazer e, se pedissem, poderiam (se tivessem sorte) colocá-la na fila seis meses depois.
Isso não foi uma acusação injusta e eles nunca nos pediram suporte aos aplicativos do Excel; portanto, ninguém realmente achou que era um problema. Quando esses desenvolvedores do Excel saíam, eles sempre conseguiam encontrar alguém para buscá-lo.
Você poderia argumentar que isso significava que estávamos priorizando incorretamente, que um trabalho importante não estava sendo realizado. Mas eu argumentaria que isso liberou os desenvolvedores mais bem pagos para fazer um trabalho mais difícil. O que isso pode doer?
Agora eu iria proibir software que atualiza o banco de dados a ser escrito fora da equipe de desenvolvimento. E eu me recusaria a dar suporte a aplicativos escritos fora da equipe de desenvolvimento. Mas eu não tentaria proibir que todo software fosse gravado pela própria empresa, e alegremente escreveria exportações de dados para capacitá-los a fazê-lo (desde que isso não exponha dados que eles não deveriam ver, obviamente )
fonte
Eu acho que as pessoas estão perdendo o ponto geral aqui:
Por que esses aplicativos estão sendo criados em primeiro lugar?
Em todos os casos que vi, há um motivo comum:
Grupos de negócios priorizam suas próprias necessidades mais altas do que essas mesmas necessidades são priorizadas no contexto de toda a empresa
O marketing é responsável apenas pelo marketing; portanto, as iniciativas que beneficiam seus objetivos parecem críticas para eles, embora sejam consideradas fluff para outros grupos, e tendem a ser priorizadas com menos recursos quando se trata de recursos limitados, como TI. A priorização só entra em ação quando eles querem usar um recurso compartilhado - se eles mantiverem o projeto inteiramente dentro de seu próprio departamento, somente o chefe do departamento precisará se preocupar com o orçamento e o cronograma.
Não há motivo para eu proibir esse tipo de desenvolvimento, dentro do razoável - ele diminui as restrições de recursos compartilhados (principalmente TI) e permite que cada grupo se capacite para resolver seus próprios problemas (como as pessoas versadas no Excel avançado são bastante comuns, como esse é um problema comum, a maioria dos departamentos possui pelo menos um).
No entanto, não é de se esperar que você resolva quaisquer problemas que surjam desses aplicativos ou dê suporte a eles após o desenvolvedor original deixar a empresa. Como outro postado menciona, isso não impede que o grande chefe exija que você o suporte, mas se você ficar de olho nos tipos de aplicativos ou processos personalizados disponíveis no mercado, poderá sentir quando algo se torna crítico e você pode ser necessário se envolver para trazê-lo "internamente". Além disso, se algo está se conectando e modificando sistemas que estão sob controle de TI, então a TI deve estar envolvida, apenas para garantir a segurança e a integridade de seus sistemas centrais - no entanto, se é algo confinado à área de trabalho do usuário, por que sentir a necessidade proibi-lo?
Mas lembre-se aqui: todo aplicativo personalizado desenvolvido fora da TI corresponde a uma necessidade que não é atendida pela TI . Pode haver uma boa razão para eles não serem atendidos - não é uma prioridade na empresa, problema muito especializado, não é tão bom quanto outras opções, linguagem personalizada que seu pessoal de TI não conhece etc. - e a falta de envolvimento com a TI legítimas, mas essas soluções foram criadas porque algum departamento tinha uma necessidade que a TI não podia (ou não iria) satisfazer.
Tente ajudá-los a resolver seus problemas e, se você não tiver tempo ou recursos, deixe-os resolvê-los por conta própria. A obrigatoriedade de um idioma com uma curva de aprendizado acentuada, com o único objetivo de manter as pessoas fora do seu negócio, serve apenas para aprimorar a atitude elitista que a maioria dos usuários de negócios percebe que a TI possui e, no final, esse tipo de atitude de elite leva apenas a mais do mesmo problema, pois os usuários têm medo de abordar a TI e estão convencidos de que a TI não entende suas necessidades ou desejos. Abra o relacionamento - entender o que eles precisam é a única maneira de impedi-los de andar à sua volta.
fonte
Deve-se considerar também o caso das empresas nas quais o departamento de TI contém pessoas incompetentes, enquanto o aplicativo oculto seria criado por um desenvolvedor habilidoso que possui um trabalho de não desenvolvedor na empresa. Na minha experiência, esses casos são extremamente frequentes.
Imagine que você tem um perfil duplo de desenvolvedor de software e contador. Você é contratado como contador, porque essa foi uma oportunidade para você conseguir um emprego bem remunerado. Você vê rapidamente que seus colegas (e agora você) passam horas fazendo coisas repetitivas que podem ser feitas em poucos segundos por um programa.
Você passa algumas noites escrevendo o aplicativo, que fará todo o trabalho. Você mostra no seu laptop pessoal para seus colegas, e eles acham muito útil. Você deseja instalá-lo nos PCs da empresa, mas deve ter o acordo do departamento de TI. Você solicita, mas eles a rejeitam porque não suportam seu aplicativo.
Não parece estúpido?
Além desse caso em particular, o problema com o suporte não é muito diferente do que muitas empresas encontram com todo o software, mesmo um escrito dentro do departamento de TI: se o departamento de TI não aplicar as práticas recomendadas, o código será mal / não documentado, escrito por pessoas inexperientes que não se preocupam com manutenção e que saíram anos atrás.
Para concluir, a questão principal é a lucratividade . Se você, departamento de TI, for solicitado a manter um aplicativo desenvolvido por um funcionário que não entende as regras mais básicas do desenvolvimento de software, não importa o quão agradável é essa tarefa, você ainda precisará fazê-lo, se houver. muito dinheiro para a empresa . Ou você o reescreve do zero, se for a maneira mais barata de fazer as coisas.
fonte
Você não pode controlá-lo completamente ...
Eu diria que você nunca pode controlá-lo TOTALMENTE, pois os funcionários sempre terão meios para produzir código nocivo e espalhá-lo por meios alternativos. Portanto, não adianta muito ficar obcecado com isso, depois de elaborar e aplicar algumas regras e processos básicos e configurar algumas ferramentas.
A idéia é torná-lo o mais atraente possível para as pessoas respeitarem essas regras e usar essas ferramentas, em vez de tornar tão impossível fazer coisas novas que não produzam nada.
Mas você pode criar um ambiente amigável ao código
Muitas empresas, geralmente muito grandes, fazem isso. Um bom exemplo é o Google, para o qual os representantes disseram que usam um único SCM para toda a empresa, para que todos possam monitorar e analisar o código de outros.
Eu recomendo que você faça o seguinte:
O problema é então a proliferação de tecnologias. Obviamente, alguns preferem usar X em vez de Y e é aí que fica mais difícil ajustá-los à sua arquitetura. No entanto, não é impossível, e se eles quiserem que seu código seja mantido, provavelmente terão uma milha extra se, bem, for apenas uma milha.
Você também pode adotar uma postura mais arbitrária e decidir que apenas os idiomas L e Stack S são permitidos, mas então você encontrará algumas coisas desonestos aqui e ali, por isso recomendo ampliá-lo um pouco. Alguns sistemas de CI farão maravilhas com alguns plug-ins, se seus funcionários estiverem dispostos a escrever um pouco de código de cola ou alguns scripts de configuração para que eles se encaixem.
Dê às equipes alguma liberdade
É importante dar às equipes alguma liberdade para dar um capricho e iniciar alguns pequenos projetos novos com coisas experimentais. Ele os mantém alerta e você o força a considerar essas tecnologias, em vez de permanecer preso na pilha para sempre, até que isso cause problemas para você.
Portanto, verifique se eles têm a capacidade de instalar seus próprios sistemas para testar seus projetos de estimação. Mas certifique-se de que eles adquiram o hábito de conversar com a TI sobre isso.
Fale com a TI, envolva-os
É muito melhor se seus funcionários desenvolverem o reflexo de enviar uma solicitação de e-mail para a TI e perguntar se eles podem configurar algo para eles e acomodar. Eles ficam inativos na maioria das vezes, mas pelo menos há alguma noção de controle e de quem deve estar no comando e dá à TI alguma visibilidade sobre as demandas de diferentes equipes.
Uma vez que os projetos adquiram uma massa mais crítica, você pode solicitar novamente e eles reconsiderarão. A comunicação é fundamental e você precisa que suas equipes de desenvolvedores, consultores, equipe de suporte de TI ou qualquer pessoa que lida com código trabalhe em conjunto. Nenhum deles quer programas perdidos, por isso é do interesse de todos. É muito mais fácil aplicar regras se elas estiverem fazendo backup delas mesmas.
fonte
Você não pode parar esses aplicativos "ocultos" porque as pessoas os fazem resolver problemas de negócios do mundo real. Tudo o que você pode fazer é ajudá-los a fazê-lo da maneira "certa". Por "certo", quero dizer fazer com que os aplicativos possam ser mantidos após a partida da pessoa que os iniciou. Eu recomendo o uso da linguagem sugerida em Para cima ou Para fora : preciso que você documente esse processo em detalhes para que qualquer yahoo possa entendê-lo daqui a um ano depois de sair. Ajuda para configurar o controle de versão (e mostrar a eles como usá-lo), um wiki (para manter notas informais sobre como o trabalho realmente é feito) e um sistema simples de rastreamento de bugs. Se você quiser tornar as coisas realmente lisas, configure a integração contínua em um servidor sobressalente (se você tiver um).
Você verá o enorme desejo de integração ao Excel (ou pelo menos importar / exportar), porque todas as escolas de negócios agora ensinam o Excel e é uma ferramenta importante usada em muitos cursos de negócios.
fonte
Sarbanes-Oxley e legislação similar fora dos EUA, combinadas com leis de privacidade e processos e políticas de privacidade e segurança autoimposta internamente, são o "martelo" que pode e costuma ser usado para reprimir o fenômeno da TI sombria.
Assim que as informações de identificação pessoal do cliente ou funcionário (ou quaisquer dados que você não deseja divulgar) começam a circular nessas planilhas, você tem um acidente esperando para acontecer.
Da mesma forma, assim que um desses projetos de TI da skunkworks pegar essa planilha do Excel e usá-la como dados por trás de um aplicativo da Web voltado para o exterior, invadido por hackers, seu CIO e CEO entrará no escritório de quem criou o aplicativo. um fim de semana chegando para explicar as consequências.
E há o problema de que, ao analisar esses esforços multiplicados pelas centenas (ou milhares) de departamentos em uma empresa da Fortune 500, você logo descobre que sua empresa possui mais de 100 bancos de dados "principais" de clientes. Seus clientes começam a reclamar que eles atualizaram suas informações de contato em um local, mas ainda estão desatualizadas em outras 10, ou que você nem sabe quantos negócios faz com seus grandes parceiros, porque as informações estão espalhadas por 10 sombras. Bancos de dados de TI.
Tudo isso gera processos onerosos de conformidade e auditoria que não são divertidos para ninguém, mas são os fatos concretos da vida da TI em um ambiente corporativo.
Uma boa estratégia é examinar todos os departamentos que estão fazendo isso e defender os investimentos em TI de sombra na TI adequada, argumentando que a TI pode alcançar uma economia de escala e fazer esse trabalho com mais eficiência do que o atual modelo skunkworks distribuído ad-hoc. Isso pode ser difícil de vender em um ambiente em que as restrições orçamentárias de TI e a velocidade de entrega deram origem aos skunkworks em primeiro lugar, mas combinados com os riscos fiduciários e de auditoria podem dar um bom golpe.
fonte
A decisão de escrever um novo aplicativo geralmente é baseada em uma análise de custo-benefício da solicitação; bem como o valor geral para os negócios. Ao mesmo tempo, levamos em consideração muitos outros fatores, como recursos de TI disponíveis, escopo da solicitação, objetivos de negócios e orientação, entre outros. Muitas vezes, uma solicitação de departamento específica é negada, porque o gerente / diretor de departamento falha em mostrar um ROI razoável ou simplesmente não segue o processo estabelecido.
Independentemente do motivo, o 'Departamento de TI' costuma ser o bode expiatório, mesmo que a decisão esteja fora de seu controle. Portanto, mesmo que a negação da solicitação possa não refletir mal no departamento de TI, a percepção geralmente é totalmente diferente.
Apesar disso, você encontrará aplicativos não autorizados em quase todas as organizações comerciais do mundo. Alguns bem escritos e outros bem contêm códigos que nunca deveriam ter visto a luz do dia.
Embora devamos fazer tudo o que for possível para atender às necessidades de nossos clientes internos, há momentos em que simplesmente não podemos. Quando isso acontecer, eles procurarão outro lugar para resolver o problema.
Se o grupo de TI estiver ativamente envolvido no projeto, podemos exigir a aderência aos nossos padrões, ajudar o consultor a seguir as diretrizes internas de codificação e entender as interações dos aplicativos e as demandas dos nossos sistemas (banco de dados, rede, firewall, etc.). Sem esse envolvimento, ficaremos curtos e gastamos muito tempo tentando descobrir por que nossos sistemas de produção não estão cumprindo o SLA.
Se o departamento de TI os tolera ou apoia, eles podem ou não ter um impacto direto em termos de suporte, compromissos de OLA e SLA pelos quais qualquer departamento de TI é medido.
fonte
Eles são proibidos em nossa empresa por estes motivos:
Entendo que pode ser frustrante para os usuários quando a TI está ocupada e eles podem estar inclinados a "apenas fazerem eles mesmos". Mas a TI não pode ser responsabilizada por coisas que ela nem sabe que existem, e se ninguém é responsável pela TI em geral, então existem grandes problemas pela frente.
fonte
Se houver algum problema aqui, é com o departamento de TI.
Não há nada errado em permitir que pessoas com conhecimento especializado em negócios / domínio manipulem e processem seus próprios dados.
O departamento de TI precisa reconhecer isso e apoiá-lo. Fornecendo interfaces reutilizáveis, fornecendo dados em formatos convenientes como EXCEL ou Access DBs e fornecendo ferramentas flexíveis (COGNOS, Jasper Reports etc.).
O departamento de TI também precisa repensar suas prioridades - ele está lá para servir os negócios, não para implementar a metodologia mais recente ou instalar o hardware mais sexy.
fonte
Uma frustração que muitas empresas, ou departamentos de empresas, têm é que seus departamentos de TI atrapalham e dificultam o trabalho ou a realização de coisas novas. Isso leva os departamentos, que parecem estar sendo retidos pelas políticas de TI, a tentar resolver seus próprios problemas. A comunicação é fundamental. Se os departamentos estão trabalhando com TI, o que você realmente tem é um problema de TI. A TI não pode se dar ao luxo de ser vista como inimiga. As empresas e, especialmente, os departamentos de TI, precisam perceber que precisam trabalhar juntos em vez de se oporem. Se os departamentos se comunicarem com sua equipe de TI (especialmente aqueles que deveriam supervisionar) e informarem suas necessidades e como estão trabalhando para resolver seus próprios problemas, A TI pelo menos terá a opção de ajudar a resolver problemas, em vez de descobrir depois que uma crise ocorrerá. Mantenha a TI informada.
fonte
Quase sempre existe uma necessidade válida para essas ferramentas especiais, sejam elas aplicativos ou planilhas. Um departamento de TI tem duas opções. Eles podem ser facilitadores ou desativadores. Na minha experiência, os incapacitantes perdem porque atrapalham as necessidades comerciais válidas e se tornam um inimigo comum. Os facilitadores, por outro lado, ajudam genuinamente uma empresa.
Isso não significa que o desenvolvimento financiado pelo departamento deva ter um reinado livre. Alguns requisitos devem ser cumpridos, como os seguintes:
A ativação tem muitos benefícios.
fonte
Não pude deixar de me identificar com você. O problema que você descreve parece ser universal, abrangendo culturas, idiomas e continentes.
O que você pode fazer:
Restrinja a criação de contas de banco de dados , solicitando a aprovação de um supervisor. Forçá-los a usar uma máquina local como servidor de banco de dados ou escrever os aplicativos para serem independentes, diminui bastante sua utilidade.
Faça com que todos os estagiários de carreiras relacionadas à TI sejam contratados apenas por meio dela .
Restringindo via política do SO a instalação do software . Toda instalação de software deve ser canalizada pelo suporte técnico de TI, exigindo a aprovação de um supervisor. Dessa forma, a instalação de algo como MS Access, PHP, Visual Basic etc. será mais difícil de passar despercebida.
Emita uma política afirmando que todo novo desenvolvimento, para receber suporte, deve ser escrito, por exemplo , Java, C #, C ++ ou qualquer outra linguagem que exija uma curva de aprendizado acentuada . Dessa forma, você reduz o universo de pessoas com "um certo conhecimento de programação" para mexer.
O pessoal de requisitos deve dar uma olhada nas "soluções Excel" da empresa, porque isso reflete as necessidades de TI da corporação.
Implementando um data warehouse e uma ferramenta de mineração e relatório de dados amigável ao usuário final . Dessa forma, você reduz a necessidade de pequenos aplicativos personalizados, escritos por estagiários.
Porém: nem uma única coisa que você faz superará uma ligação telefônica de um Big Chief , ligando para o Gerente de TI e pedindo que ele ofereça suporte ao aplicativo que um estagiário fez.
fonte
Uma maneira pela qual minha empresa ajuda nesse tipo de situação é não ser independente da linguagem. Se você deseja que um aplicativo / programa seja considerado, ele precisa estar no idioma de nossa escolha (java). Podemos estender um pouco as regras para alguns JQuery ou js, mas seria necessário um aplicativo bem composto que atendesse a uma necessidade crítica. Não venha e diga "Eu tenho esse aplicativo PHP que preciso que você hospede para mim" porque provavelmente você receberá apenas uma folha de políticas.
É importante beliscar as coisas antes que elas fiquem grandes demais, pois uma vez que é melhor você ter alguém que possa dedicar a aprendê-las ou reescrevê-las. Porque uma vez que a grande peruca lá em cima decide que ele gosta, você provavelmente nunca vai se livrar dela na minha experiência.
fonte
A arrogância dos geeks!
Em muitos casos, os usuários corporativos podem usar as ferramentas para fazer coisas que o pessoal de TI não entende. Isso não é porque eles são inerentemente ruins, mas porque eles conhecem o negócio, como ele funciona e como eles gostariam que ele funcionasse.
Por exemplo, uma empresa de software desenvolveu um aplicativo para otimizar (por custo) o acesso aos feeds de dados do mercado. Como uma reflexão tardia, eles forneceram um plug-in do Excel para que os usuários pudessem acessar o preço mais recente das ações por meio de uma planilha. Avanço rápido de um ano e quase todos os traders da empresa em que trabalhei tinham uma ou mais planilhas incrivelmente complexas para apoiar sua estratégia de negociação. De vez em quando, eles tinham um problema com a macro e pediam ajuda a um dos funcionários de TI, a maioria recusava (e se perguntam por que a empresa nos odeia!). No entanto, eu tentei e, embora pudesse resolver problemas técnicos com vários parâmetros de função e referências circulares, posso dizer honestamente que não tinha a menor idéia do que toda a planilha realmente fazia. Não porque eles foram mal montados ou mal programados, mas porque eu não tinha conhecimento ou experiência para apreciar a sutileza do que os comerciantes estavam tentando alcançar. Além disso, eu estimaria um projeto de cinco anos, mais TI, para replicar a funcionalidade de uma dessas planilhas em uma linguagem de programação "adequada" como um projeto de TI padrão.
fonte