The Pragmatic Programmer

The Pragmatic Programmer é livro obrigatório, servindo de introdução geral para refatoração, TDD, técnicas DRY e outras boas práticas.

Background Image

Embora não tenha terminado de ler, tenho gostado muito do The Pragmatic Programmer. É um livro obrigatório, servindo de introdução geral sobre refatoração, versionamento de código, TDD, técnicas DRY, e vários outros recursos que estão de uma forma ou de outra, englobados dentro dos processos ágeis de desenvolvimento.

Além de não ter uma linguagem chata e usar várias analogias interessantes, o livro é realmente prático, traz muitas situações que facilmente encontramos no dia-a-dia.

Sinopse oficial do Livro The Pragmatic Programmer (em Inglês)

Ward Cunningham Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process–taking a requirement and producing working, maintainable code that delights its users.

It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and youll learn how to

  • Fight software rot;
  • Avoid the trap of duplicating knowledge;
  • Write flexible, dynamic, and adaptable code;
  • Avoid programming by coincidence;
  • Bullet-proof your code with contracts, assertions, and exceptions;
  • Capture real requirements;
  • Test ruthlessly and effectively;
  • Delight your users;
  • Build teams of pragmatic programmers; and
  • Make your developments more precise with automation.


Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development.

Fonte: Amazon

Pontos Positivos

O livro tem um foco grande no aspecto humano que existe na jornada de virar um bom programador. Eu SUPER recomendo esse livro para os iniciantes na carreira de programação, não somente devido as dicas técnicas, mas principalmente as dicas comportamentais.

Pontos Negativos

O primeiro é o fato de estar em inglês, o que criar uma forte barreira para muitos iniciantes. Outro ponto é devido a alguns exemplos já mostrarem o peso do tempo. Algumas recomendações já não se mostram tão atualizadas assim — nada que uma pequena revisão não resolva.

Se interessou no livro?

O que significa ser um programador pragmático?

Ser um programador pragmático significa ter uma abordagem prática para a programação. Isso significa que, em vez de seguir cegamente teorias ou padrões, o programador pragmático se concentra em encontrar a melhor solução para o problema à mão, independentemente da linguagem ou framework utilizado.

Alguns dos traços comuns de um programador pragmático incluem por exemplo:

  • Focado em resolver problemas de maneira eficiente e eficaz, em vez de seguir cegamente teorias ou padrões;
  • Abrangente e curioso, sempre procurando aprender coisas novas e experimentar coisas diferentes;
  • Flexível e adaptável, capaz de se ajustar rapidamente às mudanças e aproveitar novas oportunidades;
  • Prático e realista, compreendendo as limitações do tempo e dos recursos e trabalhando de maneira a maximizar o retorno sobre o investimento;
  • Focado em resultados, entendendo que o objetivo final é entregar valor para os usuários ou clientes.

Como construir uma carreira como programador, segundo o The Pragmatic Programmer

Existem algumas coisas que você pode fazer para construir uma carreira como programador:

Aprenda as habilidades técnicas necessárias:

É importante ter uma boa compreensão das linguagens de programação e das ferramentas que são usadas no mercado de trabalho. Você pode aprender isso por meio de cursos online, livros ou aulas presenciais.

Crie projetos pessoais

Um bom modo de praticar e mostrar suas habilidades é criando projetos pessoais. Por exemplo, isso pode ser um app, um site ou qualquer outra coisa que você goste. Compartilhe seus projetos online, em redes sociais ou em seu próprio portfólio para mostrar o que é capaz de fazer.

Faça estágios ou trabalhos voluntários

Uma ótima maneira de adquirir experiência é através de estágios ou então trabalhos voluntários. Isso pode ajudá-lo a adquirir experiência prática, conhecer pessoas no setor e aprender sobre como funciona uma empresa de tecnologia.

Participe de comunidades online

Existem muitas comunidades online de programação, como fóruns e grupos no LinkedIn, em que você pode participar e trocar conhecimentos com outros programadores. Além disso, as comunidades também podem te ajudar a ficar atualizado sobre as últimas tendências e tecnologias.

Faça networking

Conhecer pessoas no setor de tecnologia pode ser muito útil para sua carreira. Participe de eventos de tecnologia, crie relacionamentos profissionais e mantenha contato com as pessoas que você conhece. Isso pode ajudá-lo a encontrar oportunidades de trabalho bem como a progredir em sua carreira.

Vim

VIM e suas abas!

Gosto de usar o VIM (VI improved) no dia-a-dia e encontrei um recurso muito útil disponível a partir da versão 7 deste super editor: abas!

Background Image


Gosto de usar o VIM (VI improved) no dia-a-dia e encontrei um recurso muito útil disponível a partir da versão 7 deste super editor: abas!

Basta usar o :tabnew para abrir uma nova aba. Você pode opcionalmente fornecer o arquivo que deseja abrir na nova aba, passando o caminho como parâmetro.

Para navegar entre as abas, basta usar o :tabn n, onde n é a posição da aba, começando do 0. Para avançar ou voltar entre as abas, use o :tabnext e o :tabprev. Existe também o :tabfirst e :tablast, que respectivamente avançam para a primeira ou última aba.

Quais as diferenças entre VS Code e VIM?

VS Code (Visual Studio Code) e VIM (Vi IMproved) são dois editores de código populares amplamente utilizados por desenvolvedores em todo o mundo. No entanto, eles possuem algumas diferenças importantes:

  • VS Code é um editor de código desenvolvido pela Microsoft e é baseado em uma interface gráfica do usuário (GUI). Ele vem com uma ampla variedade de recursos integrados, como destaque de sintaxe, depuração, controle de versão e integração com outras ferramentas de desenvolvimento.

    Além disso, ele tem uma grande comunidade de desenvolvedores que criam extensões para adicionar ainda mais recursos e funcionalidades.

  • VIM é um editor de código baseado em linha de comando que foi criado como uma versão melhorada do editor vi original. Ele é conhecido por ser altamente personalizável e poderoso, mas também é considerado mais difícil de aprender do que outros editores de código.

    VIM é popular entre os desenvolvedores que preferem trabalhar diretamente no terminal e que buscam uma ferramenta de edição rápida e eficiente.

Em resumo, VS Code é um editor de código completo com uma ampla variedade de recursos integrados e uma interface gráfica amigável, enquanto o VIM é um editor de código baseado em linha de comando mais poderoso e personalizável, mas também mais difícil de aprender.

Nesse sentido, a decisão da melhor opção depende das necessidades e preferências do desenvolvedor.

Quais são os principais comandos do VI improved?

O VI Improved (VIM) é um editor de texto avançado para Unix e outros sistemas operacionais. Ele é conhecido por ter uma interface de linha de comando (CLI) e por ser surpreendentemente personalizável. Aqui estão alguns dos principais comandos do VIM:

  1. i: entra no modo de inserção, permitindo que você insira ou edite texto no documento.
  2. Esc: sai do modo de inserção e volta para o modo de comando.
  3. :w: salva o documento.
  4. :q: sai do VIM.
  5. :q!: sai do VIM sem salvar as alterações.
  6. /pattern: pesquisa o padrão especificado no documento.
  7. h, j, k, l: se move para a esquerda, para baixo, para cima e para a direita, respectivamente.
  8. dd: exclui a linha atual.
  9. yy: copia a linha atual.
  10. p: cola o conteúdo copiado ou cortado após a linha atual.

Esses são apenas alguns exemplos dos muitos comandos disponíveis no VIM.

É importante notar que o ele é um programa muito poderoso e mas uma curva de aprendizado relativamente íngreme. No entanto, uma vez que você domina os comandos básicos, é possível aumentar significativamente a sua velocidade de edição de texto.

Como começar a usar o VIM (VI improved)?

Para começar a usar o editor, siga os passos abaixo:

  1. Abra o VIM digitando vim no terminal.
  2. O VIM irá abrir um novo documento em branco. Para abrir um documento existente, digite vim nome_do_arquivo.
  3. O VIM possui dois modos de operação: o modo de inserção e o modo de comando. Você começa no modo de comando. Para entrar no modo de inserção, basta pressionar a tecla i. Agora você pode começar a digitar o texto no documento.
  4. Para sair do modo de inserção e voltar para o modo de comando, basta pressionar a tecla Esc.
  5. No modo de comando, você pode usar os comandos do VIM para salvar o documento (:w), sair do VIM (:q) ou desfazer as alterações (:q!), entre outras ações.

É importante notar que o VIM é um editor de texto avançado e pode ser um pouco desafiador principalmente para iniciantes.

No entanto, uma vez que você se acostuma com os comandos básicos, é possível aumentar significativamente a sua velocidade de edição de texto.

Por fim, é recomendável praticar os comandos básicos e experimentar com as configurações e opções disponíveis para tornar sua experiência de edição de texto mais eficiente e agradável.

Links

Php

XML com PHP5

Tratando-se de PHP, existem basicamente três mecanismos para tratarmos com XML : com o (SAX), o DOM e a biblioteca SimpleXML.

Background Image

No PHP existem três mecanismos para tratarmos com XML: o Simple API for XML (SAX), o PHP5 Document Object Model (DOM) e a biblioteca SimpleXML.

Hoje decidi listar rapidamente os ônus e bônus de cada opção. Vamos lá!

Antes de tudo : entendendo o conceito de parsing de um XML

Free code on computer screen

Todos os mecanismos que trabalham com XML no PHP obrigatoriamente usam o conceito de parsing. Em outras palavras, é feita uma análise da estrutura do documento para então começar desencadear ações para nos permitir trabalhar com o mesmo.

Também conhecida na ciência da computação como Análise Sintática, o parsing acontece por trás dos bastidores e na maioria das vezes nem sequer notemos. Entretanto, é com ele que é checado se o documento fornecido é um documento XML válido. Alguns links interessantes:

W3Schools : Well formated XML
Wikipedia: Valid XML
Wikipedia (PT) – Análise Sintática

PHP SAX

O SAX trabalha sempre com o lançamento de eventos que estouram de acordo com os elementos encontrados no XML – essencialmente sendo esses as tags de abertura e fechamento, mas podendo ser definidos outros padrões.

Para trabalhar com SAX, você basicamente cria um parser para o XML com a função chamada xml_parser_create e depois começa a usar o handler criado sentando suas funções que estourarão de acordo com os elementos encontrados.

Sendo sincero, a idéia até é legal, mas só vale a pena se realmente manipular cada (ou a maioria) dos elementos do seu XML. O próprio Andi Gutmans confessa que dá muito trabalho usar o SAX.

Quanto ao seu desempenho, é satisfatório para aplicações online de grande porte. Dizem os evangelistas do PHP5 que nesta última versão do PHP o SAX teve um improvement de desempenho devido a troca do mecanismo de base para rotinas com XML, que antigamente era uma toolkit em C chamada Expat e agora é a criada pela galera do Gnome, a chamada libxml2. Eu não vi nenhum benchmark na web falando sobre isso.

Links interessantes sobre SAX:

PHP.NET – XML parser options
InformIT – SAX and PHP

PHP DOM

Já o PHP DOM, por sua vez, veio com o PHP trazendo algumas facilidades. O Zend PHP 5 Certification Study Guide chega a dizer que ele foi totalmente reescrito. Mas fique atento: o próprio Andi Gutmans no livro PHP 5 Power Programing canta a pedra de que a extensão DOM come memória feito um cão. Ele diz na p. 147 :

“Usar o método DOM é muito mais fácil ( em relação ao Sax – simple API for XML), mas paga-se um preço – uso de memória. Embora isso não seja perceptível em um pequeno exemplo, definitivamente é perceptível quando você faz o parsing de um arquivo XML de 20mb com o método DOM. Ao invés de iniciar eventos para cada elemento de arquivo XML, o DOM cria um árvore na memória contendo o seu arquivo XML.”

PHP 5 Power Programing

Por isso fique atento quando utilizar o DOM, pois se você carregar um XML robusto para cada usuário que se loga no seu site, por exemplo, você poderá ter um sério problema. Ainda sim o DOM parece ser a técnica mas completa para fazer o parsing do seu documento XML.

Quando você tem a extensão DOM já compilada com seu PHP, basta você instanciar a classe DomDocument – que já vem junto com a extensão, e usar o método load() caso tenha que ler um arquivo xml do seu HD. Ele também suporta o uso de XPath (linguagem de consulta para XML).

Por último, destaco também que o DOM e o SimpleXML (próxima técnica) tem uma boa comunicação através dos seus handles, podendo ser feita a conversão de um handle de um tipo para outro com grande facilidade.

Links interessantes sobre DOM:

PHP.NET – Document Object Model
W3Schools – PHP XML DOM

SimpleXML

Por última (e também mais usada) existe a extensão SimpleXML, que oferece uma ampla variedade de opções para operações com XML. Embora tenha algumas limitações, na maioria dos casos a SimpleXML é a mais indicada – devido sua simplicidade e bom desempenho.

Ler, comparar e substituir nós e retirar textos de um XML com o SimpleXML é rápido e indolor, ao contrário das duas últimas extensões.

Nas primeiras subversões do PHP5, o SimpleXML não tinha o recurso de escrita de um XML, somente leitura e busca. Mas essa limitação já foi sanada embora outra limitação ainda exista: a de remoção de atributos de um nó.

Ou você retira o nó e insere outro já sem o atributo desejado, ou você exporta seu handler do SimpleXML para o DOM, retira o atributo e retorna para o SimpleXML.

Links interessantes sobre o SimpleXML:

PHP.NET – SimpleXML
W3Schools – PHP SimpleXML
O’Reilly On Lamp – Using PHP5 SimpleXML

Dei essa pincelada nas formas mais comuns de lidar com XML no PHP mas saiba que existem outras formas menos convencionais – e bem mais rústicas, como fazer o parser de um XML com expressões regulares. Vamos ver o que o PHP6 pode vir a acrescentar sobre esse aspecto. Vlw !