Saturday, October 20, 2007

Como se tornar um verdadeiro Programador - How to a real Programmer

Olá, hoje eu quero comentar sobre um tema que a muito tempo eu queria escrever. Esse tema já foi discutido diversas vezes e você pode encontrar muitas referências no Google (listo algumas interessantes no fim desse artigo). Escrevi esse artigo porque gostaria de dar um foco diferente a esse assunto, mas acho útil você ler os outros artigos os quais tomei também como referência.

A área de TI (Tecnologia da Informação) é bastante vasta, existem muitas áreas específicas que um aspirante pode se deparar no decurso de sua escalada para entrar (e permanecer) nessa área. Não obstante, a área de TI vem crescendo vertiginosamente devido ao grande crescimento tecnológico que passou a ser um diferencial competitivo entre as empresas, tornando a Tecnologia da Informação uma área extremamente atrativa para aqueles que desejam ingressar no mercado de trabalho ou mesmo obter melhores ganhos salariais. Leia meu artigo entitulado Analistas de Sistemas x Analistas de Negócio.

Deixe-me citar algumas opções interessantes para sua escolha.


- Redes
- Banco de dados
- Desenvolvimento
- Análise de Sistemas
- BI (Business Intelligence)
- Segurança da Informação
- Arquitetura de Sistemas
- Dentre outros


Eu acredito que independente de qualquer escolha, para se obter sucesso, é necessário que se tenha alguma aptidão para esse trabalho. Isso porque algumas áreas requerem do profissional grande senso lógico e matemático, além de concentração e espírito para manter-se constantemente atualizado. Completam o perfil adequado uma senso de necessidade de conhecimento e espírito autodidata.


Não precisa se assustar se você não possui alguma dessas qualificações. Talvez você não tenha nascido pré-destinado para trabalhar com bits e bites, mas ainda é possível entrar na área de TI mesmo assim.


Claro que algumas funções mais do que outras necessitam em maior ou menor grau de determinado perfil ou qualificação. Cito alguns exemplos a partir de minha experiência ao longo de mais de 1 década.


1. Desenvolvimento - Capacidade de concentração, senso lógico, perfil autodidatade e pesquisador são diferenciais. Acredite essa é uma área onde aqueles com a personalidade mais introspectiva acabam por se dar muito bem.

2. Análise de Sistemas - Facilidade de comunicação e relacionamento interpessoal, abstração e perfil negociador são essenciais. Aqui o introspectivo dificilmente acabada se dando bem.

Em minha opinião o espírito de trabalho em equipe é sem dúvida um dos mais importantes e deve ser considerado em qualquer indíviduo que deseja ingressar nessa área de trabalho. Apesar de importante, eu não considero isso um grande problema para aqueles que integrem uma equipe de desenvolvimento. Mas, aqui vale uma ressalva - depende da natureza do trabalho.

Profissionais atuando por exemplo em Fábricas de Software modulares permanecem a maior parte do tempo concentrados e introspectos, portanto interagindo pouco com a equipe ao seu redor - em geral desenvolvem seu trabalho a partir de especificações previamente elaboradas por outras equipes. Entretanto há ambientes de desenvolvimento onde a interação entre a equipe é essencial - cito por exemplo a natureza do desenvolvimento OpenSource. No mundo OpenSource essa interação geralmente se dá a partir de Fórums de discussão via WEB.

A área de desenvolvimento é uma área que merece constante atualização por parte do profissional, digo isso em relação a baixa plataforma (PCs), se você quer saber um pouco mais sobre o desenvolvimento em Mainframes leia meu artigo entitulado "Como ser um Programador Mainframe". Manter-se atualizado nessa área não é tão simples como você pode imaginar, mas também não é tão complexo se você tiver foco.

Foco é algo importante, porque ao entrar em desenvolvimento de software você pode se deparar com um emaranhado de Siglas (uma sopa de letrinhas, que pode causar um grande indigestão). Apenas para nos apoiarmos em algo vamos listar algumas.

- XML, XSLT, AJAX, ASP, .NET, XSLFO, VB, HTML, JAVASCRIPT, JAVA, JSP, SERVLET, SOA, XPDL, C, C++, C SHARP, PHP, PERL, SQL, VBA, ABAP, BASIC, LISP, PHYTON, TCL, LUA, WebServer, JBoss, Tomcat, ARIS.

É claro que eu misturei linguagens, conceitos, ferramentas só pra tornar a sopa mais espessa. Mas se você quer ter uma idéia de quantas linguagens de programação existem por aí visite o Wikipedia nesse endereço http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages, você vai se surpreender.

Agora, a grande questão é:

-Preciso realmente saber tudo isso ?
Bem, sim e não. Lembre-se do que eu disse no início desse texto, a área de TI tem se tornado muito atrativa. Isso significa que atualmente existe uma grande demanda de profissionais, que saem das universidades todos os anos, em consequência existe uma grande concorrência nesse mercado. Então o ideal é que você saiba tanto quanto possível, um pouco sobre tudo, de forma a se tornar um profissional generalista.

Mas eu tenho boas e más notícias. O mercado tem mudado ao longo dos anos, e a partir do fim dos anos 90, o mercado tem dado preferência aos profissionais especialistas.
Isso pode ser uma boa notícia - você já não precisará conhecer tudo.

Então há uma luz no fim do túnel (e não é um trem na contra-mão).

Vamos tirar proveito disso.
Se você quer ser um desenvolvedor, você precisa primeiro Focar. Se você já conhece alguma linguagem de programação eu recomendo que busque focar no desenvolvimento para WEB. E porque WEB ?

A resposta é a WEB está em toda a parte. Todas as grandes empresas desenvolvem sistemas que de uma forma ou de outra tem uma ponta na WEB. Seja para a criação de páginas, seja para desenvolver sistemas que interajam com o cliente final ou fornecedores, a WEB ultrapassa limites e tem se tornado um diferencial estratégico das empresas para alcançar seus consumidores e trocar informações.

Agora, porque eu estou dizendo isso. Tenho notado que grande parte daqueles que iniciam na arte da programação acabam por perder muito tempo desenvolvendo software em seus estudos que nada tem a ver com aquilo que as empresas desejam.
Lembre-se essa é uma área vasta. Você tem diante de si, um quadro branco e um leque de centenas de cores para pintá-lo. Se você não focar você corre o risco de borrá-lo - e olhe que estamos falando agora de sua carreira.

A arte da programação nos dá muitas oportunidades de perder o foco. Por exemplo, ao trabalhar com Java você irá se deparar com milhares de maneiras de se fazer a mesma coisa, e nem estou falando sobre lógica de algoritmos, estou dizendo que existem milhares de soluções prontas (os chamados pacotes) que visam facilitar (ou complicar) a vida do desenvolvedor.

[continua em breve...]

Links interessantes.
http://samizdat.mines.edu/howto/HowToBeAProgrammer.pdf
http://www.reiwolf.com.br/10dicasprogramador.htm
http://www.ftec.com.br/wordpress/?p=287#comment-1558 - Interessante