Design Patterns

Extraído do site www.portaljava.com

 

Portal Java Tutorial: Design Patterns por Dennys Fredericci Introdução Básica

Primeiramente precisamos saber o que é um Design Pattern.

Design Pattern é uma forma padrão de organizar classes e objetos, nomes para soluções que você já modelou, uma forma de compartilhar conhecimentos sobre POO, soluções de POO para problemas que incidem em diversos cenários de desenvolvimento, etc.

Quando adotamos o uso de Design Patterns seu código fica mais organizado, aumenta a qualidade, menor complexidade, aumenta a comunicação dentro da equipe de desenvolvimento, etc.

A definição de um pattern pode conter:

            Um nome: Transfer Object

            Um outro nome(also know as): Value Object

            Um problema: alguma entidades contém dados que são sempre lidos em grupo…

            Uma solução: serializar todos os dados da entidade em um objeto…

 

Familia de Patterns GoF

GoF é uma familia de Design Patters, são 23 padrões, veja alguns:

            Criação: Abstract Factory, Builder, Factory Method, Prototype, Singleton

            Estrutura: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy

            Comportamento: Chain Of Response, Command Interpreter, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.

 

Familia de Patterns J2EE

            • J2EE: Busness Delegate, Composite Entity, Composite View, Data Access Object, Fast Lane Reader, Front Controller, Intercepting Filter, Model-View-Controller, Service Locater, Session Facade, Transfer Object, Value List Handler, View Helper

Você pode consultar o catalogo de Patterns do J2EE no endereço abaixo.

http://java.sun.com/blueprints/patterns/catalog.html

 

Patterns e Certificação

As seguintes certificações Sun exigem conhecimentos de Patterns:

            • Sun Certified Web Component Developer

            • Sun Certified Enterprise Architect;

 

Para quem pretende tirar uma destas certificações é necessário estudar todos os patterns, aplicar na prática os principais GoF e conhecer a teoria básica dos mais obscuros;

Alguns Patterns

Service Locator

            Definição: simplifica o acesso a recursos J2EE em um aplicativo centralizando lookups com JNDI em classes específicas de localização de serviços.

            • Evita que sua solução tenha alto acoplamento com JNDI Naming Service;

            • Tomar cuidado com Service Locates e cluster!

            • Utilize sempre que possível ENC.

            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

 

Data Access Object

            Definição: centraliza o serviço de persistência de objetos em um pequeno conjunto de classes, evitando por exemplo que o código SQL se espalhe pelo código da solução.

            • Mesmo utilizando framework de persistência, utilize Data Access Object

            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

 

Model View Control

            Definição: divide o aplicativo em dados, comportamento e apresentação.

            • Aplicando o MVC podemos reaproveitar o mesmo dado para múltiplas visualizações;

            • Podemos reaproveitar o comportamento(eventos) da solução;

            • É um pattern de arquitetura, criado há muito tempo. Pode ser aplicado em qualquer linguagem, mais facilmente com OOP.

            • Struts, WebWork, Spring, PicoContainer são exemplos de frameworks J2EE.

            • Link comparativo de frameworks MVC: https://equinox.dev.java.net/framework-comparison/WebFrameworks.pdf

 

Front Controller

            Definição: centraliza requests em um ponto central na solução.

            • No lugar de um JSP submit para ouro JSP todos os JSP’s “subments” para um Servlet Controller que será responsável por processar as requisições.

            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

 

Command / Action

            Definição: encapsula uma requisição ao software em um objeto.

            • Transforma métodos em classes

            • Facilita o desenvolvimento de undo/redo

            • Aumenta a granularidade do código, permitindo o reuso

            • Action do Struts é o principal exemplo de implementação deste pattern

 

Factory

            Definição: instancia classes conforme demanda, recebendo parâmetros indicativos do objeto a ser instanciado.

            • É comum o Controller “inchar”, pois nele incide todas as solicitações externas. Como uma maneira de resolver esse tipo de crescimento desordenado, é sugerido que o Command seja criado sob demanda, e deixa por conta de uma Factory a instanciação das classes Command necessárias.

 

Dispatcher to views

            Definição: gerencia a saída de informações para a interface desejada pelo cliente. Desatrela a forma de se enxergar os dados para múltiplas visões.

            • É uma maneira de se implementar M. V. C. na sua essência, como o Smalltalk pregava.

 

Intercepting Filter

            Definição: forma para executar pré e pós processamento em request da solução.

            • Um Servlet Filter é um exemplo de implementação de um Intercepting Filter para interceptar requests no Web Container;

 

View Helper

            Definição: simplifica a “redenrização” de objetivos em views com formatação.

            • Uma Custom Tag pode representar uma View Helper;

            • Uma simples classe convencional com métodos estáticos também;

            • Exemplo no JAREF(J2EE Architecture, Research and Education Framework);

 

Business Delegate

            Definição: em aplicações distribuídas, o acesso remoto/local a EJB’s via JNDI Naming Service e tratamento de erros podem se tornar complexo à medida que o projeto cresce.

            Solução: criar uma classe intermediaria para acessar os EJB’s que contempla as regras de nomes de componentes para lookups, propriedades do servidor J2EE, tratamento de exceptions, etc;

Conclusão

            • Os patterns J2EE são pouco fáceis de entender;

            • Utilizando patterns você cria soluções padronizadas, facilitando a troca de programadores;

            • Você pode criar seus próprios patterns;

            • O site theserverside.com contém vários patterns fora do catálogo J2EE e GoF;

Anúncios

Gerência de Configuração de Software com Subversion – Parte I

Nesta primeira parte de uma seqüencia de três artigos que irei abordar sobre o tema, explano inicialmente os conceitos sobre gerência de configuração, como deve ser aplicada dentro das organizações e a importância da mesma na construção de software.

 

Motivação

Acompanhamos ao longo dos anos muitas evoluções e alterações nas formas de conceber e construir software. Percebemos que a cada inovação tecnológica as empresas tentavam se adaptar as novas soluções e paradigmas computacionais a fim de obterem o sucesso frente aos concorrentes e buscavam a cada projeto uma nova metodologia de trabalho capaz de garantir resultados e redução de custos, principalmente quando se tratava de projetos que envolviam um grande número de profissionais de desenvolvimento. Mas esta busca por garantir o sucesso do projeto percorre muitos caminhos que devem ser trilhados cuidadosamente ao passo que cada empresa deve estar munida e preparada para tal.

 

Durante os anos de desenvolvimento de software, percebi que muitas empresas de desenvolvimento de software sofrem de um mal que aflige as empresas de software e que considero o ponto chave, se bem controlado e planejado, para a obtenção do sucesso em projetos de software que é a mudança nos requisitos de software antes, durante e pós-implantação. Como contornar este problema? De que forma pode-se melhorar a produtividade de software sem sofrer com os impactos das mudanças de requisitos?

 

Nota-se que o usuário de software, nunca expressa ou sabe ao certo o que está dizendo sobre os requisitos, apenas demonstra seu interesse emergencial e cabe a nós, profissionais de TI, desvendá-lo e transpor para o sistema os anseios do usuário da melhor forma possível a fim de atender as suas aspirações quanto ao utilizar determinado recurso do software. Em vista disso, hoje a indústria de tecnologia em desenvolvimento de software dispõe de um recurso capaz de controlar e gerenciar este cenário sem causar dores de cabeça no futuro. Trata-se da Gerência de Configuração de Software – GCS, ou Software Configuration Management – SCM. Portanto, pretendo aqui esclarecer e explicar o que é a Gerência de Configuração e como podemos usufruir deste recurso em projetos de software e também demonstrarei o uso de uma ferramenta de aplicabilidade real deste conceito.

  

Conceitos fundamentais sobre GCS

Roger Pressman (2002) em seu livro “Engenharia de Software”, afirma que mudanças em software são inevitáveis e que tais mudanças quando não são analisadas antes de serem realizadas ou mesmo registradas antes de serem implementadas provocam um verdadeiro caos entre os engenheiros de software.

 

É fato que as mudanças durante o ciclo de atividades que envolvem os processos de software são realmente inevitáveis, mas há como contornar esta situação de tal forma que garanta resultados com ganhos de produtividade e redução no percentual de retrabalho e garantindo principalmente a qualidade do software produzido.

 

Dentro das fábricas de software, este é um papel que é desempenhado pela Gerência de Configuração de Software. O GCS é uma atividade abrangente que é aplicada em todo o processo de desenvolvimento de software. Pois, estando ciente de que as mudanças no software poderão vir a ocorrer a qualquer momento, as responsabilidades do GCS envolvem:

 

  1. Identificar permanentemente as mudanças;
  2. Realizar o controle acurado das mudanças;
  3. Dar garantia da implementação correta da mudança; e
  4. Comunicar a mudança a outras pessoas que sejam de interesse ou as envolvam direta ou indiretamente.

Hoje, ainda existe certa confusão sobre a função da gerência de configuração, pois muitos acabam confundindo com as tarefas de manutenção do software. São atividades que denotam muitas diferenças. A manutenção de software envolve um ciclo de atividades de desenvolvimento que serão realizadas pós-implantação. Por sua vez, a gerência de configuração de software é um conjunto de atividades que visam controlar e rastrear desde o inicio do projeto de desenvolvimento até quando o software for retirado de operação.

 

Portanto, a função principal da GCS é estabelecer medidas e atividades que possam controlar com facilidade e segurança as ocorrências de mudanças que possivelmente geram atrasos no cronograma das atividades de desenvolvimento a fim de garantir a confiabilidade do cliente e reduzir ao máximo os esforços que serão necessários para implementar tais mudanças no software.

 

O Cenário da Gerência de Configuração de Software

Dentre os processos que compõe todo o ciclo de vida de projetos de desenvolvimento de software passam ou envolvem atividades de gerência de configuração, mesmo que de uma maneira empírica. O resultado de cada ciclo nos processos de engenharia de software são (1) os programas (executável e fonte), (2) os documentos que relatam as regras de negócio sobre cada requisito implementado (tanto documentação técnica e de usuário final), (3) e estruturas de dados que fazem parte direta ou indiretamente do software. Sendo assim, podemos dizer que tudo que fora produzido como parte do processo de engenharia de software forma um conjunto que podemos denominar de configuração de software.

 

Todos os artefatos (os quais compõem o produto de software) que são produzidos e controlados neste processo são chamados de itens de configuração de software (Software Configuration Itens – SCI). Neste processo, cada um dos artefatos existentes para que sejam modificados ou alterados deverão seguir normas que são definidas pela gerência de configuração,

 

Sendo a gerência de configuração de software (GCS) um conjunto de atividades projetadas para controlar as mudanças pela identificação dos itens de configuração de software em desenvolvimento e que poderão sofrer alterações durante o projeto de desenvolvimento, estes itens devem estar relacionados e controlados de tal forma que seja definido um mecanismo para o gerenciamento de diferentes versões destes, controlando as mudanças inerentes e impostas no ciclo de vida do sistema, e auditando e relatando as mudanças realizadas.

 

O processo de Gerência de Configuração de Software surge como uma solução para que se evite ou mesmo perca-se o controle do projeto em virtude da inúmera quantidade de itens que são produzidos e podem ser modificados a qualquer momento no projeto. De um modo geral, este processo visa evitar a criação de inconsistências entre os itens.

 

Atualmente o GCS é considerado um processo crucial no campo de pesquisa em engenharia de software, sendo adotado de forma mais ampla a cada dia e podendo ser definido como uma abordagem disciplinada para gerenciar a evolução do desenvolvimento de software, práticas de manutenção e os produtos de software.

 

Olhando sob a ótica de gerência do projeto, a GCS é fundamental recurso porque controla a evolução e a integridade de um produto ao identificar seus elementos, gerenciar e controlar mudanças, e ao registrar e informar tais mudanças. Do ponto de vista dos programadores de software, tal processo facilita a implementação das atividades de mudança e desenvolvimento.

 

À luz da engenharia de software, e considerando os conceitos cobre GCS, para que se alcance tal requisito faz-se necessário o uso de ferramentas apropriadas para esta finalidade. Hoje, dispomos de muitas ferramentas que são capazes de realizar este trabalho sem causar dores de cabeça aos investidores do projeto nem mesmo transtornos à equipe de desenvolvimento. Uma delas é o Subversion, um projeto sob a licença GPL que visa preencher as lacunas da engenharia de software no que tange a gerência de configuração de software.

 

Dentre esses aspectos, muitos dos conceitos que envolvem a gerência de configuração de software também possuêm forte ligação às atividades de garantia da qualidade, cuja missão é monitorar o produto e os processos, e garantir que estejam em conformidade com os requisitos levantados na especificação e nos planos estabelecidos. As atividades deste processo ajudam as empresas a alcançarem os objetivos reduzindo os esforços e retrabalhos em itens que compôem os processos mencionados, sendo, portanto um elemento de suma importância na garantia da qualidade do software.

 

Bem pessoal, chegamos ao final desta primeira parte deste artigo. Aguardem na próxima parte onde explicaremos com mais detalhes sobre questões da GCS e daremos inicio a nossa viagem ao conhecimento e uso da ferramenta Subversion.

 

Até a próxima! Aguardem a próxima edição!

 

Um abraço a todos!

 

Referências

 

PRESSMAN, Roger S. Engenharia de software. 5.ed. – Rio de Janeiro: McGraw-Hill, 2002.

 

www.inf.ufsc.br/resi/edicao04/artigo05.pdf

 

http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de_Configura%C3%A7%C3%A3o_de_Software

 

wdbc.dc.ufscar.br/artigosaceitos/cristine-gerenciaeconfiguracaodesoftware.pdf

 

www.mct.gov.br/upd_blob/11271.pdf

 

 

Aécio Júnior (aeciojunior@gmail.com) é Engenheiro de Software formado em Sistemas de Informação pela Faculdade de Tecnologia e Ciências de Feira de Santana, Bahia. Lida com desenvolvimento de software desde o ano de 2000. Trabalha atualmente como Consultor de TIC, é professor do Centro de Educação Tecnológica do Estado da Bahia – CETEB e professor das disciplinas Linguagem de Programação II e Estrutura de Dados do curso de Sistemas de Informação da Faculdade de Tecnologia e Ciências – FTC. Também é diretor da Órbita Tecnologia Móvel uma empresa da região que desenvolve soluções computacionais móveis.

O que o AJAX.NET não tem?

 

Vale a pena utilizar o AJAX.NET da Microsoft ou construir a própria biblioteca AJAX?Já coloquei muito a mão na lama, mas depois de algum tempo, você passa a gerenciar projetos ou tocar uma empresa e perde o contato com os detalhes das coisas.

Por outro lado é necessário tomar decisões tecnológicas que irão afetar a empresa onde você trabalha. Estive nessa situação há alguns meses. Ir de AJAX.NET ou desenvolver uma biblioteca AJAX própria?

Pedi uma análise e uma indicação para dois dos engenheiros de software da nossa empresa sobre a proposta da Microsoft. Eis aqui o relatório.

Problemas do ASP.NET

Tudo começou quando a Microsoft introduziu o ASP.NET, uma versão aprimorada do ASP. Ela adicionou a arquitetura .NET uma tecnologia para produção de páginas web, os WebForms. Com eles se pode criar uma interface visual com o usuário de forma semelhante à feita usando o Visual Basic. A sua arquitetura é baseada no servidor.

Para criar uma página ASP.NET você tem a disposição os HTMLControls, que não são processados pelo servidor quando o usuário interage com os mesmos, e os WEBControls, que são processados pelo servidor quando existe interação.

Ao abrir uma página ASP.NET, o cliente (navegador do usuário) exibirá o resultado HTML/JavaScript de um WebForm processado pelo servidor. Quando o cliente interagir com a página, ela será transmitida de volta ao servidor, alterada e depois restaurada de volta ao cliente. E sempre que ocorrer uma interação do usuário com um controle que disparar um evento, este caminho será seguido, do cliente para o servidor e de volta ao cliente. Deu-se a isto o nome de postback.

Nessa arquitetura, o cliente é “burro” e 100% da lógica de negócio fica a cargo do servidor. Do ponto de vista do desenvolvedor isso é ótimo, facilita o desenvolvimento com a utilização dos WebControls. Mas e o usuário, onde fica?

Assim, para cada interação complexa existe um postback e para cada postback um tempo de espera. Você provavelmente estará destruindo a usabilidade de seu site e a paciência de seus usuários.

Em um exemplo simples, basta imaginar um formulário com quatro combos encadeadas e algumas validações. A página executará no mínimo quatro postbacks. A página inteira irá quatro vezes para o servidor e retornará ao cliente. Haja paciência.

Solução aos postbacks?

O modelo ACSC (Asynchronous Client/Server Communication) é muito mais interessante para o usuário que o modelo WebForm/Postback do ASP.NET e abre um leque de possibilidades de interação antes impraticáveis.

O amadurecimento e a consolidação das tecnologias ACSC (e a popularidade da implementação desse modelo com o AJAX), onde o recarregar de páginas inteiras é substituído por requisições assíncronas do cliente ao servidor e atualização somente da parte onde ocorreu interação com o usuário, obrigou a Microsoft a atualizar sua arquitetura para suportar o modelo ACSC, de modo a evitar que o ASP.NET não perdesse seu mercado.

Para manter a compatibilidade com códigos já existentes em ASP.NET 2.0, a Microsoft desenvolveu parte do Atlas baseada em sua antiga arquitetura, a centralizada no servidor (Server centric), onde o comportamento de postback dos WebControls é modificado, mas ainda assim a lógica do negócio fica toda no lado servidor. Isso é contrário ao verdadeiro modelo ACSC, onde a lógica do negocio é dividida entre o cliente e o servidor e centralizada no cliente (Client centric).

O Atlas Server Centric é baseado em painéis Ajax onde é possível inserir os WebControls já existentes do ASP.NET. Uma vez dentro do painel Ajax o postback do WebControl será substituído por uma requisição assíncrona ao servidor. O modo centralizado no servidor é na verdade apenas uma “maquiagem” para as páginas ASP.NET, já que toda lógica de negócio fica no servidor.

Nenhuma inteligência complexa é mantida no cliente. Todos os postbacks continuam sendo realizados por baixo da “máscara” do XMLHttpRequest e, como todos os WebControls ainda continuam sendo processados no servidor, o retorno do Atlas Server Centric é HTML (AJAH – Asynchronous JavaScript and HTML) e não AJAX.

Isso torna o overhead e o trafego muito maiores já que ao invés de retornar uma estrutura apenas com os dados relevantes o Atlas Server Centric retorna os dados em conjunto com HTML.

Decisão: nossa Biblioteca vs. Atlas

Tomamos a decisão de construir uma biblioteca própria para diminuir o overhead de transmissão de dados – já que isso é crítico -, a serialização e os recursos encapsulados para facilitar realmente a vida do programador. Criamos a Naja.NET.

O Atlas Client Centric tem uma arquitetura muito parecida com o framework Naja.NET. Segue o mesmo modelo, porém o Atlas Client Centric é um framework sem todos os recursos do Naja.NET, sem toda a extensão do JavaScript e sem todos os objetos portados do .NET que o framework Naja.NET possui.

A falta de serializadores e conversores de tipos complexos (como DataTable, XmlDocument, etc.) também é uma desvantagem do Atlas Client Centric em relação ao Naja.NET, que consegue converter praticamente qualquer tipo do .NET para qualquer tipo do JavaScript.

A serialização do Naja.NET também tem a vantagem de ser mais inteligente e com maior desempenho. Conforme o problema o framework escolhe entre a serialização JSON (JavaScript Object Notation) ou o retorno puro de JavaScript. Outra grande vantagem do Naja.NET é o suporte ao Framework .NET 1.1 e 2.0. O Atlas suporta apenas o framework 2.0.

A extensão do JavaScript padrão também é superior no framework Naja.NET, e conseqüentemente facilita a vida do desenvolvedor que não precisará estender o JavaScript por conta própria para atender suas necessidades e nem utilizar bibliotecas de terceiros que podem apresentar problemas de compatibilidade.

* Otávio Medeiros Dias e Marcell Dietrich Felipe Duran são engenheiros de software da Voxel Informática e colaboraram com os dados relevantes desta coluna.

Nivaldo Foresti é programador há 30 anos, desde a jurássica era do mainframe. Foi consultor e desenvolvedor de produtos na internet como o BOL e hoje tem uma empresa de webcasting, com software nacional. Neste espaço, o colunista revela o que os desenvolvedores podem esperar da profissão, além de analisar as novas eras tecnológicas que se aproximam. E-mail: nforesti@yahoo.com .

 


Como trabalhar com TI e ainda ter vida pessoal

Para tentar salvar a vida pessoal de muitos profissionais da área, o COMPUTERWORLD fez uma lista com cinco dicas para melhorar o aproveitamento do dia de trabalho.

Por COMPUTERWORLD

26 de janeiro de 2007 – 09h05

 

É tradição entre muitos profissionais de TI – nenhum pouco saudável por sinal – ter hora de entrada no trabalho e nenhuma perspectiva de saída. Grandes projetos, volumes acumulados de trabalho ou problemas que podem demandar esforço extra a qualquer momento são as justificativas geralmente usadas para passar horas a fio no escritório.

Mas com uma carga de tarefas tão carregada, planos ambiciosos de crescimento da carreira, muitos se perguntam “como fazer para ainda conseguir manter a vida pessoal?”.Segundo Karlin Sloan, CEO da consultoria norte-americana que leva o mesmo nome, muitos profissionais não se dão conta de que existe uma quantidade finita de energia e que os talentos devem ser preservados. “A meta é conseguir sustentar uma carreira ao longo de toda uma vida aponta”.

Para tentar salvar a vida pessoal de muitos profissionais da área, o COMPUTERWORLD fez uma lista com cinco dicas para melhorar o aproveitamento do dia de trabalho. Com uma organização melhor nesse sentido, seguramente o lado pessoal estará garantido. Confira a lista.

Conheça seu horário mais produtivo – Muitos profissionais são mais produtivos em certas horas do dia do que outras, diz Dee Soder, fundadora do Perspective Group, empresa de consultoria norte-americana. Enfrente tarefas desafiadoras durante essas horas mais produtivas e deixe as mais fáceis para quando você estiver com menos energia.

Jason Chupnick, vice-presidente de relações públicas da empresa Bliss, Gouverneur & Associates, de Nova York, diz que não é uma “pessoa da manhã”. Por isso, evita marcar encontros ou conferências telefônicas importantes antes das 9h30. Segundo ela, assim quando está em alerta total está menos vulnerável a cometer erros que precisarão ser corrigidos depois ou que demandarão horas extras no escritório.

Estabeleça prazos – Jo Bennett, executiva da empresa de headhunting Battalia Winston International, diz que se auto-aplica prazos para cumprir tarefas. “A partir daí, eu digo às pessoas que vou entregar algo, e isso me força a trabalhar duro até o prazo final”, comenta.

No caso de ter algum relatório, por exemplo, baseado em certos dados recebidos recentemente, a executiva comenta que prefere fazê-lo rápido. “É melhor fazer as coisas enquanto elas ainda estão frescas na mente. Se for esperar por uma semana, dados importantes poderão ser esquecidos”, comenta.

Controle seu ambiente – Um trabalhador médio que permanece no escritório em período integral perde cerca de duas horas por dia com distrações do ambiente de trabalho, como as interrupções de colegas, aponta uma pesquisa conduzida recentemente com mil pessoas.

Para evitar interrupções, coloque avisos na porta de sua sala, por exemplo, – caso você tenha uma – dizendo que você está ocupado, ou mesmo em seu e-mail ou mensageiro instantâneo. “As pessoas vão começar a respeitar esse tipo de aviso”, diz Paula Balzer, sócia da empresa de marketing MKTG.

Também separe um tempo para se dirigir, de uma única vez, aos colegas com perguntas ou questões. Ignorar o telefone ou e-mails menos prioritários quando se está trabalhando em projetos importantes também é um ponto a se pensar. “Ao invés de deixar seu e-mail, handheld ou telefone controlá-lo, controle você a eles”, comenta a executiva.

Elimine as tarefas não-fundamentais – Identifique tarefas de baixo valor ou ineficientes e elimine-as de sua lista, aponta Marcee Harris, consultora de um escritório em São Francisco. Por exemplo, talvez você esteja escrevendo memorandos ou relatórios que seus colegas não precisam ou que poderiam ser condensados em múltiplos relatórios. “Alguns trabalhos faziam sentido tempos atrás, mas não fazem mais”, diz.

Aproveite as “viagens” – A recrutadora Erika Weinstein, de 47 anos, diz que envia cerca de 10 a 15 e-mails durante seu trajeto de 30 minutos entre sua casa e o trabalho, no metrô. “É um tempo que antes não era produtivo e que agora está sendo”, aponta. Mas isso também não significa, por exemplo, acessar e-mails durante a madrugada para adiantar as tarefas do dia seguinte.

Aproveite esses tempos adicionais e atenha-se a questões não críticas, como aprovação de projetos ou agendamento de reuniões. Já os motoristas podem ouvir podcasts relacionados ao trabalho ou mesmo livros em áudio para aproveitar o tempo, apontam os especialistas.

Dicas todas à parte, a realidade é que organizar melhor o dia de trabalho pode resultar em minutos ou horas preciosas economizados ao fim do dia, que podem ser dedicados à família e à vida pessoal em geral. E você, tem alguma fórmula para melhorar a produtividade? Envie seu comentário a baixo.