O que faz com que bons líderes sejam excelentes?

Li esse artigo e achei bem interessante compartilhar…

Por Stephen Orban, Head of Enterprise Strategy (link Original)

“É a falta de clareza que gera caos e frustração. Essas emoções são um veneno para qualquer objetivo existente”. –
Steve Maraboli

Líderes lideram de muitas maneiras diferentes. Alguns pelo medo, outros pelo exemplo, pelo carisma ou por meio de outras pessoas. E embora cada o estilo de cada líder seja um pouco diferente, a experiência me ensinou que algo nunca muda: é mais provável que as pessoas sigam alguém que elas compreendem.

As pessoas acreditam naquilo que são capazes de compreender. Quando se trata de gerenciamento de mudanças, as pessoas tipicamente se voltam para aquilo que estão acostumadas ( o status quo ) quando não’ entendem a direção na qual estão sendo orientadas. Os líderes podem resolver esse dilema fornecendo direções claras e concisas. A habilidade de fornecer clareza quanto aos objetivos é o que separa os grandes líderes dos bons.

Recentemente, escrevi que os executivos de tecnologia de hoje devem considerar-se diretores de gerenciamento de alterações (CCMOTM) ao liderarem a jornada para a nuvem em suas organizações. Além de gerenciar a fusão entre os negócios e a tecnologia, o CCMO também é responsável por fornecer clareza quanto aos objetivos. Isso significa ser capaz de articular a sua estratégia, saber como a sua equipe se encaixa nessa estratégia, onde há e onde não há flexibilidade, manter-se determinado e manter-se paciente.

As organizações migram para a nuvem por diferentes motivos : para economizar dinheiro, expandir globalmente, aprimorar a postura quanto à segurança ou ainda para melhorar a agilidade. Em minha experiência,descobri que as empresas começam a adotar a nuvem como uma plataforma em toda a organização ao perceber como ela os ajuda a dedicar mais recursos ao que importa aos negócios. Essas atividades são as que mais importam para os seus clientes e partes interessadas. E, a menos que você seja um provedor de infraestrutura, essas atividades não estão relacionadas ao gerenciamento de infraestrutura.

Sejam quais forem as suas motivações a curto ou longo prazo, recomendo que você as comunique e faça com que elas sejam mensuráveis. Articule suas motivações e objetivos claramente junto à sua equipe e às partes interessadas e faça com que todos sejam responsáveis por mover a agulha na direção certa.

No início do meu cargo de liderança, eu pensava – ingenuamente – que só porque eu era o chefe todos fariam o que eu dissesse. Eu aprendi da maneira difícil que, é claro, não é assim que a liderança funciona. Foi quando eu comecei a articular claramente o que era importante sobre a nossa estratégia que o comportamento da minha equipe começou a mudar. Antes de apresentar uma nova ideia ou objetivo à minha
equipe, eu tinha que considerar como todos se enquadravam na estratégia e como ela se relacionava aos negócios e à carreira de cada um. Em seguida, tinha que aproveitar todas as oportunidades para reforçar esses pontos.

Isso significava falar da estratégia em reuniões trimestrais, em blogs internos, durante sessões de planejamento de sprints e usar cada reunião como uma oportunidade de relacionar o trabalho que estava sendo discutido com a nossa estratégia. Às vezes parecia redundante, mas quanto maior a sua equipe, menor a probabilidade de que cada indivíduo tenha a oportunidade de ouvi-lo regularmente. Manter-se determinado e ser consistente com a sua comunicação é fundamental.

O medo do desconhecido é um dos pontos de atrito mais comuns em qualquer programa de gerenciamento de mudanças. Falarei sobre esse tema em um próximo post, onde abordarei a melhor prática “Educar a equipe” da jornada para a nuvem. Vale mencionar nesse contexto que uma excelente maneira como os líderes podem resolver esse atrito é fornecer clareza a todos na equipe sobre o que acontecerá com suas funções.

Deixar claro quais são as opções de cada um à luz da mudança de direção dará a eles um caminho claro para compreender como podem participar e, provavelmente, alguma tranquilidade. Quando eu era o CIO na Dow Jones, fornecemos treinamento a todos no departamento e também a oportunidade de migrar para novas funções na empresa. Deixamos claro que queríamos que todos fizessem parte da jornada, e às
vezes isso significava que eles precisariam assumir uma nova posição. Era do interesse de todos aproveitar a riqueza de conhecimento institucional que eles possuíam e, em muitos casos, esse conhecimento tornou-se ainda mais valioso quando direcionado a uma área ou disciplina diferente. É difícil substituir esse conhecimento, e eu diria que você deve esforçar-se ao máximo para mantê-lo.

Em praticamente qualquer estratégia que envolva mudanças, haverá alguns elementos ao quais você precisará ater-se firmemente e outros que podem ser mais sugestivos. Deixar claro para a sua equipe quais pertencem a cada grupo dá a todos a oportunidade de continuar ampliando os limites nas áreas adequadas e mostra que a organização ainda está disposta a aprender.

Na Dow Jones, tornamos a automação um requisito rígido para tudo o que fizemos no início da nossa jornada. Depois de tornar-nos suficientemente qualificados com nossas operações na nuvem, pudemos fazer casos de negócios financeiramente atrativos para migrar dezenas de datacenters para a AWS. Nesse momento, uma estratégia “levantar e mudar” era mais adequada para mover-nos na direção desses objetivos. Isso exigia alguma clareza quanto aos objetivos – tínhamos que comunicar isso várias vezes – para funcionar, mas uma vez que afrouxamos a restrição em relação à automação e aplicamos uma variedade de técnicas de migração, nosso progresso acelerou substancialmente.

A jornada para a nuvem de toda empresa vai encontrar alguns obstáculos no caminho. Gostaria de poder dizer que tudo vai ser perfeito e que o setor já descobriu como prescrever o que cada empresa deve fazer em cada
etapa. Na AWS, temos o compromisso de tornar-nos mais prescritivos com base no que vemos funcionar para os nossos clientes; porém, é improvável que todo o processo chegue a ter uma solução totalmente pronta. Descobri que é melhor tratar os obstáculos que você encontra no caminho como oportunidades de aprendizado, não castigar sua equipe por cometer erros (embora você não deva aceitar o mesmo erro duas vezes) e abordar prontamente ceticismo que vai contra o seu objetivo. Não deixe aqueles que estariam mais confortáveis permanecendo no status quo influenciarem o potencial da sua visão. Isso nem sempre é fácil, mas a sua paciência e perseverança serão compensadas.

Lembre-se, a prática faz a permanência. O que funcionou para você? Eu adoraria saber mais sobre isso.

Continue criando,
Stephen
@stephenorban

http://aws.amazon.com/enterprise/

Nota: oferecer suporte executivo é a primeira das sete melhores práticas sobre as quais estou escrevendo em minha nova série Jornada da nuvem corporativa. As outras seis são:informar a equipe, criar uma cultura de experimentação, atrair parceiros, criar um centro de excelência, implementar uma arquitetura híbrida e implementar uma política que prioriza a nuvem. Fique ligado para saber mais sobre estes assuntos.

Linux e Windows Server, ainda em dúvidas?

Faz anos que a Microsoft namora o Linux, e no ano passado o improvável aconteceu, ela se juntou a Linux Foundation (TLF), mostrando claramente que não ia adiantar muito tentar recuperar o mercado de servidores, atualmente dominado pelo Linux. Azure Runs Linux e Microsoft at Linux Foundation

Então a Microsoft tem seu próprio Linux (Azure Cloud Switch), voltado para o controle e hosting de servidores Windows em sua Nuvem Azure; aqui pra bom entendedor fica uma dica da própria, de que quando a coisa é pra valer, ela se valeu do Linux e, percebendo melhor o futuro, juntou-se à LF. Microsoft desenvolve seu próprio Linux

Muito provável que um leitor desatento ou eufórico vá encontrar dezenas de milhares de artigos, colocando o Windows dominando quase 100% desse mercado de servidores. Mas, tem um porém: como entrar em cada empresa e ver o que se está usando? O mais garantido seria vasculhar os mais de dez milhões de top servers na Internet toda, e que respondem que SO usam. Parece haver um consenso nessa metrificação, dizer o quanto cada um domina no market share pelo exposto na web. Se você pegar um relatório da SpiceWorks, verá um mercado de servidores de 10% Linux e 87% usam Windows Server. Nesse ponto até existe uma ótica que tem lógica, mas não se sustenta: bastam 10% de Linux pra fazer os 90% do Windows. A medição foi feita pelos números de downloads. Na metrificação por survey da W3Techs aparece um resultado totalmente diferente, 65% Linux contra 34% Windows.

O mais estranho nisso tudo, é que nem se discute o que seria mais sensato, como as habilidades do SO. E mais, é inquestionável a superioridade do Linux no que tange a ser um SO voltado para um processamento de alto desempenho, robustez, escalabilidade, multi processamento paralelo distribuído, mais com menos, etc. Difícil é ouvir algo do tipo: “mas eu não tenho gente qualificada em Linux”… nesse momento a luta acabou, jogaram a toalha! Sentimentalismo é coisa que enfraquece a razão.

O Windows foi a melhor coisa que aconteceu no mundo da computação pessoal, inquestionável a contribuição dela na Tecnologia da Informação no passado, no presente e, agora com Linux, no futuro. Mas isso não significa dizer que ela é melhor que um MacOS “casadinho” com o hardware proprietário da Apple, para a computação pessoal, mas o custo quase zero das versões desktops da Microsoft e a vantagem adicional de que não existe concorrente, a tornam ainda imbatível nesse mercado; conheça o Windows primeiro se pretende usar um Mac, você não voltará por livre e espontânea vontade a usar Windows. Fato!

Mais de 70% das empresas estão com seus servidores virtualizados e, nesse nicho o VMWare massacra. E vamos andando, e há coisas que não se pode mais parar, como ir para a Nuvem, que oferecem um ferramental nunca visto para administração de servidores, e como a sustentação para tanta tecnologia vem da comunidade, fica evidente a escolha por SOs que tenham: Confiabilidade, escalabilidade, robustez, alto desempenho e todo um arsenal para suportar infra estrutura, seja no “staging” ou “production“. A resistência não deve estar em usar Linux, que pode conviver tranquilamente com um ambiente Windows, aliás Linux é mesmo o “backend“, deixando a plataforma de desenvolvimento em Windows (bom mesmo seria MacOS!). O SqlServer já foi pra Linux!

According to IDC [1], 47.9% of the servers worldwide ran Windows Server whereas 40.5% ran Linux. W3Techs [2] ran a survey this month, which checked the top 1 million Web servers (according to Alexa) and 64.9% of them were running Unix/Unix-like operating systems, 35.2% were running Windows and less than 0.1% were running Mac.

Então, se olharmos para outras coisas como o aumento do uso e hegemonia de determinadas linguagens de programação, iremos ver Java e JavaScript (e Python!) como líderes e, veremos que as empresas adotaram e adotam Java, tradicionalmente mundo Linux. Não há o que discutir, atualmente e no futuro, Linux ou suas vertentes dominarão esse mercado, assim como Windows continuará a dominar o Desktop. E quem irá fazer isso serão os grandes players de Nuvem, já que aqui por baixo ainda carecem de coragem e conhecimento de Sistemas Operacionais. Mesmo o Windows sendo superior na Nuvem, por baixo tem Linux como hosting.

Mas não só o SO importa tanto, já que uma linguagem precisa ser usada para que a mágica aconteça. O que se observa historicamente é que até um dado momento, o Java estava muito forte nos ambientes acadêmicos, no mundo open source, e entranhado fortemente no governo (quem nunca usou o IRPF da Receita Federal, por exemplo). Antes da abertura do código do .Net, o Java foi fortemente “patrocinado” por algumas das gigantes de tecnologia (IBM, Sun, Oracle e HP) como forma de combater a hegemonia e dependência da Microsoft. A Microsoft por sua vez corria por fora, e era a preferência das empresas produtoras de software “pacote” e desenvolvedores iniciantes, pela maior facilidade de acesso à material oficial e suporte.

Enquanto isso, no emergente ambiente de aplicações móveis, ou mobile, em termos de aplicações nativas, a Microsoft “dormiu no ponto” durante décadas com o arcaico “Windows CE”, e o .Net ainda hoje só acha espaço no Windows Phone, já que o Android essencialmente se utiliza do Java, e no mundo iOS da Apple a linguagem é o Objective-C. Então se formos falar de SOs, e Android é Linux (fork), então já está sanada a dúvida.

É inegável que tanto o Java quanto .Net estão maduros e são performáticos (se bem implementados), e tem promessas de continuidade e de evolução. Mas não existem estatísticas confiáveis e nem consenso sobre qual é o mais utilizado globalmente, dado a grande variedade de cenários de uso e soluções existentes. Dependendo do custo complexidade, tamanho, orçamento e prazo disponível para implantar uma solução, você perceberá que a escolha não é óbvia.

 

How do you add swap to an EC2 instance?

When running an ec2 micro instance and you’ve been finding that the instance occasionally runs out of memory,  then you fix this problem adding swap or paging space to the instance.

Paging works by creating an area on your hard drive and using it for extra memory, this memory is much slower than normal memory, however much more of it is available.

To add this extra space to your instance you type:

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

If you need more than 1024 then change that to something higher.

To enable it by default after reboot, add this line to /etc/fstab:

swap        /var/swap.1 swap    defaults        0   0

Setting Up an sftp Site on Amazon Web Services EC2, and a Guest Account

(Original/copy post  from http://cloud.ubuntu.com/ami/, http://www.cybersprocket.com/2009/tips-tricks/sftp-tips-tricks/ and http://blog.markvdb.be/2009/01/sftp-on-ubuntu-and-debian-in-9-easy.html) and adapted a little bit.

This consists of three parts:

  • setting up an sftp site on EC2
  • creating a new user account
  • configuring the new user account to do read-only ftp, with no ssh privileges

This is intended for transferring files to and from trusted users. I use this as an adequate solution for occasionally sending very large files to clients, using an EC2 instance dedicated to that task. After the transfer is complete, I shut down or delete the instance.

Set up a server using Amazon Web Services EC2, choosing an Ubuntu Amazon Machine Image (AMI). (You can find an AMI using http://cloud.ubuntu.com/ami/. You may want to choose one that’s free tier eligible, such as ami-1aad5273)

ssh into the server:

ssh -i keyfile.pem ubuntu@ec2-hostname.amazonaws.com

Install vsftpd:

sudo apt-get install vsftpd

Create a new user:

sudo adduser newusername

Using the AWS Management Console, generate a new key pair for the third-party user.

On Linux, you can generate the public and private keys with the following command on your own local system:

ssh-keygen -b 1024 -f newusername -t dsa

On the server, create the .ssh directory for the new user:

sudo mkdir /home/newusername/.ssh

Paste the public key into /home/newusername/.ssh/authorized_keys.

Set permissions:

sudo chmod 700 /home/newusername/.ssh

sudo chmod 600 /home/newusername/.ssh/authorized_keys

sudo chown -R newusername:newusername /home/newusername/.ssh

Test the new user’s sftp login from your local machine:

sftp -o IdentityFile=newkeypair1.pem newusername@ec2-hostname.amazonaws.com

Make a new group for users who should be limited to using only sftp:

sudo groupadd sftponly

sudo adduser newusername sftponly

Edit /etc/ssh/sshd_config and change the Subsystem line to:

Subsystem sftp internal-sftp

and add these lines to the end of /etc/ssh/sshd_config:

Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Set permissions, without clobbering files necessary for EC2’s key-based authentication (only download):

sudo chown root:root /home/newusername

To deny SSH shell access, run the following command:

sudo usermod newusername /bin/false

If you want permit uploads use the command below.

sudo chown newusername:newusername /home/newusername

and…

sudo chown -R newusername:newusername /home/newusername/.ssh

sudo /etc/init.d/ssh restart

Now the new user can connect by sftp, but not by ssh. Place the files you want to share in /home/newusername, and share the key with the user or upload your files.

Java REST Client with Basic Authentication

This Java Client can be used to invoke any RESTful endpoint by proving a baseURL, username and password.

import org.apache.commons.codec.binary.Base64;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
 
public class RESTInvoker {
    private final String baseUrl;
    private final String username;
    private final String password;
 
    public RESTInvoker(String baseUrl, String username, String password) {
        this.baseUrl = baseUrl;
        this.username = username;
        this.password = password;
    }
 
    public String getRESTResponse(String accountId){
       return getDataFromServer("account/" + accountId);
    }
 
    String getDataFromServer(String path) {
        StringBuilder sb = new StringBuilder();
        try {
            URL url = new URL(baseUrl + path);
            URLConnection urlConnection = setUsernamePassword(url);
            BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            reader.close();
 
            return sb.toString();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
 
    private URLConnection setUsernamePassword(URL url) throws IOException {
        URLConnection urlConnection = url.openConnection();
        String authString = username + ":" + password;
        String authStringEnc = new String(Base64.encodeBase64(authString.getBytes()));
        urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);
        return urlConnection;
    }
}