A profissão: Programador

Neste artigo, conheceremos um pouco mais sobre esta profissão, seus desafios e seu dia a dia. E também, serão apresentadas dicas para uma melhor produtividade, escrevendo bons códigos, livres de bugs e redundâncias.

[ Hits: 28.227 ]

Por: André em 25/07/2012 | Blog: http://127.0.0.1


O que preciso para tornar-me um programador?



Bom, como vocês devem estar indagando-se, o que vocês precisam para tornarem-se bons programadores, acima de tudo, é coragem. Não, não é uma brincadeira.

Prepare-se e tenha coragem, pois noites serão perdidas, atenção será necessária e práticas exaustivas, até que se chega próximo à perfeição (perfeição não seria a melhor palavra, mas não consigo pensar em uma melhor).

Para ser um programador, você precisará dedicar-se, ler muito (bem, a prática da leitura não é algo exclusivo da informática e nem da programação, é evidente).

Ao contrário do que muitos acham, os livros podem ensinar de forma errada. Como assim "de forma errada"? Você deve estar indagando.

Forma errada, que me refiro, é o ensino de práticas errôneas (ou má prática, se preferir. Os termos são quase que infinitos) e, muitas das vezes, ensinando até mesmo erros absurdos, que podem acarretar grandes problemas. O que, consequentemente, como diria o Martin Fowler (ou seria o Robert C. Martin? Não me lembro, mas foi num livro de um destes autores) poderia levar uma empresa à falência.

Não sei se posso citar aqui livros onde encontrei erros claros, erros absurdos, mas sei que posso citar livros extraordinários, que apresentam ótimas formas de desenvolvimento, economia de código, refatoração e, acima de tudo, da construção de um bom código, limpo e legível.

Vamos iniciar, portanto, falando um pouco sobre threads.

Threads, basicamente, são como processos, que dividem-se para realizar uma ou mais tarefas de uma vez só (essa é a sua utilidade principal). Vamos supor que temos um formulário, com uma barra de progresso (Progress Bar), e um botão (Button).

No evento de "click" deste botão (on click) temos um laço, que percorre de 0 à 100 e, através da variável contadora desta mesmo laço, vamos adicionando à posição da nossa barra de progresso.

Um exemplo prático, simples, e de fácil entendimento:

TProgressBar.Max = 100;
for i = 0 to 100 do
begin
       TProgressBar.Position :=
       TProgressBar.Position + 1;
end;


O que o código acima faz:

'100' passa ser o valor máximo da barra de progresso, valor atribuído na primeira linha. Na segunda, temos nosso laço, que percorre de 0 à 100, como dito, e dentro do begin/end, vamos acrescentando 1 (uma) posição a cada vez que o loop passar.

Ótimo, temos um laço, que fará com que nossa barra de progresso "carregue", assim que clicarmos no nosso botão. Execute o programa e clique no botão.

Assim que a barra começar a encher, tente arrastar o formulário. Travou (ou deu "lag"), não? Isso é perfeitamente normal, pois estamos fazendo duas coisas ao mesmo tempo (tentando, ao menos), e sem usar threads.

Se tivéssemos usado threads, por exemplo, não teríamos esse problema.

- O que seria o ideal a fazer?

Criar uma thread, e no evento de execução desta thread (on execute), ou no evento de execução e espera (execute and wait), colocarmos uma prioridade baixa.

Em threads, podemos, inclusive, manipular sua prioridade, se é baixa, média ou alta, por exemplo. A grosso modo, é pra isso que a thread serve.

Como notam, minha explicação fora demasiada simplória, mas foi para ilustrar, apenas, a importância e o principal objetivo da thread. Para mais, pesquisem em referências externas.

Como eu havia prometido, indicarei dois livros de cabeceira. Isso mesmo, espero que, assim como é para mim, sejam também seus livros de cabeceira.

Os livros são:
  • Clean Code: A Handbook of Agile Software Craftsmanship (Código Limpo, aqui no Brasil), do Robert C. Martin.

    Se preferirem, há a edição em Português do Brasil. Este livro é estupendo! Ele nos apresenta, de forma super didática, boas práticas de programação, ilustrando com exemplos práticos as situações do dia a dia do desenvolvedor. Leitura indispensável para os novatos e também para os veteranos da programação.

  • Refactoring: Improving the Design of Existing Code (Refatoração, aqui no Brasil), do Martin Fowler.

    Sem sombra de dúvidas, é o livro mais importante sobre refatoração. Neste livro, que aliás também é excepcional, são apresentadas técnicas práticas de refatoração, boas práticas de programação e conceitos de desenvolvimento; tudo isso usando a linguagem Java como base, e a sua orientação a objetos, o que é importantíssimo.


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. O que preciso para tornar-me um programador?
   3. Escrevendo o código
   4. Ferramentas
Outros artigos deste autor

L.F.A.Q : Linux Frequently Asked Questions

Inteiros e Strings na linguagem C

Trabalhando com a interface gráfica em Java

SDL e C - Uma dupla sensacional

Operadores com a linguagem C

Leitura recomendada

Hierarquia do Sistema de Arquivos GNU/Linux

sidux Hipnos XFCE

Diferenças entre Gentoo e Funtoo

Recuperação (parcial) de Arquivos em Pendrive Infectado por Ransomware Spora

Afinal, qual a melhor distribuição?

  
Comentários
[1] Comentário enviado por removido em 25/07/2012 - 10:11h

.

[2] Comentário enviado por WhiteHawk em 25/07/2012 - 11:00h

Excelente artigo! Gostaria de parabenizar-lhe e agradecer-lhe pela contribuição.

[3] Comentário enviado por azk em 25/07/2012 - 12:29h

Bom trabalho, André.
Favoritado!

[4] Comentário enviado por jarlisson em 25/07/2012 - 12:38h

Pra quem quiser ler mais sobre o assunto, deixo o site do excelente e experiente programador C++ Rodrigo Strauss: http://1bit.com.br/

[5] Comentário enviado por felipe300194 em 25/07/2012 - 17:09h

realmente muito bom, além de conter ótimos links. Também favoritado!

[6] Comentário enviado por ArtCMJ em 26/07/2012 - 00:00h

E quanto mais aprendemos, menos sabemos.
Obrigado por compartilhar.

[7] Comentário enviado por andrezc em 26/07/2012 - 08:34h

Obrigado à todos.

Em breve teremos mais.

[8] Comentário enviado por removido em 26/07/2012 - 12:13h

Olá.

Gostaria também, se possível, que fosse colocada dentro das mais coisas futuras, se alguém mais puder comentar a respeito também, comparações específicas entre tarefas diretas de programador e as dos outros na área de TI, além de apenas usar qualquer coisa que os primeiros caras fizeram.

A impressão que alguns já me passaram da área é como se todo mundo estudasse prá ser cacique de tribo. Aprender a como ser um Analista de Desenvolvimeto generalizado.

Ou apenas fosse tido o pensamento de se visionar uma coisa mais ampla prá uma outra pessoa subordinada implementar. Sabe-se lá como. Se é apenas nos "cases de UML".

Que paradoxo! Como é que o tal subordinado aprendeu a implementar?

Melhor não dizer "isso foi ensinado em tal lugar" ou "lá ensinam assim". Mesmo porque o tempo passa, as ideias são atualizadas. Ao menos eu espero que sim.

Eu não sei dizer se é:

* ou por causa de ser uma coisa que parece ser qualquer um capaz de fazer;
* ou se é mais difícil e não dão tanta atenção;
* ou se poucos gostam mesmo;
* ou se porque tem coisa mais rentável e é nessas a propaganda.
* ou se é para puxar areia em cima de alguma coisa, contornar mesmo, passando ideia de outras coisas fantásticas e maravilhosas da área.

Talvez o projeto de software mais famoso de um brasilero ainda seja o Window Maker. Tenho a impressão que há algum tempo o cara que escreveu ele não mora mais no Brasil. A situação atual deste projeto é outra história.

A linguagem Lua está ganhando popularidade aos poucos. Os autores publicaram livros apenas no estrangeiro, pelo que descobri. No Brasil existe um livro sobre Lua, mas numa editora que vende um exemplar por requisição.

Os sites nacionais de programação destacam muito programação .NET e em criação de sites.

Se uso de Linux é mais para servidores e redes, é presumível que o número de profissionais desta tarefa seja maior, bem como o material circulante.

Concluíndo:

* existem linguagens "em alta" para programadores?

* que tipo de coisa ensinam, que não deveriam e que deveriam ensinar em cursos técnicos e superiores?

* de que tipo de curso técnico e superior deveria-se correr, independente de a faculdade ter nome ou não (principalmente das que teriam nome)?

* qual orientação prática poderia ser ensinada nos cursos, já que uma linguagem é diferente de outra, servem para coisas diferentes, ensinam a pensar diferente e não como puras linhas de pseudocódigo, teóricas até mesmo para a teoria e intraduzíveis dependendo da linguagem?

* programação virou coisas tipo "carne de vaca" que é só ensinar 1/2 dúzia de preceitos e mandar o cara se virar em aprender alguma linguagem?

* qual o próximo passo da carreira do desenvolvedor? análise do sistema sem codificação? tornar-se ceo, cio algo assim?

* preferir permanecer apenas como programador é pressupor acomodação, dizer que não quer seguir carreira seja lá com quem se trabalha, de modo semelhante a outras profissões?

* desenvolvimento de código de unix, linux etc. seja aberto ou não é mais forte apenas fora do Brasil?

* geralmente vejo muito anúncio de empresas que trabalham nos três estados da região sul (conectiva era de lá e tem alguma coisa em foz também) e com menor divulgação no sudeste. onde no Brasil pode-se dizer que há desenvolvedores de software livre?

* há alguma estatística do que programadores fazem hoje em dia?

* existem certificações de programação além daquelas coisas ligadas a .NET? alguma de software livre em qualquer lugar do mundo?

* independente do lado pessoal de se querer aprender várias linguagens de programação (é de cada um, não há muito o que argumentar porque há quem faça isso), é necessário aquela linguagem única prá se fazer tudo e também se garantir?

* há um mandamento conhecido por "não reinventarás a roda". se já foi feito é porque é o mais básico e mais fácil, então deve ser aprendido antes. até que ponto pode ser bom desobedecer esta regra para se aprender a programar?

* que tipo de foco uma pessoa que quer programar deve visualizar? ou melhor, que tipo de coisa deve fazer para evitar não perder tempo no aprendizado e no resto?

Agradeço a qualquer um que se proponha a debater.

[9] Comentário enviado por italotosta em 29/07/2012 - 08:51h

Muito bom seu artigo, hoje trilho ainda trôpego no mundo da programação, estou a ver na prática o quão árduo e prazeroso é programar.

[10] Comentário enviado por Omascara em 30/07/2012 - 18:14h

Legal !

[11] Comentário enviado por Omascara em 30/07/2012 - 18:17h

É um otimo artigo para quem ta começando como eu !

[12] Comentário enviado por ricardodaniel em 03/08/2012 - 19:02h

Excelente artigo.

Valeu!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts