Para iniciar, eu coloco a minha visão. Qualidade pra mim é cliente e usuários satisfeitos.
Sei que alguns olham o lado interno, como arquitetura, facilidade de manutenção etc. como sendo parte da avaliação de qualidade do sistema. Pra mim isto é muito relativo,
já que eu não acho que software é um fim em si mesmo, e eu vejo isto como somente um dos componentes do custo.
Eu já vi grandes sistemas pessimamente construídos que tinham um excelente feedback de todos os usuários; o custo maior de manutenção era absorvido pelo cliente sem problemas.
Qualidade é o resultado de um processo bem definido e executado com
extrema disciplina e comprometimento.
Jogando no google....
O que é um processo de desenvolvimento?
Define quem faz o que, quando e como, para atingir um certo alvo.
Agora eu queria entender o porque não podemos trabalhar como uma linha
de produção? Por que é inviável financeiramente coordenar as atividades
mencionadas tanto no Scrum como em XP, FDD que visam a qualidade do
software?
Essa é a parte que eu menos entendi:
"A sua visão (e de muitos outros em maior ou menor aspecto) aparenta que
vc olha o software como um trabalho acadêmico, fora do contexto de quem
está vendendo (seu empregador) e do negócio do seu cliente. Fazer
software desta forma é possível, desde que vc encontre um ambiente
propício para isto (iniciativas open source, meio acadêmico, pesquisa em
grandes empresas etc.)."
Claro que uma coisa é pegar um projeto do início, mas se existem
softwares cuja a manutenção seja calçada na satisfação do cliente,
tamanha bagunça, pelo amor de Deus ... nossa ... no mundo perfeito e
acadêmico e talvez mais franco seja o melhor caminho discutir a
reconstrução do sistema, por que em algum momento "isso vai dar merda",
overtime, stress, desgaste, etc. (rsrs)
Como vc fala, o cliente não quer ter a menor a idéia de como vc vai
fazer o software, assim como os moradores do prédio do Sérgio Naia, que
tiveram o fim que tiveram, não estavam preocupados com o ferro e o
concreto utilizado. Mas será que esse é o fim queremos para os nossos
clientes/usuários?
Quando melhor trabalharmos, quando melhor for apurada a nossa capacidade
de abstração, e visão de que o negócio do cliente sofre alterações e que
o quanto formos mais sinceros e jogarmos limpo com o cliente mais
contratos teremos. Dentro de um mesmo projeto, outros novos projetos
podem ser descobertos. (Talvez esse seja o mundo perfeito)
Abs.
Marcello
Agora eu queria entender o porque não podemos trabalhar como uma linha
de produção?
Rsrsrs..... Ainda bem que vc se reconhece desta forma, realmente seu texto é no mínimo "agressivo".... Mas ok, vou abstrair e tentar só colocar um ponto....
A sua visão (e de muitos outros em maior ou menor aspecto) aparenta que vc olha o software como um trabalho acadêmico, fora do contexto de quem está vendendo (seu empregador) e do negócio do seu cliente. Fazer software desta forma é possível, desde que vc encontre um ambiente propício para isto (iniciativas open source, meio acadêmico, pesquisa em grandes empresas etc.).
Mas no cenário mais comum, de pequenas e médias empresas que fazem software como negócio, um mindset como este é tão destrutivo quanto uma má entrega.
Eu jamais teria em minha equipe alguem com este tipo de atitude. Pq até acredito que seu cliente possa ficar feliz se vc conseguir entregar, porém grandes chances é que, se vc não tomar cuidado, vc vai estourar seus orçamentos ou vai fazer algo tão caro que ninguém irá conseguir vender, com resultados desastrosos pra sua empresa.
Simplesmente pq a metáfora não se aplica. Não se desenvolve software com um processo repetitivo de juntar sempre as mesmas partes, da mesma maneira, para chegar sempre ao mesmo resultado. Desenvolvimento de software está ligado ao desenvolvimento de um novo produto, não da produção do mesmo.
2009/11/15 Pedro Reys <pedr...@gmail.com>
Simplesmente pq a metáfora não se aplica. Não se desenvolve software com um processo repetitivo de juntar sempre as mesmas partes, da mesma maneira, para chegar sempre ao mesmo resultado. Desenvolvimento de software está ligado ao desenvolvimento de um novo produto, não da produção do mesmo.O Software muda. O processo não. No máximo, amadurece.
Pedro,
Mas o resultado, pensando de forma BASTANTE genérica, não é o mesmo? Não
é um artefato que será testado e principalmente utilizado por alguém?
Bom dia a todos!
Pessoal, convido-os a lerem a série de posts que estou escrevendo em meu blog sobre o Visual Studio 2010. Comentários são bem-vindos!
http://reverb.leandrodaniel.com/reverb/?tag=/visual+studio+2010
Também podem me acompanhar pelo Twitter: @leandronet
Abraços,
Leandro Daniel
MCAD, MCSD, CSM
http://reverb.leandrodaniel.com
Quem tem perfil estritamente técnico vai dizer que qualidade é a adoção
de "boas práticas" (usar a última palavra em determinada tecnologia ou
aquilo que está na moda), e a satisfação do cliente será uma
consequência disso.
Quem tem visão comercial entende qualidade como a satisfação do cliente
primeiro, e a adoção de "boas práticas" não é algo religioso ou
dogmático, mas sim feito para atender aos objetivos comerciais que estão
em jogo.
[]s
"You might think you already know what an estimate is. My goal by the end of this chapter is to convince you that an estimate is different from what most people think. A good estimate is even more different.
Here is a dictionary definition of estimate: 1. A tentative evaluation or rough calculation. 2. A preliminary calculation of the cost of a project. 3. A judgment based upon one's impressions; opinion. (Source: The American Heritage Dictionary, Second College Edition, 1985.)
Does this sound like what you are asked for when you're asked for an estimate? Are you asked for a tentative or preliminary calculation—that is, do you expect that you can change your mind later?
Probably not. When executives ask for an "estimate," they're often asking for a commitment or for a plan to meet a target. The distinctions between estimates, targets, and commitments are critical to understanding what an estimate is, what an estimate is not, and how to make your estimates better."
Primeiros parágrafos do livro "Software Estimation: Demystifying the Black Art", da Microsoft Press, que você compra aqui na Amazon por meros 50 reais.
2009/11/16 Marcello Vasconcelos Felipelli <marcello.v...@gmail.com>:
> Agora eu queria entender o porque não podemos trabalhar como uma linha
> de produção?
Porque uma linha de produção produz mil carros IGUAIS por dia. Eu já
trabalhei em "fábricas de software" mas nunca as vi entregando o mesmo
software mais de uma vez.
> Por que é inviável financeiramente coordenar as atividades
> mencionadas tanto no Scrum como em XP, FDD que visam a qualidade do
> software?
Por que inviável?
[]s
--
Phillip Calçado
http://fragmental.tw
http://www.fragmental.com.br
2009/11/17 Rafael Noronha <rafan...@gmail.com>:
> De que adianta entregar um software seguindo as melhores técnicas e
> ignorar uma determinada limitação de projeto (prazo, custo...)
>
> Alguém aí me responde essa?
Existem escolhas que devem ser feitas quanto ao nível de qualidade de
qualquer coisa, seja o software quanto um carrinho de bebê. Você pode
escolher o carrinho de bebê com menos qualidade -que talvez só dure
três anos ao invés de,digamos, 5- mas não ficaria feliz se o
fornecedor te entregasse um carrinho que se desgoverna ou joga a
criança no chão. Existem limites mínimos para qualquer coisa ser
considerada um trabalho profissional e até mesmo aceitável.
Mas gostaria de inverter a pergunta: por que seguir as melhores
práticas fariam com que seu prazo ou preço estourasse? Será que
estamos trabalhando com prazos e/ou preços realistas?
2009/11/16 Alexandre Valente <alexandre...@gmail.com>:
> A sua visão (e de muitos outros em maior ou menor aspecto) aparenta que vc
> olha o software como um trabalho acadêmico, fora do contexto de quem está
> vendendo (seu empregador) e do negócio do seu cliente. Fazer software desta
> forma é possível, desde que vc encontre um ambiente propício para isto
> (iniciativas open source, meio acadêmico, pesquisa em grandes empresas
> etc.).
Engraçado, eu não entendi isso no email do Daniel. O que eu entendi
ele dizendo é que qualidade interna tem sim muita importância para o
cliente, já que afeta o TCO do software. O problema é que clientes não
conseguem ver esta qualidade e os "pilantras" se aproveitam disso para
entregar qualquer coisa que quase-funcione. Bem pouco acadêmico e bem
realista.
Este é um ponto que sempre bati: isso de "o cliente não se importa com
a qualidade interna" é uma falácia. O cliente não se importa tanto
quanto eu não me importo se meu avião possui um tanque de combustível
50% cheio ou 10% cheio quando pousa. Eu passo a me importar quando a
empresa aérea me diz que para abastecer o avião vão ter que atrasar em
duas horas o meu vôo.
Eu não entendo nada de aviação mas estou pagando caro para que alguém
que teoricamente entenda me leve de um lugar X a um lugar Y em um
determinado tempo. Se isto não for feito não me importa se é porque o
pátio está lotado, o avião ainda está sendo limpo ou porque o bugfix
requer que 200 arquivos que foram copiados e colados sejam
modificados.
2009/11/18 Alexandre Valente <alexandre...@gmail.com>:
> Então, eu acho engraçado como o termo "pilantra" é usado... Vcs realmente
> encontraram gente na vida de vcs que falaram "ah, eu sei fazer melhor mas
> como eu quero enganar este cliente, vou entregar um lixao".... Eu nunca....
Sim. Muitas vezes, desde que o lixão fosse benéfico para o fornecedor.
> Como já foi citado um exemplo aqui, imagine um cliente pedindo um prototipo
> pro dia seguinte para fechar um negocio que se não for dia seguinte nao
> serve. Que trocas seriam feitas para atender o prazo? Eu faria quase todas.
> E eu não chamaria de alguem que fez nesta situação de pilantra.....
Pois é, mas você falou a palavra de ouro: protótipo. Se você quiser um
protótipo eu abro meu emacs e te entrego algo em duas horas usando
Sinatra. Mas é um protótipo que pode servir para validar/vender sua
idéia, mas é um protótipo.
É como uma maquete: serve para ter uma idéia do prédio mas não serve
para morar lá.
> O pessoal fala direto que o "custo de manutenção" é alto. Com base em que?
> Será que alguem realmente consegue saber o quanto baixou de custo por uma ou
> outra tecnologia no decorrer dos anos? Tenho muitas dúvidas. E eu tenho
> muitos exemplos do contrário, algo feito rápido pra um objetivo, que mesmo
> considerando o custo de refatoração (ou reconstrucao completa depois) com
> certeza foi mais lucrativo do que algo que tivsse perdido um prazo ou
> objetivo inicial.
Existem estudos sobre isso se você quer saber um número
pseudo-científico. Um deles:
http://research.microsoft.com/en-us/projects/esm/nagappan_tdd.pdf
> E mesmo para as grandes empresas que o pessoal fala que são "pilantras", eu
> não seria tão rápido em chamar assim. Muitas vezes colocar estagiários é a
> única maneira de fazer a conta de um projeto fechar. Ai nao seria muito mais
> pilantra qem contrata sabendo que isto vai acontecer assim?
Desculpe mas isso não é aceitável na minha opinião, seja em software
ou em qualquer coisa. Não é ético porque provavelmente o cliente não
tem conhecimento do que é necessário -e nem deve ter, o especialista é
você e não ele.
É como, voltando para o exemplo do avião, eu insistir com a aeromoça
que não quero por o cinto de segurança e que arco com as
consequências. Sabe o que ela vai fazer? Eu vou ser convidado a sair
da aeronave, se preciso com ajuda da polícia.
> Por visao academica eu quis dizer pessoas que estao olhando pro software e
> não para o negócio. Eu acho que software nunca é o objetivo de nada, e só no
> meio academico ou em áreas de pesquisa de grandes empresas vc tem o luxo de
> fazer isto.
Ok mas eu não vi isso no email dele, muito pelo contrário.
> Claro que concordo que software deve ser feito com o maximo de
> qualidade possível. Mas o que é isto? O meu eu sei bem qual é o padrão nível
> e que eu acho que é muito bom.... Mas para cada cenário, cada pessoa o
> conceito de qualidade varia, então, do que estamos falando?
A qualidade ideal para um projeto varia, como falei antes. Existem
coisas, entretanto, que são sempre erradas e uma delas é aceitar um
projeto com prazo impossível ou que será feito apenas por estagiários
quando o preço cobrado é por desenvolvedores sênior. Isso não é
qualidade, é má fé.
> E eu não teria coragem de julgar o
> que outra pessoa fez, muito menos colocar o label de "pilantra" em alguem...
Eu vivi uma situação interessante. Eu já trabalhei para pilantras e
pedi demissão exatamente por entender que o que eles queriam não eram
uma relação de negócios com o cliente mas sim extrair tudo o que
conseguissem deles, custe o que custar. Quando sai da última empresa
pilantra eu entrei em uma empresa que não era consultoria e meu
primeiro trabalho foi lidar com um outro fornecedor pilantra que
estava há três anos desenvolvendo um sistema prometido para 3 meses.
Tendo visto de fora e de dentro eu me acho capacitado para dizer: é
pilantragem. E por pilantragem eu quero dizer falta de ética e de
comprometimento com o cliente. Lucrar é uma coisa, se aproveitar dos
outros é outra bem diferente.
Note, por favor, que eu não estou te chamando ou a qualquer um nesta
discussão de pilantra. Estou apenas comentando práticas e
anti-patterns de indústria.
Então, eu acho engraçado como o termo "pilantra" é usado... Vcs realmente encontraram gente na vida de vcs que falaram "ah, eu sei fazer melhor mas como eu quero enganar este cliente, vou entregar um lixao".... Eu nunca....
Talvez vocês só coloquem o pescoço em projetos perfeitos, onde o custotrazido pela "garantia de qualidade" não representa qualquer tipo deproblema para o cliente.
Alexandre,
Para mim qualidade deve ser medida através de aspectos técnicos, sim.
Mas este tipo de qualidade por si só jamais determinará o sucesso de
um projeto.
De que adianta entregar um software seguindo as melhores técnicas e
ignorar uma determinada limitação de projeto (prazo, custo...)
Alguém aí me responde essa?
Seu cliente vai te agradecer por um software que o Fowler assina
embaixo, mas que estourou prazo e custo?
Talvez vocês só coloquem o pescoço em projetos perfeitos, onde o custo
trazido pela "garantia de qualidade" não representa qualquer tipo de
problema para o cliente.
Então, eu acho engraçado como o termo "pilantra" é usado... Vcs realmente encontraram gente na vida de vcs que falaram "ah, eu sei fazer melhor mas como eu quero enganar este cliente, vou entregar um lixao".... Eu nunca....
E por incrivel que pareça, o pior sistema que eu já vi, em termos de bagunça interna e facilidade de manutenção, foi um que foi criado por um arquiteto bem conhecido no mercado (sem nomes! :-)). E tenho certeza que ele não fez por mal, começo com uma boa itenção e foi pessimamente executado.
E todos os casos de sistemas complexos de manter pra mim sempre foram um dos dois casos: ou quem fez não sabia o que estava fazendo direito (e aí eu não chamaria de pilantra),
ou a decisão foi tomada para se seguir daquela forma por algum motivo.
Como já foi citado um exemplo aqui, imagine um cliente pedindo um prototipo pro dia seguinte para fechar um negocio que se não for dia seguinte nao serve. Que trocas seriam feitas para atender o prazo? Eu faria quase todas. E eu não chamaria de alguem que fez nesta situação de pilantra.....
O pessoal fala direto que o "custo de manutenção" é alto. Com base em que?
Será que alguem realmente consegue saber o quanto baixou de custo por uma ou outra tecnologia no decorrer dos anos? Tenho muitas dúvidas. E eu tenho muitos exemplos do contrário, algo feito rápido pra um objetivo, que mesmo considerando o custo de refatoração (ou reconstrucao completa depois) com certeza foi mais lucrativo do que algo que tivsse perdido um prazo ou objetivo inicial.
E mesmo para as grandes empresas que o pessoal fala que são "pilantras", eu não seria tão rápido em chamar assim. Muitas vezes colocar estagiários é a única maneira de fazer a conta de um projeto fechar. Ai nao seria muito mais pilantra qem contrata sabendo que isto vai acontecer assim?
Por visao academica eu quis dizer pessoas que estao olhando pro software e não para o negócio. Eu acho que software nunca é o objetivo de nada, e só no meio academico ou em áreas de pesquisa de grandes empresas vc tem o luxo de fazer isto.
Claro que concordo que software deve ser feito com o maximo de qualidade possível.
Mas o que é isto? O meu eu sei bem qual é o padrão nível e que eu acho que é muito bom.... Mas para cada cenário, cada pessoa o conceito de qualidade varia, então, do que estamos falando?
Então pra mim, nada é preto ou branco. E eu não teria coragem de julgar o que outra pessoa fez, muito menos colocar o label de "pilantra" em alguem... Mas, only IMHO.
Ninguém falou em prostituir o lado técnico.
O que eu não engulo é a conversinha de que apenas com o uso de X, Y e
Z, meu software vai ter qualidade, e este uso deve ser praticado
independente de determinada limitação comercial.
(...) Decisões que normalmente se encaixam bem em enterpriseys são tomadas em empresas de tecnologia e vice-versa. É um dos motivos de muitas discussões inúteis. Eu consigo entender porque um banco se sentiria incomodado de implementar hoje uma nova tecnologia, vamos chutar, trocar alguns de seus DB2 por um CouchDB por exemplo. Também consigo entender porque uma empresa médica ficaria relutante em trocar seus atuais programas embarcados de C, por exemplo, por .NET micro framework. Não quer dizer que nenhuma delas tenta, mas sim que não é o caso da maioria e nem que as tecnologias não funcionariam.
O mesmo não pode ser dito de “empresas de tecnologia”. Nesse contexto, tentar usar o que há de mais novo e mais avançado deveria ser o normal. Mais do que isso: criar as próprias tecnologias deveria ser o normal. Agora, a preocupação é que isso fique aleatório, desordenado e leve ao caos. Não se trata disso. É justamente por isso que empresas de tecnologia como Google, Microsoft, Novell, RedHat e diversos outros menores tem algo que se assemelha a um departamento de “Research & Development” (pesquisa e desenvolvimento), ou no mínimo a noção de “pesquisar e experimentar”. É por isso que eles se esforçam em contratar os profissionais do mercado que estão na ponta das novas tecnologias, coisa que não faz sentido por exemplo em um banco, ou uma seguradora, ou uma empresa de transportes.