O problema da linguagem em nosso ramo: buscando novas metáforas

[quote=MarkKnopfler]
E outra, quando se fala em princípios, “agregar valor” e etc., só se pensa em satisfazer ao cliente e nunca a resguardar o prestador de serviços contra abusos cometidos por este. A velha cultura do “o cliente sempre tem razão”. O Cliente é o Princípio e o Fim![/quote]

Eu queria comentar esta ideia de que “agregar valor” significa satisfazer o cliente e isso significa não resguardar o desenvolvedor. Não.

Agregar valor apenas significa que o cliente é que decide o que ele quer e que o desenvolvedor não será preguiçoso ou displicente. A qualidade do produto do ponto vista técnico é obrigatória e não é discutível. Mas a qualidade do produto do ponto de vista de quem o uso, do ponto de vista de mercado , digamos, do ponto de vista externo, é também responsabilidade do cliente. Agregar Valor significa que na hora de decidir entre incluir a funcionalidade A ou B, o desempate é por aquela que adicionar mais valor. O que significa “valor” ? e o que significa “mais valor” ? depende do cliente. É por isso que a figura do cara que decide do ponto de vista do negocio/cliente e não do desenvolvimento é importante. É vital. Todas as metodologias ágeis de uma forma ou outra têm esta figura normalmente chamada de Product Owner (Dono do produto). É importante notar que o cara é dono do produto, não do código, ou da técnica. Em tese o PO tem informações de outras fontes (por exemplo, equipe de UX e QA, mas tb dos stakeholders) sobre o que é tem mais valor e menos. O valor é subjectivo ao cliente, mas a decisão é concreta. Identificar o PO do projeto é a coisa mais importante, e mais difícil, porque normalmente as pessoas não tem este perfil. Mas é um principio importante e temos que ser conscientes disso, e portanto tentar encontrar essa pessoa. Essa pessoa tem que ser alguém na empresa do cliente, não na sua.

Este principio cria um outra dinâmica com o cliente. É o cliente que tem a responsabilidade de pedir e decidir, não o desenvolvedor. Quando vc inverte a responsabilidade e a dá para o cliente, duas coisas podem acontecer. Ele entende que o poder é dele o usa, ou ele não entende e prefere que vc decida. No segundo caso, ha que pensar se vale a pena continuar.

Outra coisa que eu queria comentar é o modelo de negócios. Esta subentendido na sua historia que o cliente pediu A, B e C e depois ele adiciona D, E, e F e pede que o preço seja o mesmo que por A,B,C.
O problema é o seguinte vc está usando um modelo fechado, ele está usando um modelo aberto. A diretiva é , não lute contra o modelo aberto. O seu cliente sempre usará o modelo aberto. Então se protega disso, já à partida assumindo que não é apenas A, B e C que será necessário. Como fazer isto ? Bom, não ha uma resposta universal ainda. Existem vários modelos de contrato ágil para ajudar, mas não sei qual é melhor.
Aqui alguma coisas pode ser feitas. A primeira é ter o bom senso de não acreditar no cliente, no sentido que sempre que ele usar palavras como “é só isso” , “é sempre assim” , “nunca vai mudar”, e coisas finais do tipo, desconfie. Explore essas frases. Elas escondem normalmente exceções que são importantes. Leve o raciocinio do cliente a chegar no ponto onde ele admite que pode haver uma exceção ou onde ele admite que se essa execção um dia acontecer, precisará de outro software diferente. No caso do frete, pro exemplo, começa por ser nacional. Vc pergunta “mas e exportações ?” ele responde “nunca fazemos”. E vc fala “E no dia que quiserem fazer ?” e o cara responde “ai precisamos de outro software” ou pode ser assim.Vc pergunta “mas e exportações ?” ele responde “nunca fazemos”. E vc fala “nunca fizeram ?” . Ele responde ah!, já aconteceu, mas fizemos por fora do sistema". Ai vc pergunta “então isso não será uma feature ?” e ele diz , "não. Isto é errado. Foi certo até ele admitir que existiu a exceção, mas levá-lo a concluir que a feature não será necessária é errado. A feature existe, então ela será necessária. A questão é : com que prioridade ? O sugerido é que coloque a feature no backlog e lhe dê prioridade minima. Desta forma vc não se irá enganar e deixa aberta a opção para depois.

Como cobrar por isto ?

O modelo atual é cobrar por tempo. Basicamente o tempo é que gera o custo no projeto. Portanto, o primeiro passo é criar um backlog rico. Isto significa que todas as ideias , mesmo as que não serão feitas agora, estão lá. Fixe um tempo para os cliclos. Vc cota esse backlog (existem várias técnicas) vc coloca uma margem de erro. e isso lhe dá uma ideia de quantos ciclos de tempo são necessários. E isso lhe diz o custo. Do custo vc acha o preço e é isso que vc cobra. Ai vc divide em 3 fatias. 3 versões. A versão A tem como objetivo provar que o sistema funciona. Vc joga um monte de cosias básicas (tipo cadastro e tal) e uma ou duas coisas mais avançadas que tenham valor. Ou seja o cliente irá lhe dizer o que mais lhe interessa. Mas ele tem que se comprometer com isso. A versão A tem um tempo maior porque existe um trabalho de infra que tem que ser feito tb. Durante este processo as features irão aparecer e desaparecer. Vc pode postergar para a próxima versão, ou trazer da versão seguinte para agora, etc… O ponto é que vc tem um plano o cliente tem a possibilidade de brincar com as peças como ele quiser (com algumas restrições sensatas. ). O valor aqui é que o cliente sabe se ficar patinando o dinheiro tá indo embora. Ele lhe está pagado para fazer as coisas, mas as decisões de negocio são dele.

Agora vc vai dizer que o cliente não vai nessa. bom, ai é que está. Quando o cara vier lhe pedir um sistema “simples” o tamanho do backlog vai lhe mostrar a ele , que não é tão simples. Vc explica as regras com antecedência. Algumas podem até estar em contrato. E ai deixa ele decidir. Vc não está enganando a ele , nem a si. Ele deve ficar consciente que pode pedir mais coisas, mas isso irá ocupar o espaço de outra coisa que ele já pediu. Ele que tem que fazer o trade-off.

Não estamos falando que vc deve ser subserviente. Estamos dizendo que vc deve dar a escolha ao cliente. Dá-lhe a responsabilidade. Normalmente as pessoas são capazes da usar. Assim , os abusos dele irão se refletir nele mesmo, não em si.

Bacana seus comentários, mas acho que mesmo acordando tudo isto no início, muita gente não respeita e chega com a maior cara de pau pedindo coisas. Eu educadamente coloco as condições, digo, “tudo bem, esta é uma funcionalidade nova, e vai custar X”, e eles ficam mais humildes da próxima vez.

Acabei de responder um e-mail de um desses clientes ariscos. O cara pediu uma modificação que ia implicar em n coisas lá na frente, e nem se dispôs a tirar minhas dúvidas sobre como o sistema ia tratar as consequências. Eu fui obrigado a optar por um caminho e seguir, e não, claro que não, não era o que ele queria. Dei um senhor sermão mesmo, disse que era para ele refletir direitinho sobre o que ele quer ver exatamente naquela tela, e que não respondesse minhas mensagens correndo. Quando ele responder, eu conto pra vcs :smiley:

[quote=immortalSoul]O que quis dizer no post anterior foi somente para tomar cuidado com as palavras utilizadas.

Quando se fala em educar um cliente ou paciente, temos alguns sinônimos que não são os mais adequados.[/quote]

Não, meu amigo. É educar Educar mesmo, com todas os significados que isso pode trazer. Às vezes será questão de “explicar”. Às vezes teremos que pô-los no lugar mesmo.

É essa atitude de reverência e pisar em ovos com o cliente que eu não concordo, ela nos desvaloriza muito. Eu defendo atitudes radicais mesmo porque eles não nos valorizam. Para eles, somos servos, aquele que “sempre está lá pro que der e vier”.

[quote=MarkKnopfler]
É essa atitude de reverência e pisar em ovos com o cliente que eu não concordo, ela nos desvaloriza muito. Eu defendo atitudes radicais mesmo porque eles não nos valorizam. Para eles, somos servos, aquele que “sempre está lá pro que der e vier”.[/quote]

Não chamo isso de atitude de reverência nem de pisar em ovos, mas sim de profissionalismo.

Então profissionalismo para mim e para vc significa coisas diferentes. Para mim, não significa assumir responsabilidades que não são minhas (nem tem como ser). Mas o que o cliente quer é que vc apresente uma solução, resolva o problema dele! Isso não é profissionalismo, é marketing barato.

Cumprindo a minha promessa, depois do meu sermão, o meu cliente desceu ao nível de me chamar de burro e disse que não quer mais me ver tão cedo. Antes que digam que eu xinguei ele, saibam que apenas lhe disse que mais qualidade era impossível sem mais comprometimento da parte dele em me prestar informações (tudo correndo e confuso) e, mais importante, que eu já esperava que esse tipo de reação poderia ocorrer.

Eu não sou obrigado a entender tudo o que ele fala. O cara é programador (Clipper) e onde está exibindo errado, ele fala que está gravando errado (eu acho que na verdade ele quis dizer “exibindo”, não tenho certeza. Mas kd o cara pra me esclarecer?). Bem, lá vou eu conferir o arquivo e dizer que o arquivo está gravando assim, assim e assim, confere para mim se está certo. Se ele dissesse “mas é que tá aparecendo na tela o campo incorreto”, eu ia só dizer “ah, é q vc falou ‘gravar’, então entendi que era no arquivo” e mudando 4 linhas de código eu mandava mostrar o campo certo, e todos sairíamos felizes. Mas ele resolve apelar pra baixaria… Realmente ele não tem paciência para me explicar nada, e isso foi criando um círculo vicioso até o ponto em que eu não conseguia entender nada.

Por isso eu defendo a postura radical, de bater o pé: não me arrependo de perder esse cliente. Ia ser dor de cabeça para a eternidade. Kd o YvGa pra eu dar o telefone dele? :smiley: Quer pegar, immortalSoul?

[quote=MarkKnopfler]Então profissionalismo para mim e para vc significa coisas diferentes. Para mim, não significa assumir responsabilidades que não são minhas (nem tem como ser). Mas o que o cliente quer é que vc apresente uma solução, resolva o problema dele! Isso não é profissionalismo, é marketing barato.
[/quote]

De fato concordo com o Mark, aceitar falta de cultura, de educação, pressão psicológica e outras coisas mais, não é profissionalismo. Profissionalismo é parar essas coisas na fonte. Sem margem para duvida ou ambiguidade.
Se o cliente não gostar da sua atitude ele procurar outro. Simples assim. Não ha nenhuma obrigação do desenvolvedor se sacrificar pelo cliente. Essa relação master-slave não funciona. Isso é ainda é uma atitude derivada do principio de que o cliente tem sempre razão porque tem o dinheiro. Não. Ele não quer o dinheiro, ele quer o software. (O dinheiro só importa enquanto ha o que comprar)

uau, alguém concordou comigo aqui! estou chorando de emoção.

a saga do cliente chato - parte II

Hj cedo acordei e uma das primeiras coisas que pensei foi em mandar um e-mail para ele, perguntando se estava mais calmo e levantando as minhas conclusões sobre tudo o que ele quer que modifique no software.
Ele respondeu “Muito melhor assim, sussinto i[/i] e objetivo”. Aham. Os e-mails ele eram tão “sucintos” que o miolo do entendimento simplesmente sumiu. Para bom entendedor, meia palavra basta mesmo?

Eu respondi a ele que se não fosse eu para reler todo o material e sintetizar tudo sucinto e objetivo, ninguém + ia fazer isso. E que eu sou burro d+ e não sei como se “grava” numa tela, mas que um dia eu iria aprender rsrsrs. Será que alguém no GUJ me ajuda? Como se grava numa tela?

Aguardem o próximo capítulo :wink:

[quote=MarkKnopfler] E não, se eu tentar renegociar o preço pelo trabalho não previsto, ele não vai aceitar. (Os clientes de vcs aceitam? Já falei, mandem um currículo meu pra essa empresa!!)

[/quote]

Vc está negociando errado. Não negocie o valor do projeto, negocie seu valor/h. :wink:

[quote=andre_salvati][quote=MarkKnopfler] E não, se eu tentar renegociar o preço pelo trabalho não previsto, ele não vai aceitar. (Os clientes de vcs aceitam? Já falei, mandem um currículo meu pra essa empresa!!)

[/quote]

Vc está negociando errado. Não negocie o valor do projeto, negocie seu valor/h. :wink:
[/quote]

Acho difícil o cliente aceitar … Tente se colocar no lugar do cliente … Como vou saber que o cara não está “inchando” o tempo de desenvolvimento para cobrar a mais ?

[quote=andre_salvati][quote=MarkKnopfler] E não, se eu tentar renegociar o preço pelo trabalho não previsto, ele não vai aceitar. (Os clientes de vcs aceitam? Já falei, mandem um currículo meu pra essa empresa!!)

[/quote]

Vc está negociando errado. Não negocie o valor do projeto, negocie seu valor/h. :wink:
[/quote]

Ou fechar um pacote e cobrar o valor do projeto. Caso existir algo além, cobrar por hora estas implementações a mais…

Desse jeito se tem margem pra fazer um preço e acaba não sendo tão injusto com o cliente. Também obriga o cliente a sentar e conversar tim tim por tim tim, pois ele sabe que se precisar de mais alguma coisa, vai ter que pagar a mais…

É que os clientes deveriam trabalhar do mesmo modo que nós. Levantando os requisitos e documentando tudo, buscando padrões de comportamento para os procedimentos.

Tenho 20 anos, já trabalhei em 3 empresas, e só uma única maledeta tinha seus processos documentados e regrados. Isso faz muita diferença, pois aí não tem aquela história de “eu faço desse jeito e fulano faz de outro”, com procedimentos regrados existe uma base que deve ser seguida, e em cima dela se fazer alguma adaptação…

O maior problema para os analistas é chegar na empresa do cliente pra levantar os requisitos e ter de encarar um mar de gente vindo explicar o que faz. O papel de saber tudo o que acontece na empresa é do gerente/dono e de mais ninguém…

Por essas e outras que o Brasil é campeão em falências e a granda maioria das novas empresas não dura nem um ano…

Realmente. Como eu desenvolvo em uma velocidade acima da média (não é para me gabar), eu vou acabar cobrando barato d+ dessa forma.

Como alguém colocou neste mesmo tópico, algumas páginas atrás, um serviço feito em menos tempo com a mesma qualidade deve ser cobrado mais caro.

[quote=sergiotaborda]
De fato concordo com o Mark, aceitar falta de cultura, de educação, pressão psicológica e outras coisas mais, não é profissionalismo. Profissionalismo é parar essas coisas na fonte. Sem margem para duvida ou ambiguidade.
Se o cliente não gostar da sua atitude ele procurar outro. Simples assim. Não ha nenhuma obrigação do desenvolvedor se sacrificar pelo cliente. Essa relação master-slave não funciona. Isso é ainda é uma atitude derivada do principio de que o cliente tem sempre razão porque tem o dinheiro. Não. Ele não quer o dinheiro, ele quer o software. (O dinheiro só importa enquanto ha o que comprar)[/quote]

Não é relação mestre-escravo. Estamos em um mercado, a concorrência é livre. Pessoas precisam comprar trabalho e pessoas precisam vender trabalho e toda relação de troca é um beneficio mutuo. Simples assim.
Pessoas sem tato para lidar com outros seres humanos existe em todo canto, pode ser não só como contratante, mas também no contratado. Mas nesse caso estamos saindo de desenvolvimento de software e falando de relações sociais. Sinceramente, acho que não cabe discutir isso aqui por mais relevante que seja.

Cabe sim, o tópico é sobre a linguagem e a comunicação. Eu tive problemas com meu cliente justamente por causa da linguagem (universos) distintos.

Vamos debater. Garçom, traz 1 porção de filé! :smiley:

[quote=rmendes08][quote=andre_salvati][quote=MarkKnopfler] E não, se eu tentar renegociar o preço pelo trabalho não previsto, ele não vai aceitar. (Os clientes de vcs aceitam? Já falei, mandem um currículo meu pra essa empresa!!)

[/quote]

Vc está negociando errado. Não negocie o valor do projeto, negocie seu valor/h. :wink:
[/quote]

Acho difícil o cliente aceitar … Tente se colocar no lugar do cliente … Como vou saber que o cara não está “inchando” o tempo de desenvolvimento para cobrar a mais ?[/quote]

Confiança é algo que se conquista. Como alguém já falou aí em cima: “estamos falando de relações humanas”, e é sobre isso que ser Ágil fala.

Conheço gente q está muito feliz com esse modelo, e ainda trabalhando em casa… :wink:

[quote=immortalSoul][quote=sergiotaborda]
De fato concordo com o Mark, aceitar falta de cultura, de educação, pressão psicológica e outras coisas mais, não é profissionalismo. Profissionalismo é parar essas coisas na fonte. Sem margem para duvida ou ambiguidade.
Se o cliente não gostar da sua atitude ele procurar outro. Simples assim. Não ha nenhuma obrigação do desenvolvedor se sacrificar pelo cliente. Essa relação master-slave não funciona. Isso é ainda é uma atitude derivada do principio de que o cliente tem sempre razão porque tem o dinheiro. Não. Ele não quer o dinheiro, ele quer o software. (O dinheiro só importa enquanto ha o que comprar)[/quote]

Não é relação mestre-escravo. Estamos em um mercado, a concorrência é livre. Pessoas precisam comprar trabalho e pessoas precisam vender trabalho e toda relação de troca é um beneficio mutuo. Simples assim.
Pessoas sem tato para lidar com outros seres humanos existe em todo canto, pode ser não só como contratante, mas também no contratado. Mas nesse caso estamos saindo de desenvolvimento de software e falando de relações sociais. Sinceramente, acho que não cabe discutir isso aqui por mais relevante que seja.
[/quote]

Eu acho exatamente o contrario. O desenvolvimento de software é uma relação social. É exatamente isto que as pessoas têm que perceber. É por causa de não entenderem isto que estamos como estamos.
O desenvolvimento de software é a arte de entender requisitos. Implementar código é apenas uma ferramenta. às vezes durante o levantamento de requisitos vc chega à conclusão que não precisa do software para fazer aquilo, basta modificar o processo da empresa de uma outra forma.

A concorrencia é livre, mas é desleal. O gambiarreio que cobre barato a hora e incha o cronograma não se pode comprar com o cara que cobra caro, faz com qualidade e mas faz depressa. Tb não podemos compara o cara que implementa a primeira coisa que o cliente fala, com o cara que perde um tempo entendendo a necessidade do requisitor.

O benefício mútuo da tal “relação de troca” é só teórico. Na prática um lado sempre se estrepa.
Esta discussão que estamos tendo necessitaria ser levada para qualquer área, ela não é restrita do desenvolvimento de software (embora aqui o problema seja bem sério).
O profissional ser obrigado a sempre atender bem, do jeitinho que o cliente quer, é sim uma relação mestre-escravo. O cliente já chega se vendo com mais direitos que o desenvolvedor e isso é inadmissível.

[quote=sergiotaborda]
Eu acho exatamente o contrario. O desenvolvimento de software é uma relação social. É exatamente isto que as pessoas têm que perceber. É por causa de não entenderem isto que estamos como estamos.
O desenvolvimento de software é a arte de entender requisitos. Implementar código é apenas uma ferramenta. às vezes durante o levantamento de requisitos vc chega à conclusão que não precisa do software para fazer aquilo, basta modificar o processo da empresa de uma outra forma.

A concorrencia é livre, mas é desleal. O gambiarreio que cobre barato a hora e incha o cronograma não se pode comprar com o cara que cobra caro, faz com qualidade e mas faz depressa. Tb não podemos compara o cara que implementa a primeira coisa que o cliente fala, com o cara que perde um tempo entendendo a necessidade do requisitor.[/quote]

Não misture as coisas, e se formos nesse caminho daqui a pouco estaremos falando sobre filosofia e arte da retorica. Não disse que relação social não é importante para desenvolvimento de software. Aliais, se eu tivesse dito isso jamais poderia ter sugerido que estamos mais pra psicologo do que professor.
Acho que não da pra ser mais claro que isso. O que disse é que a conversa estava tomando outro rumo. Deixamos de falar de cliente do software para falar sobre pessoas com problema ao lidar com outras e isso definitivamente não é problema de desenvolvimento de software. Pessoas com esse tipo de problema existe no mundo em qualquer profissão e em qualquer papel, seja cliente ou vendedor, seja médico ou paciente, aluno ou professor e etc. Definitivamente se formos discutir isso, não estaremos mais discutindo desenvolvimento de software. Ou ainda discorda deste ponto?

sobre o fato da concorrência ser desleal isso já é outra questão e uma realidade que pouco adianta chorar e rezar na tentativa de mudar. A realidade é essa e aquele que se adaptar a ela sobrevive. Não tem essa de regras bem definidas ou de como deveria ser. Tem somente a realidade crua mostrando como é. Mas volto a repetir: Pessoas precisam comprar trabalho e pessoas precisam vender trabalho e toda relação de troca é um beneficio mutuo.
Sem falar que não existe uma referência universal de como as coisas devem ser, de qual o tamanho de cronograma ideal ou de quanto é caro e quanto é barato. Na verdade, a coisa mais próxima de uma referência universal é justamente o mercado, que não é nada mais do que cada relação de troca que acontece entre os indivíduos.

Por tudo isso, só posso afirmar que se fazer de coitado e jogar a culpa no cliente é uma atitude pouco profissional, mesmo entendendo que há casos de pessoas problemáticas, com algum tipo de deficiência no relacionamento social e etc (Que como disse anteriormente, está além do que trata o desenvolvimento de software).

Tadinho de mim, meu cliente não me entende… chuif. :cry:

Condordo 100%, meu amigo. Só acho que vc está levando nossas afirmações a ferro e fogo, achando que jogamos a culpa de tudo no cliente.
O que defendemos é o cliente assumir a responsabilidade que é dele, enquanto eu assumo somente a que é minha. O foco é sempre na responsabilidade do desenvolvedor; o cliente é visto como um ser que só tem direitos e não obrigações. Claro que ele não vai aceitar as obrigações dele como eu gostaria, vc bem disse:

Por isso eu defendo a ideia de bater o pé e negar serviço para esse cliente justamente porque, como dizia minha mãe, “o que não tem remédio, remediado está”. Eu me encarrego de servir a ele um chá de realidade.

[quote=andre_salvati][quote=MarkKnopfler] E não, se eu tentar renegociar o preço pelo trabalho não previsto, ele não vai aceitar. (Os clientes de vcs aceitam? Já falei, mandem um currículo meu pra essa empresa!!)

[/quote]

Vc está negociando errado. Não negocie o valor do projeto, negocie seu valor/h. :wink:
[/quote]

Exato. A partir do momento que se dispõe a fazer o que o cliente quer você passa a prestar um serviço e não mais vender um produto ou solução.

[quote=rmendes08][quote=andre_salvati][quote=MarkKnopfler] E não, se eu tentar renegociar o preço pelo trabalho não previsto, ele não vai aceitar. (Os clientes de vcs aceitam? Já falei, mandem um currículo meu pra essa empresa!!)

[/quote]

Vc está negociando errado. Não negocie o valor do projeto, negocie seu valor/h. :wink:
[/quote]

Acho difícil o cliente aceitar … Tente se colocar no lugar do cliente … Como vou saber que o cara não está “inchando” o tempo de desenvolvimento para cobrar a mais ?[/quote]

O programador ficar responsável pela negociação é suicídio. Precisa de uma boa equipe de vendas.

[quote=JoseIgnacio][quote=rmendes08][quote=andre_salvati][quote=MarkKnopfler] E não, se eu tentar renegociar o preço pelo trabalho não previsto, ele não vai aceitar. (Os clientes de vcs aceitam? Já falei, mandem um currículo meu pra essa empresa!!)

[/quote]

Vc está negociando errado. Não negocie o valor do projeto, negocie seu valor/h. :wink:
[/quote]

Acho difícil o cliente aceitar … Tente se colocar no lugar do cliente … Como vou saber que o cara não está “inchando” o tempo de desenvolvimento para cobrar a mais ?[/quote]

O programador ficar responsável pela negociação é suicídio. Precisa de uma boa equipe de vendas.[/quote]

Ué, quem é autônomo não tem muita alternativa …