Saiba a diferença entre um programador, um desenvolvedor e um cientista da computação

Olá galera! Eu estava pesquisando a diferença entre os diversos cargos na área de computação e encontrei um texto interessante no site do Thiago Belém, e gostaria de compartilhar com vocês. Segue o texto:

O Cientista da Computação

Os cientistas da computação escrevem código? Não é o código mais organizado ou bem refatorado, mas um código que funciona e resolve o problema. Não se trata de seguir as boas práticas e sim de provar o que eles provar. Os cientistas computacionais são muito mais matemáticos do que tecnológicos. Também conseguem construir algoritmos em pouco tempo para resolver diversos problemas.

Nas horas vagas eles, na maioria das vezes, trabalham em suas próprias pesquisas e, como você pode ver na foto acima, inspiram medo em todos os meros mortais (inclusive os programadores e desenvolvedores).

O Programador

Os programadores escrevem códigos, os melhores dos códigos. Criam código limpo, organizado, refatorado e livres de erro são preocupações corriqueiras de um programador? Mas isso acaba fazendo que o resultado nem sempre seja a resolução do problema. É mais sobre saber o significado de ?bom código? e ter o domínio disso. Eles até tem algumas habilidades matemáticas (beeem menos do que os nossos amigos cientistas da computação), mas isso está longe de ser uma preocupação/obrigação para eles.
[quote] Eles precisam apenas saber as melhores soluções para os problemas que encontram mas não precisam saber (ou conseguir provar) que aquelas soluções são as melhores.[/quote]
Os programadores já têm uma relação interpessoal melhor com seus companheiros de trabalho, mas ainda assim, como pessoas eles são ótimos programadores e nas horas vagas os programadores costumam trabalhar em projetos/produtos pessoais.

O Desenvolvedor

Os desenvolvedores também criam códigos limpos, organizados e bem refatorados mas, além disso, disso outros fatores como segurança e testes também são importantes. Conhecimentos e habilidades matemáticas também não são indispensáveis, mas ajudam a encontrar soluções para os mais variados problemas que encontram. Uma boa comunicação e relação interpessoal são essenciais pois estes costumam trabalhar em conjunto com outros desenvolvedores e pessoas de outras áreas.
[quote] São especialistas em achar formas diferentes (e igualmente eficientes) de resolver o mesmo problema. No tempo livre um desenvolvedor costuma tentar criar o novo Facebook ou se dedica a atividades extracomputacionais, que não têm nada a ver com programação, desenvolvimento ou ciência da computação.[/quote]

Fonte: http://blog.thiagobelem.net/saiba-a-diferenca-entre-um-programador-um-desenvolvedor-e-um-cientista-da-computacao/

-E ai, você concorda com essas definições? Em qual título você se encaixa?

Essa de diferenciar “Desenvolvedor” e “Programador” é nova pra mim. Eu sou Analista de Sistemas, mas que na prática atuo como analista desenvolvedor (que logicamente programa).

Com exceção dos cientistas da computação, ao meu ver, a maioria das empresas jogam tudo no mesmo balaio, pelo menos no Brasil. Alguns misturam Analistas/Arquitetos com Programadores/Desenvolvedores, e de quebra designam tarefas de suporte. No final, sempre algum ponto do projeto acaba sendo prejudicado.

Eu até gosto de atuar em analise, desenvolvimento e as vezes quando necessário arquitetura. Mas Suporte sairia da empresa imediatamente. Design hoje em dia não aceitaria também, há não ser que fale “o layout não importa, vai usar somente Bootstrap ou algo similar de CSS pronto”.

Acabei esquecendo de falar em que me encaixo diretamente no que o tópico fala. No meu caso seria mais próximo “O Desenvolvedor”, pois busco a forma mais simples de resolver o problema para o cliente e facilitar evoluções, ao invés de ficar buscando soluções complexas que tentam resolver um “futuro” mesmo sem necessidade prática para o horizonte (isso é competência mais de “O Cientista”, e “O Programador” seria o meio termo, onde se preocupam mais em oferecer tecnologia, onde é importante tentar prever futuro, do que usar a tecnologia para resolver o problema do Negócio (que é meu caso)). Além de agregar o bom espírito no time, sem competições, sem individualismos, importante é o time vencer. Mas muitas coisas também se misturam e esses rótulos nunca são muito exatos, o importante é ter todo tipo de profissional agregando seu melhor para o mundo.

Na prática a teoria é boa…

Nunca vi isso sendo aplicado e duvido que comece haver essa diferenciação tão cedo assim.

[quote=Hebert Coelho]Na prática a teoria é boa…

Nunca vi isso sendo aplicado e duvido que comece haver essa diferenciação tão cedo assim.[/quote]

Para você ver essa diferenciação precisa visitar institutos de pesquisas:

www.lncc.br/‎
http://www.iae.cta.br/
www.inatel.br/icc/
http://www.ipt.br/
web.mit.edu/

Procurando na “indústria” você vai encontrar somente programadores mesmo.

A competência do cientista é pesquisar e não criar soluções complexas. Por exemplo, a alguns anos estavam premiando com $ 1.000.000 quem conseguisse resolver o problema do cacheiro viajante em tempo real. Não precisa nem saber programar, o que eles querem é um modelo matemático. Nessas é que entra o trabalho de pesquisa do cientista.

A competência do cientista é pesquisar e não criar soluções complexas. Por exemplo, a alguns anos estavam premiando com $ 1.000.000 quem conseguisse resolver o problema do cacheiro viajante em tempo real. Não precisa nem saber programar, o que eles querem é um modelo matemático. Nessas é que entra o trabalho de pesquisa do cientista.[/quote]

Qual era a instituição por trás deste premio?

[quote=juliocbq]Para você ver essa diferenciação precisa visitar institutos de pesquisas:

www.lncc.br/‎
http://www.iae.cta.br/
www.inatel.br/icc/
http://www.ipt.br/
web.mit.edu/

Procurando na “indústria” você vai encontrar somente programadores mesmo.[/quote]Conheço muita, mas muito gente mesmo que formou em ciencias da computação mas trabalha fazendo if como qualquer outro mortal.

Por isso que ñ vejo essa diferença. [=

[quote=Hebert Coelho][quote=juliocbq]Para você ver essa diferenciação precisa visitar institutos de pesquisas:

www.lncc.br/‎
http://www.iae.cta.br/
www.inatel.br/icc/
http://www.ipt.br/
web.mit.edu/

Procurando na “indústria” você vai encontrar somente programadores mesmo.[/quote]Conheço muita, mas muito gente mesmo que formou em ciencias da computação mas trabalha fazendo if como qualquer outro mortal.

Por isso que ñ vejo essa diferença. [=[/quote]

Pois é… eu ja vi comentários maiores sobre o “Analista”, “Programador” ou o famoso “Analista/Programador”…

Onde, na teoria, o programador era o “macaco” só programava… é possível isso? Alguem programar sem “analisar” ou pensar direito sobre as regras que vão ser implementadas?
Se há, dá até dó do coitado… ahuahauha

Alias, sobre esses comentários, ainda falavam sobre a “hierarquia”:

Programador Jr I, II e III -> Programador Pl I, II e III -> Programador Sr I, II e III -> Analista Programador Jr I, II e III, go on…

Sei lá, pra mim isso é um bocado zuado

[]'s

[quote=Hebert Coelho]Conheço muita, mas muito gente mesmo que formou em ciencias da computação mas trabalha fazendo if como qualquer outro mortal.

Por isso que ñ vejo essa diferença. [=[/quote]
Ser formado em Ciência da Computação != Ser um cientista da computação.

“Ciência da computação tem tanto a ver com o computador como a astronomia com o telescópio, a biologia com o microscópio, ou a química com os tubos de ensaio.
A ciência não estuda ferramentas, mas o que fazemos e o que descobrimos com elas.” Dijkstra

Quem dera se eu, como desenvolvedor, me desse tão bem com mulheres assim como o cara da foto hehehehehehehehehehe

[quote=Hebert Coelho][quote=juliocbq]Para você ver essa diferenciação precisa visitar institutos de pesquisas:

www.lncc.br/‎
http://www.iae.cta.br/
www.inatel.br/icc/
http://www.ipt.br/
web.mit.edu/

Procurando na “indústria” você vai encontrar somente programadores mesmo.[/quote]Conheço muita, mas muito gente mesmo que formou em ciencias da computação mas trabalha fazendo if como qualquer outro mortal.

Por isso que ñ vejo essa diferença. [=[/quote]

Isso é questão de escolha. Quem tem vontade de pesquisar é só partir para uma universidade ou empresa com departamento de pesquisa. Toda universidade tem um mesmo que seja simples. Por isso existe a tão chamada “iniciação científica”.

[quote=leonhard32][quote=Hebert Coelho][quote=juliocbq]Para você ver essa diferenciação precisa visitar institutos de pesquisas:

www.lncc.br/‎
http://www.iae.cta.br/
www.inatel.br/icc/
http://www.ipt.br/
web.mit.edu/

Procurando na “indústria” você vai encontrar somente programadores mesmo.[/quote]Conheço muita, mas muito gente mesmo que formou em ciencias da computação mas trabalha fazendo if como qualquer outro mortal.

Por isso que ñ vejo essa diferença. [=[/quote]

Pois é… eu ja vi comentários maiores sobre o “Analista”, “Programador” ou o famoso “Analista/Programador”…

Onde, na teoria, o programador era o “macaco” só programava… é possível isso? Alguem programar sem “analisar” ou pensar direito sobre as regras que vão ser implementadas?
Se há, dá até dó do coitado… ahuahauha

Alias, sobre esses comentários, ainda falavam sobre a “hierarquia”:

Programador Jr I, II e III -> Programador Pl I, II e III -> Programador Sr I, II e III -> Analista Programador Jr I, II e III, go on…

Sei lá, pra mim isso é um bocado zuado

[]'s[/quote]

Isso é o que mais acontece. O pessoal não entende que um curso de ciência da computação é um curso de matemática aplicada. O foco do curso não é programar, e sim usar o computador como ferramenta de solução de problemas.

[quote=Vina][quote=Hebert Coelho]Conheço muita, mas muito gente mesmo que formou em ciencias da computação mas trabalha fazendo if como qualquer outro mortal.

Por isso que ñ vejo essa diferença. [=[/quote]
Ser formado em Ciência da Computação != Ser um cientista da computação.[/quote]

Pior que não. O curso te dá base e foca pra isso. Se você quer ou não pesquisar é questão de escolha. Quando você tenta otimizar um algoritmo já é um trabalho de pesquisa. Isso a gente faz no dia a dia.

Assim, não é a 1a vez que alguém levanta a questão. Já li diferentes pontos de vista, alguns mais próximos da realidade, outros nem tanto … No fim das contas, acho que é muito difícil desvincular esses papéis. Imagine que você quer lançar um produto seu na Web. Você mesmo projeta a produto, implementa, testa e quando atinge certo número de usuários, clusteriza a solução para dar conta da demanda. Pronto. Você fez papel de programador (escreveu código), desenvolvedor (projetou, testou) e cientista da computação (otimizou). Pode existir pessoas que exerçam esses papéis separadamente ? Obviamente. Já li vagas de emprego como “Codificador Java”, e existem pesquisadores em Ciência da Computação puramente teóricos. Mas sinceramente, acho que esses são casos extremos.

No fim das contas, eu acho que essa tentativa de encontrar uma regra geral para a divisão de papéis no desenvolvimento de software é perda de tempo. Mesmo porque, cada área de aplicação, cada tipo de software demandará uma equipe diferente, com especialidades diferentes e consequentemente, a divisão de trabalho será diferente. Qual a correta ? Simples, aquela que consegue entregar o produto. Mas isso só significa que aquela foi a divisão correta para aquele contexto.

Por fim, acho que essa classificação é ainda mais difícil entre trabalhadores do conhecimento.