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 <ulis...@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" <bla...@gmail.com> > To: <saopaulo...@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 <ulis...@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 ulis...@ibiz.com.br www.ibiz.com.br >> ----- Original Message ----- From: "Eden Cardim" <edencar...@gmail.com> >> To: <saopaulo...@mail.pm.org> >> Sent: Tuesday, April 19, 2011 5:19 AM >> Subject: Re: [SP-pm] [OT] Apresentação >> >> >>>>>>>> "Ulisses-IBIZ" == Ulisses-IBIZ <ulis...@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@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@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@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@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@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer