Conheça a Informant          RSS

Posts Tagged: programador


30
May 14

Um computador, dois programadores. Conheça o pair programming!

Set icons for business, communication, web

Trabalhar em equipe é sem dúvida a melhor maneira de se executar qualquer tipo de tarefa, principalmente quando essa tarefa exige dos profissionais um grande conhecimento técnico no assunto, como é a indústria de fabricação de software.

Para ir além do trabalho em equipe estudiosos de metodologias ágeis de desenvolvimento criaram o pair programming. Do inglês, pair programming significa programação pareada e envolve dois programadores trabalhando na mesma máquina para se alcançar um resultado superior no código. Um dos programadores é o “driver”, que escreve o código, enquanto o outro é o “observador” que revisa cada linha em busca de erros.

Enquanto o observa, o segundo programador também pode ajudar na estratégia de desenvolvimento, apontando o melhor caminho que o código deve tomar. Pair programming já vem sendo utilizada por muitas empresas ao redor do mundo e nos próximos parágrafos você irá entender como você pode tirar proveito dela. Confira:

Vantagens de pair programming

Um código de qualidade é apenas uma das vantagens apresentadas por pair programming. Algumas pesquisas apontam que programadores pareados gastam 15% mais de tempo do que programadores individuais para escrever o mesmo código. Por outro lado, o resultado costuma ter 15% menos erros, reduzindo assim o custo de manutenção e correções ao longo do tempo de vida do software.

Também é comum que o pair programming incentive um aprendizado entre os desenvolvedores e ajude a reforçar a comunicação na equipe. Pair programming permite que os membros do time compartilhem seus problemas e soluções entre eles, incrementando a troca de informações.

Por fim, segundo pesquisa de IEEE, 96% dos programadores preferem trabalhar em dupla do que individualmente, demonstrando que esse tipo de programação acaba sendo mais vantajosa para o profissional.

Como funciona o pair programming

O pair programming pode ser dividido em quatro combinações: expert-expert, quando se busca a mais alta produtividade e excelente resultados; expert-novato, para que haja a oportunidade de se criar um vínculo de mentoria; novato-novato, ainda que a produtividade e a qualidade sejam baixas, é uma maneira de se treinar novos programadores; e remota, quando a pair programming ocorre através de editores de texto em tempo real com os programadores em locais separados.

Em geral, a modalidade expert-expert costuma não ser boa para que se descubra novas formas de se resolver os problemas, já que esse tipo de programador não está aberto a tentar novos caminhos. Se o objetivo for inovar, o pareamento do tipo expert-novato se encaixa melhor na estratégia da empresa.

Quando adotar

Para muitas empresas, adotar o pair programming pode significar uma quebra nas metodologias de trabalho. Isso pode gerar atrito entre desenvolvedores e prejudicar o andamento de projetos. Dessa forma, a migração para o pair programming precisa ser feita de maneira cautelosa.

Por outro lado, toda empresa que deseja aumentar sua produtividade e qualidade das entregas deve considerar o uso de pair programming, principalmente se o time de desenvolvedores possuir profissionais mais experientes.

Encontrar a melhor estratégia pode exigir testes, reuniões e paciência dos gestores, mas o resultado final pode surpreender mesmo os programadores mais céticos. Dúvidas? Vamos conversar nos comentários abaixo!


29
May 14

16 extensões para Chrome que todo programador precisa conhecer

Keyboard

Todo bom programador conhece – e tem disponível para si – uma grande variedade de ferramentas que o ajudam a construir softwares melhores, mais rápidos e confiáveis. Com todo o avanço da tecnologia, atualmente não é mais necessário confiar apenas numa página de texto em branco para que seu código atenda todas as demandas dos usuários.

Da mesma forma, os próprios browsers evoluíram para que as aplicações ficassem melhores. Neste sentido, não precisamos considerar apenas os avanços nos motores de renderização, mas principalmente nas possibilidades criadas pela inclusão de extensões – tanto no Google Chrome quanto no Mozilla Firefox.

Neste contexto, criamos uma lista com 16 extensões que todo programador precisa conhecer para levar seu código para o próximo nível de qualidade. Confira:

Programadores front-end

JSON View: extensão que serve para organizar qualquer arquivo JSON, deixando-o legível e mais fácil de trabalhar. É terrível abrir esse tipo de documento e dar de cara com milhares de caracteres sem indentação, não é? Essa extensão resolve!

W3C Validator: validar um código HTML ou CSS de acordo com as normas W3C ficou muito mais fácil com essa extensão. Basta entrar no site, clicar no botão e pronto.

jQuery API Browser: a maneira mais rápida de encontrar a documentação de qualquer API jQuery. Abra a caixa de busca, digite o nome do método e toda a documentação será carregada.

Frameworks: a extensão para descobrir quais frameworks o site que você está navegando utiliza.

Programadores mobile

Window Resizer: a extensão Window Resizer faz o que o nome promete, redimensiona a tela do navegador para testar como o site se comporta em resoluções diferentes. Uma mão na roda para quem se preocupa com design responsivo!

Ripple: Ripple é um emulador completo. Através dele é possível mudar simular perfeitamente como um smarphone reagiria ao seu código, incluindo a orientação da tela e até o acelerômetro.

Para usar com Github

Octofication: Após sincronizado com sua conta do GitHub, permite receber notificações dos repositórios que você acompanha.

Diff for Gist: é uma extensão que exibe as diferenças entre cada revisão do código, simplificando a manutenção e o acompanhamento, principalmente em trabalhos em grupos.

Webdesign

ColorZilla: ColorZilla é um “conta-gotas” instalado diretamente no seu Chrome que apresenta o código de qualquer cor, clicando sobre ela.

WhatFont: O WhatFont tem um funcionando muito parecido ao ColorZilla, mas para fontes. Selecione um trecho, aponte o WhatFont e descubra qual fonte está sendo utilizada.

Workflow

LiveReload: Extensão que evita a necessidade de ficar dando F5 para visualizar as alterações na página. Ajuda, principalmente, a economizar tempo na troca de janelas.

Performance

PageSpeed: Verifica cada aspecto do seu site e avalia se ele está de acordo com as diretrizes de desempenho e SEO do Google.

YSlow: Famosa ferramenta do Yahoo! que verifica a performance do seu site.

Speed Tracer: Analisa e gera relatórios sobre a velocidade de execução dos seus JavaScripts e seletores CSS, entre outros detalhes.

Outros

Firebug e WebDeveloper poderiam se encaixar em várias das categorias acima, mas estão em “Outros” porque ajudam em todo o processo de desenvolvimento através de ferramentas de debug e otimização.

Conhece alguma outra extensão importante que ficou de fora? Aproveite os comentários abaixo e complemente nossa lista!


19
Mar 14

4 livros que todo programador precisa ler

programador

A busca por atualizar o que se sabe e descobrir novas coisas é um dos maiores diferenciais dos bons programadores. Por estarem inseridos num mercado em constante evolução, não é permitido aos profissionais ficarem de fora do que está sendo criado, principalmente na sua respectiva linguagem de programação.

Mas, para isso, é ainda mais fundamental que o desenvolvedor tenha o conhecimento básico sobre o que está fazendo. De nada adianta manter-se atualizado se comete erros na estrutura de um código ou na maneira como ele é apresentado ao usuário final. Dessa forma, abaixo listamos quatro livros que todo programador precisa ler para ter uma base de conhecimento muito mais sólida. Confira a lista:

Refactoring – Martin Fowler

Refactoring é um excelente livro para programadores que tem dificuldade em montar a estrutura do software de tal maneira que não altere o comportamento do código. O livro foi escrito para aquelas pessoas que sabem que seu código funciona, mas que poderia estar melhor organizado.

O livro oferece um catálogo com mais de 40 reestruturas de código que deram certo com detalhes de como foram feitas e testes necessários. A linguagem que baseia o livro é Java, mas a metodologia pode ser aplicada em qualquer outra.

Clean Code – Robert C. Martin

Clean Code de Robert Martin segue os princípios de Refactoring que citamos anteriormente: mesmo código ruim pode funcionar. Porém, código ruim força os desenvolvedores a criar soluções que tiram o desempenho e a capacidade de escala do sistema.

Assim, o livro fala sobre as melhores práticas ágeis de limpeza de código “on the fly”. A intenção do livro não é apenas deixar o código mais limpo, mas transformar o leitor num melhor programador.

Stop Stealing Sheep & Find Out How Type Works – Erik Spiekermann

“Stop Stealing Sheep & Find Out How Type Works” foi publicado pela primeira vez em 1993 e agora volta atualizado com novas fontes e ilustrações. Ainda que pareça um livro escrito para designers, Erik Spiekermann deixa claro logo no início sua intenção: guiar o leitor através de todos os aspectos da tipografia para que programas sejam mais comunicativos ao usuário final.

Entender como se usa espaços dentro de um layout, por exemplo, fará de qualquer programador um profissional mais completo.

Defensive Design for the Web – Matthew Linderman

“Defensive Design for the Web” é editado pela 37Signals, do famoso Rework. Neste livro o autor Matthew Lindermann admite o fato de que as coisas darão errado na internet, não importa quão cuidadoso você tenha sido com o seu código.

Defensive Design aponta uma direção defensiva para tudo que se cria na web. Usando a metáfora de um motorista que sempre está à procura de estradas escorregadias, o livro aponta pontos de conflito que podem causar confusões para os usuários e, através de exemplos reais, ensina como evitá-los.

Ainda que esses livros não façam parte de nenhuma leitura obrigatória, são importantes para a construção de bons softwares e de boas práticas como programador. Evitá-los porque não se encaixam na sua área de atuação atual limita a maneira como você escreve o código, deixando-o em desvantagem em relação a desenvolvedores em busca de conhecimento.

Já leu alguns desses livros? Tem outras dicas de bons livros? Vamos continuar essa lista nos comentários abaixo! Participe.


18
Mar 14

Qual a diferença entre engenheiro, programador e desenvolvedor?

diferença

O projeto de desenvolvimento de um software reúne profissionais das mais diferentes formações. Programadores, desenvolvedores, engenheiros, gestores, clientes e patrocinadores podem ter estudado diferentes disciplinas técnicas ou de graduação e executar várias funções durante o planejamento e a realização do projeto.

No mercado da computação, é comum vermos pessoas e empresas tratando programadores, desenvolvedores e engenheiros de software como sinônimos. No entanto, a forma como cada um desses profissionais atua no dia a dia é bem diferente e pode fazer toda a diferença na forma como um projeto é conduzido.

Ao tentar explicar esse contraste, é comum vermos pessoas fazendo analogias com a construção civil, como os arquitetos, engenheiros, designers, etc. No entanto, comparações como essas são reducionistas e não suficientes para explicar muitos dos aspectos envolvidos.

E você? Sabe qual a diferença entre um programador, um desenvolvedor e um engenheiro?

O programador

O programador é o profissional que tem contato direto com a construção do software no computador. Ele é o responsável por escrever o código para colocar o sistema em funcionamento, lembrando-se que ele deve estar limpo, organizado e evitando erros.

Ao receber os requisitos de um projeto, o programador passa a trabalhar na maior parte do tempo de forma individual, concentrado no desenvolvimento das aplicações.

O programador deve ser fluente em ao menos uma linguagem de programação e saber qual a melhor forma de escrever o código para que o sistema funcione de maneira adequada.

O desenvolvedor

Os desenvolvedores de softwares também podem fazer tudo aquilo que um programador faz. No entanto, além desses conhecimentos e habilidades, os desenvolvedores se preocupam não somente com o código, mas também com a execução do projeto como um todo.

Além da parte técnica de escrita do código, o desenvolvedor se relaciona com outros profissionais da equipe do projeto, pessoas de outras áreas da empresa, clientes e patrocinadores. Ele precisa ter uma compreensão mais abrangente para que o software atenda aos requisitos propostos e que as etapas sejam seguidas da melhor forma possível.

No entanto, apesar de se ocupar menos com a parte técnica em relação ao programador, é fundamental que o desenvolvedor tenha capacidade de trabalhar no código quando necessário e conhecer a linguagem de programação utilizada, para que possa avaliar e tomar decisões da forma adequada.

Engenheiro

O engenheiro de softwares também pode realizar todas as tarefas de responsabilidade dos programadores e desenvolvedores.

No entanto, o engenheiro precisa ter uma visão ainda mais global do desenvolvimento do sistema.

Ele é responsável pela confiabilidade do software, sua qualidade final e a capacidade de ser mantido de forma sustentável pelo cliente. Os engenheiros também devem ser capazes de fazer a ponte entre os requisitos do projeto, o design do sistema, a codificação, a manutenção do código e os testes.

Integração

Apesar das diferenças entre esses profissionais, é importante lembrar que cada um deles tem um papel fundamental par a entrega de um software dentro dos requisitos propostos.

Além disso, já se foi o tempo em que desenvolvedores e engenheiros apenas pensavam sobre o sistema. Hoje em dia, também é fundamental que eles tenham conhecimentos técnicos sobre linguagem de programação para que possam gerenciar profissionais com sucesso e alcançar melhores resultados.


06
Mar 14

Programador precisa de diploma?

A exigência do diploma universitário para exercer uma profissão é um debate acalorado que faz parte da realidade de diversas profissões, como por exemplo o jornalismo, as ciências da computação e o design.

Além do aspecto técnico, por meio do preparo do profissional para a entrada no mercado de trabalho, a discussão também envolve interesses de organizações e grupos, tornando o um consenso sobre o tema algo cada vez mais difícil.

Em todas as profissões em que a exigência do diploma é debatida – assim como na programação de computadores – a questão fundamental é se o profissional terá o conhecimento e as habilidades necessárias para atuar no setor sem ter o diploma.

E se o profissional tem grandes experiências na área mas não passou por um curso superior? O que acha sobre o assunto? Confira a opinião da Informant:

A importância da universidade

O estudo formal em uma universidade não envolve apenas a obtenção de um diploma. É também uma grande oportunidade para o crescimento pessoal e acadêmico de qualquer indivíduo.

Estudando em uma faculdade, o aluno terá acesso a materiais de consulta e laboratórios, poderá desenvolver trabalhos com pessoas que futuramente serão seus colegas de trabalho, interagir com professores experientes e adquirir outros conhecimentos valiosos relacionados à sua área de atuação.

Além disso, o programador diplomado poderá tentar concursos públicos em sua área de atuação, cursar especializações e até mesmo seguir carreira na área acadêmica.

Apesar do conhecimento teórico ser muito importante e fazer parte do ensino em um curso superior, acreditamos que todas essas vantagens não fazem com que um programador sem diploma não possa desenvolver softwares de igual ou maior qualidade que um profissional com um curso completo.

Perfil do programador

Sabemos que os programadores têm curiosidade e propensões naturais para compreender como os sistemas funcionam e como resolver problemas para que eles sejam mais eficazes.

Dessa forma, é comum vermos pessoas que, ao invés de buscarem uma universidade, procuram aprender a programação por conta própria ou obter um especialista para ensiná-las.

O mundo da programação é, por sua natureza, um ambiente em que as informações são compartilhadas em larga escala, tornando possível a busca pelas melhores formas de desenvolver códigos a todo o momento. Nesse cenário, qualquer pessoa com interesse e dedicação suficientes poderá adquirir conhecimento e habilidade para trabalhar na área.

Os interessados também podem complementar seu estudo com materiais didáticos, cursos técnicos e outros tipos de treinamento.

Experiência

Além do perfil autodidata, muitos profissionais de programação entraram bem cedo para o mercado de trabalho e acabaram adquirindo uma grande experiência de forma acelerada.

Atualmente, quando uma empresa ou um profissional liberal precisa de um software para apoiar seus negócios e operações, irão procurar programadores que demonstrem ser capazes de entregar o sistema de acordo com os requisitos estabelecidos.

Não é porque o profissional tem diploma que ele terá know-how suficiente para efetuar uma tarefa com exatidão, mas sim por um portfólio de softwares e soluções já desenvolvidas para outros clientes.

Riscos

Ao contrário de disciplinas como a medicina e a engenharia, em que qualquer erro do profissional pode acarretar em sérios prejuízos à vida e o bem-estar de outras pessoas, muitos softwares e programas no mercado são produzidos como ferramentas de trabalho que podem ser avaliadas e testadas antes de serem colocadas em funcionamento.

Dessa forma, cabe à empresa ou profissional liberal buscar programadores que tenham conhecimento, habilidade e experiência para entregar uma solução com alto nível de confiabilidade.

Em outras palavras, sabemos da importância de um curso superior para o progresso de qualquer profissional. No entanto, acreditamos que, atualmente, é possível que uma pessoa consiga desenvolver o conhecimento e as habilidades necessárias para programar e entregar soluções inovadoras e de qualidade aos seus clientes mesmo sem um diploma universitário.

E você? Conte-nos a sua opinião!