Como os padrões e as melhorias de processo devem ser introduzidos em uma organização sem eles?

10

Fui encarregado de melhorar o processo de desenvolvimento de software através da implementação de aprimoramentos de processo, dos quais provavelmente usaremos o CMMI for Development, Versão 1.3 como uma diretriz e adotamos as melhores práticas, no todo ou em parte. Qual é a melhor maneira de introduzir padrões e melhorias no processo para minimizar o grau de resistência e resistência dos desenvolvedores?

rjzii
fonte
Apenas curioso, você já tem alguma idéia de por que mais bugs passam do que o desejado?
22612 Chris Pitman
2
@ S.Lott Você pode defender que os bugs não sejam reduzidos (no lado do consumidor) sem padrões? Minha experiência em um processo e padrões reduz bastante o que o consumidor vê nos erros ... não que eles não existam, eles nunca são vistos pelo cliente.
Rig
@ RobZ: Eu não perguntei o que você tem atualmente. Eu ainda estou tentando entender a pergunta. "implementar melhorias no processo" parece ser a descrição mais precisa do que você está perguntando. Eu sugeriria que "padrões" é um termo confuso, pois possui definição formal e você não está usando essa definição formal.
S.Lott 9/02
@ Robz: "Padrões de codificação" não são "Padrões formais". Isso esclarecerá a questão. Novamente. "Padrões formais" são os padrões W3C, Posix, ISO, IEEE, ANSI. Elaborado e aprovado por uma organização reconhecida de montagem de stands. Se você está falando sobre padrões de codificação, atualize a pergunta para remover a palavra "Formal" e use a palavra "Codificação". Com essa mudança, sua pergunta faz sentido. E é uma duplicata.
10242 S.Lott
"No que diz respeito às palavras" padrões "no título em conjunto com melhorias de processo, a palavra padrões não se aplica apenas ao código que alguém escreve"? O que? Aqui está uma dica. Por favor, não use a palavra "padrão" sem algum tipo de qualificador; é confuso. Se você quer dizer "padrões de codificação", use essa frase. Se você quer dizer algum outro tipo de "padrão", qualifique a palavra "padrão" com uma frase de qualificação para esclarecer o que está falando. "padrão" é vago e confuso.
10243 S.Lott

Respostas:

2
  1. Inicie o projeto de melhoria de processo de software (SPI) . Defina seu escopo e objetivos. Definitivamente ajudará se a padronização tiver seus próprios objetivos e medidas aplicáveis ​​à sua organização.
  2. Designe a pessoa responsável pela adoção de padrões . Também pode haver várias pessoas ou mesmo departamento no caso de grandes organizações. O importante é que todos os responsáveis ​​pela padronização sejam:
    • profissional o suficiente para ver toda a imagem
    • influente o suficiente para lidar com as equipes e ajudá-las a adotar / negociar mudanças
  3. Desenvolva treinamentos que abranjam o padrão que você deseja adotar e suas especificidades aplicadas à sua organização. E é realmente importante, desde que todas as pessoas que não foram treinadas sejam potencialmente resistentes a mudanças. Por exemplo, quando trabalhei em uma grande empresa, instruí todos os funcionários recém-chegados sobre processos de controle de qualidade, CMMI, ISO e sistema de gestão da qualidade. Esse treinamento era obrigatório. Ajudou a aprimorar o conhecimento sobre os processos de gerenciamento da qualidade e a conscientizar os funcionários sobre a importante questão da qualidade do software.
  4. Negocie mudanças e adapte práticas geralmente aceitas para suas necessidades específicas. Isso ajudará a evitar a burocracia e a implementação de processos pesados, dos quais ninguém realmente precisa.
  5. Estabeleça o monitoramento de como as melhorias de processo implementadas estão sendo suportadas e se são eficazes o suficiente em sua organização.

Também ajudará se você encontrar todas as pessoas da sua organização realmente preocupadas com a qualidade. Muito provavelmente, esses seriam o recurso mais importante para ajudá-lo a promover mudanças e estabelecer práticas maduras.

altern
fonte
6

Algumas reflexões da escola de batidas fortes:

1) A maioria das iniciativas de melhoria de processos gasta 80% de seu tempo no design de processos e 20% em educação e socialização. Virar essas porcentagens. Um padrão medíocre que é seguido supera um padrão perfeito que não é.

2) Identifique razões claras pelas quais você está pedindo às pessoas que mudem como elas funcionam. Qual é o caso comercial? Idealmente, beneficia cada equipe individualmente. Às vezes é apenas uma melhoria sistêmica. De qualquer maneira, torne o caso visível.

3) Simplifique, depois padronize, e não o contrário.

4) Você não pode delegar isso totalmente em um PMO. Gerentes diretos precisam ser contratados, e o chefe da unidade de negócios precisará romper os vínculos quando as reclamações surgirem.

5) Encontre adotantes amigáveis. As pessoas vão reclamar quanto tempo leva. Você precisa de alguém para quem possa apontar e dizer: "levou apenas 15 minutos"

6) Para métricas, esforce-se mais por quantitativo do que qualitativo. Caso contrário, você tem projetos que são ecológicos até um dia antes da entrada em operação, quando tudo passa um mês.

7) Enfatize as técnicas sobre as ferramentas. Um bom planejamento é mais importante que o MS Project.

8) Coloque um nível de processo em relação às necessidades. Todo restaurante precisa de processo, mas Nobu e a French Laundry precisam de um tipo diferente do McDonalds. Mesmo com empresas de software.

Boa sorte!

MathAttack
fonte
11
Ótima resposta - acrescentarei também muito cuidado com o processo que você apresenta - Garanta que você não caia na armadilha de fazer o que é melhor para o processo, não o que é melhor para o cliente - ou seja, o processo deve ser focado no cliente. Além disso, tenha cuidado com o que você mede - por definição, o que é medida é importante e o que não é medido não é importante. Meça as coisas erradas (SLOC / Dia, Bugs / SLOC, etc) e você não obterá melhorias, mas as medidas indicarão que você é.
mattnz
11
@mattnz - Não sei, erro / SLOC pode ser uma métrica útil se você aplicá-la corretamente. Se alguém disser que tem média de 1 erro / 10 SLOC, provavelmente ficaria preocupado. O truque é que você precisa saber onde estão as barras, o que pode ser difícil.
rjzii
Bom ponto. As pessoas otimizam suas métricas. Se você produzir primeiro as métricas financeiras, as pessoas serão otimizadas em detrimento da funcionalidade ou do atendimento ao cliente. É tudo uma questão de equilíbrio e prioridades.
MathAttack
11
Me avalie por erros / SLOC, SLOC / dia, e você ficará surpreso com o quão detalhado eu posso criar meu código-fonte sem adicionar nada útil. Por exemplo, a colocação de chaves, em uma nova linha, sempre - quanto mais linhas, menor a estatística, melhor programador eu me torno, instantaneamente. Dê-me QUALQUER medida e mostrarei como posso fazer essa medida para me parecer melhor.
mattnz
11
@mattnz - É para isso que serve a revisão de código, se alguém está tornando seu código desnecessariamente detalhado para ocultar o fato de estar cheio de bugs, então é provável que eles não devam estar escrevendo código para começar. Você também pode observar defeitos por ponto de função que são extremamente difíceis de falsificar, pois você vê uma exposição no número de funções com o número diminuindo (sinal ruim) ou o número começa a diminuir à medida que o código melhora (bom placa).
rjzii
2

Basear seus esforços no CMMI é provavelmente uma boa idéia, mesmo que você não seja submetido às avaliações e seja formalmente auditado e classificado. Há muita literatura disponível sobre o CMMI , CMMI e outras técnicas de melhoria de processos, como Lean e Six Sigma , e CMMI e desenvolvimento de software ágil . O SEI tem uma coleção inteira de recursos , alguns disponíveis gratuitamente, sobre diferentes aspectos do CMMI e orientações para diferentes tipos de organizações.

Eu recomendaria olhar em profundidade a abordagem contínua para implementar o CMMI, em vez da abordagem em etapas. Parece-me uma maneira muito mais eficiente de determinar exatamente onde sua organização está agora e melhorar em áreas que agregam mais valor aos negócios. Isso permitirá que você não apenas alinhe seus esforços de melhoria com os objetivos de negócios, mas também atinja rapidamente marcos de progresso e demonstre os efeitos da melhoria, aumentando a adesão de todos os níveis.

Algo a ter em mente, porém, é que a melhoria do processo geralmente é mais bem-sucedida quando se trata de um esforço de base. Quando as mudanças no processo são ditadas de cima - por pessoas que os desenvolvedores "nas trincheiras" podem ver como estando fora de contato com o modo como as coisas são feitas nas trincheiras - provavelmente haverá uma reação, mesmo que a ideia seja boa. Esteja preparado para isso.

Algum tipo de grupo de processos de engenharia também pode ser benéfico. Reúna representantes dos vários componentes organizacionais e equipes impactados pela melhoria, para que a voz de todos seja ouvida. Isso incluiria não apenas representantes de cada função, mas talvez várias equipes de desenvolvimento de produtos. Sem saber como sua organização está estruturada, não posso dizer exatamente para quem você gostaria de olhar, mas inclua pessoas de todos os níveis da organização no grupo. Além disso, disponibilize para a organização as discussões e decisões tomadas por esse grupo para comentários e levantamento de quaisquer problemas.

Thomas Owens
fonte
Não tenho certeza do quanto os esforços de base vão funcionar, pois poucas equipes do projeto formalizaram processos, e é por isso que este será um processo de cima para baixo. Dito isto, porém, todos estão preocupados em tornar as coisas o mais gentis possível para evitar que o esforço falhe devido à falta de implementação real.
Rjzii
@RobZ Por definição, você não pode pressionar por esforços de base - ele tem que vir naturalmente de baixo para cima. A menos que as equipes do projeto percebam que há um problema real, a tendência é não mudar e se opor a mudanças que são percebidas como ruins de alguma forma (como tornar o trabalho mais complicado ou difícil, o que geralmente está associado à melhoria do processo, embora não seja freqüentemente não é o caso).
Thomas Owens
Exatamente e é por isso que a gerência está formalizando as coisas. Houve alguns problemas com alguns dos softwares lançados e eles também pretendem mudar a cultura da empresa e garantir que produtos ruins não entrem em campo novamente.
rjzii
@RobZ E quando o gerenciamento intervém e dita ações, os desenvolvedores resistem. Você não pode exigir mudanças culturais e espera que isso aconteça de maneira simples e silenciosa. É um processo longo e doloroso.
Thomas Owens
Ninguém realmente espera que seja esse o caso e já estamos encontrando resistência; neste momento, estamos procurando maneiras de minimizá-lo.
rjzii
0

Para cada alteração:

  • Chame a mudança 1 e como ela melhorará o desenvolvimento.
  • Implemente a mudança.
  • Demonstrar melhoria
  • Remova as alterações que não demonstraram melhorias

Obviamente, a análise precisa ocorrer com o tempo, mas nenhuma mudança deve ser aceita até que seja demonstrada sua eficácia. É também por isso que eu implementaria não mais do que 2-3 alterações por ciclo, caso contrário você não poderá medir se houve melhorias ou não.

Nada me irrita mais do que seguir cegamente as melhores práticas sem fazer a análise para mostrar que essa é realmente a melhor prática para o seu ambiente. Uma prática recomendada que não demonstra melhoria é, na melhor das hipóteses, um desperdício e, na pior das hipóteses, prejudicial.

Todas as etapas do seu processo e todas as práticas da metodologia devem ser analisadas e provadas como benéficas. Se não for, deve ser removido. Essa análise deve ser feita continuamente, independentemente da adição ou remoção de etapas ou práticas.

dietbuddha
fonte