Como é que crianças sem faculdade aprenderam desenvolvimento de software?

[quote=carlos alexandre moscoso][quote=rmendes08]
Depende muito do que você chama de profissional de TI, de qualquer maneira, você precisa de um especialista em computação científica. Pra resolver esse tipo de problema você precisa:

1 - modelar o fenômeno em questão em termos de um método numérico (ou seja, foco da computação ou da matemática computacional)
2 - você precisa entender a complexidade do tempo de execução e a complexidade de consumo de memória do algoritmo
3 - projetar a infra-estrutura (não é raro precisar paralelizar a solução)
4 - projetar o software

Físicos em sua maioria se concentram em entender fenômenos e apresentar uma solução em termos de equações diferenciais. Entender a solução numérica dessas equações e transformar isso em um sistema de computação é outra história. Enfim, não é qualquer programador OO que resolve esse tipo de problema. Eu diria ainda mais,se o cara for muito fissurado em OO e querer modelar tudo em termos de objetos,
a chance de funcionar é quase nula. Não precisa ser um cara com diploma do ITA, o diploma pode ser de qualquer lugar, desde que seja uma faculdade com alguma tradição em computação científica.[/quote]

Um especialista em computação científica, neste caso, poderia ser um físico com conhecimento de programação ou um profissional de TI que nunca trabalhou com turbinas, qual você acha mais preparado?[/quote]

Computação não tem nada a ver com física mas com matemática aplicada. E sim, computação é ciências exatas. É inconcebível um profissional da computação sem conhecimento delas.

[quote=juliocbq]
Computação não tem nada a ver com física mas com matemática aplicada. E sim, computação é ciências exatas. É inconcebível um profissional da computação sem conhecimento delas.[/quote]

Certo. Mas o profissional de TI precisa ter algum conhecimento de física pra entender a solução. Neste caso o candidato do ITA é mais preparado sim, mas pela sua base matemática, ele vai precisar pra conseguir comunicar com o domain expert. Mas acredito que a tendência em projetos desse tipo o domain expert (o físico) aprender a programar, ao invés do contrário (profissional de TI aprender sobre turbinas). Posso estar errado, mas acho que seria até mais viável do ponto de vista do projeto.

[quote=carlos alexandre moscoso][quote=juliocbq]
Computação não tem nada a ver com física mas com matemática aplicada. E sim, computação é ciências exatas. É inconcebível um profissional da computação sem conhecimento delas.[/quote]

Certo. Mas o profissional de TI precisa ter algum conhecimento de física pra entender a solução. Neste caso o candidato do ITA é mais preparado sim, mas pela sua base matemática, ele vai precisar pra conseguir comunicar com o domain expert. Mas acredito que a tendência em projetos desse tipo o domain expert (o físico) aprender a programar, ao invés do contrário (profissional de TI aprender sobre turbinas). Posso estar errado, mas acho que seria até mais viável do ponto de vista do projeto.[/quote]

Cara, aprender a programar é tão difícil quanto aprender o domínio. Quanto tempo alguém vai levar pra aprender a programar, mais que isso, aprender a programar tanto a ponto de conseguir conduzir um projeto comercial de porte. Sem chances!!!

Especialista em domínio é especialista em domínio, programador é programador. Então um bom programador com uma boa base matemática, vai conseguir mais facilmente aprender o domínio a ponto de implementá-lo (repare que isto é muito longe de se tornar um especialista). Já no caso contrário, o especialista de domínio teria também que se tornar especialista em desenvolvimento. Não é viável.

[quote=carlos alexandre moscoso][quote=juliocbq]
Computação não tem nada a ver com física mas com matemática aplicada. E sim, computação é ciências exatas. É inconcebível um profissional da computação sem conhecimento delas.[/quote]

Certo. Mas o profissional de TI precisa ter algum conhecimento de física pra entender a solução. Neste caso o candidato do ITA é mais preparado sim, mas pela sua base matemática, ele vai precisar pra conseguir comunicar com o domain expert. Mas acredito que a tendência em projetos desse tipo o domain expert (o físico) aprender a programar, ao invés do contrário (profissional de TI aprender sobre turbinas). Posso estar errado, mas acho que seria até mais viável do ponto de vista do projeto.[/quote]

Precisa ter conhecimento de física se você for trabalhar em algum ramo da engenharia(aero espacial, mecânica, elétrica, etc…). O conceito computação é poder simular problemas do mundo real através de modelos matemáticos.

[quote=carlos alexandre moscoso][quote=juliocbq]
Computação não tem nada a ver com física mas com matemática aplicada. E sim, computação é ciências exatas. É inconcebível um profissional da computação sem conhecimento delas.[/quote]

Certo. Mas o profissional de TI precisa ter algum conhecimento de física pra entender a solução. Neste caso o candidato do ITA é mais preparado sim, mas pela sua base matemática, ele vai precisar pra conseguir comunicar com o domain expert. Mas acredito que a tendência em projetos desse tipo o domain expert (o físico) aprender a programar, ao invés do contrário (profissional de TI aprender sobre turbinas). Posso estar errado, mas acho que seria até mais viável do ponto de vista do projeto.[/quote]

Nem tanto. O cientista da computação neste caso, não precisa dominar tanto a física envolvida, mas a matemática. Tradicionalmente, tanto a física quanto a engenharia trabalham com matemática contínua (funções com domínio nos números reais), mas para transferir esses modelos para um computador essa matemática do contínuo precisa ser convertida em matemática discreta. A partir desse ponto começa o trabalho do cientista da computação. Ou seja, o cientista da computação não precisa entender exatamente como o físico chegou a um determinado modelo. O que ele deve saber, a princípio é como transformar um modelo contínuo em um modelo discreto, e posteriormente, como fazer esse modelo discreto virar software.

A tendência é o modelo criado pelo cientista da computação assumir que o usuário é um “profissional de TI” porque o cientista da computação é um domain expert em computação, ele cria programa para outros programadores, e não para físicos.

Por que acha que existem cientistas da computação que são considerados gênios da computação, e “péssimos programadores”? :slight_smile:

[quote=juliocbq]
Precisa ter conhecimento de física se você for trabalhar em algum ramo da engenharia(aero espacial, mecânica, elétrica, etc…). O conceito computação é poder simular problemas do mundo real através de modelos matemáticos.[/quote]

Linguagens e compiladores, estrutura de dados e algoritmos, não me parecem problemas do mundo real, pelo menos não que eu saiba. :slight_smile:

Acho que profissionais de TI possuem mais oportunidades de lidar com problemas do “mundo real” que os cientistas da computação.

[quote=YvGa]
Cara, aprender a programar é tão difícil quanto aprender o domínio. Quanto tempo alguém vai levar pra aprender a programar, mais que isso, aprender a programar tanto a ponto de conseguir conduzir um projeto comercial de porte. Sem chances!!!

Especialista em domínio é especialista em domínio, programador é programador. Então um bom programador com uma boa base matemática, vai conseguir mais facilmente aprender o domínio a ponto de implementá-lo (repare que isto é muito longe de se tornar um especialista). Já no caso contrário, o especialista de domínio teria também que se tornar especialista em desenvolvimento. Não é viável.[/quote]

Mas quem conduz o projeto é o domain expert, ele sabe o que tem que ser construído.

O programador apenas traduz a solução usando algum tipo de ferramenta ou linguagem intermediária.

[quote=carlos alexandre moscoso][quote=juliocbq]
Precisa ter conhecimento de física se você for trabalhar em algum ramo da engenharia(aero espacial, mecânica, elétrica, etc…). O conceito computação é poder simular problemas do mundo real através de modelos matemáticos.[/quote]

Linguagens e compiladores, estrutura de dados e algoritmos, não me parecem problemas do mundo real, pelo menos não que eu saiba. :slight_smile:

Acho que profissionais de TI possuem mais oportunidades de lidar com problemas do “mundo real” que os cientistas da computação.[/quote]

Colega, tenha cuidado em generalizar. Sinceramente, eu ainda não sei bem o que você quer dizer com “profissional de TI”, mas pelo que eu entendi, você se refere a técnicos, ou seja, especialistas na ferramenta X ou Y, ou que estão antenados com o último frameworks do mercado e que já fazem aplicativos para toda e qualquer plataforma Mobile disponível. Ok, esse profissional tem seu valor e tem seu nicho de mercado, não vou discutir isso.

Porém, o ponto que eu coloquei é que esse profissional tem muito pouco espaço em um ambiente acadêmico ou em um ambiente de pesquisa e inovação. O inverso também é verdadeiro, um PhD tem muito pouco valor para integrar uma equipe para desenvolver um game mobile, sem contar que ele vai exigir um salário maior.

Sobre problemas do “mundo real” também não entendi o que você quis dizer. Mas me parece que a sua noção de mundo real é somente aquilo que acontece na iniciativa privada, como se já não houvesse a constatação de que cerca de 80% dos casos de uso nos backlogs da vida são praticamente lixo. É fato também que apesar do crescimento das “empresas ágeis”, a maioria das empresas de TI e de grandes clientes de TI ainda seguem o velho modelo fordista de produção, onde o funcionário é treinado a alienadamente desempenhar uma determinada função sem ter a mínima noção para que serve aquilo que estão fazendo.

Enfim, fica o recado que alguns estão tentando passar desde o começo do post: você pode não gostar do ambiente universitário, pode não gostar de pesquisa científica e nem tem a obrigação de não gostar. Apenas não generalize.

Seria interessante saber a proporção de cientista x profissional de TI nesses lugares. Tem muita empresa que acha que cientista da computação é programador.

[quote=carlos alexandre moscoso][quote=rmendes08]
Nem tanto. O cientista da computação neste caso, não precisa dominar tanto a física envolvida, mas a matemática. Tradicionalmente, tanto a física quanto a engenharia trabalham com matemática contínua (funções com domínio nos números reais), mas para transferir esses modelos para um computador essa matemática do contínuo precisa ser convertida em matemática discreta. A partir desse ponto começa o trabalho do cientista da computação. Ou seja, o cientista da computação não precisa entender exatamente como o físico chegou a um determinado modelo. O que ele deve saber, a princípio é como transformar um modelo contínuo em um modelo discreto, e posteriormente, como fazer esse modelo discreto virar software.
[/quote]

A tendência é o modelo criado pelo cientista da computação assumir que o usuário é um “profissional de TI” porque o cientista da computação é um domain expert em computação, ele cria programa para outros programadores, e não para físicos.

Por que acha que existem cientistas da computação que são considerados gênios da computação, e “péssimos programadores”? :)[/quote]

Sim, ciência da computação não tem muita coisa a ver com “desenvolvimento de software”. O software é só a idéia da coisa em prática. Tem muito fíisico que desenvolve software, inclusive o rm stallman é um deles. Linguagem de programação é só ferramenta. Por isso a universidade acaba sendo bem importante na minha opinião. Ter um professor para ensinar determinadas disciplinas de exatas acaba sendo muito importante.

[quote=carlos alexandre moscoso][quote=juliocbq]
Precisa ter conhecimento de física se você for trabalhar em algum ramo da engenharia(aero espacial, mecânica, elétrica, etc…). O conceito computação é poder simular problemas do mundo real através de modelos matemáticos.[/quote]

Linguagens e compiladores, estrutura de dados e algoritmos, não me parecem problemas do mundo real, pelo menos não que eu saiba. :slight_smile:

Acho que profissionais de TI possuem mais oportunidades de lidar com problemas do “mundo real” que os cientistas da computação.[/quote]

Sério?

  1. Uma fila ou uma pilha te remete ao quê fisicamente? Fila de pessoas, pilha de pratos?
  2. Um algoritmo é e serve para quê? Solucionar problemas de quê e do quê?
  3. O objetivo do compilador não é traduzir linguagem humana para linguagem de máquina?

TI não se refere a parte científica da coisa(que é a que lida com modelos matemáticos). Ti é voltada para gestão e humanas. Não tem nada a ver com resolver problemas desse gênero.

[quote=juliocbq]
TI não se refere a parte científica da coisa(que é a que lida com modelos matemáticos). Ti é voltada para gestão e humanas. Não tem nada a ver com resolver problemas desse gênero.[/quote]

Exato!

Eu que me expressei mal, o cientista da computação trabalha em um nível mais fundamental, e portanto mais distante do “mundo real”. Isso que eu quis dizer.

[quote=carlos alexandre moscoso][quote=juliocbq]
TI não se refere a parte científica da coisa(que é a que lida com modelos matemáticos). Ti é voltada para gestão e humanas. Não tem nada a ver com resolver problemas desse gênero.[/quote]

Exato!

Eu que me expressei mal, o cientista da computação trabalha em um nível mais fundamental, e portanto mais distante do “mundo real”. Isso que eu quis dizer.
[/quote]

Não sei se essa palavra “mundo real” exprime bem a idéia mas entendi o que você quis dizer.

[quote=carlos alexandre moscoso]
Linguagens e compiladores, estrutura de dados e algoritmos, não me parecem problemas do mundo real, pelo menos não que eu saiba. :slight_smile:

Acho que profissionais de TI possuem mais oportunidades de lidar com problemas do “mundo real” que os cientistas da computação.[/quote]

O conhecimento para o desenvolvimento de tais ferramentas é básico e pode ser expandido aos problemas do mundo real.

Anders Hejlsberg criou o turbo pascal, criou o delphi, criou o C#(há quem diga que é marketing)

este cara não lida com problema do mundo real, é um mero criador de compiladores.

qualquer um poderia ter feito o que ele fez.

o dificil é entender os requisitos dos clientes, os negócios, os “problemas do mundo real”.

i
r
o
n
i
c

[quote=douglaskd]Anders Hejlsberg criou o turbo pascal, criou o delphi, criou o C#(há quem diga que é marketing)

este cara não lida com problema do mundo real, é um mero criador de compiladores.

qualquer um poderia ter feito o que ele fez.

o dificil é entender os requisitos dos clientes, os negócios, os “problemas do mundo real”.

i
r
o
n
i
c[/quote]

peguei, mesmo que por alto, algumas disciplinas bem legais:

linguagens formais e sistemas autômatos
grafos
compiladores

Sem um mínimo conhecimento sobre linguagens formais e sistemas autômatos o carinha não tem nem como colocar no papel os processos que o cliente quer (parte do UML como exemplo bem real: diagrama de estados e de processos).

No fundo ambos possuem formas diferentes de representarem a mesma coisa. só que a necessidade de cada uma delas depende do contexto.

[quote=Luiz Augusto Prado][quote=douglaskd]Anders Hejlsberg criou o turbo pascal, criou o delphi, criou o C#(há quem diga que é marketing)

este cara não lida com problema do mundo real, é um mero criador de compiladores.

qualquer um poderia ter feito o que ele fez.

o dificil é entender os requisitos dos clientes, os negócios, os “problemas do mundo real”.

i
r
o
n
i
c[/quote]

peguei, mesmo que por alto, algumas disciplinas bem legais:

linguagens formais e sistemas autômatos
grafos
compiladores

Sem um mínimo conhecimento sobre linguagens formais e sistemas autômatos o carinha não tem nem como colocar no papel os processos que o cliente quer (parte do UML como exemplo bem real: diagrama de estados e de processos).

No fundo ambos possuem formas diferentes de representarem a mesma coisa. só que a necessidade de cada uma delas depende do contexto.

[/quote]

Uma coisa é bem diferente da outra.
“Problemas do mundo real” é o que você encontra no dia a dia. Por exemplo “reconhecer um rosto”. Como fazer uma máquina ser capaz de resolver esse tipo de problema?

A resposta está no modelo matemático correto.

[quote=juliocbq]
A resposta está no modelo matemático correto.[/quote]

Esse exemplo é onde o cientista da computação entra. na implementação e criação dos passos matemáticos. Aqui ele cria um diagrama de estados para representar seu modelo matemático.

[quote=douglaskd]
area de TI é 1% de conhecimento da faculdade e 99% auto-didata.[/quote]

Concordo plenamente com o camarada douglaskd! O negócio é “99% auto-didata” mesmo! Agradeço aqui também ao GUJ por proporcionar esse tópico rico em opiniões “show de bola” e levei uns dois dias lendo todas, hehe, valeu galera!