Por onde começar?

4 views
Skip to first unread message

Elomar França

unread,
Jul 5, 2009, 11:45:06 PM7/5/09
to programm...@googlegroups.com
(Digitando essa pergunta com medo de ser básica demais, mas peço que
não me levem a mal. Tô começando ainda ;D)

Acompanhando a bridging the gap (e as outras threads dessa lista) foi
bombardeado por alguns nomes (e temas) que nunca tinha ouvido falar.
Saí a caça no google, fui ler os papers e trabalhos indicados, mas
parece que me falta o basicão, o fundamental.

Então é isso que queria ver de vocês - que conhecimento básico vocês
acham que é fundamental / faz a diferença? Por onde vocês começaram
pra chegar aonde estão hoje? O quão importante é matemática? Quanto
vocês acham que um programador deveria entender de eletrônica,
arquitetura, hardware? Que livros ou linguagens mudaram o jeito que
vocês vêem software?

Sei que não existe nenhuma trilha pra seguir, mas agradeceria se me
apontassem algumas direções pra seguir. Esse é o tipo de coisa que a
gente pergunta na faculdade, mas como eu tô numa técnologa, fica mais
complicado conversar sobre alguma coisa que não envolva Java e
sistemas corporativos. :)

Cordialmente,

Elomar França
elo...@maisweb.org
twitter.com/elomar
+55 84 8855-0248

Rodrigo Sol

unread,
Jul 6, 2009, 8:28:10 AM7/6/09
to programm...@googlegroups.com
Fala Elomar,

Para mim você já começou! O primeiro e mais importante passo é ter
curiosidade para aprender coisas novas. Não ficar limitado ao
dia-a-dia. Acho que a pergunta que você têm que se fazer não é se é
importante saber eletrônica ou matemática, mas sim se você está afim
de aprender aquilo. Se tiver, por mais que pareça que não vai ser útil
agora, no futuro vai. Resumindo o que eu peso: Conhecimento não ocupa
espaço. Aprenda o máximo que puder sobre o máximo de coisas possíveis.

Abraços,



2009/7/6 Elomar França <elo...@maisweb.org>:
--
[]'s

RodrigoSol

http://macacochefe.blogspot.com/
http://www.dcc.ufmg.br/~rsol
http://photosol.wordpress.com

Ronaldo Ferraz

unread,
Jul 10, 2009, 10:29:39 AM7/10/09
to programm...@googlegroups.com
Opa, com algum atraso, algumas considerações... :)

Para mim, pelo menos, a diferença fundamental entre os programadores
bons/razoáveis e os programadores muito bons está bastante na
capacidade de ver a nossa área além dela mesma. Embora a maioria dos
programadores não perceba, quase tudo que aparece em ciência da
computação, por assim dizer, vem de necessidades de outras áreas como
educação, sociologia, biologia, etc. Entender isso e entender as
influências é fundamental.

Um exemplo claro dessa integração é o próprio Squeak, uma das mais
conhecidas implementações Smalltalk da atualidade. Seu objetivo
inicial era prover um ambiente para que crianças pudessem aprender
programação de maneira mais fácil e foi assim que a implementação foi
desenhado no começo. Hoje, existem negócios inteiros rodando em cima
de uma plataforma que está se tornando cada vez mais madura.

Esse tipo de reflexão e auto-reflexão--já que isso deve acontecer
dentro da própria área também (para o surgimentos de novas linguagens
e frameworks, por exemplo)--é algo que ajuda no crescimento do
programador/cientista da computação.

Assim, saber sobre matemática e eletrônica valem a pena na medida em
que complementam o que você precisa para fazer o seu trabalho. E
dependendo, níveis variados de conhecimento servem para coisas
diferentes. Por exemplo, conhecimento básico vai, no mínimo, tornar a
literatura mais acessível para você. Um conhecimento médio pode ajudar
no design de soluções mais eficientes. E, por fim, conhecimento
profundo se você realmente vai fazer algo naquela área. Mas, acima de
tudo, é necessário um conhecimento generalista nem que seja pelo mero
enriquecimento.

Em um âmbito pessoal, por exemplo, o conhecimento que eu tenho dos
_internals_ do Ruby me ajuda a decidir se a linguagem é apropriada
para o tipo de coisa que estou querendo fazer. Da mesma forma, o
conhecimento de parsers e compilers me ajuda bastante na hora de
escrever DSLs e desenhar estratégias de interpretação de linhas de
comando. Nenhuma dessas coisas, para mim, depende de um conhecimento
profundo, mas o conhecimento que eu tenho ajuda bastante.

Eu sempre brinco sobre minhas leituras de SF&F, mas eu acho que até
elas ajudam a formar a minha visão do que eu espero da área e do que
eu acho que seria interessante que acontecesse. No final das contas,
tudo o que eu vejo, leio e experimento--de livros a música, de peças a
filmes, ajuda a compor meu trabalho.

Resumindo, acho que gastei muitos caracteres para dizer que, no final
das contas, o que realmente importa é cultura geral. Isso serve para
qualquer domínio humano e, portanto, serve para ciência da computação
também.

Abraços,

R.

2009/7/6 Elomar França <elo...@maisweb.org>:

Bruno Zanchet

unread,
Jul 10, 2009, 11:50:24 AM7/10/09
to programm...@googlegroups.com
Eu prefiro deixar dois textos de terceiros como recomendação:

Jazzers and programmers:
http://blog.nicksieger.com/articles/2008/07/19/jazzers-and-programmers
(Nick Sieger, Eng. da sun e dev. do JRuby)

Soft. dev. lessons learned from poker:
http://www.infoq.com/articles/fields-it-depends (Jay Fields,
ex-thoughtworks)


Abraços,
Bruno

2009/7/10 Ronaldo Ferraz <ronald...@gmail.com>:

guaracy

unread,
Jul 11, 2009, 1:32:29 PM7/11/09
to Programming Talk
> (Digitando essa pergunta com medo de ser básica demais, mas peço que
> não me levem a mal. Tô começando ainda ;D)

Pessoalmente considero que uma pergunta nunca é básica demais.
Principalmente para quem pergunta. :-)

> Então é isso que queria ver de vocês - que conhecimento básico vocês
> acham que é fundamental / faz a diferença? Por onde vocês começaram
> pra chegar aonde estão hoje? O quão importante é matemática? Quanto
> vocês acham que um programador deveria entender de eletrônica,
> arquitetura, hardware? Que livros ou linguagens mudaram o jeito que
> vocês vêem software?

Quando comecei, as coisas eram mais simples. Não havia internet e as
informações eram mais fáceis de selecionar. Hoje, a quantidade de
informações é tão grande e de fácil acesso que fica difícil saber por
onde começar e quais selecionar. Tudo é impossível. Como tudo é
impossível, selecione as áreas que mais te interessam.

> Sei que não existe nenhuma trilha pra seguir, mas agradeceria se me
> apontassem algumas direções pra seguir. Esse é o tipo de coisa que a
> gente pergunta na faculdade, mas como eu tô numa técnologa, fica mais
> complicado conversar sobre alguma coisa que não envolva Java e
> sistemas corporativos. :)

Em se tratando de programação, acho que o estudo das linguagens é um
dos pontos importantes. Um livro que acho interessante, apesar de
nunca ter completado ou feito os exercícios é o SICP ( http://mitpress.mit.edu/sicp/
). Surgiu um grupo aqui ( http://groups.google.com/group/eipc?hl=en )
que pretende estudar o livro em conjunto. Eu achei legal e até me
inscrevi (como tem algum ruído, principalmente de pessoas relacionadas
ao Python, não sei por quanto tempo vou participar). Mas acho que é um
começo nteressante e pode ser interessante para quem já conhece
também).

Então acho que o melhor é obter o máximo de informações sobre o que
achas interssante, sem se matar.

Guracy

caffo (rodrigo franco)

unread,
Jul 11, 2009, 2:00:50 PM7/11/09
to programm...@googlegroups.com
Elomar, otimo topico.

Eu nao tenho um forte background academico (na epoca, nao pude
concluir o curso de ciencias da computacao), e concordo com o guaracy
- o estudo de linguagens e' muito importante. Sempre senti falta do
embasamento teorico que muitos adquiriam na faculdade (design de
compiladores, grafos e outros divertidissimos algoritimos) e resolvi
estudar por mim mesmo, usando o SICP. Fazendo os exercicios do SICP eu
aprendi muita coisa, e tenho certeza que nao e' nem 10% do que o livro
pode oferecer.. O SICP e' um grimorio de design de linguagens - loop
eterno de estudos nele!

Mudando um pouco o enfoque, acredito que comportamento inquisitivo e'
que permite a evolucao. Acostumar a olhar / absorver aquilo que
acontece a sua volta e' vital para continuar aprendendo, e nunca parar
de aprender e' o que faz de voce um(a) profissional/programador/pessoa
de sucesso. Ler SF tambem ajuda um pouquinho com a futurologia :)

[]'s
--
Rodrigo Franco <Caffo>
self.push(C8H10N4O2)
http://caffo.chaosnet.org/





2009/7/11 guaracy <guara...@gmail.com>:

Thiago Silva

unread,
Jul 12, 2009, 4:22:40 PM7/12/09
to programm...@googlegroups.com
O texto abaixo pareceu ter alguns pontos similares com este assunto (é
bem informal e levanta uns pontos interessantes se relevarmos alguns
poucos cheiros de "caminho para o sucesso" - que são realmente poucos
e somente cheiros, não sabores).

Extreme Thinking
por Michael A. Nielsen

http://www.michaelnielsen.org/blog/archive/tough-learning/tough-learning-final.html

Alguns excertos:

"In my opinion, the single most important principle of effective
learning is that it requires a strong sense of purpose and meaning."

"I believe that the key to developing a strong sense of purpose and
meaning is to balance three activities.
* The first is development of a common understanding with a large
group of people, people with whom one is later able to feel a common
sense of community. This is the focus of most educational
institutions, from kindergarten through undergraduate degrees.
* The second is development of abilities which are not common to your
community, and which eventually give you the ability to make a unique
contribution to your community.
* The third is making a creative contribution to your community, to
something larger than yourself."

"To develop effectively, we need to balance all three of these
activities. Many people – I have certainly been guilty of this -
concentrate on the first and the third of these activities. They find
themselves frustrated in trying to achieve the third, simply because
they haven’t developed abilities that enable them to make a unique
contribution."

"The second activity is difficult for two reasons.
* First, it requires one to act on one’s own, to say “I choose to
develop this ability, even though it makes me different from others in
my community”, and to follow through on that choice.
* Second, even if one has the will to develop in this way, it can
require a raft of self-development skills. These skills are simple
enough in themselves, but many of us lack them. If we take the trouble
to master these skills, then we will be able to develop abilities that
give us the power to make a unique contribution to the larger
community."



2009/7/10 Ronaldo Ferraz <ronald...@gmail.com>:
--
Thiago Silva
Computer Science
M.Sc. Candidate at Federal University of Pernambuco
jabber/gtalk: tsi...@jabber-br.org
http://blog.sourcecraft.info

Ronie Uliana

unread,
Jul 12, 2009, 10:22:00 PM7/12/09
to programm...@googlegroups.com
Meus 2 centavos (hmm 3 centavos, na verdade):

1 - Divirta-se programando. Os melhores desenvolvedores que conheço
são apaixonados pelas traquitanas que montam.

2 - Divirta-se estudando. Idéias novas aos montes são ótimas, depois
de se conhecer um pouco de tudo, aprofunde-se no que gostar mais. Como
eu digo, "dinheiro, conhecimento e memória RAM, quanto mais, melhor".
:D

3 - Linguagens e frameworks passam, mas técnicas permanecem. A sintaxe
de uma linguagem é a parte menos interessante da programação.
Frameworks então, são praticamente moda, o que é bom hoje é péssimo
amanhã. Por isso, foque mais em técnicas de programação: Programming
by Intention (essencial), Test (ou Behavior) Driven Development,
Design by Contract, Fluent Interfaces (ou DSLs internas), Idiomas
(http://c2.com/cgi/wiki?search=idioms), Patterns e por aí vai...

[]s
Ronie

2009/7/12 Thiago Silva <tsil...@gmail.com>:

Ronie Uliana

unread,
Jul 12, 2009, 10:22:26 PM7/12/09
to programm...@googlegroups.com
BTW, excelentes links nessa lista!

2009/7/12 Ronie Uliana <ronie....@gmail.com>:

Thiago Silva

unread,
Jul 13, 2009, 12:51:16 AM7/13/09
to programm...@googlegroups.com
2009/7/6 Elomar França <elo...@maisweb.org>:

>
> (Digitando essa pergunta com medo de ser básica demais, mas peço que
> não me levem a mal. Tô começando ainda ;D)
>
> Acompanhando a bridging the gap (e as outras threads dessa lista) foi
> bombardeado por alguns nomes (e temas) que nunca tinha ouvido falar.
> Saí a caça no google, fui ler os papers e trabalhos indicados, mas
> parece que me falta o basicão, o fundamental.
>
> Então é isso que queria ver de vocês - que conhecimento básico vocês
> acham que é fundamental / faz a diferença?

Rodrigo sol, Ronie, etc levantaram a bandeira de que o importante é
estudar aquilo que te agrada (e eu assino embaixo). Com isso em mente,
eu acho que o conhecimento básico e fundamental é aquele conhecimento
que nos falta para entender e aprender aquilo que nos agrada no nível
que nos agrada. Então, acho que se você pegar um trabalho que gostaria
de estudar e te falta "algo" para entendê-lo, ta aí o conhecimento
básico e fundamental que vai te fazer a diferença.

É claro que a intensidade do seu interesse vai dizer se você vai
descer no buraco ou vai pendurar o tal trabalho na sua "whishlist" --
ou descartá-lo completamente. Alguns temas não conseguem nos instigar
tanto quanto gostariamos ou julgamos importante em um dado momento, e
acho que isso é normal. Tudo a seu tempo. Já outros temas acabam por
nos tornar estupidamente obstinados.....

Mas, desdobrando o assunto, interpretando a pergunta de uma forma um
pouco diferente, eu também diria que todo conhecimento que fornece
novas habilidades mentais e novos pontos de vista (em contraste com
meras informações) são especialmente importantes. Daí eu concordar com
o Ronaldo que, cedo ou tarde, é bom que nossa insatisfação,
naturalmente, abra o escopo para áreas bastante diversas daquelas em
que atuamos, não só pela riqueza de informação, mas pela riqueza das
formas de pensar e pelos pontos de vista que nos ajudam a nos situar,
atribuir valor e projetar consequências em um espectro mais amplo.

> Por onde vocês começaram
> pra chegar aonde estão hoje?

Meu primeiro passo foi quando encontrei algo que eu gosto muito de
fazer. O segundo foi quando notei que eu estava insatisfeito. Não
mudei muito do segundo passo para cá.

> O quão importante é matemática?

Eu acho que todo conhecimento que fornece novas habilidades mentais e
novos pontos de vista são especialmente importantes.

> Que livros ou linguagens mudaram o jeito que
> vocês vêem software?
>

Talvez, mais do que livros (eis quatro [1]), pessoas interessantes (e
interessadas) mudaram meu jeito de ver software....

[1] - SICP, AMOP, Gutenberg Galaxy e Understanding Media

[]'s

Reply all
Reply to author
Forward
0 new messages