Como devo descrever o processo de aprender o código de outra pessoa? (Em uma situação de faturamento.) [Fechado]


16

Edit: Justin Cave fez um bom argumento de que esse tipo de comunicação deve estar à frente nas minhas citações / estimativas. Nesse caso, ainda estou interessado em saber que tipo de linguagem as pessoas usam para descrever as atividades de 'aprendizado de código existente'. Especialmente para uma empresa que não lidou com fornecedores de software antes. Finalizar edição

Eu tenho um contrato para atualizar algum software interno para uma grande empresa. A empresa solicitou várias adições de recursos e algumas correções de bugs. Este é o meu primeiro trabalho como freelancer.

Primeiro, eu precisava me familiarizar com o funcionamento do aplicativo - aprendi como se fosse um usuário.

Em seguida, tive que aprender como o software funcionava. Comecei com conceitos amplos e depois me reduzi aos detalhes necessários antes de trabalhar em cada correção e recurso de bug.

Pelo menos no início do projeto, levei muito mais tempo para aprender o código existente do que para escrever os recursos adicionais.

Como posso descrever o processo de aprendizado do código existente na fatura? (Essa parte da empresa geralmente faz as coisas internamente, por isso não tem muita experiência em lidar com fornecedores de software como eu, e temo que eles não entendam a sobrecarga de aprender o código de outra pessoa). Eu não quero apenas dedicar o tempo de aprendizado à atualização real do recurso, porque em alguns casos isso faria uma 'tarefa simples' parecer que demorou muito tempo. Quero dividir a fatura em etapas relevantes e comunicar que estou cobrando a grande sobrecarga de aprender o código de outra pessoa antes de poder adicionar o meu.

Existe uma maneira padrão de descrever esse tipo de atividade ao cobrar por um emprego?


boa pergunta! é quase como refatoração, mas não é, porque não há edição implícita.
ZJR

2
Se você deve fornecer uma análise detalhada, considerando que você tem vários recursos e correções e todos exigiram um entendimento da base de código em um grau diferente para prosseguir, eu amortizaria o custo de entender a base de código sobre cada uma dessas tarefas proporcionalmente ao tempo necessário para essa tarefa.
Mark Booth

Respostas:


4

Faturaria tarefas como "Revisar a funcionalidade existente" e / ou "Revisar o código existente". Dependendo da complexidade dos novos recursos, eu adicionaria uma tarefa "Design xxx", que incluiria o tempo gasto na identificação dos pontos de integração no código existente.

Eu acho que é uma boa ideia deixar claro para o cliente que há alguma sobrecarga na atualização de um novo consultor - e que, se eles estiverem satisfeitos com o resultado, continuar trabalhando com o mesmo consultor provavelmente os salvará. dinheiro.


Incluí tarefas como "Aprenda o código existente" nas faturas sem nenhum problema.
tcrosley

13

Diagnóstico do problema.

É um termo familiar, se você consertar seu automóvel automaticamente ou procurar um médico, o diagnóstico é um termo comum para descobrir o que está errado. Também é preciso, você precisa se esconder e ver como tudo está conectado para descobrir o que não está funcionando. Realmente é semelhante a trabalhar em um motor sem o manual, e a empresa fabricou o motor sem olhar para outro motor antes (por isso é provavelmente único).

Um item de linha longo ou com palavras estranhas receberá mais perguntas que você realmente não deseja. "Diagnóstico de problemas" é um conceito mais ou menos universalmente entendido.


Obrigado anon. Sim, acho que precisa ser clara e direta, em vez de meio escondida por uma longa corda.
MattyG 23/03/12

6

Nada na fatura de um cliente deve ser uma surpresa para o cliente. Dado isso, espero que você já defina com o cliente a expectativa de que uma fração significativa do seu tempo seja inicialmente familiarizada com o aplicativo, tanto da perspectiva do usuário quanto da perspectiva do desenvolvedor. Esperamos que suas estimativas para os primeiros recursos especifiquem que eles incluam uma quantidade razoável de tempo para se familiarizar com o código.

Se você já definiu essa expectativa com o cliente de que a maior parte do tempo na fatura inicial será gasta familiarizando-se com o aplicativo, não deve importar muito exatamente como você o lista na fatura. Use o idioma que você usou ao fornecer as estimativas e definir as expectativas. Se você está apenas tentando comunicar isso agora, tem um problema.


Obrigado Justin, bons pontos lá. Que tipo de idioma você usaria durante a fase de cotação de tarefas?
MattyG

3

Na minha capacidade de freelancer, eu provavelmente chamaria isso de algo como "Assimilação do conhecimento", no sentido geral. E isso teria sido incluído em qualquer estimativa fornecida inicialmente ao cliente.

Pode não ajudar você aqui, mas para referência futura, sugiro que você faça disso uma tarefa mais ativa no futuro. Por exemplo, fature o cliente pelo tempo gasto e adicione comentários ao código não comentado, adicionando testes de unidade ao código não testado, etc. Estes são exemplos de tarefas que agregam pelo menos um pouco de valor, facilitando o entendimento da base de códigos .

Mesmo que não exista muita diferença entre ler e ler durante a documentação, seu cliente provavelmente terá uma pequena preferência psicológica por essas tarefas mais "ativas". E, na verdade, você pode aprender mais documentando o código de outra pessoa do que simplesmente lendo-o. (Esse certamente será o caso se você escrever testes contra o código deles).

Se você fizer isso, poderá ter um item de linha da fatura que diz algo como "Assimilação do conhecimento e teste / documentação de código herdado".

Edit: Na sua situação, conforme descrito, eu honestamente provavelmente comeria o custo dessa atividade. Não posso falar com suas finanças e não pretendo presumir, mas quando você está começando, eu valorizaria muito mais a acumulação de depoimentos e a satisfação de clientes do que algumas horas de faturamento. Se isso significa uma taxa efetiva mais baixa no início, pode ser um bom investimento. Comer algumas horas faturáveis ​​a longo prazo é provavelmente um preço pequeno a pagar por um cliente satisfeito que acha que ele ou ela recebeu um bom trato.


Obrigado Erik. Ótimo ponto sobre o código comentando; não havia zero, então eu tenho feito isso ao longo do caminho. Sim, eu concordo, eu já comi cerca de metade das horas de 'assimilação do conhecimento' e faturarei apenas a metade restante.
MattyG 23/03

2

Corrigindo um erro: análise de causa raiz.

Novo recurso: análise, design, integração e teste.

Introduzindo novos bugs: segurança no trabalho. :)


+1 para análise de causa raiz, mas -1 para o restante da resposta sendo um pouco mais leve.
Mark Booth

1

Com um cliente que gosta de entender como as coisas funcionam e me escuta com olhos sonhadores, eu seguia em frente Codebase Familiarization. Eu já teria explicado a ele em que fluxo de dor ele está me colocando, e a vantagem de vir até mim para mais atualizações.

Com o outro tipo de cliente ... (mesmo tratamento, mas ele evidentemente não escuta uma única palavra que estou dizendo ), eu usaria algo nas linhas de:

  • Planning Phase
  • Intervention Planning

    (Na verdade, eu usaria este, mas escreveria em italiano, no qual parece muito melhor)

  • Então talvez... Solution Planning

Gosto da Diagnosisparte da Problem Diagnosissugestão anon, mas Problemisso não parece certo para mim. Pode ser aberto a críticas moderadas, tendenciosas, ignorantes e superficiais ... que podem deixar um gosto ruim para trás.

Você sabe, todo mundo quer jogar um dardo no consultor externo, e eles o fazem. (... como se ele não fosse bom o suficiente para entender a raiz do problema enquanto conversava com eles, e tivesse que faturar sua falta de noção, ou Deus sabe o que)


1

Meu mecânico me envia uma nota "Troque o óleo, faísca mais, verifique os filtros, as rotações dos pneus. Corrija o ruído do motor, teste de estrada .....

Peças (discriminadas),

Trabalho x @ $ y / hora = z)

Ele não quebra o trabalho, nem você deveria. Fature o total de horas e descreva o que você fez.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.