[SP-pm] [OT] Apresentação

Carlos Costa crncosta at gmail.com
Tue Apr 19 05:42:33 PDT 2011


Eu estou no mercado desde 1999, com 33 anos e o primeiro filho no
caminho -- acho que tenho algumas constatações que eu uso na minha
vida e que servem ou não para todos:

0) Linguagem é ferramenta. Você *não* vai apertar parafuso sextavado
com chave de fenda comum. Pode até conseguir, mas que fica bem melhor
e mais rápido com a ferramenta certa, isso fica ;-)

1) a única excessão a regra 0 é C. Acredite: em algum momento de sua
vida vai precisar de conhecimento sobre C. seja debugando, conectando
libs, usando syscall, embutindo um interpretador, alguma otimização
que se faz necessária no projeto, etc... C é a ferramenta que todos
devem conhecer um pouco. Se vc estiver no Windows, precisa saber C++
tb.

2) Componha um bom cinto de utilidades (ferramentas, linguagens,
editores/IDEs, VCS, etc) mas faça isso **sobre demanda**, seguindo a
necessidade. Se a vaga é pra Python/Django (ou Perl/Catalyst ou ainda
Ruby/Rails), então prepare-se para ela. Se eles preferem GIT à SVN,
procure um "GIT Crash Course" na net e comece a ler... e não foque só
em algo, pois vc vai perder outras oportunidades $$

3) É mais importante saber algoritmos e ter bom raciocínio lógico. Se
vc for a uma entrevista onde vc só for questionado se sabe o nome do
método da classe tal que implementa X no framework hype do momento,
pode ter certeza que o emprego será chato em poucos meses ;-)

4) Assim como algorítmos são importantes, saber as diferenças entre
técnicas é tão importante quanto. Vou citar o exemplo dos non-blocking
webserver que tanto se houve falar: é uma arquitetura interessante se
vc vai basear a solução em muito I/O (ler do DB, por exemplo). Mas ela
não substitui completamente as soluções baseadas em thread. Não tem
essa de uma melhor que a outra! O melhor é arquitetar uma solução que
use ambas (veja item 2 do http://www.kegel.com/c10k.html). Ou seja,
não existem balas de prata :-)

5) Eu ainda vejo pessoas que não sabem editar um arquivo do apache, ou
que não entendem como boota um SO, ou que não sabem alterar prioridade
de processo, ou subir interface de rede, ou o que é RAID. E o pior,
dizem que isso é coisa de sysadmin. Estupidez gratuita ehehehe. Faça
um favor a si mesmo: Aprenda um pouco do trabalho do sysadmin!

6) Leia menos notícias, acompanhe menos planets/blogs, siga menos
hypes, coma brócolis... enfim preocupe-se somente com o que interessa
de fato! TI é commodity em 95% das vagas de emprego, é provável que
aquele último hype que estão todos falando não tenha tanto impacto nas
empresas, e no geral (80% dos casos) hypes pagam mal. Vcs ficariam
impressionados com os salários de programadores Cobol hoje em dia.
Portanto: Não se fruste gratuitamente!

Provavelmente eu tenha muitas outras constatações pra citar, mas
encurto aqui o email. Se após ler isso, ainda existem preocupações de
qual linguagem é melhor que a outra, ou qual o melhor framework ou
técnica, ou paradigma. Saiba que vc naturalmente verá que isso não
importa, apenas de tempo a si =D

Abração!
Carlos.


2011/4/19 Ulisses-IBIZ <ulisses at ibiz.com.br>:
> Blabos, vc fez Unicamp? ... bricadeirinha... brincadeirinha...
>
> de novo, a facul ajuda, mas o artista é o cara.... é sempre o cara com
> talento....
>
> ulisses
>
> ----- Original Message ----- From: "Blabos de Blebe" <blabos at gmail.com>
> To: <saopaulo-pm at mail.pm.org>
> Sent: Tuesday, April 19, 2011 8:24 AM
> Subject: Re: [SP-pm] [OT] Apresentação
>
>
>> Nas universidades não te ensinam a 'pensar', te ensinam a usar
>> ferramentas... e olhe lá....o que de certa forma, te limita.
>
> Só uma correção:
>
> *Em 99.9% das* universidades não te ensinam a 'pensar', te ensinam a usar
> ferramentas... e olhe lá....o que de certa forma, te limita.
>
> 2011/4/19 Ulisses-IBIZ <ulisses at ibiz.com.br>:
>>
>> rsrsrs sim claro, um cara talentoso vai escolher a linguagem mais adequada
>> para a resoluçao do seu problema = "Claro, cada linguagem facilita mais a
>> vida do programador"
>>
>> quis evidenciar que o talento está no 'pilotador' da ferramenta, tirando o
>> foco da linguagem em si.
>>
>> ... não basta ter pincel e tinta, é preciso ser artitsta.... o lance seria
>> mais de semântica do que de sintaxe... [sim, claro sei que linguagens tem
>> semanticas; please nao me tomem de maneira literal, abstraia...]
>>
>> e uma boa linguagem não o torna um bom designer/programador; ela pode te
>> melhorar, em certo sentido.. ordenando o seu confuso pensamento... rsrsrs
>>
>> às vezes se dá muito valor à uma linguagem, de certa forma até religiosa;
>>
>> o cara fera vai escolher C, Perl ou Python, ... dependendo do que ele quer
>> atingir e COMO quer resolver o probl,
>>
>> [ ao meu ver, a globo.com tem razao em escolher um cara 'safo' que aplica
>> diferentes tools (linguagens), a depender do problema....]
>>
>> [Eden, valeu pelos exemplos e pelo lado + técnico das especificidades das
>> linguagens (e das filosofias por trás delas, rsrs)]
>>
>> Acho importante colocar para os mais jovens que filosofar e pensar muito
>> antes de meter a mão na massa é muito importante. Primeiro desenhe e
>> depois
>> codifique, em Assembly Language, se quiser.
>>
>> Nas universidades não te ensinam a 'pensar', te ensinam a usar
>> ferramentas... e olhe lá....o que de certa forma, te limita.
>>
>> [bom.... chega de filosofia... como não conheço o ecossistema aqui da
>> lista;
>> não sei o grau de tolerância com relação às divagações filosóficas (ou se
>> mesmo isso já foi exaustivamente discutido).
>> pessoalmente, acredito que pensar de forma filosófica é o que está por
>> trás
>> das gdes mudanças da humanidade... SW Livre é filosofia aplicada, pura na
>> veia....
>>
>> para descontar o length desse texto, nas prox msgs serei monossilabico
>> ]
>>
>>
>> Ulisses Gomes Tecnologia da Informação IBIZ Tecnologia +55 11 5579-3178 r.
>> 226 ulisses at ibiz.com.br www.ibiz.com.br
>> ----- Original Message ----- From: "Eden Cardim" <edencardim at gmail.com>
>> To: <saopaulo-pm at mail.pm.org>
>> Sent: Tuesday, April 19, 2011 5:19 AM
>> Subject: Re: [SP-pm] [OT] Apresentação
>>
>>
>>>>>>>> "Ulisses-IBIZ" == Ulisses-IBIZ <ulisses at ibiz.com.br> writes:
>>>
>>> Ulisses-IBIZ> um cara de talento é um bom resolvedor de problemas:
>>> identifica-o, separa o joio do trigo e aplica a elegancia da simplicidade
>>> (ou a simplicidade da
>>> Ulisses-IBIZ> elegancia) para resolve-lo. Isso ele faz em Perl, Java, C,
>>> Python .... Claro, cada linguagem facilita mais a vida do programador
>>> (que
>>> prefiro charmar de
>>> Ulisses-IBIZ> designer). Perl é uma mão na roda que te permite, muitas
>>> vezes, desenvolver N vezes mais rápido que em outras linguagens, mas....
>>> vai
>>> de gosto.
>>>
>>> Ulisses-IBIZ> primeiro o cara precisa ter fluencia de pensamento e
>>> depois na linguagem que escolheu para 'resolver' o problema que se
>>> apresenta.
>>>
>>> Pois é, mas algumas linguagens aleijam até o melhor dos pensadores em
>>> alguns aspectos. Por exemplo, em java uma simples equação de Bhaskhara
>>> implementada com bignums vira isso:
>>>
>>>
>>> --8<---------------cut here---------------start------------->8---
>>> ((b.pow(2) - (a.multiply(b)).multiply(4)).sqrt).divide(2)
>>> --8<---------------cut here---------------end--------------->8---
>>>
>>> porque java não tem sobrecarga de operadores, por design.
>>>
>>> E como sempre, o caso do quicksort em haskell que eu sempre costumo usar
>>> de forma ilustrativa:
>>>
>>> --8<---------------cut here---------------start------------->8---
>>> quicksort [] = []
>>> quicksort (s:xs) = quicksort [x|x <- xs,x < s] ++ [s] ++ quicksort [x|x
>>> <-
>>> xs,x >= s]
>>> --8<---------------cut here---------------end--------------->8---
>>>
>>> Além de ser mais curta, objetiva e mais próximo do que se aprende na
>>> escola do que qualquer outra função em qualquer outra linguagem
>>> não-funcional, funciona com qualquer tipo de dado que implemente os
>>> operadores '<' e '>='. O Java, logo de cara, não consegue fazer,
>>> novamente porque falta a sobrecarga. Em C também não dá, em C++ você
>>> consegue se (ab)usar de templates. Em alguma linguagem dinâmica como
>>> perl ou python, você faz algo similar, mas nunca vai ser tão rápido
>>> quanto a implementação em haskell (a propósito, essa implementação aí em
>>> cima não é a melhor possível), porque compila direto pra binário, não é
>>> interpretado.
>>>
>>> Resumindo, a depender do problema, tem linguagens que vão ser bastante
>>> melhores do que outras.
>>>
>>> --
>>> Eden Cardim Need help with your Catalyst or DBIx::Class project?
>>> Code Monkey http://www.shadowcat.co.uk/catalyst/
>>> Shadowcat Systems Ltd. Want a managed development or deployment platform?
>>> http://blog.edencardim.com/ http://www.shadowcat.co.uk/servers/
>>> =begin disclaimer
>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>> SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>>
>> =begin disclaimer
>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>> SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
> =begin disclaimer
>  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
>
> =begin disclaimer
>  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>


More information about the SaoPaulo-pm mailing list