Sunday, September 22, 2013

Thursday, September 19, 2013

Jethro Tull - Cross Eyed Mary

Déspotas

“Há três tipos de déspotas. Aquele que tiraniza o corpo, aquele que tiraniza a alma e o que tiraniza, ao mesmo tempo, o corpo e a alma. O primeiro é chamado de príncipe, o segundo de papa e o terceiro de povo”.

Oscar Wilde


Saturday, September 07, 2013

Awesome

7 Economic Attributes Compared

Think about economy. The main question is "mind set".

Market Economy (AS-IS) Earth Economy (TO-BE)
Consumption Preservation
Obsolescence Optimum Design
Property Access
Infinite Growth Steady State
Competition Collaboration
Labor for Income Mechanization
Scacity/Imbalance Abundance/Equality

Thursday, September 05, 2013

Best Best Practices Ever

  1. Write programs for people, not computers.
    1. a program should not require its readers to hold more than a handful of facts in memory at once
    2. names should be consistent, distinctive and meaningful
    3. code style and formatting should be consistent
    4. all aspects of software development should be broken down into tasks roughly an hour long
  2. Automate repetitive tasks.
    1. rely on the computer to repeat tasks
    2. save recent commands in a file for re-use
    3. use a build tool to automate scientific workflows
  3. Use the computer to record history.
    1. software tools should be  used to track computational work automatically
  4. Make incremental changes.
    1. work in small steps with frequent feedback and course correction
  5. Use version control.
    1. use a version control system
    2. everything that has been created manually should be put in version control
  6. Don’t repeat yourself (or others).
    1. every piece of data must have a single authoritative representation in the system
    2. code should be modularized rather than copied and pasted
    3. re-use code instead of rewriting it
  7. Plan for mistakes.
    1. add assertions to programs to check their operation
    2. use an off-the-shelf unit testing library
    3. use all available oracles when testing programs
    4. turn bugs into test cases
    5. use a symbolic debugger
  8. Optimize software only after it works correctly.
    1. use a profiler to identify bottlenecks
    2. write code in the highest-level language possible
  9. Document design and purpose, not mechanics.
    1. document interfaces and reasons, not implementations
    2. refactor code instead of explaining how it works
    3. embed the documentation for a piece of software in that software
  10. Collaborate.
    1. use pre-merge code reviews
    2. use pair programming when bringing someone new up to speed and when tackling particularly tricky problems
The only extra I would have included would be:
11. Maintain and update older code.

Sunday, September 01, 2013

Expressões Idiomáticas - Idioms

A Língua Inglesa possui algumas armadilhas para quem não a fala como língua materna, dentre elas estão as Expressões Idiomáticas (Idioms), que são figuras de linguagem onde um termo ou a frase assume um significado diferente do que as palavras teriam isoladamente. Assim, não basta saber o significado das palavras que formam a frase, é preciso olhar para todo o grupo de palavras que constitui a expressão para entender o seu significado. As Expressões Idiomáticas trazem conotações diferentes, que, na maioria das vezes, estão relacionadas às suas origens. É importante salientar que os idiomatismos não foram criados para serem armadilhas para os falantes estrangeiros, pelo contrário, elas tornam o Inglês Falado (Spoken English) mais natural. Relacionamos abaixo alguns exemplos de Expressões Idiomáticas mais usadas pelos falantes nativos da Língua Inglesa.

Act your age = Não seja infantil

All day long = O dia todo

Beyond a shadow of doubt = Sem sombra de dúvida

Blood is thicker than water = Os laços de família são mais fortes

Cross my heart = Juro por Deus

Everybody says so =Todos falam assim!

For goodness’ sake! = Pelo amor de Deus!

Good Lord! = Meu Deus!

Hand in Hand = De mãos dadas

I did quite well = Sai-me muito bem

Keep your eyes peeled = Fique atento
Leave it to me = Deixa comigo

Like hell! = Uma ova!

May I have the floor? = Posso falar?

Mum’s the word = Boca de siri
Never heard of = Nunca ouvi dizer

Never mind = Deixa prá lá / Não tem importância

Once and for all = De uma vez por todas

One never knows = Nunca se sabe

Pretty soon = Em breve

Quite a bit = muito, um montão, bastante, um bocado

Right over there = Logo ali

See you there = Até lá

Shoot the works = Manda brasa

Talk is cheap = Falar é fácil

Thank God = Graças a Deus

It is up to you = Você que sabe

You know best = Você é quem sabe

Take your time = Não se apresse

So far, so good? = Até aqui, tudo bem?

It is not your business = Não é da sua conta

To kick the bucket = Bater as botas / Morrer

How come? = Como é que pode?

How are you doing? = Como está?

Tuesday, August 20, 2013

Poor Man

Who would be a poor man, a beggarman, a thief If he had a rich man in his hand.


Sunday, August 11, 2013

Software como Produto ou como Serviço?


Comportamento & Palavras

“Nada é mais destrutivo para a melhoria do que pessoas cujo comportamento é inconsistente com suas palavras.”

 (J. P. Kotter)


Manual de Sobrevivênvia no Corporativismo

PRINCÍPIOS E CONSELHOS PRÁTICOS GERAIS
  • Princípio Número 1: “Money first”. Isso de valores ou princípios organizacionais é coisa pra filósofo.
  • Nunca questione o status quo ou o que você aprendeu na escola. Afinal, tanta gente não pode estar errada por tanto tempo.
  • Não perca muito tempo com análise e planejamento. Considerando o seu nível de inteligência e experiência, bastam um ou dois dias (quando muito) para definir uma estratégia.
  • Continue gerenciando através de departamentos. Estabeleça metas numéricas para cada departamento e exerça tremenda pressão para que sejam cumpridas. Exija explicação para o mínimo desvio em relação às metas.
  • Não meça nada; paute-se sempre pela sua grande experiência. Mas o extremo oposto é também uma alternativa eficaz: meça tudo; transforme a coleta de dados e a elaboração de relatórios e apresentações numa refinada arte, amplamente praticada na empresa.
  • Não padronize nada; o TIRO (a Técnica Intuitiva para Remover Obstáculos) e o improviso devem ser os principais métodos para buscar melhorias. Ou se preferir o extremo oposto, burocratize tudo; implemente controles em abundância.
  • Não delegue nada; afinal ninguém fará melhor do que você. Mas se preferir, delegue tudo; não se envolva diretamente com nada (o alto do Olimpo Corporativo é bem mais seguro).
  • Concorde com tudo. Faça lindos discursos, mas não vá muito além disso. Depois de algum tempo o modismo passa e tudo volta ao normal, exatamente como sempre esteve.

GESTÃO DA OPERAÇÃO
  • Primeiro Corolário (derivado do Princípio No. 1): A prioridade é reduzir custos. Sempre será possível espremer um pouquinho mais.
  • Quando alguma melhoria trouxer aumento de produtividade, aproveite para reduzir os gastos com a mão de obra: demita. E exija que os que ficaram continuem buscando mais produtividade.
  • Sempre que possível, assegure-se de que todos os recursos produtivos (pessoas inclusive) estejam  trabalhando a 100% (ou mais) de sua capacidade. Se houver acúmulo crônico de trabalho em algumas áreas, não afrouxe e nem desanime. Isso é até bom, pois assegura que eles  sempre terão trabalho pra realizar.

GESTÃO DE PESSOAL
  • Não invista muito em ter pessoal competente; isso custa muito caro. Em vez disso, estabeleça controles rígidos para evitar que cometam erros ou que “folguem”.
  • Mantenha um sofisticado sistema de remuneração variável. Fisgue o seu pessoal pelo estômago: quem não estiver acima da média, que ganhe bem pouquinho. Quem sabe assim eles se animam, e no futuro todos terão desempenho acima da média...
  • Exija que todo projeto de melhoria dê retorno financeiro de pelo menos X dólares (coloque um valor de X bem alto, que seja um “stretch target”).
  • Não hesite em interferir em assuntos operativos diretamente. De vez em quando é bom “passar por cima” do responsável direto. Vantagens: sua autoridade será reforçada, e todos saberão que têm um chefe.
  • Estenda o Balanced Scorecard até o nível individual.

SOBRE CLIENTES
  • Não desperdice tempo e recursos em investigar o mercado e conhecer os clientes. Afinal, você e seus pessoal técnico já sabem o que eles necessitam.
  • Coloque o cliente no seu devido lugar: em segundo plano. Lembre-se do primeiro princípio: “money first”.

Gestão de Processos e Gestão por Processos: uma grande diferença!

Por influência da ISO9000, a maioria das empresas hoje têm seus processos definidos e padronizados. Mas praticamente todas elas continuam padecendo dos males clássicos da administração departamentalizada: má comunicação entre áreas, objetivos conflitantes, erros, retrabalhos e um crônico combate a incêndios. Como isso é possível se a “visão de processos” já está implementada, até com certificação internacional?

O que explica este aparente paradoxo é que a padronização de processos em tais empresas é feita processo por processo, isto é: os processos de trabalho são identificados, equipes de padronização são mobilizadas e no final temos um intrincado arquipélago de “ilhas” de processos! As coisas até fluem, mas apenas dentro das fronteiras de cada ilha. Na prática, o que isso fez foi apenas transformar os velhos problemas de comunicação que havia entre departamentos em novos problemas de comunicação entre processos. O que antes era o Departamento de Vendas, agora é o “Processo Comercial”; o Departamento de Engenharia de Produtos agora cuida do “Processo de Desenvolvimento de Novos Produtos” etc. O que antes eram as metas departamentais agora recebem um novo nome: “Key Process Indicators” ou coisas do gênero. Na prática, cada um continua puxando a brasa pra sua sardinha, perpetuando os problemas da administração departamentalizada. O estilo de gestão não mudou; continua a velha cobrança de metas numéricas para cada área funcional.

Não houve uma transformação organizacional. Excetuando-se algumas melhorias pontuais, não houve um salto qualitativo no desempenho da empresa. No frigir dos ovos, só foi acrescentado um elemento novo: o custo de manutenção de toda a parafernália pesada de documentos do “novo” “sistema” de “gestão” (três mentiras numa só expressão, pois não é novo, não funciona como um sistema, e não merece o título de verdadeira gestão). Isto é a “Gestão DE Processos” que se vê por aí. Bem diferente seria implementar a “Gestão POR Processos”, isto é: “Gestão do Sistema de Negócios através dos Processos Empresariais”, partindo da necessidade de todas as partes interessadas para revisar toda a estrutura das atividades do negócio (não apenas qualidade, meio ambiente e saúde ocupacional), garantindo seu alinhamento à satisfação das partes interessadas e padronizando os processos de maneira integrada, a partir de um modelo sistêmico. Em poucas palavras: padronizar o fluxo contínuo de materiais e informações de ponta a ponta na empresa, em resposta ao mercado e demais partes interessadas. Isto é Gestão por Processos.


Saturday, August 03, 2013

UX and user context


Treze pontos do Método Montessori

  1. Baseia-se em anos de observação da natureza da criança por parte do maior gênio da educação desde Friedrich Froebel.
  2. Demonstrou ter uma aplicabilidade universal.
  3. Revelou que a criança pequena pode ser um amante do trabalho, do trabalho intelectual, escolhido de forma espontânea, e assim, realizado com muita alegria.
  4. Baseia-se em uma necessidade vital para a criança que é a de aprender fazendo. Em cada etapa do crescimento mental da criança são proporcionadas atividades correspondentes com as quais se desenvolvem suas faculdades.
  5. Ainda que ofereça à criança uma grande espontaneidade consegue capacitá-la para alcançar os mesmos níveis, ou até mesmo níveis superiores de sucesso escolar, que os alcançados sobre os sistemas antigos.
  6. Posições para a melhor procriação na fase infanto-juvenil
  7. Consegue uma excelente disciplina apesar de prescindir de coerções tais como recompensas e castigos. Explica-se tal fato por tratar-se de uma disciplina que tem origem dentro da própria criança e não imposta de fora.
  8. Baseia-se em um grande respeito pela personalidade da criança, concedendo-lhe espaço para crescer em uma independência biológica, permitindo-se à criança uma grande margem de liberdade que se constitui no fundamento de uma disciplina real.
  9. Permite ao professor tratar cada criança individualmente em cada matéria, e assim, fazê-lo de acordo com suas necessidades individuais.
  10. Cada criança trabalha em seu próprio ritmo.
  11. Não necessita desenvolver o espírito de competição e a cada momento procura oferecer às crianças muitas oportunidades para ajuda mútua o que é feito com grande prazer e alegria.
  12. Já que a criança trabalha partindo de sua livre escolha, sem coerções e sem necessidade de competir, não sente as tensões, os sentimentos de inferioridade e outras experiências capazes de deixar marcas no decorrer de sua vida.
  13. O método Montessori se propõe a desenvolver a totalidade da personalidade da criança e não somente suas capacidades intelectuais. Preocupa-se também com as capacidades de iniciativa, de deliberação e de escolhas independentes e os componentes emocionais.


Sunday, July 28, 2013

Software Engineering Code of Ethics and Professional Practice

ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices

PREAMBLE

The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code.

Software engineers shall commit themselves to making the analysis, specification, design, development,
testing and maintenance of software a beneficial and respected profession. In accordance with their
commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:

1. PUBLIC — Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER — Software engineers shall act in a manner that is in the
best interests of their client and employer consistent with the public interest.
3. PRODUCT — Software engineers shall ensure that their products and related
modifications meet the highest professional standards possible.
4. JUDGMENT — Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT — Software engineering managers and leaders shall subscribe to and
promote an ethical approach to the management of software development and
maintenance.
6. PROFESSION — Software engineers shall advance the integrity and reputation of
the profession consistent with the public interest.
7. COLLEAGUES — Software engineers shall be fair to and supportive of their
colleagues.
8. SELF — Software engineers shall participate in lifelong learning regarding the
practice of their profession and shall promote an ethical approach to the
practice of the profession.

The ACM/IEEE Code of Ethics (© IEEE/ACM 1999)