Metodologias tradicionais x Agile - O que resolve?  XML
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Autor Mensagem
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

YvGa wrote:
mochuara wrote:
YvGa wrote:Mas continuo com Java porque o mercado continua com Java e quando o mercado mudar eu mudo tambem.


Acho que o mercado Java esta longe de acabar, existe uma grande demanda por projetos CRUDs e farta oferta de mao de obra barata.


Sim, esse é um ponto de vista valido, o mercado esta cheio de mao de obra barata sim.


Não é um ponto de vista e sim uma analise do mercado Java baseado na minha experiencia. E vc? Qual o ultimo projeto Java que participou que não era CRUD?

YvGa wrote:E por isso eh bom sempre manter o olho aberto pra novas ferramentas.


Se vc trabalha pra alguma consultoria Java não tem outra opção mesmo a não ser "ficar de olhos abertos", já que da forma que o mercado Java esta configurado na mão das consultorias não cabe a quem entende escolher a tecnologia mais apropriada para cada caso.

Por outro lado, existem bons programadores entrando no mercado a toda hora, e os melhores vão direto para o mercado que melhor atende suas necessidades como profissional de TI, em termos de salário, condição de trabalho, ferramentas. Na verdade minha recomendação para aprender novas linguagens é para os que estão entrando no mercado, não macaco velho.
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

oandrade wrote:
Voltando ao assunto real (Software - Agile), a experiência que tive em projetos com metodologia tradicional serviram apenas para empregar "diagramadores / documentadores" que realizaram um monte de casos de uso e diagramas UML que não serviram para NADA a não ser atender a uma determinada norma corporativa... E que a figura do "Analista de negócios" serve apenas para atrapalhar, pois não conhecem nada do negócio e nada de sistemas. Básicamente tentam entender o requisito do cliente e passar "mastigado" para o analista de sistemas. Sendo assim, servem para aumentar o ruído na linha...


Concordo plenamente com a parte do ruído na linha (e, inclusive, acho que sei de que projeto você está falando, Osvaldo ).

Mas acho, também, que agile não é bala de prata. Nesse ponto, eu concordo com o Sergio, de que é a equipe quem faz a diferença (seja ágil ou não). Assim, quem tem que prezar pela qualidade do código (o que acaba influindo no tempo de entrega) é a equipe.

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

asaudate wrote:Mas acho, também, que agile não é bala de prata. Nesse ponto, eu concordo com o Sergio, de que é a equipe quem faz a diferença (seja ágil ou não). Assim, quem tem que prezar pela qualidade do código (o que acaba influindo no tempo de entrega) é a equipe.


There is no silver bullet. Mas das alternativas que temos por aí, eu creio que desenvolvimento ágil seja a melhor para a opção para a maioria dos casos. Geralmente desenvolvimento ágil não é uma boa opção quando temos problemas políticos nas empresas e nas equipes.





Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

Rubem Azenha wrote:
asaudate wrote:Mas acho, também, que agile não é bala de prata. Nesse ponto, eu concordo com o Sergio, de que é a equipe quem faz a diferença (seja ágil ou não). Assim, quem tem que prezar pela qualidade do código (o que acaba influindo no tempo de entrega) é a equipe.


There is no silver bullet. Mas das alternativas que temos por aí, eu creio que desenvolvimento ágil seja a melhor para a opção para a maioria dos casos. Geralmente desenvolvimento ágil não é uma boa opção quando temos problemas políticos nas empresas e nas equipes.




Da mesma forma que waterfall da margem a analistas UML, metodologias agile da margem a evangelistas que vivem blogando as maravilhas de ser agil mas quando aperta um pouquinho ele corre pra "implantar agile" em outra empresa.

Ou seja, não existe essa de agile ser melhor para a maioria dos casos, principalmente se a maioria dos casos não esta preocupado com qualidade, como é o caso dessas consultorias Java.
laudenpower
JavaEvangelist
[Avatar]

Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline

mochuara wrote:

Não é um ponto de vista e sim uma analise do mercado Java baseado na minha experiencia. E vc? Qual o ultimo projeto Java que participou que não era CRUD?



Hoje estou trabalhando em um projeto que realiza automação da separação de caixas com pedidos de uma distribuidora de medicamentos. Envolve comunicação com hardware e atualmente separa 3600 pedidos por noite (mas temos que multiplicar esse valor por 22 = número de terminais).
Acredito que java é mais que uma linguagem é uma plataforma que atende vários segmentos, se existe mão de obra barata é por que existe em quantidade, mas isso não impede do profissional de qualidade cobrar o que é justo pelo seu serviço, e quando digo profissional digo profissional de qualquer tecnologia.

This message was edited 2 times. Last update was at 19/01/2010 16:18:43


Enquanto cultivares teu saber, nada tens a temer!

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

Rubem Azenha wrote: Geralmente desenvolvimento ágil não é uma boa opção quando temos problemas políticos nas empresas e nas equipes.


Mas esses problemas existem, não ha metodologia que resista.
Agil não é uma metodologia de desenvolvimento preocupada com o software, e sim com o resultado. Ou seja, entregue depressa e a horas. Mas a qualidade do que é entregue não está definido. Se vc usar XP , vc tem que fazer testes. Ok. Mas quem garante que vc faz os testes certos ?
Em Scrum a definição de pronto é definivel pelo implantador. Logo eu posso escolher a minha definição de pronto como : o software roda.
Isso está ok para scrum e agil em geral, mas não para um desenvolvedor preocupado com a qualidade. é aqui que artesanato de software (Software craftmanship). Mas basta que rode, isso é o minimo que se espera de um desenolvimento. Qualquer amador faz isso. O software tem que está bem construido "por dentro".

A responsabilidade de construir bem por dentro é dos desenvolvedores. Não ha gerente que possa ajudar nisso.

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

laudenpower wrote:
mochuara wrote:

Não é um ponto de vista e sim uma analise do mercado Java baseado na minha experiencia. E vc? Qual o ultimo projeto Java que participou que não era CRUD?



Hoje estou trabalhando em um projeto que realiza automação da separação de caixas com pedidos de uma distribuidora de medicamentos. Envolve comunicação com hardware e atualmente separa 3600 pedidos por noite (mas temos que multiplicar esse valor por 22 = número de terminais).
Acredito que java é mais que uma linguagem é uma plataforma que atende vários segmentos, se existe mão de obra barata é por que existe em quantidade, mas isso não impede do profissional de qualidade cobrar o que é justo pelo seu serviço, e quando digo profissional digo profissional de qualquer tecnologia.


Na certa vc escreve 1 linha de codigo Java que por sua vez chama o codigo em C que faz toda a comunicação com hardware. O resto (CRUD) vc faz com Java ne?

E onde entra a plataforma nisso?

Ta certo, vc pode cobrar o que quiser, principalmente se vc precisa fazer tunning de GC, ou alterações no nivel do bytecode, mas se for pra criar aplicações Java, ninguém vai te pagar bem porque existe muito programador Java no mercado. A não ser que vc seja 2x mais produtivo fazendo hora extra.

This message was edited 1 time. Last update was at 19/01/2010 16:43:37

oandrade
Thread.start()

Membro desde: 20/06/2005 12:50:55
Mensagens: 39
Localização: São Paulo - SP
Offline


Ok, mas em todos vc não pode abrir mão da ética profissional e dos padrões de qualidade da sua profissão. A sua profissão é fazer software não engraxar os sapatos do seu gerente, diretor, etc... o trabalho deles é lidar com os constrangimentos, não o seu.
São eles que têm que cortar features, etc... e não vc que tem que cortar em qualidade.


Não concordo com você pois trabalhar de acordo com a estratégia da empresa não anti-ético, pelo contrário.... Mas vamos lá, vou te propor um exercício:

Imagine você como arquiteto de software de uma empresa X onde após uma longa reunião, seu diretor visualiza uma estratégia para antecipar a concorrência em um determinado segmento de mercado que além de agregar valor a marca da corporação, geraria uma oportunidade de vendas exclusiva de 5 meses. Para que isso aconteça ele delega a você um orçamento de R$ 500.000,00 e diz que impreterívelmente o seu projeto deve estar em produção nos próximos 3 meses, caso contrário o custo envolvido não valeria apena ser investido diante do risco.

Um líder em sua posição deve otimizar os recursos, isso significa achar a melhor solução com os recursos disponíveis. Entretanto é claro que você não vai desenvolver um produto com a mesma qualidade que desenvolveria se tivesse um ano ao invés de três meses e orçamento ilimitado... Imagine se por exemplo, você definisse sua estratégia de testes da aplicação conforme abaixo:
- Fase: Testes de unidade (Intra-método) / Técnica: Testes funcionais + Testes estruturais (100% de cobertura)
- Fase: Testes integrados / Técnica: Testes estruturais (100% de cobertura)

Com certeza tal estratégia custaria sua cabeça na corporação devido sua grande incompetência.

Por isso disse que entre o branco e o preto existe o CINZA. Pense a respeito. . .



Errado. É o desenvolvedor que define a qualidade. É isso que significa ser "bom".


Acredito que você não entendeu o que eu disse.... Em administração de sistemas, especificamente em planejamento estratégico, os executivos definem o foco da empresa que pode ser: Resultado, Cliente, Qualidade, etc... O desenvolvedor implementa a estratégia e gerente de software deve direcioná-lo de acordo com a estratégia corporativa.


O bom profissional é aquele que entrega com qualidade no prazo e no custo e no escopo acertados. Se a qualidade não está lá, não está lá um bom profissional.


ERRADO, o bom profissional é aquele que entrega a melhor solução compatível com os recursos disponíveis (Tempo, Dinheiro, Máquinas, Ferramentas...) Exemplo: Com recursos ilimitados seria possível fazer o software sem defeitos...


Vc está redondamente enganado. É a falta de qualidade que tem custo. É a gambiarra, é a não previsão, é o não dimensionamento, em suma, é tudo aquilo que foi feito sem qualidade. É isso que gera custo excessivo. Uma boa equipe trabalhando sem impedimentos entra em estado de hiperprodutividade e produz mais com qualidade, que um bando de 15 juniors sem padrão algum.
Leia Software Estimation, Desmistfying the black art e Code Complete para numeros e Clean Code e Effective Java para definição de qualidade.


Quanto maior a qualidade do produto, maior seu ciclo de vida e menor o custo de manutenção. Entretanto o custo de implementação é excessivamente MAIOR. Faça um teste, desenvolva um sistema qualquer (Petstore, por exemplo) sem nenhum caso de testes (caixa branca), e peça para um colega implementar o mesmo sistema utilizando casos de testes com o requisito de obter 100% de cobertura (teste estrutural). Garanto a você que o custo de implementação do segundo será execessivamente maior.

Já li Code Code Complete, você leu? Deveria rever alguns conceitos...

Aproveite e leia:

http://libdigi.unicamp.br/document/?did=25141
http://libdigi.unicamp.br/document/?did=24246
http://libdigi.unicamp.br/document/?did=25334

Depois você me diz se o custo de implementação da qualidade não é caro.

Para cada caso existe uma curva que representa o valor máximo em que compensa o investimento na qualidade. Tenha em mente que quanto maior a qualidade maior o tempo de retorno do investimento. Otimizar essa função é uma das tarefas mais dificeis, pois depende de fatores intangíveis. E há casos em que o custo de manutenção não paga o investimento, por exemplo se o ciclo de vida do produto for pequeno suficiente de modo a não pagar o custo de implantação.


um abraço,
Osvaldo

Osvaldo Andrade
[WWW] [Yahoo!] [MSN] [ICQ]
laudenpower
JavaEvangelist
[Avatar]

Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline

mochuara wrote:
laudenpower wrote:
mochuara wrote:

Não é um ponto de vista e sim uma analise do mercado Java baseado na minha experiencia. E vc? Qual o ultimo projeto Java que participou que não era CRUD?



Hoje estou trabalhando em um projeto que realiza automação da separação de caixas com pedidos de uma distribuidora de medicamentos. Envolve comunicação com hardware e atualmente separa 3600 pedidos por noite (mas temos que multiplicar esse valor por 22 = número de terminais).
Acredito que java é mais que uma linguagem é uma plataforma que atende vários segmentos, se existe mão de obra barata é por que existe em quantidade, mas isso não impede do profissional de qualidade cobrar o que é justo pelo seu serviço, e quando digo profissional digo profissional de qualquer tecnologia.


Na certa vc escreve 1 linha de codigo Java que por sua vez chama o codigo em C que faz toda a comunicação com hardware. O resto (CRUD) vc faz com Java ne?

E onde entra a plataforma nisso?

Ta certo, vc pode cobrar o que quiser, principalmente se vc precisa fazer tunning de GC, ou alterações no nivel do bytecode, mas se for pra criar aplicações Java, ninguém vai te pagar bem porque existe muito programador Java no mercado. A não ser que vc seja 2x mais produtivo fazendo hora extra.


Faltou colocar nessa equação o conhecimento do profissional, eles vão te pagar pouco se você não tiver nada que te destaque isso é fato...
Quando falei em plataforma estava dizendo que existe muito segmento para o profissional investir e se especializar, aposto que os crud's que tu apontou são em grande maioria web, mas tenho certeza que tem muito espaço para aplicações móveis e desktop, e não me venha dizer que delphi e vb tomaram conta que uma coisa é fato, essas linguagens aos poucos estão se direcionando a nichos e aplicativos legados.

Enquanto cultivares teu saber, nada tens a temer!

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

oandrade wrote:

Ok, mas em todos vc não pode abrir mão da ética profissional e dos padrões de qualidade da sua profissão. A sua profissão é fazer software não engraxar os sapatos do seu gerente, diretor, etc... o trabalho deles é lidar com os constrangimentos, não o seu.
São eles que têm que cortar features, etc... e não vc que tem que cortar em qualidade.


Não concordo com você pois trabalhar de acordo com a estratégia da empresa não anti-ético, pelo contrário.... Mas vamos lá, vou te propor um exercício:

Imagine você como arquiteto de software de uma empresa X onde após uma longa reunião, seu diretor visualiza uma estratégia para antecipar a concorrência em um determinado segmento de mercado que além de agregar valor a marca da corporação, geraria uma oportunidade de vendas exclusiva de 5 meses. Para que isso aconteça ele delega a você um orçamento de R$ 500.000,00 e diz que impreterívelmente o seu projeto deve estar em produção nos próximos 3 meses, caso contrário o custo envolvido não valeria apena ser investido diante do risco.

Um líder em sua posição deve otimizar os recursos, isso significa achar a melhor solução com os recursos disponíveis. Entretanto é claro que você não vai desenvolver um produto com a mesma qualidade que desenvolveria se tivesse um ano ao invés de três meses e orçamento ilimitado... Imagine se por exemplo, você definisse sua estratégia de testes da aplicação conforme abaixo:
- Fase: Testes de unidade (Intra-método) / Técnica: Testes funcionais + Testes estruturais (100% de cobertura)
- Fase: Testes integrados / Técnica: Testes estruturais (100% de cobertura)

Com certeza tal estratégia custaria sua cabeça na corporação devido sua grande incompetência.


E eu com isso.
O problema se resolve facilmente. Com esse dinheiro da para montar uma equipa decente. Um arquitetura simples e um conjunto bem aplicado de design patterns.

Eu já tive que fazer isso com menos recursos e menos tempo. Se a unica coisa que é o seu limite é uma quantidade em dinheiro vc tem o mundo na sua mão. O problema aconteece quando o gerente/diretor começa com umas conversas de documentação em UML, documentação de casos de uso e o diabo. Isso que atraza.
Nos projetos onde fui arquiteto eu fazia o framework, o pessoal usava e usavamos scrum. Enquanto isso eu tinha que fazer esse documentos idiotas e inuteis porque era no dia a dia que as coisas eram colocadas na mesa. Não vale a pena colocar tudo no UML . isso é simplesmente idiota. Cumpriamos os prazos e faziamos demonstrações. Sabe o resultado ?
A empresa , depois do produto pronto, nunca o usou. Tal era a pressa que tinha...

Não ha espaço para sacrificar a qualidade. A qualidade era o que nos permitia alterar todo o sistema em ciclos de uma semana e sem horas extra. Se fosse POG ainda estavamos lá desenvolvendo.

Sacrificar a qualidade é inadmissível. Quando mais depressa entenderm isso melhor.

Claro, é mais facil deixar a bola cair e culpa a pressão dos chefes. Afinal ler livros e pensar nos problemas é altamente cansativo e estressante. Afinal o objetivo é ter um emprenho, não trabalhar.



Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

laudenpower wrote:
Faltou colocar nessa equação o conhecimento do profissional, eles vão te pagar pouco se você não tiver nada que te destaque isso é fato...


Acho que vc não esta acompanhando a discussão. Nenhuma consultoria Java quer seu conhecimento aprofundado porque o negócio delas consiste em oferecer software de baixa qualidade. O que destaca o profissional aos olhos dela é a capacidade de fazer hora extra sem chorar, pra cumprir os prazos que outros estabeleceram sem a minima noção do trabalho que vai dar.

laudenpower wrote:
Quando falei em plataforma estava dizendo que existe muito segmento para o profissional investir e se especializar, aposto que os crud's que tu apontou são em grande maioria web, mas tenho certeza que tem muito espaço para aplicações móveis e desktop, e não me venha dizer que delphi e vb tomaram conta que uma coisa é fato, essas linguagens aos poucos estão se direcionando a nichos e aplicativos legados.


Java em aplicações móveis? Isso deve ser piada ne? Java ja perdeu essa briga brow. Qual a próxima piada? TV Digital?

This message was edited 1 time. Last update was at 19/01/2010 17:33:38

laudenpower
JavaEvangelist
[Avatar]

Membro desde: 28/12/2008 21:00:08
Mensagens: 349
Offline

mochuara wrote:
laudenpower wrote:
Faltou colocar nessa equação o conhecimento do profissional, eles vão te pagar pouco se você não tiver nada que te destaque isso é fato...


Acho que vc não esta acompanhando a discussão. Nenhuma consultoria Java quer seu conhecimento aprofundado porque o negócio delas consiste em oferecer software de baixa qualidade. O que destaca o profissional aos olhos dela é a capacidade de fazer hora extra sem chorar, pra cumprir os prazos que outros estabeleceram sem a minima noção do trabalho que vai dar.

laudenpower wrote:
Quando falei em plataforma estava dizendo que existe muito segmento para o profissional investir e se especializar, aposto que os crud's que tu apontou são em grande maioria web, mas tenho certeza que tem muito espaço para aplicações móveis e desktop, e não me venha dizer que delphi e vb tomaram conta que uma coisa é fato, essas linguagens aos poucos estão se direcionando a nichos e aplicativos legados.


Java em aplicações móveis? Isso deve ser piada ne? Java ja perdeu essa briga brow. Qual a próxima piada? TV Digital?


Acho que quem ta fazendo piada aqui é tu, essa visão de que todas as consultorias não dão a mínima para o profissional é falácia, existem empresas que inclusive dão treinamento ao funcionário e o incentivam a tirar a certificação como prova de qualificação e não esperam hora extra por isso.
Em relação aos exemplos que te passei foi apenas para mostrar como a plataforma é extensa, agora se tu acha que o com ruby e seus clojurequedizemqueehlegalporissovouusar é padrão de mercado então tu deves ter algum trauma do java.

Enquanto cultivares teu saber, nada tens a temer!

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

laudenpower wrote:
existem empresas que inclusive dão treinamento ao funcionário e o incentivam a tirar a certificação como prova de qualificação e não esperam hora extra por isso.


Quais ? IBM ? Google ? humm... essas não contam.

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
YvGa
Virtual Machine Man

Membro desde: 07/03/2007 15:58:16
Mensagens: 517
Offline



Imagine você como arquiteto de software de uma empresa X onde após uma longa reunião, seu diretor visualiza uma estratégia para antecipar a concorrência em um determinado segmento de mercado que além de agregar valor a marca da corporação, geraria uma oportunidade de vendas exclusiva de 5 meses. Para que isso aconteça ele delega a você um orçamento de R$ 500.000,00 e diz que impreterívelmente o seu projeto deve estar em produção nos próximos 3 meses, caso contrário o custo envolvido não valeria apena ser investido diante do risco.


E entao o arquiteto acabaria com toda a visao estrategica do cara, que descobriu esta brecha pra ganhar uma fortuna entregando pra ele uma bomba? Coitado do diretor, tao competente em visoes de mercado e tao incompetente em recrutar profissionais.

O que as pessoas precisam entender é que desenvolver software de qualidade é mais rapido que desenvolver software sem qualidade. Desenvolver software sem se preocupar com falhas vai gerar constrangimento e trabalho extra antes da implantacao. Toda aquela confusao de codigo "despreocupado" comeca a cobrar seu preco ja no inicio do projeto.

Paulo Borio
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

laudenpower wrote:
Acho que quem ta fazendo piada aqui é tu, essa visão de que todas as consultorias não dão a mínima para o profissional é falácia, existem empresas que inclusive dão treinamento ao funcionário e o incentivam a tirar a certificação como prova de qualificação e não esperam hora extra por isso.


Não só para o profissional, mas dão a minima tb para o cliente, que não sabe que seu negócio esta na mão de profissionais que se formaram em cursinho de Java. Mas se receber 1/3 do salario normal (ainda como PJ!) é ser bem tratado só porque vc pode fazer a prova 3 vezes sem pagar pelo voucher, ok ne?

laudenpower wrote:
Em relação aos exemplos que te passei foi apenas para mostrar como a plataforma é extensa, agora se tu acha que o com ruby e seus clojurequedizemqueehlegalporissovouusar é padrão de mercado então tu deves ter algum trauma do java.


Se depois de tudo que foi dito aqui vc continua querendo seguir o padrão do mercado é porque pretende abrir uma consultoria, não seguir carreira como progamador, estou certo?
 
Índice dos Fóruns » Metodologias de Desenvolvimento e Testes de Software
Ir para:   
Powered by JForum 2.1.8 © JForum Team