Não estariam invertendo os papeis?!

:arrow: Sim. Não acho que quem desenvolve é o cliente, ao analista cabe a extração de requisitos, quanto aos use case para os desenvolvedor é passado o design que lhe permitará, o plano e a escolha de modelo de processo para se situarem ao desenvolvimento.

:idea: Engenharia de Software fora a base para que hoje temos, em nos situar-mos perante um universo de questões, não existe desenvolvimento sem modelo de processo, não existe desenvolvimento sem metodologia perante cenário, não existe desenvolvimento sem entendimento para divisão de responsabilidade.Você pode optar por um modelo de Fabrica(CMM, CMMI, ISO, COBIT, ITIL, OSI, RUP o que for) pode optar por um modelo de interação e troca de funcionalidade redução infinita de papéis exemplo b[/b] melhor agilidade.
Lembrando que Scrum foi concebido como um estilo de gerenciamento de projetos em empresas de fabricação de automóveis e produtos de consumo.

:idea: Concordo, que não é um plano, todavia programador não cria um plano , recebe o design a que vai projetar perante a equipe de desenvovilmento.

:arrow: Discorco.O desenvolvedor pode seguir um workflow, ou um modelo de diagrama que vai seguir o escopo do projeto.

:arrow: Fica, claro que existe divisão de responsabilidade e entendimento das funcionalidades dos papéis ao cenário e cronograma a se cumprir no projeto.

Vejo pelas discussões que algumas pessoas acreditam que programadores só sabem fazer uma coisa: receber especificação e codificar. Sinto muito amigo, mas estes seres não são programadores. São code monkeys.

Programadores também sabem projetar, modelar. E programadores muitas vezes são os heróis em campos onde a ENGENHARIA DE SOFWARE, com todos seus processozinhos, não faz muito não.

Programar CRUD não é a única atividade de um programador. Isso, aliás, deveria ser deixado aos mais inexperientes, para que estes possam ir se familiarizando.

Quer ver programação de verdade? Vai ver onde estão sendo desenvolvidos os novos frameworks. Olha na pesquisa científica (como bioinformática). Olha no desenvolvimento de novas aplicações para web, para negócios. Não estou falnado de aplicações que reinventam a roda, só para uma empresa dizer que tem um sistema adaptado. Estou falando de coisas realmente novas. De criatividade. De hackers.

A industria das 3 letrinhas tenta a todo custo transformar o programador em peão, com um único intuito: diminuir seus salários.

Esse post é o maior festival de asneiras que já li em todo o GUJ, sério!

Acho que a maioria dos implementadores do mercado olha no espelho quando acorda e diz: EU SOU O CARA. Quando na verdade ele é uma pequena peça no desenvolvimento de um sistema, com a visão mais restrita e quase sempre ocupada por profissionais menos inexperientes. O próprio fato de achar que analista só cria diagramas para que o coitado do “super programador” decifrá-los mostra a imaturidade do profissional.
O papel do analista está muito além de criar bonecos bonitinhos. Ele é responsável por entender o negócio da empresa, entender como o sistema desenvolvido agrega valor ao seus stakeholders, fazer um filtragem do que é necessário e o que não é, ajudar no planejamento do sistema (ele e o gerente de projetos deve verificar se aquele sistema é entregável no prazo estimulado), deve possuir boa capacidade de negociação, precisa procurar inconsistencias entre requisitos (duvido que saiba qual o valor do caso de uso que vc ou o carinha do seu lado está fazendo no sistema como um todo), muitas vezes pegar a documentação de um sistema antigo para entender o que o novo deve fazer, tem que entender o que o cliente tá falando e “desenhar” para o implementador cria-lo, deve cria documentos de casos de uso, de especificações suplementares, de visão, etc. e alem de tudo deve responder com um maior grau de responsabilidade pelo sistema produzido e modelado. Isso foi o que eu consegui lembrar por agora, se fosse um pouco mais esperto procuraria no RUP algumas atividades “imbecis” que o analista deve fazer.

PS: Estagiario deveria ser proibido de postar no GUJ :roll: :roll:
PS1: Não sou analista
PS2: Se você não enxerga isso na sua empresa, ou sua empresa não entende o que é um analista ou você não entende o que é ser um analista, mostrando o quanto é limitado. Por não entender o papel do analista e por trabalhar numa empresa que não sabe também.
PS3: Eu comprei semana passada !!! :twisted: :twisted:

resumindo o analista ve negocio e o programador transforma o negocio em uma solução computacional…
pq o fato de lidar com o negocio é mais importante em criar ele em sua forma computacional?

[quote=luistiagos]resumindo o analista ve negocio e o programador transforma o negocio em uma solução computacional…
pq o fato de lidar com o negocio é mais importante em criar ele em sua forma computacional?
[/quote]

o negocio é e sempre será o mais importante, traduzir o negocio para sua forma computacional pode ser feito de várias maneiras, que seja contratando terceiros… mas as empresas que tem seus negocios sempre precisarão dos analistas que os entendam e saibam como deve ser feita a sua forma computacional, na visão geral.

Treinar um cara para conhecer frameworks e patterns dá trabalho, mas em vários casos se aprende fuçando… agora treinar um cara para dominar os negocios de uma empresa grande e entender como se faz a melhor representação computacional possivel, e o pior, integrar com tudo o que já existe dentro dela… não é tão facil, leva muito tempo.

Como eu não acredito mais nessa dupla Analista e Programador, mas sim num Desenvolvedor, eu acho que o salário deve ser por faixa de sênioridade do mesmo. No caso de um líder técnico (não é Gerente de Projetos), claro que ele vai (e deve) ganhar mais.

[quote=luistiagos]resumindo o analista ve negocio e o programador transforma o negocio em uma solução computacional…
pq o fato de lidar com o negocio é mais importante em criar ele em sua forma computacional?
[/quote]

Pq aqui que entra avisão de que existe uma hierarquia Programador -> Analista.

Como disseram acima, o programador pode ser inexperiente e o analista faz muito e bla bla bla…

Isso acontece sim, em setores onde não existe mais inovação ou ela ocorre muito devagar. Pra fazer GRUDE, por exemplo. rsrsrsrs

Mas games? Pesquisa aplicada? IA? Desenvolvimento de frameworks? E mais uma porrada de áreas? Será que esse morelo do RUP (que já é criticado por muitas organizações) é mesmo o único válido?

Tabém não acredito mais nessa dicotomia analista/programador.

Ser programador somente nos leva a ter uma visão limitada. Ser somente analista, me desculpem, mas também limita. Creio que o papel que deve ser buscado é o de desenvolvedor, um cara que consegue APLICAR realmente a tecnologia ao mundo do negócios. E esse cara não é simples de ser formado não.

[quote=josenaldo]Vejo pelas discussões que algumas pessoas acreditam que programadores só sabem fazer uma coisa: receber especificação e codificar. Sinto muito amigo, mas estes seres não são programadores. São code monkeys.

Programadores também sabem projetar, modelar.
[/quote]

Calma. Nem tanto ao mar, nem tanto à terra.
“code monkey” é uma expressão depreciativa para programador.
Programador é o cara que programa. Não tem como chamar outro nome (não em português)

Ser programador não é de forma nenhuma depreciativo ou limitativo já que para ser um bom programador
é preciso conhecer muito bem a linguagem e a API. Esse é o papel do programador: escrever codigo eficiente. Mais nada.
Por eficiente não me refiro apenas à performance mas principalmente à legibilidade. Como alguem disse: ser programador não é saber escrever codigo, é saber ler codigo.

Mas “programador” não é uma profissão per se, é um papel no ciclo de desenvolvimento. Então, programador é um dos “chapeus” que o desenvolvedor usa. Aqui “desenvolvedor” é um nome genérico para quem trabalha com desenvolvimento de sofware, não o designer. O ponto é ele é o primeiro papel do desenvolvedor. Não dá para começar como arquiteto…

Claro que eles sabem projetar e modelar: código. Se souberem projetar e modelar aplicações e sistemas são mais que programadores.

O problema não é que programador é um termo limitado a digitar codigo, o problema é que as pessoas não são conscientes das suas capacidades e não se denominam corretamente. Ai tentam esticar os termos para englobar o que elas se consideram.

Não é a industria, são os próprios desenvolvedores. As pessoas normais não tem noção da diferença entre um programador e um arquiteto e entre este e um analita, eles só querem um software. Não lhes interessa como é feito nem por quem. são os desenvovledores que têm que se orgulhar da sua profissão, constituir padrões de qualidade e aceitação de forma a eliminar esse caras que acham que, porque saber usar uma IDE, podem ser considerados programadores.

Só um adendo

Alguem não é programador , analista, arquiteto etc… alguem desempenha o papel de programador, analista, arquiteto, etc…
A primeira versão é limitada e tipica do pensamento do seculo XX onde uma pessoa tem que ser especialista.
Isso não é mais o “bom”. O bom é evoluir. Vc começa por um e depois tenta os outros. Existe um ciclo: programador -> designer -> arquiteto -> analista-> gerente , mas cada uma terá mais talento para uma das partes.

Isso não significa que ele fará apenas isso. Porque ele não funciona sozinho.
É pensamento do seculo XIX : comece por baixo e vire presidente.
Claro que isso exige esforço, honestidade, responsabilidade e outras qualidades dignas que hoje em dia estão em falta. A perguiça
é a principal barreira. Então é mais cómodo ser apenas uma coisa.

Concordo com o Sergio, “Analista é de negócios…” e ponto final.

Todos esses papéis, de analista disso, analista daquilo, analista-programador
daquele outro, é muito bom pra consultorias e fábricas de software ganhar dinheiro.
Mas na minha opnião, existe desenvolvedor. E desenvolvedor precisa não apenas saber
programar, precisa analisar impacto de alterações, se preocupar com requisitos não-funcionais,
escrever testes…
Não é necessário ser um “super-homem” auto-didata, mas precisa ter flexibilidade
suficiente para participar de reuniões com o cliente e ter conhecimento técnico para implementar
uma solução. Tudo bem, eu concordo, achar esse tipo de profissional, é MUITO difícil. Mas com certeza,
esse cara vai ser melhor renumerado do que o 'code monkey". Acho que é simples assim.
Se existem empresas que “promovem” um ótimo desenvolvedor para analista, coordenador ou gerente, já é outra história http://en.wikipedia.org/wiki/Peter_principle.
Empresas sérias, renumeram pela capacidade e responsabilidade do profissional, e não apenas pelo cargo.

:idea:

:arrow: Podem ser colaboradores, e assumir papéis ou troca de responsabilidade deacordo com a natureza e do ciclo ao projeto em que estão, no entanto isso parte do princípio que são desenvolvedores.

Concordo.Entender o que busca em sua área, saber identificar-se, sobre o seu conhecimento adquerindo experiência e sendo colaborador em sua equipe de desenvolvimento.

Não existe isso.discordo.
Todavia talento é o que identifica o profissional que entende sua funcionalidade e atua de forma colaborativa, mas não existe essa regra de ciclo, o mesmo pode originar-se ao projeto sem nunca ter estado nele, e receber atribuições distintas ou obter alguma funcionalidade:por exemplo.
Uma contratação ao acaso.Preciso de um arquiteto de software.

A equipe de desenvolvimento deve entender o plano de projeto e colaborarem entendendo suas responsabilidades.

Discordo. “O bom é evoluir”

:idea:Tira da mente o termo programador, e coloca como “colaborador”.

Pensa assim, o celular antes era só mesmo pra falar “Programador” , hoje você até recebe canais da NET. “Outsourcing”

"

ai que ta o erro… oq as vezes ocorre é que o analista faz o papel de administrador… quem deve bolar a estrategia de negocio da empresa é o administrador e não o analista… o analista deve apenas pegar a necessidade do administrador ou seja a estrategia de negocio que ele bolou e repassar as informações para o programador implementala… neste cenario o administrador é o cliente… e o analista aquele que pega as necessidades do cliente e repassa aos programadores…

Vc está falando do ponto de vista da empresa. O ciclo que mencionei é do ponto de vista da pessoa.
Eu tenho uma certa dificuldade em colocar gerente e analista no mesmo ciclo que os outros, mas era apenas para universalizar o ciclo. Se fosse mais correto teria que ser

desenvolvimento : programador -> designer -> arquiteto
gerenciamento: arquiteto -> analista -> gerente

Desenvolver é diferente de gerir e os vários tipos de gerente gerenciam coisas diferentes:
arquiteto : tencologia
analista : o cliente e os requisitos
gerente : o custo e o prazo

O que eu quero ilustrar é que um gerente tem que ter sido analista e arquiteto para saber o que está em jogo
mas se ele souber, mesmo sem ter sido, blz. Acontece apenas que a probabilidade disso acontecer é infinitamente pequena.

Realmente, considerando a “analise” como o mapeamento dos conceitos de negócio em artefatos de software, quem faz são os programadores. O Analista de Negócio em si possui atribuicoes totalmente diferente dessas. Nao vejo relacao entre eles, nem de hierarquia.

Já vi um lugar que era assim:

Programador: O cara que manja, sabe como as coisas funcionam e ganha uma mixaria.

Analista: Não deu certo como programador e manja pouco da área. Daí o transformam em analista e dobraram o salário.

Gerente: Não deu certo como analista e não manja nada da área. Foi promovido a gerente e quadruplicou o salário.

Administrador: Não sabe ligar o computador, nem mexer o mouse e nunca ouviu falar em programação. Ganha 5 vezes mais que o gerente.

Daí o que acontece: quando dava merda a culpa é do programador, mesmo que a merda seja causada por um requisito imprevisto ou levantado errado. Quando o troço funciona, ninguém nem lembra que o programador existe, mas os outros são recompensados.

http://blog.fragmental.com.br/2008/01/15/quando-eu-crescer-quero-ser-analista-de-sistemas/

[size=18]« Engenharia de BuildProgramação RADioativa »Quando eu crescer quero ser Analista de Sistemas[/size]

Este tópico está na minha fila de posts há meses, hora de sair algo. Eu vou me basear num e-mail que recebi de uma pessoa do GUJ (que só não vou falar o nme porque não pedi autorização):

Sobre o ?polêmico? manjado tópico de que o java pode acabar.

Você postou o seguinte (na primeira página):

Software é programar. Se você que gerenciar uma equipe de desenvolvimento você tem que estudar matérias relacionadas à gestão de pessoas. Isso não é uma evolução do programador, um desenvolvedor de software é sempre um desenvolvedor de software.

Será que alguém que se forma em Ciência da Computação (como eu, se Deus quiser) não consegue o cargo de gerência de equipe? Eu vejo isso pelo meu tio? ele é formado em Engenharia Química e hoje é gerente de um empesa aqui, mas porquê? Porque ele conhece como as coisas funcionam? todo gerente que conheço ou que já ouvi falar aconteceu o mesmo? gerentes de supermercado geralmente sabem tudo o que se passa dentro do maldito mercado! Concorda? Logo, começa-se como programador, pra depois passar pra cima. Ou não? Você já foi programador? Estou em dúvida porque parece que o salário de um programdor (caso eu seja programdor pra vida inteira, que é algo que eu não quero) é baixo e não dê pra sustentar uma família, entende? Da maneira que eu digo faz parecer que eu não quero ser programador JAMAIS, mas eu quero? putz, amo programar, tenho um tesão gigantesco por programação? mas o problema é se vai me sustentar bem e minha família pro resto da vida, entende? Acredito que se um dia eu chegar a um cargo que não envolva programação eu ainda assim vou programar, pra me divertir mesmo.

E aí, o que você acha?

Este é um problema bem grande. Vamos começar sobre um problema que não está explícito no e-mail mas que existe: aquilo que alguns chamam de analista de sistemas.

Quando eu estava na faculdade pela primeira vez (ou seja: antes de largar ela pela rimeira vez) lembro de ter aula com um professor daqueles com anos de COBOL nas costas. Ele se lamentava sobre como o mercado confundia analistas e programadores e como estava surgindo a bizarrice do ?progranalista?, alguém que combinava os dois papéis. Na comunidade em geral você vê este pensamento, eu tenho muitos conhecidos que querem ser ?analistas?, o que para eles significa desenhar UML ou fluxogramas que são passados para os programadores.

Eu acho que já escrevi sobre isso aqui mas isso não é algo justificável. Eu nunca desenvolvi em COBOL ou uma destas plataformas mais antigas e não posso te dizer se se justificava há alguns anos mas não faz mais sentido, e há muito tempo. O papel do analista seria, teoricamente, converter um modelo abstrato (de negócios) em um modelo lógico, geralmente expresso de forma gráfica. O modelo lógico então passa a um modelo físico, que é a implementação.

Agora vamos analisar o caso de uma plataforma moderna de desenvolvimento como Java, .Net ou Ruby. Um modelo abstrato é composto por conceitos de negócio, geralmente estes conceitos não possuem uma estrutura que um computador entenda. O analista vai traduzir este conceito em lógica, provavelmente usando UML. Ora, UML é apenas uma notação gráfica para classes e objetos e sua linguagem favorita já trabalha com classes e objetos. A tradução entre um modelo lógico e o modelo físico é desnecessária: o modelo lógico já é o modelo físico. A diferença é que UML não executa, por mais que os evangelistas de MDA cismem do contrário.

A solução? Modele em código. Caso você precise erar diagramas basta você utilizar uma das dezenas de ferramentas de engenharia reversa. Modelando em código você tem algo executável, testável e que pode dar feedback ao seu usuário.

?Analista de sistemas? é algo que não existe. Pode ter existido um dia, não sei, mas não faz mais sentido há muitos anos. O modelo lógico é expresso em linguagens de altíssimo nível que modela muito bem o negócio: Java, Ruby, C#? Quem converte o lógico em físico é alguém que nem cobra muito por isso: o compilador.

Alguém colocar na sua assinatura de e-mail ou ter a carteira assinada (como eu já tive!) como ?Analista Java? está se enganando e colaborando para a criação de papéis que só existem na burocracia das empresas e das pessoas.

Mas e o papel do analista de resolver problemas de negócio? Sinto informar mas se você fazia isso como analista você estava ou se enganando ou enganando seu cliente. É certo que muitos clientes precisam entender seus próprios negócios antes de criar um sistema mas isso não é papel de analista de sistemas, é papel de analista de negócios. Um analista deste tipo possui capacitação em campos bem diferentes, é completamente possível que um analista de negócios seja um desenvolvedor (vamos abolir o ?analista de sistemas? a partir daqui) mas neste caso ele está assumindo duas especialidades. Um analista de negócios possui um perfil não-técnico e mais especializado em um mercado como bancos, marketing, telecomunicações e etc.

Mas e o gerente? Uma das piores coisas que podem fazer em uma empresa é promover um bom técnico à gerente (coordenador, o que for) apens porque ele está há mito tempo na casa. Querem estimular a pessoa? Transormem ele em um líder técnico, aumentem o salário do sujeito e o deixem em paz.

Gerência não é brincadeira. Não é porque alguém programa muito bem que vai ser um bom gerente. Se você é desenvolvedor mas sonha em dizer para a paquera no barzinho que é gerente de algo (nem que seja do McDonald?s) invista nisso. Aprenda sobre liderança, sobre mercado, plano de negócios, luxo de caixa, lean e todas as dezenas de disciplinas envolvidas. Vai levar um tempo.

Só não encare isso como uma evolução. Você está saindo da carreira de técnico, não evoluindo. Considerando que conseguir bons salários como técnico é raro pode ser uma boa escolha, mas nem sempre é. Se você é um bom técnico existem opções?