Skills de um programador

Publicado: 21/01/2009 em Coding

Olá pessoal como vão? Faz tempo que não consigo parar para escrever um post no blog, muito código para fazer aqui na empresa😀
Em meio à tanto código tenho notado o quanto a atividade de programador de computadores é constituída por uma série de conceitos que absorvemos com o tempo e nos torna cada vez mais um bom programador.
Pensando nisso, resolvi fazer uma lista de conceitos que um bom programador deve conhecer para que ele consiga resolver os mais diversos problemas de maneira eficiente. Esta lista não está completa, aguardo sugestões para aumentá-la, eu mesmo vou adicionar assim que indentificar/lembrar de novos pontos importantes. Vou enumerar, mas neste caso a ordem dos fatores não altera o produto.

gates-centerfold

1 – Documentação
Conhecer a documentação da plataforma que utiliza é essencial para que o programador consiga resolver os problemas.
Se a plataforma fornece uma boa documentação e você sabe como utilizá-la adequadamente, provavelmente você não precisará de tantos livros para aprofundar seu conhecimento nas bibliotecas e recursos que você não domina.
Entender o modelo e sugerir melhorias na documentção pode ajudar em momentos cruciais onde o projeto está no limite do prazo e você tem problemas “desconhecidos” para resolver.

2 – Padrões de projeto/arquitetura/etc
Conhecer padrões de codificação e distribuição de componentes desenvolvidos por outras pessoas/empresas ajuda  a tomar decisões mais eficientes de como resolver os problemas. Como economizar determinado recurso, como resolver problemas críticos como sincronização etc, manter um equilíbrio entre flexibilidade, portabilidade e especificidade de um código.
Estas decisões influenciam diretamente no resultado final, e é bom ver como as pessoas resolvem as coisas por aí, pois muitas vezes alguém já se deparou com um problema semelhante e pode-se aprender com as decisões anteriormente tomadas.

3 – Regular Expressions
Validações de dados, busca e manipulação de texto sempre são muito úteis. Regular Expressions são uma forma muito interessante de resolver estes problemas. É um padrão e pode ser utilizado em qualquer plataforma. O que não vale é fazer algoritmos de validação de dados gigantes e utilizar como desculpa que não conhece Regular Expressions e vai demorar para aprender, é só se esforçar um pouco, você só tem a ganhar, pois elas trabalham MUITO por você.

4- Arquivos
Em algum momento você precisa manipular um arquivo. Seja gravar um arquivo de texto no disco, carregar uma figura em memória, ler um arquivo XML ou criar seu próprio formato de arquivo binário. Fazemos isto à todo momento e é um recurso que pode ser muito útil, mais do que pensamos.
vale a pena entender como sua plataforma trabalha com arquivos de texto e binários e extrair o potencial da persistência de dados.

5 – Banco de Dados/SQL
Se as Regular Expressions trabalham muito por você, os bancos de dados praticamente são seus pais. Podemos reclamar, muitos não gostar, mas todos usamos bancos de dados em algum momento. É importante conhecer o modelo de dados que eles utilizam para otimizar o acesso aos dados de maneira a não afetar o resltado final do programa, pois como os bancos podem ajudar, eles também podem ser grandes inimigos da performance quando não são bem utilizados.

6 – Rede
Diferentemente de alguns anos atrás hoje o mundo, inclusive o Brasil está amplamente conectado. O trabalho caminha junto com a conectividade e informações que chegam pela rede, porém fazer bom uso deste recurso fabuloso é trabalhoso. O programador deve ter em mente como a rede funciona e como ela pode ajudar a resolver os seus problemas. O conceito de cloud computing que está na moda é uma grande utilização da rede para resolver problemas. Como usar? O que da pra fazer? Pode afetar a resposta do meu software? (sim) Como otimizar para não interferir na experiência do usuário? Enviar e receber bytes? hmmm bastante coisa e é muito interessante!

7 – Processamento paralelo/threads
Cada vez mais temos hardware com suporte à processamento paralelo, mas fazmos uso dele? Até hoje, muito pouco. Como fazer um processamento paralelo? Como resolver as tarefas de maneira mais eficiente utilizando este recurso? Como funcionam as threads? Essencial ter um bom conhecimento sobre estes assuntos, tendo em vista que é tendência e que os softwares estão cada vez mais sofsticados, precisando efetuar mais tarefas e responder mais rápido ao usuário, que cada vez está mais exigente.

8 – Orientação à Objetos
A OO ajuda a organizar o sistema de uma maneira muito interessante além de uma série de recursos que proporcionam o reaproveitamento de código e uma elegância ao software. Hoje é essencial, tendo em vista que temos as linguagens mais populares tirando proveito total dos recursos de OO, e para tirar proveito das linguagens baseadas em OO é necessário um bom entendimento de como funciona e como pode ajudar ao desenvolver.

A lista já está grande, continuamos outro dia😉
Gostaria da contribuição de vocês com outros ítens top of mind para um programador.

Divirtam-se!

[]’s

comentários
  1. Persio disse:

    Um conceito bastante usado hoje em dia que também não deve ser esquecido é Design Patterns, que acaba passando por quase todas as partes que citou acima.Cada vez mais tecnologia, informação e coisas novas. É por isso que escolhi ser programador! rsMuito bomAbraços

  2. Murilo disse:

    Grande dica Persio!!!😀

  3. Andre disse:

    Acrescento:- Conhecimento de Agile – TDD/unit tests- Convention over configuration- <esqueci o nome oficial> (um guideline de programacao que aconselha o programador a escrever codigo como estaria escrevendo um livro, sempre se preocupando com os detalhes de readability, etc.)[]s– AFurtado

  4. Murilo disse:

    Concordo, gostaria de saber o nome deste guia, lembra aí😀

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s