Programador x Desenvolvedor x Arquiteto

Pessoal, andei dando uma olhada nas certificações e me surgiu uma dúvida um pouco filosófica:

Qual é a diferença real entre programador, desenvolvedor e arquiteto de software (tanto em Java quanto em outras linguagens).

Obrigado,
abraços!

Boa pergunta cara…

Pragramador e Desenvolvedor parece ser a mesma coisa…mas Arquiteto já parece ser algo diferente…

Mas real diferença mesmo eu não sei qual é não!

[quote=dionat4n]Pessoal, andei dando uma olhada nas certificações e me surgiu uma dúvida um pouco filosófica:

Qual é a diferença real entre programador, desenvolvedor e arquiteto de software (tanto em Java quanto em outras linguagens).

Obrigado,
abraços![/quote]

Acredito, nao tenho certeza, que programador é aquele que apenas codifica enquanto que o desenvolvedor planeja e analisa, ou seja, faz os famosos diagramas UML, tbm pode trabalhae com Q.A. (Quality Assurance). Arquiteto, uaaau, no idea.

Programador = Desenvolvedor

  • Responsável pela codificação

Arquiteto

  • Responsável pela arquitetura do sistema, é ele que irá decidir quais frameworks utilizar, qual versão do Java entre outras decisões de projeto, em certos casos de uso é ele que irá projetar, construindo diagramas UML para facilitar o Desenvolvedor/Programador na codificação.

programador segue uma especificacao notória de implementação, já o desenvolvedor pode fazer o mesmo, buscando o design para melhor solução para um determinado problema técnico necessário, bem como um requisito não-funcional do sistema, podendo até desenvolver um componente para isto.

o arquiteto tem atuação sublime sob os dois acima, intervindo em diversas fases do desenvolvimento de um software. praticamente coloca o dedo em tudo que é canto. uma visão geral pelo rup pode se visualizar algumas possíveis responsabilidades do arquiteto.

Vou simplificar: O todo está dividido em dois grupos, o grupo dos que tenta fazer um bom trabalho e o grupo dos que tenta impedir o bom trabalho de ser feito.

flws

Acredito que seja:

Programador - Por definição é uma pessoa que conhece bem uma linguagem de programação,
mas não tem muitos conhecimentos relativo a modelagem, se for dado um monte de
diagramas UML para ele executar ele não conseguiria…

Desenvolvedor - Ele tem todos os conhecimentos do programador mais uma bagagem com relação a modelagem,
um bom entendimento de UML… Mas não tem uma bagagem de padrões de projeto.
Ao contrário do programador se passar para ele somente os digramas este consegue se virar.

Arquiteto - Além de ter um bagagem muito grande com modelagem, conhecimentos de padrão de padrões
de projeto, ainda deve conhecer a infra-estrutura onde a aplicação vai ser disposta…

Podem verificar estas afirmações pelo conteúdo das provas de certificação da sum.

[color=red]Acredito que a pessoa só é um programador bem nó inicio de sua carreira… ou se trabalha em uma fabrica somente montando sistemas… [/color]

Eu já trabalhei em uma empresa, onde se existiam “analista de sistemas” a justificativa do
gerente era que todos tinham que fazer as mesmas coisas ou seja se for pedido a um programador para
fazer um diagrama de classe de um sistema, este poderia recusar dizendo que não é uma tarefa dele.

[quote=guilhermesg]Acredito que seja:

Programador - Por definição é uma pessoa que conhece bem uma linguagem de programação,
mas não tem muitos conhecimentos relativo a modelagem, se for dado um monte de
diagramas UML para ele executar ele não conseguiria…

Desenvolvedor - Ele tem todos os conhecimentos do programador mais uma bagagem com relação a modelagem,
um bom entendimento de UML… Mas não tem uma bagagem de padrões de projeto.
Ao contrário do programador se passar para ele somente os digramas este consegue se virar.

Arquiteto - Além de ter um bagagem muito grande com modelagem, conhecimentos de padrão de padrões
de projeto, ainda deve conhecer a infra-estrutura onde a aplicação vai ser disposta…

Podem verificar estas afirmações pelo conteúdo das provas de certificação da sum.
[/quote]

Muito boa a sua classificação. Só diria quero fazer um ressalva. Desenvolvedores sim sabem padrões de projeto. Aliás é isso que os define. Não é possível desenvolver ( ou seja , evoluir uma ideia básica) sem conhecimento de padrões. Além de os saberem os desenvolvedores os procuram e catalogam.
Arquiteto deve incluir os padrões descobertos pelos desenvolvedores. Isso é tanto mais relevante quando mais especificos do dominio os padrões são. Contudo a preocupação do arquiteto nunca é com os requisitos funcionais do sistema e sim com os não funcionais. Performance , escalabilidade, disponibilidade, etc… são as preocupações do arquiteto. O arquiteto por definição deve conhecer várias tecnologias que permitam alavancar esses medidas.
Os arquitetos montam uma estrutura macro a que o sistema tem que obdecer por causa dos requisitos não funcionais. Isso vai desde o tipo de banco, comunicação de rede, tecnologias de middleware , até comos como usabilidade da interface gráfica. O codigo interno da aplicação é quase uma caixa negra para o arquiteto a maior parte do tempo.
O desenvolvedor é responsável por incluir os requisitos funcionais. Pegar o modelo de dominio levantando e dar-lhe “vida” criar qualquer classe ou camada necessária para integrar esse domínio com a estrutura definida pelo arquiteto.
O programador escreve o código da forma mais eficiente possível. (eficiente = clara + performática). Ele é o especialista na linguagem. Os outros são especialistas na plataforma e frameworks.

A idéia de que todos o arquiteto teve que ser desenvolvedor que teve que ser programador é boa, mas não é essencial.
É como dizer que todos o gerente deve ter sido programador. Isso normalmente só atrapalha porque a pessoa ainda pensa como pensava à X anos atrás quando programava com uma tecnologia que não existe mais.
Cada um na sua posição. Tem pessoas que adoram escovar bits (programador) mas acham um saco falar com o cliente e levantar requisitos (arquiteto) ou adoram modelar OO mas odeiam programar …
Ou seja, não é uma escala, são trabalhos diferentes.

[quote=guilhermesg]Acredito que seja:

Programador - Por definição é uma pessoa que conhece bem uma linguagem de programação,
mas não tem muitos conhecimentos relativo a modelagem, se for dado um monte de
diagramas UML para ele executar ele não conseguiria…[/quote]

Este profissional ainda existe?

[quote=guilhermesg]Acredito que seja:

Programador - Por definição é uma pessoa que conhece bem uma linguagem de programação,
mas não tem muitos conhecimentos relativo a modelagem, se for dado um monte de
diagramas UML para ele executar ele não conseguiria…

Desenvolvedor - Ele tem todos os conhecimentos do programador mais uma bagagem com relação a modelagem,
um bom entendimento de UML… Mas não tem uma bagagem de padrões de projeto.
Ao contrário do programador se passar para ele somente os digramas este consegue se virar.

Arquiteto - Além de ter um bagagem muito grande com modelagem, conhecimentos de padrão de padrões
de projeto, ainda deve conhecer a infra-estrutura onde a aplicação vai ser disposta…

Podem verificar estas afirmações pelo conteúdo das provas de certificação da sum.

[color=red]Acredito que a pessoa só é um programador bem nó inicio de sua carreira… ou se trabalha em uma fabrica somente montando sistemas… [/color]

Eu já trabalhei em uma empresa, onde se existiam “analista de sistemas” a justificativa do
gerente era que todos tinham que fazer as mesmas coisas ou seja se for pedido a um programador para
fazer um diagrama de classe de um sistema, este poderia recusar dizendo que não é uma tarefa dele.[/quote]

E naqueles lugares onde não se utiliza UML ??
E naqueles lugares onde ainda se usam sistemas feitos em Clipper ou Cobol? Quais padrões de projeto o arquiteto - se é que existe - definiu para esses sistemas??

Arquiteto
Aaquele cara que ganha R$ só com a idéia, sem precisar digitar uma linha de código.

Programador/Desenvolvedor
Quem vai desenvolver a lógica da aplicação, implementando o software segundo àquilo que foi definido pelo programador.

De forma análoga:
Arquiteto…Mestre de Obras
Programador/Desenvolvedor…Pedreiro (peão)

E não podemos esquecer dele: o [color=red]Estagiário[/color] (ajudante de pedreiro - o peãozaço mesmo!!)

Em outras palavras: quem bota as pedras no ombro é o estagiário, o programdor apenas modela para fazer a casa (soft) que o arquiteto vai vender!!

Abrçaos

Caramba, todo mundo aqui tem uma definicao diferente … :?:

É verdade, mas fazendo uma média de tudo se pode ter uma idéia…

Só tem uma coisa, não se pode subestimar estagiários, programadores, desenvolvedores ou arquitetos, cada um vende o seu peixe.

Parece que todos se odeiam, mas ao contrário, um precisa do outro, tenham consciência disso!

[quote=André Fonseca][quote=guilhermesg]Acredito que seja:

Programador - Por definição é uma pessoa que conhece bem uma linguagem de programação,
mas não tem muitos conhecimentos relativo a modelagem, se for dado um monte de
diagramas UML para ele executar ele não conseguiria…

Desenvolvedor - Ele tem todos os conhecimentos do programador mais uma bagagem com relação a modelagem,
um bom entendimento de UML… Mas não tem uma bagagem de padrões de projeto.
Ao contrário do programador se passar para ele somente os digramas este consegue se virar.

Arquiteto - Além de ter um bagagem muito grande com modelagem, conhecimentos de padrão de padrões
de projeto, ainda deve conhecer a infra-estrutura onde a aplicação vai ser disposta…

Podem verificar estas afirmações pelo conteúdo das provas de certificação da sum.

[color=red]Acredito que a pessoa só é um programador bem nó inicio de sua carreira… ou se trabalha em uma fabrica somente montando sistemas… [/color]

Eu já trabalhei em uma empresa, onde se existiam “analista de sistemas” a justificativa do
gerente era que todos tinham que fazer as mesmas coisas ou seja se for pedido a um programador para
fazer um diagrama de classe de um sistema, este poderia recusar dizendo que não é uma tarefa dele.[/quote]

E naqueles lugares onde não se utiliza UML ??
E naqueles lugares onde ainda se usam sistemas feitos em Clipper ou Cobol? Quais padrões de projeto o arquiteto - se é que existe - definiu para esses sistemas??

[/quote]
a pergunta no seria: " E existe padroes qdo se desenvolvia nas linguagens citadas?"
Naquela epoca o maximo que o cara fazia era um rascunho no papel, o restante era sentar na frente da maquina e sair programando o que vinha em mente depois colcoar a ideia de um, mudava o codigo ali e aqui… etc… poderia ocorrer exceções em grandes empresas que poderia usar um projetivo dos pontos chaves que o sistema teria… mais usar os padroes de projeos, a ideia de UML como é cobrado hoje… acredito que era dificil…

sergiotaborda: [quote]
Ou seja, não é uma escala, são trabalhos diferentes.
[/quote]

Tb acho que deveria ser assim, mas na prática não é. Acredito na analogia Engenheiro, Pedreiro e Servente. Na faixa salarial tb.

Ninguém falou onde o Analista de Sistema se encaixa aí…

[quote=andrepestana]sergiotaborda: [quote]
Ou seja, não é uma escala, são trabalhos diferentes.
[/quote]

Tb acho que deveria ser assim, mas na prática não é. Acredito na analogia Engenheiro, Pedreiro e Servente. Na faixa salarial tb.
[/quote]

Enquanto acreditar nisso , será isso.

Não se encaixa. Analista não mexe com código ou tecnologia. Ele apenas faz o levantamento dos requisitos (ou seja, analisa o que o cliente quer).

[quote=LPJava]
a pergunta no seria: " E existe padroes qdo se desenvolvia nas linguagens citadas?"
Naquela epoca o maximo que o cara fazia era um rascunho no papel, o restante era sentar na frente da maquina e sair programando o que vinha em mente depois colcoar a ideia de um, mudava o codigo ali e aqui… etc… poderia ocorrer exceções em grandes empresas que poderia usar um projetivo dos pontos chaves que o sistema teria… mais usar os padroes de projeos, a ideia de UML como é cobrado hoje… acredito que era dificil…[/quote]

Sim, mas esses caras ainda existem, apesar de eu não vê-los com tanta freqüência ele existem certo?? Como classificar uma pessoa que não sabem UML e nem lida com padrões de projeto como conhecemos ?? Arquiteto? Analista? Programador? Pedreiro??

Aquele nerdizinho que escova bits e está trancafiado a alguns anos no porão de algum banco e fazendo o seu cobolzinho do dia a dia?? rs

Eu trabalhei com uma pessoa que estava a 20 anos em uma mesma empresa e ele dava manutenção em um sistema para um cliente a alguns anos, o sistema todo em VB… e a empresa gostava do trabalho do cara, e só queria que esta pessoa atendesse ele, caso contrário a nossa empresa corria o risco de perder o contrato de manutenção…

O que eu quero dizer é que qualquer classificação é burra e não pode agrupar todo mundo… e pra mim também tanto faz como o cara se classifica, pra mim importa o que ele sabe e o contra-cheque no final do mês… rs

:shock:

[list]Programador: Aquele que Programa[/list]
[list]Desenvolvedor: Aquele que Desenvolve[/list]
[list]Arquiteto: Aquele que Arquiteta[/list]
Re re rewm!!!
:stuck_out_tongue:

[quote=sergiotaborda][quote=andrepestana]sergiotaborda: [quote]
Ou seja, não é uma escala, são trabalhos diferentes.
[/quote]

Tb acho que deveria ser assim, mas na prática não é. Acredito na analogia Engenheiro, Pedreiro e Servente. Na faixa salarial tb.
[/quote]

Enquanto acreditar nisso , será isso.

[/quote]

O que fazer se o mercado é assim?

ok, mas existem os chamados Analistas de Negócio, Analista de Sistemas, bla, bla, bla…

Na prática só trabalhando pra saber o que vão colocar no teu colo. Computação é a única área que agrega funções como Analista Desenvolvedor, Analista Programador, etc… Isso é só pra pagar um salário só e ter duas ou mais funções.

[quote=andrepestana][quote=sergiotaborda][quote=andrepestana]sergiotaborda: [quote]
Ou seja, não é uma escala, são trabalhos diferentes.
[/quote]

Tb acho que deveria ser assim, mas na prática não é. Acredito na analogia Engenheiro, Pedreiro e Servente. Na faixa salarial tb.
[/quote]

Enquanto acreditar nisso , será isso.

[/quote]

O que fazer se o mercado é assim?
[/quote]

O mercado não existe ( não e´uma pessoa com "quereres").
É a lei da oferta e da procura. Se o cara procura um Pedreiro mas o mercado so oferece Engenheiros, ele terá que se contentar com isso. Ou ele desiste, ou ele contrata o eng para fazer o trabalho do pedreiro (*) ou ele forma um pedreiro a seu gosto pegando um aprendiz ( aka trainee , aka estagiário, aka generico).
Mas se o mercado oferece um pedreiro,ele pega esse e se o pedreiro for esperto o cara irá pagar bem por ele (porque só ha um)
Se o mercado so oferece pedreiros ele pode escolher à vontade e pagará pouco por cada um.

  • O eng não vai querer fazer o trabalho de pedreiro. Não por um sálario igual ao de eng. (se ele for uma pessoa normal, claro)

É vc que faz o mercado. Se todos pensarem como vc então teremos muitos pedreiros a baixo preço.
Agora pense ao contrário. Cada um faz o seu trabalho e pronto. Então quando contrata tem que pensar bem quem irá escolher.

O problema no nosso ramo é que o cara contrata um pedreiro para fazer trabalho de eng achando que tem vantagem porque irá pagar menos. O pedreiro aceita receber menos que um eng para fazer o trabalho dele sob a desculpa que "tem menos experiencia".
Mas o patrão não tá nem ai para a experiencia ele quer resultados. Obviamente eles não vão aparecer e o pedreiro será culpado. (aka despedido). Se o pedreiro continuar se sujeitanto a estas condições os eng nunca serão escolhidos. Por isso o trabalho sempre sairá um merda ( porque é feito por pessoas não qualificadas) e em breve toda a area é vista com olhos suspeitos. Por isso, os salários de todos descem e todos se f@#$@# juntos.

Se vc é contratado para fazer um trabalho que não é o seu vc deve pedir mais dinheiro porque

  1. se o cara quer gastar menos que contrate o cara certo
  2. vc vai se ferrar no fim aconteça o que acontecer então pense no extra como um bonus que vc irá usar depois quando for despedido.

Se cada um pensar antes de agir é uma questão de tempo até inverter a situação.
Mas se cada continuar aceitando fazer trabalhos para os quais não está qualificado ele vai ganhar cada vez menos.

eu vejo assim:
tu, pessoa, tens um nivel de conhecimento que ter permite desenpenhar N papeis em uma empresa.
a emprea te contrata para 1 papel especifico. Então tens duas opções:

  1. lutas para que a empresa te contrate no papel que mais preferes ( aka dominas melhor e paga mais)
  2. ficas onde estás e não queres nem saber se podes ajudar em outra area.

Então tu, contigo mesmo, te consideras X. Tens preferencia por exercer a função de X.
Se te dão a função Y < X ( ou seja, uma que ja´exerceste no passado mas que não te importa muito hoje) é bom que ela pague melhor que X pois contrario não ha recompensa para ti. Se te dão Y > X ( uma que nunca fizeste ) é bom que ela pague melhor porque ha um risco associado a fazer coisas pela primeira vez.

Agora tu dizes: mas eu pego o primeiro que aparecer por preciso do trampo para pagar as contas. Beleza.
Então suponhamos que pegas Y > X. O cara vai dizer que tu não tens experiencia de Y só de Z ( Z < X < Y ) e portanto vai-te pagar menos. Se tu aceitas isto, aceitas ser explorado. Se aceitas se explorado não de podes queixar depois quando o cara te despedir por incompetencia ou fizer de ti um bode expiatório. O ponto é que estejas consciente que estás tomando um atitude contrária ao tem proprio bem e ao bem da profissão. Estás contribuindo para que a profissão seja enxergada como "ruim" e portanto não merece ser paga corretamente. Isso leva à exploração de outros que aceitam a mesma coisa. Forma-se um ciclo de experial que leva a profissão à ruina.

não estou dizendo que não aceites, estou dizendo que deves ter consistência do que estás aceitando.
Na próxima oportunidade, muda para outra coisa mais próxima de X.