logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Um melhor programador nos meses que passaram e nos meses que virão

Esse post é uma resposta a um post do Wanderley Caloni - ele chamou isso de tagging, mas quanto mais o tempo passa mais meu cérebro sente dificuldade em absorver novos buzzwords. A pergunta é "Como ser um melhor desenvolvedor nos próximos seis meses?".

Resposta curta: Tudo que eu pretendo fazer para ser um melhor programador nos próximos seis meses é continuar fazendo o que eu tenho feito nos seis meses que se passsaram. Detalhes do que eu tenho feito na resposta longa, logo abaixo:

A coisa que mais tem me ajudado a me tornar um melhor programador é me livrar dos preconceitos e preguiças e conhecer coisas novas. Eu nasci na plataforma Microsoft, meu primeiro contato com programação foi com o QBasic, e de lá eu segui para o Clipper (não-Microsoft, mas para mim sem uma "cultura" como existe em torno dos produtos MS), depois VB 3, 4, 5, 6, ASP, SQL, etc. Até que finalmente eu cheguei ao C++. Apesar do C++ ser a "menos Microsoft" das linguagens listadas, usá-lo envolve coisas bem Microsoft como Win32 API e COM. O C++ é multiplataforma, mas as APIs não o são. Você fica envolvido por essa cultura, e seu instinto básico é achar muito estranho (e até errado) a forma que as pessoas de outras culturas resolvem seus problemas.

Você cria uma cultura de programação quando você é obrigado a usar um ecossistema de aplicações para fazer um projeto. Quando eu programei em Turbo C++ ou Clipper eu não me senti inserido em uma cultura, em uma comunidade de desenvolvedores. Eu programava sozinho na minha casa, e sem Internet era eu e meus livros. Tudo começou a mudar quando eu comecei a programar profissionalmente. Eu não usava mais uma linguagem, eu usava um ecossistema completo. Não era só o VB, uma aplicação era feitas em VB6, ASP, IIS e SQL Server. A integração esses produtos cria uma cultura, um costume difícil de se livrar - a estratégia básica da Microsoft personificada pela MSDN Magazine, onde um Hello World usa SQL Server, BizTalk, Exchange e a versão beta do IIS que só roda em um sistema operacional que ainda não foi lançado. A dificuldade em mudar de cultura é que a nova linguagem não se integra tão bem com o SQL Server que você tanto está acostumado. Não adianta mais só aprender outra linguagem. É preciso aprender uma nova linguagem, um novo banco de dados, um novo servidor Web. Eu fiz isso (esse site é feito em LAMP: Linux, Apache, MySql e PHP), mas é muita coisa para aprender. Quanto mais tempo você tem de programação, menos confortável você se sente com essas coisas. O raciocínio é simples: Pra que eu vou me matar para aprender 5 softwares novos se eu resolvo isso em plataforma Microsoft em 5 minutos? A mesma coisa vale para quem está acostumado a programar Mainframes ou Unix/Linux.

E tudo se resolve quando você aceita sair da sua zona de conforto. Quando você começa a aprender um pouco mais e se anima, seu espírito de moleque fuçador volta a tona e te faz estudar cada vez mais. Foi graças a isso que hoje eu me considero um usuário/administrador/programador Linux. E é isso que me faz um melhor programador hoje: eu conheço várias visões de mundo sobre desenvolvimento de software. Além disso eu tenho estudado MUITO sobre mainframes. Acho que todo mundo sabe que eu trabalho na área financeira programando serviços críticos em C++. Nossas aplicações (rodam todas em Windows) param de vez em quanto, seja por bug, limite de portas de RPC, problema no COM+, problema no MSMQ, problema no Active Direcotry, fix da Microsoft que muda a implementação do critical section no kernel do Windows Server 2003 (santo Windbg...) ou coisas assim. Enquanto isso, as aplicações que rodam em UNIX, plataformas não Intel e no mainframe quase nunca param. Por que? Tenho minha teoria para isso, mas no contexto desse post não vem ao caso. O que importa é que eu estou estudando isso e muitas outras coisas. O que importa é que eu estou começando a entender a cultura IBM, a cultura UNIX, a cultura Linux e até a cultura dos administradores de rede. E eles tem as razões deles para fazer as coisas da forma que fazem.

Eu tenho programado muito em Python e esse post foi escrito usando o emacs. Eu não consigo trabalhar sem o Cygwin e tenho lido TUDO sobre Unix e Linux que aparece na minha frente. Tenho estudado muito sobre mainframes e estudei LISP esses tempos para personalizar o emacs e entender de uma vez por todas como funciona uma linguagem funcional. Tudo fora do mundinho confortável que eu estou acostumado.

E resumindo a resposta longa (eu sei, a resposta curta deveria fazer isso): Eu pretendo continuar descobrindo as diferentes visões de mundo sobre software. Se fechar em só uma plataforma é confortável mas limitante. Eu só continuo seguindo a filosofia de usar a melhor ferramenta para cada tipo de problema, e para isso eu preciso conhecer o maior número de ferramentas. Aquela metáfora que diz que "quando a sua única ferramenta é um martelo todos os problemas se parecem com um prego" é perfeita. Vocês não imaginam a quantidade de casos de péssimo uso para um SQL Server que eu tenho para contar...


Em 18/07/2007 21:37, por Rodrigo Strauss


  
 
 
Comentários
Fábio | em 18/07/2007 | #
Você escreve bem, mas é ecossistema.
Rodrigo Strauss | website | em 18/07/2007 | #
Ooops... Corrigido, obrigado. :-)
Andre | em 20/07/2007 | #
Ae rodrigo, acompanho seu blog e gostaria de sugerir que você escrevesse sobre as "doenças relacionadas com TI" tipo tendinite, L.E.R, se você ja teve alguma, como prevenir, etc etc. acho q todo mundo que mexe com TI ja teve ou um dia vai ter algum sintoma someday...
Rodrigo Strauss | website | em 20/07/2007 | #
Putz, não entendo nada disso...
Felipe | e-mail | em 23/07/2007 | #
Opa Rodrigo!

Não é o nosso primeiro contato, o primeiro foi há... (algum tempo)... quando você queria impedir o tramite que havia para regular a profissão no grupo "Não regula" do yahoo...

Ademais, bati com o seu blog porque recebi um e-mail referenciando este artigo, por sinal muito interessante... Também comecei no QBasic btw...

Deixando o lero de lado, minha formação é essencialmente microsoft, mas também não sou alienado das outras tecnologias (e concordo que não poderia ser); acredito entretanto que grande parte dos problemas da plataforma proprietária da MS estão sendo resolvidos depois dos ambientes gerenciados e do TWC...

A grande dúvida que fica na verdade é sobre a tendência. É possível afirmar que há uma tendência de queda da MS e ascenção dos tantos e grandes apoiadores do mundo linux + SaaS como IBM, Google, etc...? A pergunta é crítica porque talvez os programadores que se "perderam no tempo" de cobol, pascal, fortran, tantas outras, talvez não tenham se feito esta pergunta...

Bem, fica ai o comentário para suas considerações... Abraço!
Rodrigo Strauss | website | em 23/07/2007 | #
Não posso te falar se existe uma tendência ou não, isso é o trabalho de institutos de pesquisas ou coisas assim. Eu só constatei que, para o tipo de software de missão crítica que eu desenvolvo, o Linux é uma boa opção, que me parece ter algumas vantagens em relação ao Windows. Ponto, é minha constatação pessoal, tudo depende do quanto as pessoas que lêem o que eu escrevo dão crédito à minha opinião.

Ainda existem softwares sendo feitos em Cobol, Pascal, Fortan, etc, e eles funcionam muito bem (principalmente os feitos em Cobol). É questão de usar a melhor ferramenta. O Unix foi criado em 1960 e é base do Linux que usamos hoje.
Olavo | e-mail | em 23/07/2007 | #
Olá Rodrigo!

Me identifiquei com o seu artigo, mas a diferença é que o meu caminho foi o inverso.
Apesar do pouco conhecimento em Linux, uma das primeiras linguagens de programação que aprendi foi PHP, no momento em que você começa a aprender LAMP :-).
Tendo trabalhado em alguns projetos em PHP e tendo acesso a java, tinha tudo para ser mais um aluno de faculdade pública voltado para Java e software livre, como a academia prega até hoje.
Até que, através de um amigo, tive contato com a estratégia .net da microsoft (foi aí que nós trocamos de barco ) que tinha a missão de fazer você ser o melhor naquilo que você sabe fazer, porém em qualquer ambiente (Web, Mobile, Mainframe e Desktop).
Hoje, como MCTS .net , acredito que, num âmbito mais técnico, a tendência para desenvolvimento de alguns sistemas está num caminho sem volta para ambientes gerenciados middlewares(como o Felipe comentou), onde acredito que poucos ou até mesmo nenhum desses bugs que focê listou aconteceria (Através de Remoting ou Web Services). (Não é o caso de muitos sistemas que necessitam rodar sem ambiente gerenciado, games por exemplo).

Outra característica importante do .net é que você aproveita muito melhor o seu legado, pois ele mesmo foi feito usando o legado, ou seja, chamadas a Win32.

Então, considero que ninguém "perdeu tempo" fazendo um sistema em cobol ou pascal, desde que possamos extrair do legado camadas para usá-lo de forma "embrulhada" num ambiente gerenciado, C# por exemplo. Ou seja, quem escreveu uma biblioteca cobol que funciona no mainframe a 17 anos, não precisa reescrevê-la, uma vez que ela possa ser adaptada em uma DLL. Em .net pode-se fazer acessos a códigos não gerenciados. Então isso faz com que o novo programador não necessite aprender cobol, mas sim C#, e o mantenedor cobol continue supervisionando seu legado e aplicando o que aprendeu.

O mesmo não posso dizer do PHP, onde nem mesmo em branches mais avançados do PHP5.2 não funcionam coisas que funcionavam no PHP5.1. Se falam em competir com .net, na verdade falam de competir com um subconjunto do framework, o ASP.net... enfim, minha experiência com PHP mostra que é uma excelente ferramenta para um segmento restrito, não pra informática coorporativa.

Mas no geral, concluo concordando com a sua visão: É importante descobrir diferentes visões sobre as coisas. Isso é sabedoria.

Também queiro deixar claro que foi uma experiência minha, com PHP e .net. E a realidade de uns não é a realidade de outros.






Rodrigo Strauss | website | em 25/07/2007 | #
Não sei se foi isso que você entendeu ("no momento em que você começa a aprender LAMP"), mas eu já programo em PHP faz mais de três anos.

Eu sou contra chamar Win32 de legado, mas como você só está repetindo o que a área de marketing que a Microsoft diz, tudo bem. Não se esqueça que o SQL Server, o Windows Server 2008, o Vista e o Office 2007 ainda são feito usando/implementando Win32. Seria o Windows Server 2008 um sistema operacional legado?

Discordo completamente da afirmação que os sistemas em Cobol ou Delphi só tem utilidade se puderem ser integrados ao .NET. Eles funcionam, independente do .NET. A Borland (agora CodeGear) ainda dá suporte ao Delphi e existem ainda fornecedores para Cobol e Natural. Existe até integração com Eclipse, que é uma IDE tão boa quanto (talvez até melhor do que) o Visual Studio. .NET não é a única opção, e para vários tipos de sistema não é a melhor opção.

Não vejo problemas no PHP quanto ao mercado corporativo. O suporte do ASP.NET é melhor (suporte == ferramentas, ambientes, suporte de fabricante, etc), mas isso não invalida o PHP. Você está olhando o lado da facilidade do programador, mas uma decisão sobre escolha de tecnologia deve envolver mais do que isso.

Eu não citei nesse post, mas uma das coisas que tenho estudado ultimamente é C#, e tenho gostado muito do que estou vendo (principalmente o C# 3.0). Não é uma visão Microsoft vs Linux.
Bruno Feliciano | em 26/07/2007 | #
Bem interessante esse post, no que o Olavo disse concordo em partes com ele, entretanto uma coisa que acho que serve como freio duma evolução maior de sistemas programados com linguagens managed é o fato desses ambiente terem uma evolução muito mais rápida que o hardware atual tem para seu uso... (por exemplo qualquer computador pessoal atual pediria água para rodar uma aplicação WPF com muitos recursos). Essa é aliás uma tecnologia que eu acho que trará uma grande evolução no que diz respeito ao design dos aplicativos, só que infelizmente ela não é para hoje. Uma coisa que eu notei bastante durante o fim do desenvolvimento e lançamento do Vista é que não vi um entusiasmo exarcebado em cima dele ser "a solução dos problemas mundias e a maior inovação de todos os tempos"... e agora que a M$ anunciou que pretende lançar um Windows novo daqui só 3 anos eu penso que estava correto no meu raciocinio... o Vista é apenas uma ponte do que existe hoje para algo muito maior que está por vir...
joao de deus | website | e-mail | em 10/11/2007 | #
Viva.

Sou um programador amador que programa nos tempos livres que tenho da vida profissional e familiar. Este site está muito bom, com os tuturiais e tudo mais. Só sei trabalhar com o MS VisualC++6 com as MFCs (nasci no C para ambiente DOS e fui migrando para o visualC++ para fazer programas em Windows), ainda não percebi bem o que é a plataforma net, não sei usar ATL nem COM. Tentei usar o MS Visual C Express, o C#, mas achei a sintaxe tão diferente, e continuei com o visualc++.
Ainda não consegui sair da minha “zona de conforto”.
No entanto fiquei curioso sobre a sua teoria, que não foi mencionada, sobre o facto dos bugs nas aplicações Windows, enquanto que a plataforma unix apresenta maior estabilidade. Gostava de ouvi-la.

Gostava também de colocar uma questão. Se calhar este não é o post adquado me desculpem mas aqui vai. Tenho um site onde tenho pequenos programas com distruição livre escritos em português. Qual a melhor maneira para distribui-los em inglês (ou outras línguas). Por exemplo, os menus, tooltips e caixas de dialogo são em português. Tenho visto programas que numa opção do menu se escolhe o idioma e automaticamente todos os recursos mudam de idioma. Será esta a melhor opção ou deverei criar diferentes executáveis, um para cada língua? Já reparei que por exemplo, nas caixas de dialogos podemos inserir cópias (insert resource copy) com outro idioma. Depois ficam as duas copias criadas, mas quando chamados o dialogo com a função DoModal(), aparece o dialogo cujo idioma é o do sistema operativo. Há alguma maneira para definir qual das cópias a função DoModal vai chamar? Já li alguma coisa sobre programar em diversos idiomas na MSDN, mas achei os artigos muito vagos. E relativo às tooltips definidas na string table? Tinha pensado em criar uma cópia da string table em outro idioma, no entanto também não sei como escolher qual string table será carregada.

Obrigado
Rodrigo Strauss | website | em 10/11/2007 | #
Minha teoria é simples: o UNIX tem uma menor superfície de exposição e menor dependência. Um Windows 2003 Server precisa de gigas de HD, porque instala junto o Windows Media Player, Internet Explorer, GUI, Solitarie, DirectX, COM+, etc, etc. Usando Linux/Unix você consegue instalar somente o necessário.

Eu já fiz software multilingua assim: faça uma string table para cada idioma e não use strings hardcoded. Carrege a string table de acordo com o idioma, é só colocar o mesmo ID para as mesmas strings em string tables (e idiomas) diferentes. Simples assim.
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::