Planejamento de tempo, controle, aumento de eficiência. O tópico é hackneyed, mas ouso oferecer outra solução.
Ainda não consegui encontrar nenhum método universal de gerenciar meu tempo que fosse adequado a todos. Como regra, todo mundo escolhe por si mesmo as práticas que melhor se adequam a ele. E isso está relacionado não apenas às características do personagem, mas também às características do trabalho.
É assim para mim: preparei-me, sintonizei, comecei a trabalhar e depois - "ou o selo chamará, depois o cervo". No final do dia, há uma sensação geral de que não está claro o que ele estava fazendo e qual foi o resultado.
Quando surgiu uma ideia: "Isso seria legal, eles ligaram para você e você está em um jogo de xadrez
Apertei o botão e parei o horário de trabalho, voltei ao trabalho - apertei outro botão. Como resultado, você receberá o quanto ele trabalhou e quanto descansou. ” Eu chamei essa abordagem - gerenciamento de tempo de xadrez ou ChessTM, para abreviar.
Não é difícil adivinhar que a ideia foi dimensionada imediatamente para a ideia de ter um botão para cada tarefa durante o dia. E então tudo isso foi transformado no conceito de gerenciamento de tempo.
Conceito
O tempo não pode ser parado. Sempre gastamos nosso tempo. E se estamos fazendo algo com um, então obviamente você não pode fazer algo ao mesmo tempo com eficiência constante. A qualquer momento, ocorre algum tipo de atividade - trabalhar em uma tarefa, praticar esportes, caminhar, se exercitar, comer, dormir etc.
Postulado número 1
Controlar a necessidade de gerenciamento de tempo. Para gerenciar o tempo, você precisa poder controlá-lo. Princípio - ao toque de um botão (literalmente, não metaforicamente), selecionamos a atividade atual e o tempo para a atividade anterior para automaticamente e começa a contar para a atual.
Postulado número 2
Gerenciamento requer planejamento. Para gerenciar o tempo, você precisa planejar. A qualquer momento, temos um conjunto comum de tarefas e alguns assuntos urgentes. Ao trabalhar em uma tarefa ou em assuntos urgentes, comprometemos uma atividade. O planejamento é assumirmos em quais atividades estaremos envolvidos. Um entendimento tradicional do plano envolve uma sequência fixa de ações. Muitas vezes, é muito difícil observar uma sequência fixa, às vezes devido a razões objetivas e às vezes não muito boas. O desvio do plano o deixa nervoso e reduz a eficiência do trabalho. Percebemos o descanso como ociosidade, surge um sentimento de culpa, a eficiência do trabalho diminui e a satisfação diminui. Para evitar os problemas descritos, planejaremos não a sequência de vários tipos de aulas, mas o tempo alocado para as atividades durante o dia.
Você pode planejar em minutos. Ou seja, o processo de planejamento se parece com isso - selecionamos as tarefas para o dia no pool geral e definimos o tempo planejado para elas, que vamos gastar nelas.
Postulado número 3
Tempo gerenciado significa que o plano converge com a realidade. Claro, algo pode mudar durante o dia. E talvez aconteça que o plano diverja da realidade. Deixe que o tempo planejado para a atividade Tp (tempo planejado), o tempo realmente gasto na atividade Tr (tempo real), a diferença entre esses tempos seja chamada de coeficiente de diferença Td (delta do tempo). Consideramos a qualidade do planejamento Qp (qualidade do planejamento) a porcentagem das somas de todos os coeficientes de discrepância com a soma do tempo total planejado, que subtraímos de cem.
isto é, com coeficientes de divergência zero, a qualidade do planejamento será de 100%.
Aplicativo para Android
Este artigo não teria aparecido se eu não tivesse decidido implementar uma ferramenta para esse conceito. Eu quero compartilhar essa experiência.
Então
Aplicativo ChessTM implementado.
Implementação à noite e fins de semana em seu tempo livre. Eu trabalho como gerente de lançamento e trabalho com o desenvolvimento do Android não está conectado de forma alguma.
Funções:- Criando um pool de tarefas
- Planejando o tempo das tarefas para todos os dias
- Transferir o plano do dia anterior
- Troca fácil de tarefas
- Estatísticas
- tempo total gasto em relação ao plano total, por um período arbitrário por setores vitalícios
- relatório de tarefas, quanto é planejado para cada tarefa e quanto é realmente gasto
- estatísticas sobre alternância entre tarefas e sobre o fator de qualidade do planejamento para o período
- Distribuição de tarefas por setores da vida (trabalho, família, amigos, etc.) e tags
A idéia principal era fazer essa mecânica de interação com o aplicativo para fazer o mínimo possível. Para tornar tudo fácil e simples - com um clique.
Ele é implementado da seguinte maneira - há uma tela e três guias entre as quais você pode navegar por saip:
- conjunto de tarefas em que há todas as tarefas disponíveis no momento;
- plano diário, onde é definido o horário agendado para as tarefas;
- controle, onde alternamos de tarefa para tarefa e contamos o tempo.
Em seguida, gostaria de focar nos momentos do próprio desenvolvimento. Espero que minha experiência seja útil para desenvolvedores iniciantes, e os gurus provavelmente lhe dirão o que pode ser melhorado no processo de organização do desenvolvimento.
Infraestrutura de desenvolvimento
Eu queria fazer o desenvolvimento imediatamente. Para que fosse algo duradouro, e não mimado e abandonado. Portanto, eu queria organizar uma infraestrutura holística, incluindo:
- IDE (ambiente de desenvolvimento integrado);
- repositório de armazenamento de código;
- rastreador de tarefas;
- Documentação
- teste.
IDE
AndroidStudio, embora alguém possa argumentar, mas na minha opinião, com toda a riqueza de opções, não há outra alternativa. Existem muitas diretrizes sobre como colocar, como começar, como registrar um desenvolvedor, etc. Na minha opinião, tudo é bem simples aqui, sem conselhos especiais, basta pegá-lo e fazê-lo praticamente de acordo com as instruções.
Armazenamento de código
O Git foi escolhido como o sistema de armazenamento de código.
Os critérios de seleção são simples - um sistema moderno e popular, possui uma enorme comunidade de desenvolvedores, muitos recursos e boa documentação. Como você pode ver, os critérios não são muito técnicos, mas quando você é um desenvolvedor iniciante, a comunidade e muitas respostas para o stackoverflow são uma grande vantagem.
O Bitbucket foi escolhido como armazenamento remoto:
- gratuitamente;
- permite criar repositórios privados e abertos;
- permite criar uma equipe para trabalhar com diferentes níveis de direitos de acesso;
- possui seu próprio rastreador de tarefas simples.
Rastreador de tarefas
Ou seja, a escolha do bitbucket também fornece a presença de um rastreador de tarefas. À primeira vista, pode parecer que, quando você escreve o aplicativo, o rastreador de tarefas não é necessário, mas é um erro pensar que sim. O rastreador de tarefas se organiza. Permite que você faça planos. E caso alguém se conecte ao projeto, não haverá necessidade de procurar nada, mas com o desenvolvimento conjunto sem um rastreador de tarefas, nada. Sim, o rastreador no bitbucket não é perfeito, mas fecha os principais problemas em uma primeira aproximação.
Documentação
Para a documentação decidida usar readthedocs.io:
- sistema gratuito que permite publicar documentação no formato Sphinx ;
- integra-se ao bitbucket (e muitos outros), ou seja, você pode armazenar fontes de documentação no bitbucket e ele será coletado automaticamente a cada confirmação, você pode dizer a integração contínua da documentação - isso é extremamente conveniente;
Infelizmente, a documentação não é totalmente verdadeira agora. Mas, na época, sua escrita era de grande benefício. Portanto, eu recomendo escrever documentação para todos que iniciam seu projeto - isso coloca seus pensamentos em ordem e esclarece a visão do projeto.
Teste
O teste é um tópico enorme e você pode encontrar muitos materiais sobre esse assunto.
Eu tenho um nível de modelo no aplicativo em que todas as contas e cálculos são realizados.
Portanto, decidi me concentrar em testar esse módulo de software específico.
Para isso eu uso o
JUnit4 . Os testes são executados no dispositivo.
Testes são testes de unidade da classe principal do modelo.
Um conjunto de dados de teste é criado e, portanto, todas as funções da classe de modelo são chamadas com um resultado conhecido.
Por experiência, posso dizer o seguinte:
- testes são muito úteis na captura de regressão;
- Às vezes, erros de design / arquitetura aparecem quando você começa a usar as funções, o cabeçote começa a funcionar de maneira um pouco diferente quando você usa a função, mesmo se você a escreveu;
- para manter os testes atualizados, lamento não ter feito isso, porque o volume do aplicativo já é bastante grande e nem todos os detalhes podem ser mantidos na memória, e algumas regressões que podem ser detectadas no estágio do teste de unidade infelizmente caem em produção. Assim, com uma perseverança teimosa e sem graça - "mantenha os testes atualizados !!!"
Arquitetura e implementação
A essência desta seção é falar sobre o que aprender para um iniciante, a fim de poder implementar funções como nesta aplicação.
No começo da jornada, o principal problema era que não estava claro por onde começar e em que direção pensar. Como fazer e como fazer errado.
Para iniciantes, recomendo começar com um livro. O livro é bom, pois as informações são sistematizadas nele e é muito mais fácil começar dessa maneira.
Pessoalmente, comecei com “Programação para Android. Para profissionais ”B. Hardy, B. Phillips. Em geral, eu posso recomendar. Talvez agora esteja desatualizado em alguns lugares, mas é bem possível começar.
Também recomendo ouvir vários podcasts na programação do Android. Obviamente, nem tudo está claro nelas, mas você pode entender as tendências e entender para que lado se mover. Em particular, ocasionalmente ouço
androiddev no apptractor .
Quanto à arquitetura em si, tentei implementar uma abordagem na qual a lógica interna é maximamente separada da exibição. O fato é que, no estágio inicial, nem tudo é totalmente pensado e você precisa ser capaz de alterar a “matemática” (lógica de trabalho) sem reescrever o código inteiro.
Por exemplo, na minha aplicação, a essência principal é "atividade" em termos de tarefa / atividade. E toda a lógica do trabalho é manipulada com atividades: iniciar atividade, finalizar atividade, definir parâmetros de atividade, calcular estatísticas de intervalos de tempo, etc. Essa lógica que eu fiz
em uma estrutura de classe separada
A lista de tarefas está contida na classe ActionsManager e todo o acesso a elas é por meio das funções dessa classe. Ou seja, em todo lugar no aplicativo, todas as manipulações com tarefas são executadas através da classe ActionsManager.
O objeto de banco de dados é inicializado no objeto de aplicativo. Todo mundo pega o objeto daqui, em vez de criar um novo a cada vez.
Aqui eu posso dar esse conselho - leve a lógica para classes separadas. Leia sobre padrões de design - não é necessário inventar uma bicicleta onde já existe uma solução.
A GUI é baseada em ActionBarDrawerToggle. No início, o
ActionBarSherlock era usado, é claro que não é ruim para todos, mas tive problemas com a compatibilidade com outros componentes e mudei para os componentes padrão do Google (menus, guias, listas com carregamento dinâmico de dados etc.).
No processo de conscientização da aplicação, além dos componentes padrão do Android, foram utilizados os seguintes:
- implementação de seus métodos de manipulação de eventos da barra de busca;
- implementação do evento longclick via touch, pois o longclick nativo não pôde ser forçado a trabalhar de acordo com suas necessidades;
- MPAndroidChart - criando gráficos e tabelas;
- com.roomorama: caldroid - exibe um calendário por mês;
- com.github.paolorotolo: appintro - criando um assistente inicial.
Monetização
- O aplicativo em si é totalmente gratuito e sem anúncios.
- Está planejado adicionar várias opções pagas ao longo do tempo.
- No momento, este é um módulo de estatísticas sem restrições.
- Todas as estatísticas do dia atual podem ser exibidas, mas para fazer isso por um período arbitrário, é necessário adquirir o módulo sem restrições.
- Como se viu, agora com a conta do vendedor tudo ficou muito mais fácil.
- No meu caso - existe uma conta em um banco de poupança, abri uma conta em dólar através de um banco de poupança on-line e vinculei-a à minha conta - tudo é muito simples. E sim, um recurso interessante, já que há algum tempo o Google transfere dinheiro a partir de US $ 1.
PS:
Finalmente, uma mensagem para todos os iniciantes, ou aqueles que querem começar - não tenha medo de dificuldades, não tenha medo, gradualmente, passo a passo, você terá sucesso!